GEOS  3.10.1
geos_c.h
Go to the documentation of this file.
1 /************************************************************************
2  *
3  * C-Wrapper for GEOS library
4  *
5  * Copyright (C) 2010 2011 Sandro Santilli <strk@kbt.io>
6  * Copyright (C) 2005 Refractions Research Inc.
7  *
8  * This is free software; you can redistribute and/or modify it under
9  * the terms of the GNU Lesser General Public Licence as published
10  * by the Free Software Foundation.
11  * See the COPYING file for more information.
12  ***********************************************************************/
13 
39 #ifndef GEOS_C_H_INCLUDED
40 #define GEOS_C_H_INCLUDED
41 
42 #ifndef __cplusplus
43 # include <stddef.h> /* for size_t definition */
44 #else
45 # include <cstddef>
46 using std::size_t;
47 #endif
48 
49 #ifdef __cplusplus
50 extern "C" {
51 #endif
52 
53 /* ====================================================================== */
54 /* Version */
55 /* ====================================================================== */
56 
59 #ifndef GEOS_VERSION_MAJOR
60 #define GEOS_VERSION_MAJOR 3
61 #endif
62 #ifndef GEOS_VERSION_MINOR
63 #define GEOS_VERSION_MINOR 10
64 #endif
65 #ifndef GEOS_VERSION_PATCH
66 #define GEOS_VERSION_PATCH 1
67 #endif
68 #ifndef GEOS_VERSION
69 #define GEOS_VERSION "3.10.1"
70 #endif
71 #ifndef GEOS_JTS_PORT
72 #define GEOS_JTS_PORT "1.18.0"
73 #endif
74 
75 #define GEOS_CAPI_VERSION_MAJOR 1
76 #define GEOS_CAPI_VERSION_MINOR 16
77 #define GEOS_CAPI_VERSION_PATCH 0
78 #define GEOS_CAPI_VERSION "3.10.1-CAPI-1.16.0"
79 
80 #define GEOS_CAPI_FIRST_INTERFACE GEOS_CAPI_VERSION_MAJOR
81 #define GEOS_CAPI_LAST_INTERFACE (GEOS_CAPI_VERSION_MAJOR+GEOS_CAPI_VERSION_MINOR)
82 
85 #include <geos/export.h>
86 
87 
94 typedef struct GEOSContextHandle_HS *GEOSContextHandle_t;
95 
105 typedef void (*GEOSMessageHandler)(const char *fmt, ...);
106 
117 typedef void (*GEOSMessageHandler_r)(const char *message, void *userdata);
118 
119 /*
120 * When we're included by geos_c.cpp, these types are #defined to the
121 * C++ definitions via preprocessor. We don't touch them to allow the
122 * compiler to cross-check the declarations. However, for all "normal"
123 * C-API users, we need to define these types as "opaque" struct pointers, as
124 * those clients don't have access to the original C++ headers, by design.
125 */
126 #ifndef GEOSGeometry
127 
139 typedef struct GEOSGeom_t GEOSGeometry;
140 
146 typedef struct GEOSPrepGeom_t GEOSPreparedGeometry;
147 
153 typedef struct GEOSCoordSeq_t GEOSCoordSequence;
154 
160 typedef struct GEOSSTRtree_t GEOSSTRtree;
161 
167 typedef struct GEOSBufParams_t GEOSBufferParams;
168 
174 typedef struct GEOSMakeValidParams_t GEOSMakeValidParams;
175 
176 #endif
177 
180 /*
181 * These are compatibility definitions for source compatibility
182 * with GEOS 2.X clients relying on that type.
183 */
184 typedef GEOSGeometry* GEOSGeom;
185 typedef GEOSCoordSequence* GEOSCoordSeq;
186 
213 };
214 
226 };
227 
242 };
243 
251 typedef void (*GEOSQueryCallback)(void *item, void *userdata);
252 
270 typedef int (*GEOSDistanceCallback)(
271  const void* item1,
272  const void* item2,
273  double* distance,
274  void* userdata);
275 
276 /* ========== Interruption ========== */
277 
286 typedef void (GEOSInterruptCallback)(void);
287 
296 
300 extern void GEOS_DLL GEOS_interruptRequest(void);
301 
305 extern void GEOS_DLL GEOS_interruptCancel(void);
306 
307 /* ========== Initialization and Cleanup ========== */
308 
314 extern GEOSContextHandle_t GEOS_DLL GEOS_init_r(void);
315 
321 extern void GEOS_DLL GEOS_finish_r(GEOSContextHandle_t handle);
322 
330  GEOSContextHandle_t extHandle,
331  GEOSMessageHandler nf);
332 
342  GEOSContextHandle_t extHandle,
343  GEOSMessageHandler ef);
344 
353  GEOSContextHandle_t extHandle,
355  void *userData);
356 
367  GEOSContextHandle_t extHandle,
369  void *userData);
370 
371 /* ========== Coordinate Sequence functions ========== */
372 
375  GEOSContextHandle_t handle,
376  unsigned int size,
377  unsigned int dims);
378 
381  GEOSContextHandle_t handle,
382  const double* buf,
383  unsigned int size,
384  int hasZ,
385  int hasM);
386 
389  GEOSContextHandle_t handle,
390  const double* x,
391  const double* y,
392  const double* z,
393  const double* m,
394  unsigned int size);
395 
397 extern int GEOS_DLL GEOSCoordSeq_copyToBuffer_r(
398  GEOSContextHandle_t handle,
399  const GEOSCoordSequence* s,
400  double* buf,
401  int hasZ,
402  int hasM);
403 
405 extern int GEOS_DLL GEOSCoordSeq_copyToArrays_r(
406  GEOSContextHandle_t handle,
407  const GEOSCoordSequence* s,
408  double* x,
409  double* y,
410  double* z,
411  double* m);
412 
414 extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_clone_r(
415  GEOSContextHandle_t handle,
416  const GEOSCoordSequence* s);
417 
419 extern void GEOS_DLL GEOSCoordSeq_destroy_r(
420  GEOSContextHandle_t handle,
421  GEOSCoordSequence* s);
422 
424 extern int GEOS_DLL GEOSCoordSeq_setX_r(
425  GEOSContextHandle_t handle,
426  GEOSCoordSequence* s, unsigned int idx,
427  double val);
428 
430 extern int GEOS_DLL GEOSCoordSeq_setY_r(
431  GEOSContextHandle_t handle,
432  GEOSCoordSequence* s, unsigned int idx,
433  double val);
434 
436 extern int GEOS_DLL GEOSCoordSeq_setZ_r(
437  GEOSContextHandle_t handle,
438  GEOSCoordSequence* s, unsigned int idx,
439  double val);
440 
442 extern int GEOS_DLL GEOSCoordSeq_setXY_r(
443  GEOSContextHandle_t handle,
444  GEOSCoordSequence* s, unsigned int idx,
445  double x, double y);
446 
448 extern int GEOS_DLL GEOSCoordSeq_setXYZ_r(
449  GEOSContextHandle_t handle,
450  GEOSCoordSequence* s, unsigned int idx,
451  double x, double y, double z);
452 
454 extern int GEOS_DLL GEOSCoordSeq_setOrdinate_r(
455  GEOSContextHandle_t handle,
457  unsigned int idx,
458  unsigned int dim, double val);
459 
461 extern int GEOS_DLL GEOSCoordSeq_getX_r(
462  GEOSContextHandle_t handle,
463  const GEOSCoordSequence* s,
464  unsigned int idx, double *val);
465 
467 extern int GEOS_DLL GEOSCoordSeq_getY_r(
468  GEOSContextHandle_t handle,
469  const GEOSCoordSequence* s,
470  unsigned int idx, double *val);
471 
473 extern int GEOS_DLL GEOSCoordSeq_getZ_r(
474  GEOSContextHandle_t handle,
475  const GEOSCoordSequence* s,
476  unsigned int idx, double *val);
477 
479 extern int GEOS_DLL GEOSCoordSeq_getXY_r(
480  GEOSContextHandle_t handle,
481  const GEOSCoordSequence* s,
482  unsigned int idx,
483  double *x, double *y);
484 
486 extern int GEOS_DLL GEOSCoordSeq_getXYZ_r(
487  GEOSContextHandle_t handle,
488  const GEOSCoordSequence* s,
489  unsigned int idx,
490  double *x, double *y, double *z);
491 
493 extern int GEOS_DLL GEOSCoordSeq_getOrdinate_r(
494  GEOSContextHandle_t handle,
495  const GEOSCoordSequence* s,
496  unsigned int idx,
497  unsigned int dim, double *val);
498 
500 extern int GEOS_DLL GEOSCoordSeq_getSize_r(
501  GEOSContextHandle_t handle,
502  const GEOSCoordSequence* s,
503  unsigned int *size);
504 
506 extern int GEOS_DLL GEOSCoordSeq_getDimensions_r(
507  GEOSContextHandle_t handle,
508  const GEOSCoordSequence* s,
509  unsigned int *dims);
510 
512 extern int GEOS_DLL GEOSCoordSeq_isCCW_r(
513  GEOSContextHandle_t handle,
514  const GEOSCoordSequence* s,
515  char* is_ccw);
516 
517 /* ========= Linear referencing functions ========= */
518 
520 extern double GEOS_DLL GEOSProject_r(
521  GEOSContextHandle_t handle,
522  const GEOSGeometry *line,
523  const GEOSGeometry *point);
524 
526 extern GEOSGeometry GEOS_DLL *GEOSInterpolate_r(
527  GEOSContextHandle_t handle,
528  const GEOSGeometry *line,
529  double d);
530 
532 extern double GEOS_DLL GEOSProjectNormalized_r(
533  GEOSContextHandle_t handle,
534  const GEOSGeometry *g,
535  const GEOSGeometry *p);
536 
539  GEOSContextHandle_t handle,
540  const GEOSGeometry *g,
541  double d);
542 
543 /* ========== Buffer related functions ========== */
544 
546 extern GEOSGeometry GEOS_DLL *GEOSBuffer_r(
547  GEOSContextHandle_t handle,
548  const GEOSGeometry* g,
549  double width, int quadsegs);
550 
556 
559 
562 
565 };
566 
587 };
588 
591  GEOSContextHandle_t handle);
592 
594 extern void GEOS_DLL GEOSBufferParams_destroy_r(
595  GEOSContextHandle_t handle,
596  GEOSBufferParams* parms);
597 
599 extern int GEOS_DLL GEOSBufferParams_setEndCapStyle_r(
600  GEOSContextHandle_t handle,
601  GEOSBufferParams* p,
602  int style);
603 
605 extern int GEOS_DLL GEOSBufferParams_setJoinStyle_r(
606  GEOSContextHandle_t handle,
607  GEOSBufferParams* p,
608  int joinStyle);
609 
611 extern int GEOS_DLL GEOSBufferParams_setMitreLimit_r(
612  GEOSContextHandle_t handle,
613  GEOSBufferParams* p,
614  double mitreLimit);
615 
617 extern int GEOS_DLL GEOSBufferParams_setQuadrantSegments_r(
618  GEOSContextHandle_t handle,
619  GEOSBufferParams* p,
620  int quadSegs);
621 
623 extern int GEOS_DLL GEOSBufferParams_setSingleSided_r(
624  GEOSContextHandle_t handle,
625  GEOSBufferParams* p,
626  int singleSided);
627 
629 extern GEOSGeometry GEOS_DLL *GEOSBufferWithParams_r(
630  GEOSContextHandle_t handle,
631  const GEOSGeometry* g,
632  const GEOSBufferParams* p,
633  double width);
634 
636 extern GEOSGeometry GEOS_DLL *GEOSBufferWithStyle_r(
637  GEOSContextHandle_t handle,
638  const GEOSGeometry* g,
639  double width, int quadsegs, int endCapStyle,
640  int joinStyle, double mitreLimit);
641 
643 extern GEOSGeometry GEOS_DLL *GEOSDensify_r(
644  GEOSContextHandle_t handle,
645  const GEOSGeometry* g,
646  double tolerance);
647 
649 extern GEOSGeometry GEOS_DLL *GEOSOffsetCurve_r(
650  GEOSContextHandle_t handle,
651  const GEOSGeometry* g, double width, int quadsegs,
652  int joinStyle, double mitreLimit);
653 
654 
655 /* ========= Geometry Constructors ========= */
656 
658 extern GEOSGeometry GEOS_DLL *GEOSGeom_createPoint_r(
659  GEOSContextHandle_t handle,
660  GEOSCoordSequence* s);
661 
664  GEOSContextHandle_t handle,
665  double x, double y);
666 
669  GEOSContextHandle_t handle);
670 
673  GEOSContextHandle_t handle,
674  GEOSCoordSequence* s);
675 
678  GEOSContextHandle_t handle,
679  GEOSCoordSequence* s);
680 
683  GEOSContextHandle_t handle);
684 
687  GEOSContextHandle_t handle);
688 
690 extern GEOSGeometry GEOS_DLL *GEOSGeom_createPolygon_r(
691  GEOSContextHandle_t handle,
692  GEOSGeometry* shell,
693  GEOSGeometry** holes,
694  unsigned int nholes);
695 
698  GEOSContextHandle_t handle,
699  int type,
700  GEOSGeometry* *geoms,
701  unsigned int ngeoms);
702 
705  GEOSContextHandle_t handle, int type);
706 
708 extern GEOSGeometry GEOS_DLL *GEOSGeom_clone_r(
709  GEOSContextHandle_t handle,
710  const GEOSGeometry* g);
711 
712 /* ========= Memory management ========= */
713 
715 extern void GEOS_DLL GEOSGeom_destroy_r(
716  GEOSContextHandle_t handle,
717  GEOSGeometry* g);
718 
719 /* ========= Topology Operations ========= */
720 
722 extern GEOSGeometry GEOS_DLL *GEOSEnvelope_r(
723  GEOSContextHandle_t handle,
724  const GEOSGeometry* g);
725 
727 extern GEOSGeometry GEOS_DLL *GEOSIntersection_r(
728  GEOSContextHandle_t handle,
729  const GEOSGeometry* g1,
730  const GEOSGeometry* g2);
731 
733 extern GEOSGeometry GEOS_DLL *GEOSIntersectionPrec_r(
734  GEOSContextHandle_t handle,
735  const GEOSGeometry* g1,
736  const GEOSGeometry* g2,
737  double gridSize);
738 
740 extern GEOSGeometry GEOS_DLL *GEOSConvexHull_r(
741  GEOSContextHandle_t handle,
742  const GEOSGeometry* g);
743 
746  GEOSContextHandle_t handle,
747  const GEOSGeometry* g);
748 
751  GEOSContextHandle_t handle,
752  const GEOSGeometry* g,
753  double tolerance);
754 
756 extern GEOSGeometry GEOS_DLL *GEOSLargestEmptyCircle_r(
757  GEOSContextHandle_t handle,
758  const GEOSGeometry* g,
759  const GEOSGeometry* boundary,
760  double tolerance);
761 
763 extern GEOSGeometry GEOS_DLL *GEOSMinimumWidth_r(
764  GEOSContextHandle_t handle,
765  const GEOSGeometry* g);
766 
769  GEOSContextHandle_t handle,
770  const GEOSGeometry* g);
771 
773 extern int GEOS_DLL GEOSMinimumClearance_r(
774  GEOSContextHandle_t handle,
775  const GEOSGeometry* g,
776  double* distance);
777 
779 extern GEOSGeometry GEOS_DLL *GEOSDifference_r(
780  GEOSContextHandle_t handle,
781  const GEOSGeometry* g1,
782  const GEOSGeometry* g2);
783 
785 extern GEOSGeometry GEOS_DLL *GEOSDifferencePrec_r(
786  GEOSContextHandle_t handle,
787  const GEOSGeometry* g1,
788  const GEOSGeometry* g2,
789  double gridSize);
790 
792 extern GEOSGeometry GEOS_DLL *GEOSSymDifference_r(
793  GEOSContextHandle_t handle,
794  const GEOSGeometry* g1,
795  const GEOSGeometry* g2);
796 
798 extern GEOSGeometry GEOS_DLL *GEOSSymDifferencePrec_r(
799  GEOSContextHandle_t handle,
800  const GEOSGeometry* g1,
801  const GEOSGeometry* g2,
802  double gridSize);
803 
805 extern GEOSGeometry GEOS_DLL *GEOSBoundary_r(
806  GEOSContextHandle_t handle,
807  const GEOSGeometry* g);
808 
810 extern GEOSGeometry GEOS_DLL *GEOSUnion_r(
811  GEOSContextHandle_t handle,
812  const GEOSGeometry* g1,
813  const GEOSGeometry* g2);
814 
816 extern GEOSGeometry GEOS_DLL *GEOSUnionPrec_r(
817  GEOSContextHandle_t handle,
818  const GEOSGeometry* g1,
819  const GEOSGeometry* g2,
820  double gridSize);
821 
823 extern GEOSGeometry GEOS_DLL *GEOSUnaryUnion_r(
824  GEOSContextHandle_t handle,
825  const GEOSGeometry* g);
826 
828 extern GEOSGeometry GEOS_DLL *GEOSUnaryUnionPrec_r(
829  GEOSContextHandle_t handle,
830  const GEOSGeometry* g,
831  double gridSize);
832 
834 extern GEOSGeometry GEOS_DLL *GEOSCoverageUnion_r(
835  GEOSContextHandle_t handle,
836  const GEOSGeometry* g);
837 
839 extern GEOSGeometry GEOS_DLL *GEOSPointOnSurface_r(
840  GEOSContextHandle_t handle,
841  const GEOSGeometry* g);
842 
844 extern GEOSGeometry GEOS_DLL *GEOSGetCentroid_r(
845  GEOSContextHandle_t handle,
846  const GEOSGeometry* g);
847 
850  GEOSContextHandle_t handle,
851  const GEOSGeometry* g,
852  double* radius,
853  GEOSGeometry** center);
854 
856 extern GEOSGeometry GEOS_DLL *GEOSNode_r(
857  GEOSContextHandle_t handle,
858  const GEOSGeometry* g);
859 
861 extern GEOSGeometry GEOS_DLL *GEOSClipByRect_r(
862  GEOSContextHandle_t handle,
863  const GEOSGeometry* g,
864  double xmin, double ymin,
865  double xmax, double ymax);
866 
868 extern GEOSGeometry GEOS_DLL *GEOSPolygonize_r(
869  GEOSContextHandle_t handle,
870  const GEOSGeometry *const geoms[],
871  unsigned int ngeoms);
872 
874 extern GEOSGeometry GEOS_DLL *GEOSPolygonize_valid_r(
875  GEOSContextHandle_t handle,
876  const GEOSGeometry *const geoms[],
877  unsigned int ngems);
878 
881  GEOSContextHandle_t handle,
882  const GEOSGeometry * const geoms[],
883  unsigned int ngeoms);
884 
886 extern GEOSGeometry GEOS_DLL *GEOSPolygonize_full_r(
887  GEOSContextHandle_t handle,
888  const GEOSGeometry* input,
889  GEOSGeometry** cuts,
890  GEOSGeometry** dangles,
891  GEOSGeometry** invalidRings);
892 
894 extern GEOSGeometry GEOS_DLL *GEOSBuildArea_r(
895  GEOSContextHandle_t handle,
896  const GEOSGeometry* g);
897 
899 extern GEOSGeometry GEOS_DLL *GEOSLineMerge_r(
900  GEOSContextHandle_t handle,
901  const GEOSGeometry* g);
902 
904 extern GEOSGeometry GEOS_DLL *GEOSReverse_r(
905  GEOSContextHandle_t handle,
906  const GEOSGeometry* g);
907 
909 extern GEOSGeometry GEOS_DLL *GEOSSimplify_r(
910  GEOSContextHandle_t handle,
911  const GEOSGeometry* g,
912  double tolerance);
913 
916  GEOSContextHandle_t handle,
917  const GEOSGeometry* g, double tolerance);
918 
921  GEOSContextHandle_t handle,
922  const GEOSGeometry* g);
923 
925 extern GEOSGeometry GEOS_DLL *GEOSSharedPaths_r(
926  GEOSContextHandle_t handle,
927  const GEOSGeometry* g1,
928  const GEOSGeometry* g2);
929 
931 extern GEOSGeometry GEOS_DLL *GEOSSnap_r(
932  GEOSContextHandle_t handle,
933  const GEOSGeometry* g1,
934  const GEOSGeometry* g2,
935  double tolerance);
936 
938 extern GEOSGeometry GEOS_DLL * GEOSDelaunayTriangulation_r(
939  GEOSContextHandle_t handle,
940  const GEOSGeometry *g,
941  double tolerance,
942  int onlyEdges);
943 
946  GEOSContextHandle_t handle,
947  const GEOSGeometry *g);
948 
950 extern GEOSGeometry GEOS_DLL * GEOSVoronoiDiagram_r(
951  GEOSContextHandle_t extHandle,
952  const GEOSGeometry *g,
953  const GEOSGeometry *env,
954  double tolerance,
955  int onlyEdges);
956 
958 extern int GEOS_DLL GEOSSegmentIntersection_r(
959  GEOSContextHandle_t extHandle,
960  double ax0, double ay0,
961  double ax1, double ay1,
962  double bx0, double by0,
963  double bx1, double by1,
964  double* cx, double* cy);
965 
966 /* ========= Binary predicates ========= */
967 
969 extern char GEOS_DLL GEOSDisjoint_r(
970  GEOSContextHandle_t handle,
971  const GEOSGeometry* g1,
972  const GEOSGeometry* g2);
973 
975 extern char GEOS_DLL GEOSTouches_r(
976  GEOSContextHandle_t handle,
977  const GEOSGeometry* g1,
978  const GEOSGeometry* g2);
979 
981 extern char GEOS_DLL GEOSIntersects_r(
982  GEOSContextHandle_t handle,
983  const GEOSGeometry* g1,
984  const GEOSGeometry* g2);
985 
987 extern char GEOS_DLL GEOSCrosses_r(
988  GEOSContextHandle_t handle,
989  const GEOSGeometry* g1,
990  const GEOSGeometry* g2);
991 
993 extern char GEOS_DLL GEOSWithin_r(
994  GEOSContextHandle_t handle,
995  const GEOSGeometry* g1,
996  const GEOSGeometry* g2);
997 
999 extern char GEOS_DLL GEOSContains_r(
1000  GEOSContextHandle_t handle,
1001  const GEOSGeometry* g1,
1002  const GEOSGeometry* g2);
1003 
1005 extern char GEOS_DLL GEOSOverlaps_r(
1006  GEOSContextHandle_t handle,
1007  const GEOSGeometry* g1,
1008  const GEOSGeometry* g2);
1009 
1011 extern char GEOS_DLL GEOSEquals_r(
1012  GEOSContextHandle_t handle,
1013  const GEOSGeometry* g1,
1014  const GEOSGeometry* g2);
1015 
1017 extern char GEOS_DLL GEOSEqualsExact_r(
1018  GEOSContextHandle_t handle,
1019  const GEOSGeometry* g1,
1020  const GEOSGeometry* g2,
1021  double tolerance);
1022 
1024 extern char GEOS_DLL GEOSCovers_r(
1025  GEOSContextHandle_t handle,
1026  const GEOSGeometry* g1,
1027  const GEOSGeometry* g2);
1028 
1030 extern char GEOS_DLL GEOSCoveredBy_r(
1031  GEOSContextHandle_t handle,
1032  const GEOSGeometry* g1,
1033  const GEOSGeometry* g2);
1034 
1035 /* ========= Prepared Geometry Binary Predicates ========== */
1036 
1038 extern const GEOSPreparedGeometry GEOS_DLL *GEOSPrepare_r(
1039  GEOSContextHandle_t handle,
1040  const GEOSGeometry* g);
1041 
1043 extern void GEOS_DLL GEOSPreparedGeom_destroy_r(
1044  GEOSContextHandle_t handle,
1045  const GEOSPreparedGeometry* g);
1046 
1048 extern char GEOS_DLL GEOSPreparedContains_r(
1049  GEOSContextHandle_t handle,
1050  const GEOSPreparedGeometry* pg1,
1051  const GEOSGeometry* g2);
1052 
1054 extern char GEOS_DLL GEOSPreparedContainsProperly_r(
1055  GEOSContextHandle_t handle,
1056  const GEOSPreparedGeometry* pg1,
1057  const GEOSGeometry* g2);
1058 
1060 extern char GEOS_DLL GEOSPreparedCoveredBy_r(
1061  GEOSContextHandle_t handle,
1062  const GEOSPreparedGeometry* pg1,
1063  const GEOSGeometry* g2);
1064 
1066 extern char GEOS_DLL GEOSPreparedCovers_r(
1067  GEOSContextHandle_t handle,
1068  const GEOSPreparedGeometry* pg1,
1069  const GEOSGeometry* g2);
1070 
1072 extern char GEOS_DLL GEOSPreparedCrosses_r(
1073  GEOSContextHandle_t handle,
1074  const GEOSPreparedGeometry* pg1,
1075  const GEOSGeometry* g2);
1076 
1078 extern char GEOS_DLL GEOSPreparedDisjoint_r(
1079  GEOSContextHandle_t handle,
1080  const GEOSPreparedGeometry* pg1,
1081  const GEOSGeometry* g2);
1082 
1084 extern char GEOS_DLL GEOSPreparedIntersects_r(
1085  GEOSContextHandle_t handle,
1086  const GEOSPreparedGeometry* pg1,
1087  const GEOSGeometry* g2);
1088 
1090 extern char GEOS_DLL GEOSPreparedOverlaps_r(
1091  GEOSContextHandle_t handle,
1092  const GEOSPreparedGeometry* pg1,
1093  const GEOSGeometry* g2);
1094 
1096 extern char GEOS_DLL GEOSPreparedTouches_r(
1097  GEOSContextHandle_t handle,
1098  const GEOSPreparedGeometry* pg1,
1099  const GEOSGeometry* g2);
1100 
1102 extern char GEOS_DLL GEOSPreparedWithin_r(
1103  GEOSContextHandle_t handle,
1104  const GEOSPreparedGeometry* pg1,
1105  const GEOSGeometry* g2);
1106 
1109  GEOSContextHandle_t handle,
1110  const GEOSPreparedGeometry* pg1,
1111  const GEOSGeometry* g2);
1112 
1114 extern int GEOS_DLL GEOSPreparedDistance_r(
1115  GEOSContextHandle_t handle,
1116  const GEOSPreparedGeometry* pg1,
1117  const GEOSGeometry* g2, double *dist);
1118 
1120 extern char GEOS_DLL GEOSPreparedDistanceWithin_r(
1121  GEOSContextHandle_t handle,
1122  const GEOSPreparedGeometry* pg1,
1123  const GEOSGeometry* g2, double dist);
1124 
1125 /* ========== STRtree ========== */
1126 
1128 extern GEOSSTRtree GEOS_DLL *GEOSSTRtree_create_r(
1129  GEOSContextHandle_t handle,
1130  size_t nodeCapacity);
1131 
1133 extern void GEOS_DLL GEOSSTRtree_insert_r(
1134  GEOSContextHandle_t handle,
1135  GEOSSTRtree *tree,
1136  const GEOSGeometry *g,
1137  void *item);
1138 
1140 extern void GEOS_DLL GEOSSTRtree_query_r(
1141  GEOSContextHandle_t handle,
1142  GEOSSTRtree *tree,
1143  const GEOSGeometry *g,
1144  GEOSQueryCallback callback,
1145  void *userdata);
1146 
1148 extern const GEOSGeometry GEOS_DLL *GEOSSTRtree_nearest_r(
1149  GEOSContextHandle_t handle,
1150  GEOSSTRtree *tree,
1151  const GEOSGeometry* geom);
1152 
1154 extern const void GEOS_DLL *GEOSSTRtree_nearest_generic_r(
1155  GEOSContextHandle_t handle,
1156  GEOSSTRtree *tree,
1157  const void* item,
1158  const GEOSGeometry* itemEnvelope,
1159  GEOSDistanceCallback distancefn,
1160  void* userdata);
1161 
1163 extern void GEOS_DLL GEOSSTRtree_iterate_r(
1164  GEOSContextHandle_t handle,
1165  GEOSSTRtree *tree,
1166  GEOSQueryCallback callback,
1167  void *userdata);
1168 
1170 extern char GEOS_DLL GEOSSTRtree_remove_r(
1171  GEOSContextHandle_t handle,
1172  GEOSSTRtree *tree,
1173  const GEOSGeometry *g,
1174  void *item);
1175 
1177 extern void GEOS_DLL GEOSSTRtree_destroy_r(
1178  GEOSContextHandle_t handle,
1179  GEOSSTRtree *tree);
1180 
1181 
1182 /* ========= Unary predicate ========= */
1183 
1185 extern char GEOS_DLL GEOSisEmpty_r(
1186  GEOSContextHandle_t handle,
1187  const GEOSGeometry* g);
1188 
1190 extern char GEOS_DLL GEOSisSimple_r(
1191  GEOSContextHandle_t handle,
1192  const GEOSGeometry* g);
1193 
1195 extern char GEOS_DLL GEOSisRing_r(
1196  GEOSContextHandle_t handle,
1197  const GEOSGeometry* g);
1198 
1200 extern char GEOS_DLL GEOSHasZ_r(
1201  GEOSContextHandle_t handle,
1202  const GEOSGeometry* g);
1203 
1205 extern char GEOS_DLL GEOSisClosed_r(
1206  GEOSContextHandle_t handle,
1207  const GEOSGeometry *g);
1208 
1209 /* ========== Dimensionally Extended 9 Intersection Model ========== */
1210 
1226 };
1227 
1229 extern char GEOS_DLL GEOSRelatePattern_r(
1230  GEOSContextHandle_t handle,
1231  const GEOSGeometry* g1,
1232  const GEOSGeometry* g2,
1233  const char *pat);
1234 
1236 extern char GEOS_DLL *GEOSRelate_r(
1237  GEOSContextHandle_t handle,
1238  const GEOSGeometry* g1,
1239  const GEOSGeometry* g2);
1240 
1242 extern char GEOS_DLL GEOSRelatePatternMatch_r(
1243  GEOSContextHandle_t handle,
1244  const char *mat,
1245  const char *pat);
1246 
1248 extern char GEOS_DLL *GEOSRelateBoundaryNodeRule_r(
1249  GEOSContextHandle_t handle,
1250  const GEOSGeometry* g1,
1251  const GEOSGeometry* g2,
1252  int bnr);
1253 
1254 /* ========= Validity checking ========= */
1255 
1258 {
1261 };
1262 
1264 extern char GEOS_DLL GEOSisValid_r(
1265  GEOSContextHandle_t handle,
1266  const GEOSGeometry* g);
1267 
1269 extern char GEOS_DLL *GEOSisValidReason_r(
1270  GEOSContextHandle_t handle,
1271  const GEOSGeometry* g);
1272 
1274 extern char GEOS_DLL GEOSisValidDetail_r(
1275  GEOSContextHandle_t handle,
1276  const GEOSGeometry* g,
1277  int flags,
1278  char** reason,
1279  GEOSGeometry** location);
1280 
1281 /* ========== Make Valid ========== */
1282 
1298 };
1299 
1302  GEOSContextHandle_t extHandle);
1303 
1305 extern void GEOS_DLL GEOSMakeValidParams_destroy_r(
1306  GEOSContextHandle_t handle,
1307  GEOSMakeValidParams* parms);
1308 
1310 extern int GEOS_DLL GEOSMakeValidParams_setKeepCollapsed_r(
1311  GEOSContextHandle_t handle,
1313  int style);
1314 
1316 extern int GEOS_DLL GEOSMakeValidParams_setMethod_r(
1317  GEOSContextHandle_t handle,
1319  enum GEOSMakeValidMethods method);
1320 
1322 extern GEOSGeometry GEOS_DLL *GEOSMakeValid_r(
1323  GEOSContextHandle_t handle,
1324  const GEOSGeometry* g);
1325 
1327 extern GEOSGeometry GEOS_DLL *GEOSMakeValidWithParams_r(
1328  GEOSContextHandle_t handle,
1329  const GEOSGeometry* g,
1330  const GEOSMakeValidParams* makeValidParams);
1331 
1332 
1333 /* ========== Geometry info ========== */
1334 
1336 /* Return NULL on exception, result must be freed by caller. */
1337 extern char GEOS_DLL *GEOSGeomType_r(
1338  GEOSContextHandle_t handle,
1339  const GEOSGeometry* g);
1340 
1342 extern int GEOS_DLL GEOSGeomTypeId_r(
1343  GEOSContextHandle_t handle,
1344  const GEOSGeometry* g);
1345 
1347 extern int GEOS_DLL GEOSGetSRID_r(
1348  GEOSContextHandle_t handle,
1349  const GEOSGeometry* g);
1350 
1352 extern void GEOS_DLL GEOSSetSRID_r(
1353  GEOSContextHandle_t handle,
1354  GEOSGeometry* g, int SRID);
1355 
1357 extern void GEOS_DLL *GEOSGeom_getUserData_r(
1358  GEOSContextHandle_t handle,
1359  const GEOSGeometry* g);
1360 
1362 extern void GEOS_DLL GEOSGeom_setUserData_r(
1363  GEOSContextHandle_t handle,
1364  GEOSGeometry* g,
1365  void* userData);
1366 
1368 extern int GEOS_DLL GEOSGetNumGeometries_r(
1369  GEOSContextHandle_t handle,
1370  const GEOSGeometry* g);
1371 
1373 extern const GEOSGeometry GEOS_DLL *GEOSGetGeometryN_r(
1374  GEOSContextHandle_t handle,
1375  const GEOSGeometry* g, int n);
1376 
1378 extern int GEOS_DLL GEOSNormalize_r(
1379  GEOSContextHandle_t handle,
1380  GEOSGeometry* g);
1381 
1393 };
1394 
1396 extern GEOSGeometry GEOS_DLL *GEOSGeom_setPrecision_r(
1397  GEOSContextHandle_t handle,
1398  const GEOSGeometry *g,
1399  double gridSize,
1400  int flags);
1401 
1403 extern double GEOS_DLL GEOSGeom_getPrecision_r(
1404  GEOSContextHandle_t handle,
1405  const GEOSGeometry *g);
1406 
1408 extern int GEOS_DLL GEOSGetNumInteriorRings_r(
1409  GEOSContextHandle_t handle,
1410  const GEOSGeometry* g);
1411 
1413 extern int GEOS_DLL GEOSGeomGetNumPoints_r(
1414  GEOSContextHandle_t handle,
1415  const GEOSGeometry* g);
1416 
1418 extern int GEOS_DLL GEOSGeomGetX_r(
1419  GEOSContextHandle_t handle,
1420  const GEOSGeometry *g,
1421  double *x);
1422 
1424 extern int GEOS_DLL GEOSGeomGetY_r(
1425  GEOSContextHandle_t handle,
1426  const GEOSGeometry *g,
1427  double *y);
1428 
1430 extern int GEOS_DLL GEOSGeomGetZ_r(
1431  GEOSContextHandle_t handle,
1432  const GEOSGeometry *g,
1433  double *z);
1434 
1436 extern const GEOSGeometry GEOS_DLL *GEOSGetInteriorRingN_r(
1437  GEOSContextHandle_t handle,
1438  const GEOSGeometry* g, int n);
1439 
1441 extern const GEOSGeometry GEOS_DLL *GEOSGetExteriorRing_r(
1442  GEOSContextHandle_t handle,
1443  const GEOSGeometry* g);
1444 
1446 extern int GEOS_DLL GEOSGetNumCoordinates_r(
1447  GEOSContextHandle_t handle,
1448  const GEOSGeometry* g);
1449 
1451 extern const GEOSCoordSequence GEOS_DLL *GEOSGeom_getCoordSeq_r(
1452  GEOSContextHandle_t handle,
1453  const GEOSGeometry* g);
1454 
1456 extern int GEOS_DLL GEOSGeom_getDimensions_r(
1457  GEOSContextHandle_t handle,
1458  const GEOSGeometry* g);
1459 
1461 extern int GEOS_DLL GEOSGeom_getCoordinateDimension_r(
1462  GEOSContextHandle_t handle,
1463  const GEOSGeometry* g);
1464 
1466 extern int GEOS_DLL GEOSGeom_getXMin_r(
1467  GEOSContextHandle_t handle,
1468  const GEOSGeometry* g,
1469  double* value);
1470 
1472 extern int GEOS_DLL GEOSGeom_getYMin_r(
1473  GEOSContextHandle_t handle,
1474  const GEOSGeometry* g,
1475  double* value);
1476 
1478 extern int GEOS_DLL GEOSGeom_getXMax_r(
1479  GEOSContextHandle_t handle,
1480  const GEOSGeometry* g,
1481  double* value);
1482 
1484 extern int GEOS_DLL GEOSGeom_getYMax_r(
1485  GEOSContextHandle_t handle,
1486  const GEOSGeometry* g,
1487  double* value);
1488 
1490 extern GEOSGeometry GEOS_DLL *GEOSGeomGetPointN_r(
1491  GEOSContextHandle_t handle,
1492  const GEOSGeometry *g,
1493  int n);
1494 
1496 extern GEOSGeometry GEOS_DLL *GEOSGeomGetStartPoint_r(
1497  GEOSContextHandle_t handle,
1498  const GEOSGeometry *g);
1499 
1501 extern GEOSGeometry GEOS_DLL *GEOSGeomGetEndPoint_r(
1502  GEOSContextHandle_t handle,
1503  const GEOSGeometry *g);
1504 
1505 /* ========= Misc functions ========= */
1506 
1508 extern int GEOS_DLL GEOSArea_r(
1509  GEOSContextHandle_t handle,
1510  const GEOSGeometry* g,
1511  double *area);
1512 
1514 extern int GEOS_DLL GEOSLength_r(
1515  GEOSContextHandle_t handle,
1516  const GEOSGeometry* g,
1517  double *length);
1518 
1520 extern int GEOS_DLL GEOSDistance_r(
1521  GEOSContextHandle_t handle,
1522  const GEOSGeometry* g1,
1523  const GEOSGeometry* g2,
1524  double *dist);
1525 
1527 extern char GEOS_DLL GEOSDistanceWithin_r(
1528  GEOSContextHandle_t handle,
1529  const GEOSGeometry* g1,
1530  const GEOSGeometry* g2,
1531  double dist);
1532 
1534 extern int GEOS_DLL GEOSDistanceIndexed_r(
1535  GEOSContextHandle_t handle,
1536  const GEOSGeometry* g1,
1537  const GEOSGeometry* g2,
1538  double *dist);
1539 
1541 extern int GEOS_DLL GEOSHausdorffDistance_r(
1542  GEOSContextHandle_t handle,
1543  const GEOSGeometry *g1,
1544  const GEOSGeometry *g2,
1545  double *dist);
1546 
1548 extern int GEOS_DLL GEOSHausdorffDistanceDensify_r(
1549  GEOSContextHandle_t handle,
1550  const GEOSGeometry *g1,
1551  const GEOSGeometry *g2,
1552  double densifyFrac, double *dist);
1553 
1555 extern int GEOS_DLL GEOSFrechetDistance_r(
1556  GEOSContextHandle_t handle,
1557  const GEOSGeometry *g1,
1558  const GEOSGeometry *g2,
1559  double *dist);
1560 
1562 extern int GEOS_DLL GEOSFrechetDistanceDensify_r(
1563  GEOSContextHandle_t handle,
1564  const GEOSGeometry *g1,
1565  const GEOSGeometry *g2,
1566  double densifyFrac,
1567  double *dist);
1568 
1570 extern int GEOS_DLL GEOSGeomGetLength_r(
1571  GEOSContextHandle_t handle,
1572  const GEOSGeometry *g,
1573  double *length);
1574 
1576 extern GEOSCoordSequence GEOS_DLL *GEOSNearestPoints_r(
1577  GEOSContextHandle_t handle,
1578  const GEOSGeometry* g1,
1579  const GEOSGeometry* g2);
1580 
1581 
1582 /* ========= Algorithms ========= */
1583 
1585 extern int GEOS_DLL GEOSOrientationIndex_r(
1586  GEOSContextHandle_t handle,
1587  double Ax, double Ay,
1588  double Bx, double By,
1589  double Px, double Py);
1590 
1591 
1592 /* ========== Reader and Writer APIs ========== */
1593 
1594 #ifndef GEOSWKTReader
1595 
1601 typedef struct GEOSWKTReader_t GEOSWKTReader;
1602 
1608 typedef struct GEOSWKTWriter_t GEOSWKTWriter;
1609 
1615 typedef struct GEOSWKBReader_t GEOSWKBReader;
1616 
1622 typedef struct GEOSWKBWriter_t GEOSWKBWriter;
1623 
1629 typedef struct GEOSGeoJSONReader_t GEOSGeoJSONReader;
1630 
1636 typedef struct GEOSGeoJSONWriter_t GEOSGeoJSONWriter;
1637 
1638 #endif
1639 
1640 /* ========== WKT Reader ========== */
1641 
1643 extern GEOSWKTReader GEOS_DLL *GEOSWKTReader_create_r(
1644  GEOSContextHandle_t handle);
1645 
1647 extern void GEOS_DLL GEOSWKTReader_destroy_r(GEOSContextHandle_t handle,
1648  GEOSWKTReader* reader);
1649 
1651 extern GEOSGeometry GEOS_DLL *GEOSWKTReader_read_r(
1652  GEOSContextHandle_t handle,
1653  GEOSWKTReader* reader,
1654  const char *wkt);
1655 
1656 /* ========== WKT Writer ========== */
1657 
1659 extern GEOSWKTWriter GEOS_DLL *GEOSWKTWriter_create_r(
1660  GEOSContextHandle_t handle);
1661 
1663 extern void GEOS_DLL GEOSWKTWriter_destroy_r(
1664  GEOSContextHandle_t handle,
1665  GEOSWKTWriter* writer);
1666 
1668 extern char GEOS_DLL *GEOSWKTWriter_write_r(
1669  GEOSContextHandle_t handle,
1670  GEOSWKTWriter* writer,
1671  const GEOSGeometry* g);
1672 
1674 extern void GEOS_DLL GEOSWKTWriter_setTrim_r(
1675  GEOSContextHandle_t handle,
1676  GEOSWKTWriter *writer,
1677  char trim);
1678 
1680 extern void GEOS_DLL GEOSWKTWriter_setRoundingPrecision_r(
1681  GEOSContextHandle_t handle,
1682  GEOSWKTWriter *writer,
1683  int precision);
1684 
1686 extern void GEOS_DLL GEOSWKTWriter_setOutputDimension_r(
1687  GEOSContextHandle_t handle,
1688  GEOSWKTWriter *writer,
1689  int dim);
1690 
1692 extern int GEOS_DLL GEOSWKTWriter_getOutputDimension_r(
1693  GEOSContextHandle_t handle,
1694  GEOSWKTWriter *writer);
1695 
1697 extern void GEOS_DLL GEOSWKTWriter_setOld3D_r(
1698  GEOSContextHandle_t handle,
1699  GEOSWKTWriter *writer,
1700  int useOld3D);
1701 
1702 /* ========== WKB Reader ========== */
1703 
1705 extern GEOSWKBReader GEOS_DLL *GEOSWKBReader_create_r(
1706  GEOSContextHandle_t handle);
1707 
1709 extern void GEOS_DLL GEOSWKBReader_destroy_r(
1710  GEOSContextHandle_t handle,
1711  GEOSWKBReader* reader);
1712 
1714 extern GEOSGeometry GEOS_DLL *GEOSWKBReader_read_r(
1715  GEOSContextHandle_t handle,
1716  GEOSWKBReader* reader,
1717  const unsigned char *wkb,
1718  size_t size);
1719 
1721 extern GEOSGeometry GEOS_DLL *GEOSWKBReader_readHEX_r(
1722  GEOSContextHandle_t handle,
1723  GEOSWKBReader* reader,
1724  const unsigned char *hex,
1725  size_t size);
1726 
1727 /* ========== WKB Writer ========== */
1728 
1730 extern GEOSWKBWriter GEOS_DLL *GEOSWKBWriter_create_r(
1731  GEOSContextHandle_t handle);
1732 
1734 extern void GEOS_DLL GEOSWKBWriter_destroy_r(
1735  GEOSContextHandle_t handle,
1736  GEOSWKBWriter* writer);
1737 
1739 extern unsigned char GEOS_DLL *GEOSWKBWriter_write_r(
1740  GEOSContextHandle_t handle,
1741  GEOSWKBWriter* writer,
1742  const GEOSGeometry* g,
1743  size_t *size);
1744 
1746 extern unsigned char GEOS_DLL *GEOSWKBWriter_writeHEX_r(
1747  GEOSContextHandle_t handle,
1748  GEOSWKBWriter* writer,
1749  const GEOSGeometry* g,
1750  size_t *size);
1751 
1753 extern int GEOS_DLL GEOSWKBWriter_getOutputDimension_r(
1754  GEOSContextHandle_t handle,
1755  const GEOSWKBWriter* writer);
1756 
1758 extern void GEOS_DLL GEOSWKBWriter_setOutputDimension_r(
1759  GEOSContextHandle_t handle,
1760  GEOSWKBWriter* writer, int newDimension);
1761 
1763 extern int GEOS_DLL GEOSWKBWriter_getByteOrder_r(
1764  GEOSContextHandle_t handle,
1765  const GEOSWKBWriter* writer);
1766 
1768 extern void GEOS_DLL GEOSWKBWriter_setByteOrder_r(
1769  GEOSContextHandle_t handle,
1770  GEOSWKBWriter* writer,
1771  int byteOrder);
1772 
1774 extern int GEOS_DLL GEOSWKBWriter_getFlavor_r(
1775  GEOSContextHandle_t handle,
1776  const GEOSWKBWriter* writer);
1777 
1779 extern void GEOS_DLL GEOSWKBWriter_setFlavor_r(
1780  GEOSContextHandle_t handle,
1781  GEOSWKBWriter* writer,
1782  int flavor);
1783 
1785 extern char GEOS_DLL GEOSWKBWriter_getIncludeSRID_r(
1786  GEOSContextHandle_t handle,
1787  const GEOSWKBWriter* writer);
1788 
1790 extern void GEOS_DLL GEOSWKBWriter_setIncludeSRID_r(
1791  GEOSContextHandle_t handle,
1792  GEOSWKBWriter* writer, const char writeSRID);
1793 
1794 /* ========== GeoJSON Reader ========== */
1795 
1798  GEOSContextHandle_t handle);
1799 
1801 extern void GEOS_DLL GEOSGeoJSONReader_destroy_r(GEOSContextHandle_t handle,
1802  GEOSGeoJSONReader* reader);
1803 
1806  GEOSContextHandle_t handle,
1807  GEOSGeoJSONReader* reader,
1808  const char *geojson);
1809 
1810 /* ========== GeoJSON Writer ========== */
1811 
1814  GEOSContextHandle_t handle);
1815 
1817 extern void GEOS_DLL GEOSGeoJSONWriter_destroy_r(GEOSContextHandle_t handle,
1818  GEOSGeoJSONWriter* writer);
1819 
1821 extern char GEOS_DLL *GEOSGeoJSONWriter_writeGeometry_r(
1822  GEOSContextHandle_t handle,
1823  GEOSGeoJSONWriter* writer,
1824  const GEOSGeometry* g,
1825  int indent);
1826 
1828 extern void GEOS_DLL GEOSFree_r(
1829  GEOSContextHandle_t handle,
1830  void *buffer);
1831 
1838 extern const char GEOS_DLL *GEOSversion(void);
1839 
1840 /*
1841 * External code to GEOS can define GEOS_USE_ONLY_R_API
1842 * to strip the non-reentrant API functions from this header,
1843 * leaving only the "_r" compatible variants.
1844 */
1845 #ifndef GEOS_USE_ONLY_R_API
1846 
1847 /* ========== Initialization, cleanup, version ========== */
1848 
1860 extern void GEOS_DLL initGEOS(
1861  GEOSMessageHandler notice_function,
1862  GEOSMessageHandler error_function);
1863 
1868 extern void GEOS_DLL finishGEOS(void);
1869 
1870 /* ========= Coordinate Sequence functions ========= */
1871 
1878 extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_create(unsigned int size, unsigned int dims);
1879 
1888 extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_copyFromBuffer(const double* buf, unsigned int size, int hasZ, int hasM);
1889 
1899 extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_copyFromArrays(const double* x, const double* y, const double* z, const double* m, unsigned int size);
1900 
1909 extern int GEOS_DLL GEOSCoordSeq_copyToBuffer(const GEOSCoordSequence* s, double* buf, int hasZ, int hasM);
1910 
1920 extern int GEOS_DLL GEOSCoordSeq_copyToArrays(const GEOSCoordSequence* s, double* x, double* y, double* z, double* m);
1921 
1927 extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_clone(const GEOSCoordSequence* s);
1928 
1933 extern void GEOS_DLL GEOSCoordSeq_destroy(GEOSCoordSequence* s);
1934 
1942 extern int GEOS_DLL GEOSCoordSeq_setX(GEOSCoordSequence* s,
1943  unsigned int idx, double val);
1951 extern int GEOS_DLL GEOSCoordSeq_setY(GEOSCoordSequence* s,
1952  unsigned int idx, double val);
1960 extern int GEOS_DLL GEOSCoordSeq_setZ(GEOSCoordSequence* s,
1961  unsigned int idx, double val);
1970 extern int GEOS_DLL GEOSCoordSeq_setXY(GEOSCoordSequence* s,
1971  unsigned int idx, double x, double y);
1981 extern int GEOS_DLL GEOSCoordSeq_setXYZ(GEOSCoordSequence* s,
1982  unsigned int idx, double x, double y, double z);
1991 extern int GEOS_DLL GEOSCoordSeq_setOrdinate(GEOSCoordSequence* s,
1992  unsigned int idx, unsigned int dim, double val);
1993 
2001 extern int GEOS_DLL GEOSCoordSeq_getX(const GEOSCoordSequence* s,
2002  unsigned int idx, double *val);
2003 
2011 extern int GEOS_DLL GEOSCoordSeq_getY(const GEOSCoordSequence* s,
2012  unsigned int idx, double *val);
2020 extern int GEOS_DLL GEOSCoordSeq_getZ(const GEOSCoordSequence* s,
2021  unsigned int idx, double *val);
2030 extern int GEOS_DLL GEOSCoordSeq_getXY(const GEOSCoordSequence* s,
2031  unsigned int idx, double *x, double *y);
2041 extern int GEOS_DLL GEOSCoordSeq_getXYZ(const GEOSCoordSequence* s,
2042  unsigned int idx, double *x, double *y, double *z);
2051 extern int GEOS_DLL GEOSCoordSeq_getOrdinate(const GEOSCoordSequence* s,
2052  unsigned int idx, unsigned int dim, double *val);
2053 
2060 extern int GEOS_DLL GEOSCoordSeq_getSize(
2061  const GEOSCoordSequence* s,
2062  unsigned int *size);
2063 
2070 extern int GEOS_DLL GEOSCoordSeq_getDimensions(
2071  const GEOSCoordSequence* s,
2072  unsigned int *dims);
2073 
2082 extern int GEOS_DLL GEOSCoordSeq_isCCW(
2083  const GEOSCoordSequence* s,
2084  char* is_ccw);
2085 
2086 /* ========== Linear referencing functions */
2087 
2096 extern double GEOS_DLL GEOSProject(const GEOSGeometry* line,
2097  const GEOSGeometry* point);
2098 
2107 extern GEOSGeometry GEOS_DLL *GEOSInterpolate(const GEOSGeometry* line,
2108  double d);
2109 
2119 extern double GEOS_DLL GEOSProjectNormalized(const GEOSGeometry* line,
2120  const GEOSGeometry* point);
2121 
2130 extern GEOSGeometry GEOS_DLL *GEOSInterpolateNormalized(
2131  const GEOSGeometry *line,
2132  double proportion);
2133 
2134 /* ========== Buffer related functions ========== */
2135 
2146 extern GEOSGeometry GEOS_DLL *GEOSBuffer(const GEOSGeometry* g,
2147  double width, int quadsegs);
2148 
2155 extern GEOSBufferParams GEOS_DLL *GEOSBufferParams_create(void);
2156 
2161 extern void GEOS_DLL GEOSBufferParams_destroy(GEOSBufferParams* parms);
2162 
2168 extern int GEOS_DLL GEOSBufferParams_setEndCapStyle(
2169  GEOSBufferParams* p,
2170  int style);
2171 
2177 extern int GEOS_DLL GEOSBufferParams_setJoinStyle(
2178  GEOSBufferParams* p,
2179  int joinStyle);
2180 
2190 extern int GEOS_DLL GEOSBufferParams_setMitreLimit(
2191  GEOSBufferParams* p,
2192  double mitreLimit);
2193 
2202 extern int GEOS_DLL GEOSBufferParams_setQuadrantSegments(
2203  GEOSBufferParams* p,
2204  int quadSegs);
2205 
2214 extern int GEOS_DLL GEOSBufferParams_setSingleSided(
2215  GEOSBufferParams* p,
2216  int singleSided);
2217 
2226 extern GEOSGeometry GEOS_DLL *GEOSBufferWithParams(
2227  const GEOSGeometry* g,
2228  const GEOSBufferParams* p,
2229  double width);
2230 
2242 extern GEOSGeometry GEOS_DLL *GEOSBufferWithStyle(
2243  const GEOSGeometry* g,
2244  double width,
2245  int quadsegs,
2246  int endCapStyle,
2247  int joinStyle,
2248  double mitreLimit);
2249 
2261 extern GEOSGeometry GEOS_DLL *GEOSDensify(
2262  const GEOSGeometry* g,
2263  double tolerance);
2264 
2279 extern GEOSGeometry GEOS_DLL *GEOSOffsetCurve(const GEOSGeometry* g,
2280  double width, int quadsegs, int joinStyle, double mitreLimit);
2281 
2282 /* ========= Geometry Constructors ========= */
2283 
2291 
2299 extern GEOSGeometry GEOS_DLL *GEOSGeom_createPointFromXY(double x, double y);
2300 
2306 extern GEOSGeometry GEOS_DLL *GEOSGeom_createEmptyPoint(void);
2307 
2315 
2323 
2329 extern GEOSGeometry GEOS_DLL *GEOSGeom_createEmptyLineString(void);
2330 
2336 extern GEOSGeometry GEOS_DLL *GEOSGeom_createEmptyPolygon(void);
2337 
2350 extern GEOSGeometry GEOS_DLL *GEOSGeom_createPolygon(
2351  GEOSGeometry* shell,
2352  GEOSGeometry** holes,
2353  unsigned int nholes);
2354 
2367 extern GEOSGeometry GEOS_DLL *GEOSGeom_createCollection(
2368  int type,
2369  GEOSGeometry** geoms,
2370  unsigned int ngeoms);
2371 
2378 extern GEOSGeometry GEOS_DLL *GEOSGeom_createEmptyCollection(int type);
2379 
2386 extern GEOSGeometry GEOS_DLL *GEOSGeom_clone(const GEOSGeometry* g);
2387 
2388 /* ========== Memory management ========== */
2389 
2394 extern void GEOS_DLL GEOSGeom_destroy(GEOSGeometry* g);
2395 
2396 /* ========== Topology Operations ========== */
2397 
2404 extern GEOSGeometry GEOS_DLL *GEOSEnvelope(const GEOSGeometry* g);
2405 
2415 extern GEOSGeometry GEOS_DLL *GEOSIntersection(const GEOSGeometry* g1, const GEOSGeometry* g2);
2416 
2429 extern GEOSGeometry GEOS_DLL *GEOSIntersectionPrec(const GEOSGeometry* g1, const GEOSGeometry* g2, double gridSize);
2430 
2440 extern GEOSGeometry GEOS_DLL *GEOSDifference(
2441  const GEOSGeometry* ga,
2442  const GEOSGeometry* gb);
2443 
2457 extern GEOSGeometry GEOS_DLL *GEOSDifferencePrec(
2458  const GEOSGeometry* ga,
2459  const GEOSGeometry* gb,
2460  double gridSize);
2461 
2472 extern GEOSGeometry GEOS_DLL *GEOSSymDifference(
2473  const GEOSGeometry* ga,
2474  const GEOSGeometry* gb);
2475 
2490 extern GEOSGeometry GEOS_DLL *GEOSSymDifferencePrec(
2491  const GEOSGeometry* ga,
2492  const GEOSGeometry* gb,
2493  double gridSize);
2494 
2504 extern GEOSGeometry GEOS_DLL *GEOSUnion(
2505  const GEOSGeometry* ga,
2506  const GEOSGeometry* gb);
2507 
2521 extern GEOSGeometry GEOS_DLL *GEOSUnionPrec(
2522  const GEOSGeometry* ga,
2523  const GEOSGeometry* gb,
2524  double gridSize);
2525 
2535 extern GEOSGeometry GEOS_DLL *GEOSUnaryUnion(const GEOSGeometry* g);
2536 
2550 extern GEOSGeometry GEOS_DLL *GEOSUnaryUnionPrec(
2551  const GEOSGeometry* g,
2552  double gridSize);
2553 
2566 extern GEOSGeometry GEOS_DLL *GEOSBoundary(const GEOSGeometry* g);
2567 
2576 extern GEOSGeometry GEOS_DLL *GEOSConvexHull(const GEOSGeometry* g);
2577 
2589 extern GEOSGeometry GEOS_DLL *GEOSMinimumRotatedRectangle(const GEOSGeometry* g);
2590 
2613 extern GEOSGeometry GEOS_DLL *GEOSMaximumInscribedCircle(
2614  const GEOSGeometry* g,
2615  double tolerance);
2616 
2637 extern GEOSGeometry GEOS_DLL *GEOSLargestEmptyCircle(
2638  const GEOSGeometry* obstacles,
2639  const GEOSGeometry* boundary,
2640  double tolerance);
2641 
2653 extern GEOSGeometry GEOS_DLL *GEOSMinimumWidth(const GEOSGeometry* g);
2654 
2672 extern int GEOS_DLL GEOSMinimumClearance(const GEOSGeometry* g, double* d);
2673 
2683 extern GEOSGeometry GEOS_DLL *GEOSMinimumClearanceLine(const GEOSGeometry* g);
2684 
2685 
2694 extern GEOSGeometry GEOS_DLL *GEOSCoverageUnion(const GEOSGeometry *g);
2695 
2703 extern GEOSGeometry GEOS_DLL *GEOSPointOnSurface(const GEOSGeometry* g);
2704 
2712 extern GEOSGeometry GEOS_DLL *GEOSGetCentroid(const GEOSGeometry* g);
2713 
2724 extern GEOSGeometry GEOS_DLL *GEOSMinimumBoundingCircle(
2725  const GEOSGeometry* g,
2726  double* radius,
2727  GEOSGeometry** center);
2728 
2737 extern GEOSGeometry GEOS_DLL *GEOSNode(const GEOSGeometry* g);
2738 
2752 extern GEOSGeometry GEOS_DLL *GEOSClipByRect(
2753  const GEOSGeometry* g,
2754  double xmin, double ymin,
2755  double xmax, double ymax);
2756 
2795 extern GEOSGeometry GEOS_DLL *GEOSPolygonize(
2796  const GEOSGeometry * const geoms[],
2797  unsigned int ngeoms);
2798 
2809 extern GEOSGeometry GEOS_DLL *GEOSPolygonize_valid(
2810  const GEOSGeometry * const geoms[],
2811  unsigned int ngeoms);
2812 
2824 extern GEOSGeometry GEOS_DLL *GEOSPolygonizer_getCutEdges(
2825  const GEOSGeometry * const geoms[],
2826  unsigned int ngeoms);
2827 
2840 extern GEOSGeometry GEOS_DLL *GEOSPolygonize_full(
2841  const GEOSGeometry* input,
2842  GEOSGeometry** cuts,
2843  GEOSGeometry** dangles,
2844  GEOSGeometry** invalid);
2845 
2855 extern GEOSGeometry GEOS_DLL *GEOSBuildArea(const GEOSGeometry* g);
2856 
2865 extern GEOSGeometry GEOS_DLL *GEOSLineMerge(const GEOSGeometry* g);
2866 
2875 extern GEOSGeometry GEOS_DLL *GEOSReverse(const GEOSGeometry* g);
2876 
2889 extern GEOSGeometry GEOS_DLL *GEOSSimplify(
2890  const GEOSGeometry* g,
2891  double tolerance);
2892 
2908  const GEOSGeometry* g,
2909  double tolerance);
2910 
2920  const GEOSGeometry* g);
2921 
2938 extern GEOSGeometry GEOS_DLL *GEOSSharedPaths(
2939  const GEOSGeometry* g1,
2940  const GEOSGeometry* g2);
2941 
2950 extern GEOSGeometry GEOS_DLL *GEOSSnap(
2951  const GEOSGeometry* input,
2952  const GEOSGeometry* snap_target,
2953  double tolerance);
2954 
2966 extern GEOSGeometry GEOS_DLL * GEOSDelaunayTriangulation(
2967  const GEOSGeometry *g,
2968  double tolerance,
2969  int onlyEdges);
2970 
2981  const GEOSGeometry *g);
2982 
2997 extern GEOSGeometry GEOS_DLL * GEOSVoronoiDiagram(
2998  const GEOSGeometry *g,
2999  const GEOSGeometry *env,
3000  double tolerance,
3001  int onlyEdges);
3002 
3019 extern int GEOS_DLL GEOSSegmentIntersection(
3020  double ax0, double ay0,
3021  double ax1, double ay1,
3022  double bx0, double by0,
3023  double bx1, double by1,
3024  double* cx, double* cy);
3025 
3026 /* ========= Binary Predicates ========= */
3027 
3035 extern char GEOS_DLL GEOSDisjoint(const GEOSGeometry* g1, const GEOSGeometry* g2);
3036 
3045 extern char GEOS_DLL GEOSTouches(const GEOSGeometry* g1, const GEOSGeometry* g2);
3046 
3054 extern char GEOS_DLL GEOSIntersects(const GEOSGeometry* g1, const GEOSGeometry* g2);
3055 
3064 extern char GEOS_DLL GEOSCrosses(const GEOSGeometry* g1, const GEOSGeometry* g2);
3065 
3074 extern char GEOS_DLL GEOSWithin(const GEOSGeometry* g1, const GEOSGeometry* g2);
3075 
3083 extern char GEOS_DLL GEOSContains(const GEOSGeometry* g1, const GEOSGeometry* g2);
3084 
3093 extern char GEOS_DLL GEOSOverlaps(const GEOSGeometry* g1, const GEOSGeometry* g2);
3094 
3102 extern char GEOS_DLL GEOSEquals(const GEOSGeometry* g1, const GEOSGeometry* g2);
3103 
3112 extern char GEOS_DLL GEOSCovers(const GEOSGeometry* g1, const GEOSGeometry* g2);
3113 
3122 extern char GEOS_DLL GEOSCoveredBy(const GEOSGeometry* g1, const GEOSGeometry* g2);
3123 
3135 extern char GEOS_DLL GEOSEqualsExact(
3136  const GEOSGeometry* g1,
3137  const GEOSGeometry* g2,
3138  double tolerance);
3139 
3140 /* ========== Prepared Geometry Binary predicates ========== */
3141 
3159 extern const GEOSPreparedGeometry GEOS_DLL *GEOSPrepare(const GEOSGeometry* g);
3160 
3167 extern void GEOS_DLL GEOSPreparedGeom_destroy(const GEOSPreparedGeometry* g);
3168 
3177 extern char GEOS_DLL GEOSPreparedContains(
3178  const GEOSPreparedGeometry* pg1,
3179  const GEOSGeometry* g2);
3180 
3189 extern char GEOS_DLL GEOSPreparedContainsProperly(
3190  const GEOSPreparedGeometry* pg1,
3191  const GEOSGeometry* g2);
3192 
3201 extern char GEOS_DLL GEOSPreparedCoveredBy(
3202  const GEOSPreparedGeometry* pg1,
3203  const GEOSGeometry* g2);
3204 
3213 extern char GEOS_DLL GEOSPreparedCovers(
3214  const GEOSPreparedGeometry* pg1,
3215  const GEOSGeometry* g2);
3216 
3225 extern char GEOS_DLL GEOSPreparedCrosses(
3226  const GEOSPreparedGeometry* pg1,
3227  const GEOSGeometry* g2);
3228 
3237 extern char GEOS_DLL GEOSPreparedDisjoint(
3238  const GEOSPreparedGeometry* pg1,
3239  const GEOSGeometry* g2);
3240 
3249 extern char GEOS_DLL GEOSPreparedIntersects(
3250  const GEOSPreparedGeometry* pg1,
3251  const GEOSGeometry* g2);
3252 
3261 extern char GEOS_DLL GEOSPreparedOverlaps(
3262  const GEOSPreparedGeometry* pg1,
3263  const GEOSGeometry* g2);
3264 
3273 extern char GEOS_DLL GEOSPreparedTouches(
3274  const GEOSPreparedGeometry* pg1,
3275  const GEOSGeometry* g2);
3276 
3285 extern char GEOS_DLL GEOSPreparedWithin(
3286  const GEOSPreparedGeometry* pg1,
3287  const GEOSGeometry* g2);
3288 
3300  const GEOSPreparedGeometry* pg1,
3301  const GEOSGeometry* g2);
3302 
3314 extern int GEOS_DLL GEOSPreparedDistance(
3315  const GEOSPreparedGeometry* pg1,
3316  const GEOSGeometry* g2,
3317  double *dist);
3318 
3331 extern char GEOS_DLL GEOSPreparedDistanceWithin(
3332  const GEOSPreparedGeometry* pg1,
3333  const GEOSGeometry* g2,
3334  double dist);
3335 
3336 /* ========== STRtree functions ========== */
3337 
3348 extern GEOSSTRtree GEOS_DLL *GEOSSTRtree_create(size_t nodeCapacity);
3349 
3360 extern void GEOS_DLL GEOSSTRtree_insert(
3361  GEOSSTRtree *tree,
3362  const GEOSGeometry *g,
3363  void *item);
3364 
3375 extern void GEOS_DLL GEOSSTRtree_query(
3376  GEOSSTRtree *tree,
3377  const GEOSGeometry *g,
3378  GEOSQueryCallback callback,
3379  void *userdata);
3380 
3391 extern const GEOSGeometry GEOS_DLL *GEOSSTRtree_nearest(
3392  GEOSSTRtree *tree,
3393  const GEOSGeometry* geom);
3394 
3411 extern const void GEOS_DLL *GEOSSTRtree_nearest_generic(
3412  GEOSSTRtree *tree,
3413  const void* item,
3414  const GEOSGeometry* itemEnvelope,
3415  GEOSDistanceCallback distancefn,
3416  void* userdata);
3417 
3425 extern void GEOS_DLL GEOSSTRtree_iterate(
3426  GEOSSTRtree *tree,
3427  GEOSQueryCallback callback,
3428  void *userdata);
3429 
3440 extern char GEOS_DLL GEOSSTRtree_remove(
3441  GEOSSTRtree *tree,
3442  const GEOSGeometry *g,
3443  void *item);
3444 
3451 extern void GEOS_DLL GEOSSTRtree_destroy(GEOSSTRtree *tree);
3452 
3453 
3454 /* ========= Unary predicates ========= */
3455 
3463 extern char GEOS_DLL GEOSisEmpty(const GEOSGeometry* g);
3464 
3471 extern char GEOS_DLL GEOSisSimple(const GEOSGeometry* g);
3472 
3480 extern char GEOS_DLL GEOSisRing(const GEOSGeometry* g);
3481 
3487 extern char GEOS_DLL GEOSHasZ(const GEOSGeometry* g);
3488 
3496 extern char GEOS_DLL GEOSisClosed(const GEOSGeometry *g);
3497 
3498 /* ========= Dimensionally Extended 9 Intersection Model ========= */
3499 
3512 extern char GEOS_DLL GEOSRelatePattern(
3513  const GEOSGeometry* g1,
3514  const GEOSGeometry* g2,
3515  const char *pat);
3516 
3525 extern char GEOS_DLL *GEOSRelate(
3526  const GEOSGeometry* g1,
3527  const GEOSGeometry* g2);
3528 
3536 extern char GEOS_DLL GEOSRelatePatternMatch(
3537  const char *mat,
3538  const char *pat);
3539 
3551 extern char GEOS_DLL *GEOSRelateBoundaryNodeRule(
3552  const GEOSGeometry* g1,
3553  const GEOSGeometry* g2,
3554  int bnr);
3555 
3556 
3557 /* ========== Validity checking ========== */
3558 
3571 extern char GEOS_DLL GEOSisValid(const GEOSGeometry* g);
3572 
3580 extern char GEOS_DLL *GEOSisValidReason(const GEOSGeometry *g);
3581 
3594 extern char GEOS_DLL GEOSisValidDetail(
3595  const GEOSGeometry* g,
3596  int flags,
3597  char** reason,
3598  GEOSGeometry** location);
3599 
3605 extern GEOSGeometry GEOS_DLL *GEOSMakeValid(
3606  const GEOSGeometry* g);
3607 
3619 extern GEOSGeometry GEOS_DLL *GEOSMakeValidWithParams(
3620  const GEOSGeometry* g,
3621  const GEOSMakeValidParams *makeValidParams);
3622 
3629 extern GEOSMakeValidParams GEOS_DLL *GEOSMakeValidParams_create(void);
3630 
3636 extern void GEOS_DLL GEOSMakeValidParams_destroy(GEOSMakeValidParams* parms);
3637 
3644 extern int GEOS_DLL GEOSMakeValidParams_setMethod(
3646  enum GEOSMakeValidMethods method);
3647 
3656 extern int GEOS_DLL GEOSMakeValidParams_setKeepCollapsed(
3658  int keepCollapsed);
3659 
3660 
3661 /* ========== Geometry info ========== */
3662 
3671 extern char GEOS_DLL *GEOSGeomType(const GEOSGeometry* g);
3672 
3678 extern int GEOS_DLL GEOSGeomTypeId(const GEOSGeometry* g);
3679 
3685 extern int GEOS_DLL GEOSGetSRID(const GEOSGeometry* g);
3686 
3692 extern void GEOS_DLL GEOSSetSRID(GEOSGeometry* g, int SRID);
3693 
3702 extern void GEOS_DLL *GEOSGeom_getUserData(const GEOSGeometry* g);
3703 
3710 extern void GEOS_DLL GEOSGeom_setUserData(GEOSGeometry* g, void* userData);
3711 
3712 
3722 extern int GEOS_DLL GEOSGetNumGeometries(const GEOSGeometry* g);
3723 
3738 extern const GEOSGeometry GEOS_DLL *GEOSGetGeometryN(
3739  const GEOSGeometry* g,
3740  int n);
3741 
3752 extern int GEOS_DLL GEOSNormalize(GEOSGeometry* g);
3753 
3781 extern GEOSGeometry GEOS_DLL *GEOSGeom_setPrecision(
3782  const GEOSGeometry *g,
3783  double gridSize,
3784  int flags);
3785 
3793 extern double GEOS_DLL GEOSGeom_getPrecision(const GEOSGeometry *g);
3794 
3801 extern int GEOS_DLL GEOSGetNumInteriorRings(const GEOSGeometry* g);
3802 
3809 extern int GEOS_DLL GEOSGeomGetNumPoints(const GEOSGeometry* g);
3810 
3818 extern int GEOS_DLL GEOSGeomGetX(const GEOSGeometry *g, double *x);
3819 
3827 extern int GEOS_DLL GEOSGeomGetY(const GEOSGeometry *g, double *y);
3828 
3836 extern int GEOS_DLL GEOSGeomGetZ(const GEOSGeometry *g, double *z);
3837 
3846 extern const GEOSGeometry GEOS_DLL *GEOSGetInteriorRingN(
3847  const GEOSGeometry* g,
3848  int n);
3849 
3857 extern const GEOSGeometry GEOS_DLL *GEOSGetExteriorRing(
3858  const GEOSGeometry* g);
3859 
3866 extern int GEOS_DLL GEOSGetNumCoordinates(
3867  const GEOSGeometry* g);
3868 
3877 extern const GEOSCoordSequence GEOS_DLL *GEOSGeom_getCoordSeq(
3878  const GEOSGeometry* g);
3879 
3891 extern int GEOS_DLL GEOSGeom_getDimensions(
3892  const GEOSGeometry* g);
3893 
3903 extern int GEOS_DLL GEOSGeom_getCoordinateDimension(
3904  const GEOSGeometry* g);
3905 
3912 extern int GEOS_DLL GEOSGeom_getXMin(const GEOSGeometry* g, double* value);
3913 
3920 extern int GEOS_DLL GEOSGeom_getYMin(const GEOSGeometry* g, double* value);
3921 
3928 extern int GEOS_DLL GEOSGeom_getXMax(const GEOSGeometry* g, double* value);
3929 
3936 extern int GEOS_DLL GEOSGeom_getYMax(const GEOSGeometry* g, double* value);
3937 
3946 extern GEOSGeometry GEOS_DLL *GEOSGeomGetPointN(const GEOSGeometry *g, int n);
3947 
3955 extern GEOSGeometry GEOS_DLL *GEOSGeomGetStartPoint(const GEOSGeometry *g);
3956 
3964 extern GEOSGeometry GEOS_DLL *GEOSGeomGetEndPoint(const GEOSGeometry *g);
3965 
3966 /* ========= Misc functions ========= */
3967 
3974 extern int GEOS_DLL GEOSArea(
3975  const GEOSGeometry* g,
3976  double *area);
3977 
3984 extern int GEOS_DLL GEOSLength(
3985  const GEOSGeometry* g,
3986  double *length);
3987 
3995 extern int GEOS_DLL GEOSDistance(
3996  const GEOSGeometry* g1,
3997  const GEOSGeometry* g2,
3998  double *dist);
3999 
4008 extern char GEOS_DLL GEOSDistanceWithin(
4009  const GEOSGeometry* g1,
4010  const GEOSGeometry* g2,
4011  double dist);
4012 
4024 extern int GEOS_DLL GEOSDistanceIndexed(
4025  const GEOSGeometry* g1,
4026  const GEOSGeometry* g2,
4027  double *dist);
4028 
4039 extern int GEOS_DLL GEOSHausdorffDistance(
4040  const GEOSGeometry *g1,
4041  const GEOSGeometry *g2,
4042  double *dist);
4043 
4057 extern int GEOS_DLL GEOSHausdorffDistanceDensify(
4058  const GEOSGeometry *g1,
4059  const GEOSGeometry *g2,
4060  double densifyFrac,
4061  double *dist);
4062 
4074 extern int GEOS_DLL GEOSFrechetDistance(
4075  const GEOSGeometry *g1,
4076  const GEOSGeometry *g2,
4077  double *dist);
4078 
4093 extern int GEOS_DLL GEOSFrechetDistanceDensify(
4094  const GEOSGeometry *g1,
4095  const GEOSGeometry *g2,
4096  double densifyFrac,
4097  double *dist);
4098 
4107 extern int GEOS_DLL GEOSGeomGetLength(
4108  const GEOSGeometry *g,
4109  double *length);
4110 
4120 extern GEOSCoordSequence GEOS_DLL *GEOSNearestPoints(
4121  const GEOSGeometry* g1,
4122  const GEOSGeometry* g2);
4123 
4124 
4125 /* ========== Algorithms ========== */
4126 
4140 extern int GEOS_DLL GEOSOrientationIndex(
4141  double Ax, double Ay,
4142  double Bx, double By,
4143  double Px, double Py);
4144 
4145 /* ========= Reader and Writer APIs ========= */
4146 
4147 /* ========= WKT Reader ========= */
4148 
4153 extern GEOSWKTReader GEOS_DLL *GEOSWKTReader_create(void);
4154 
4159 extern void GEOS_DLL GEOSWKTReader_destroy(GEOSWKTReader* reader);
4160 
4168 extern GEOSGeometry GEOS_DLL *GEOSWKTReader_read(
4169  GEOSWKTReader* reader,
4170  const char *wkt);
4171 
4172 /* ========= WKT Writer ========= */
4173 
4178 extern GEOSWKTWriter GEOS_DLL *GEOSWKTWriter_create(void);
4179 
4184 extern void GEOS_DLL GEOSWKTWriter_destroy(
4185  GEOSWKTWriter* writer);
4186 
4195 extern char GEOS_DLL *GEOSWKTWriter_write(
4196  GEOSWKTWriter* writer,
4197  const GEOSGeometry* g);
4198 
4207 extern void GEOS_DLL GEOSWKTWriter_setTrim(
4208  GEOSWKTWriter *writer,
4209  char trim);
4210 
4217 extern void GEOS_DLL GEOSWKTWriter_setRoundingPrecision(
4218  GEOSWKTWriter *writer,
4219  int precision);
4220 
4227 extern void GEOS_DLL GEOSWKTWriter_setOutputDimension(
4228  GEOSWKTWriter *writer,
4229  int dim);
4230 
4236 extern int GEOS_DLL GEOSWKTWriter_getOutputDimension(GEOSWKTWriter *writer);
4237 
4245 extern void GEOS_DLL GEOSWKTWriter_setOld3D(
4246  GEOSWKTWriter *writer,
4247  int useOld3D);
4248 
4249 /* ========== WKB Reader ========== */
4250 
4255 extern GEOSWKBReader GEOS_DLL *GEOSWKBReader_create(void);
4256 
4261 extern void GEOS_DLL GEOSWKBReader_destroy(
4262  GEOSWKBReader* reader);
4263 
4271 extern GEOSGeometry GEOS_DLL *GEOSWKBReader_read(
4272  GEOSWKBReader* reader,
4273  const unsigned char *wkb,
4274  size_t size);
4275 
4283 extern GEOSGeometry GEOS_DLL *GEOSWKBReader_readHEX(
4284  GEOSWKBReader* reader,
4285  const unsigned char *hex,
4286  size_t size);
4287 
4288 /* ========== WKB Writer ========== */
4289 
4294 extern GEOSWKBWriter GEOS_DLL *GEOSWKBWriter_create(void);
4295 
4300 extern void GEOS_DLL GEOSWKBWriter_destroy(GEOSWKBWriter* writer);
4301 
4310 extern unsigned char GEOS_DLL *GEOSWKBWriter_write(
4311  GEOSWKBWriter* writer,
4312  const GEOSGeometry* g,
4313  size_t *size);
4314 
4323 extern unsigned char GEOS_DLL *GEOSWKBWriter_writeHEX(
4324  GEOSWKBWriter* writer,
4325  const GEOSGeometry* g,
4326  size_t *size);
4327 
4335 extern int GEOS_DLL GEOSWKBWriter_getOutputDimension(
4336  const GEOSWKBWriter* writer);
4337 
4344 extern void GEOS_DLL GEOSWKBWriter_setOutputDimension(
4345  GEOSWKBWriter* writer,
4346  int newDimension);
4347 
4356 extern int GEOS_DLL GEOSWKBWriter_getByteOrder(
4357  const GEOSWKBWriter* writer);
4358 
4365 extern void GEOS_DLL GEOSWKBWriter_setByteOrder(
4366  GEOSWKBWriter* writer,
4367  int byteOrder);
4368 
4381 extern int GEOS_DLL GEOSWKBWriter_getFlavor(
4382  const GEOSWKBWriter* writer);
4383 
4390 extern void GEOS_DLL GEOSWKBWriter_setFlavor(
4391  GEOSWKBWriter* writer,
4392  int flavor);
4393 
4398 extern char GEOS_DLL GEOSWKBWriter_getIncludeSRID(
4399  const GEOSWKBWriter* writer);
4400 
4407 extern void GEOS_DLL GEOSWKBWriter_setIncludeSRID(
4408  GEOSWKBWriter* writer,
4409  const char writeSRID);
4410 
4417 extern void GEOS_DLL GEOSFree(void *buffer);
4418 
4419 /* ========= GeoJSON Reader ========= */
4420 
4425 extern GEOSGeoJSONReader GEOS_DLL *GEOSGeoJSONReader_create(void);
4426 
4431 extern void GEOS_DLL GEOSGeoJSONReader_destroy(GEOSGeoJSONReader* reader);
4432 
4442  GEOSGeoJSONReader* reader,
4443  const char *geojson);
4444 
4445 /* ========= GeoJSON Writer ========= */
4446 
4451 extern GEOSGeoJSONWriter GEOS_DLL *GEOSGeoJSONWriter_create(void);
4452 
4457 extern void GEOS_DLL GEOSGeoJSONWriter_destroy(GEOSGeoJSONWriter* writer);
4458 
4467 extern char GEOS_DLL *GEOSGeoJSONWriter_writeGeometry(
4468  GEOSGeoJSONWriter* writer,
4469  const GEOSGeometry* g,
4470  int indent);
4471 
4472 #endif /* #ifndef GEOS_USE_ONLY_R_API */
4473 
4474 /* ====================================================================== */
4475 /* DEPRECATIONS */
4476 /* ====================================================================== */
4477 
4481 extern GEOSGeometry GEOS_DLL *GEOSSingleSidedBuffer(
4482  const GEOSGeometry* g,
4483  double width, int quadsegs,
4484  int joinStyle, double mitreLimit,
4485  int leftSide);
4486 
4490 extern GEOSGeometry GEOS_DLL *GEOSSingleSidedBuffer_r(
4491  GEOSContextHandle_t handle,
4492  const GEOSGeometry* g,
4493  double width, int quadsegs,
4494  int joinStyle, double mitreLimit,
4495  int leftSide);
4496 
4501 extern GEOSContextHandle_t GEOS_DLL initGEOS_r(
4502  GEOSMessageHandler notice_function,
4503  GEOSMessageHandler error_function);
4504 
4508 extern void GEOS_DLL finishGEOS_r(GEOSContextHandle_t handle);
4509 
4513 extern GEOSGeometry GEOS_DLL *GEOSGeomFromWKT_r(
4514  GEOSContextHandle_t handle,
4515  const char *wkt);
4516 
4520 extern char GEOS_DLL *GEOSGeomToWKT_r(
4521  GEOSContextHandle_t handle,
4522  const GEOSGeometry* g);
4523 
4527 extern int GEOS_DLL GEOS_getWKBOutputDims_r(
4528  GEOSContextHandle_t handle);
4529 
4533 extern int GEOS_DLL GEOS_setWKBOutputDims_r(
4534  GEOSContextHandle_t handle,
4535  int newDims);
4536 
4540 extern int GEOS_DLL GEOS_getWKBByteOrder_r(
4541  GEOSContextHandle_t handle);
4542 
4546 extern int GEOS_DLL GEOS_setWKBByteOrder_r(
4547  GEOSContextHandle_t handle,
4548  int byteOrder);
4549 
4553 extern GEOSGeometry GEOS_DLL *GEOSGeomFromWKB_buf_r(
4554  GEOSContextHandle_t handle,
4555  const unsigned char *wkb,
4556  size_t size);
4557 
4561 extern unsigned char GEOS_DLL *GEOSGeomToWKB_buf_r(
4562  GEOSContextHandle_t handle,
4563  const GEOSGeometry* g,
4564  size_t *size);
4565 
4569 extern GEOSGeometry GEOS_DLL *GEOSGeomFromHEX_buf_r(
4570  GEOSContextHandle_t handle,
4571  const unsigned char *hex,
4572  size_t size);
4573 
4577 extern unsigned char GEOS_DLL *GEOSGeomToHEX_buf_r(
4578  GEOSContextHandle_t handle,
4579  const GEOSGeometry* g,
4580  size_t *size);
4581 
4585 extern GEOSGeometry GEOS_DLL *GEOSGeomFromWKT(const char *wkt);
4586 
4590 extern char GEOS_DLL *GEOSGeomToWKT(const GEOSGeometry* g);
4591 
4595 extern int GEOS_DLL GEOS_getWKBOutputDims(void);
4596 
4600 extern int GEOS_DLL GEOS_setWKBOutputDims(int newDims);
4601 
4605 extern int GEOS_DLL GEOS_getWKBByteOrder(void);
4606 
4610 extern int GEOS_DLL GEOS_setWKBByteOrder(int byteOrder);
4611 
4615 extern GEOSGeometry GEOS_DLL *GEOSGeomFromWKB_buf(const unsigned char *wkb, size_t size);
4616 
4620 extern unsigned char GEOS_DLL *GEOSGeomToWKB_buf(const GEOSGeometry* g, size_t *size);
4621 
4625 extern GEOSGeometry GEOS_DLL *GEOSGeomFromHEX_buf(const unsigned char *hex, size_t size);
4626 
4630 extern unsigned char GEOS_DLL *GEOSGeomToHEX_buf(const GEOSGeometry* g, size_t *size);
4631 
4635 extern GEOSGeometry GEOS_DLL *GEOSUnionCascaded(const GEOSGeometry* g);
4636 
4640 extern GEOSGeometry GEOS_DLL *GEOSUnionCascaded_r(
4641  GEOSContextHandle_t handle,
4642  const GEOSGeometry* g);
4643 
4644 /* ====================================================================== */
4645 /* END DEPRECATIONS */
4646 /* ====================================================================== */
4647 
4648 
4649 #ifdef __cplusplus
4650 } // extern "C"
4651 #endif
4652 
4653 #endif /* #ifndef GEOS_C_H_INCLUDED */
char * GEOSisValidReason(const GEOSGeometry *g)
char * GEOSGeomType(const GEOSGeometry *g)
GEOSGeometry * GEOSSingleSidedBuffer_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double width, int quadsegs, int joinStyle, double mitreLimit, int leftSide)
GEOSGeometry * GEOSGetCentroid_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
void(* GEOSMessageHandler_r)(const char *message, void *userdata)
Definition: geos_c.h:117
int GEOSGetNumInteriorRings(const GEOSGeometry *g)
void GEOSWKTWriter_destroy(GEOSWKTWriter *writer)
char GEOSEqualsExact(const GEOSGeometry *g1, const GEOSGeometry *g2, double tolerance)
void GEOSPreparedGeom_destroy_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *g)
GEOSGeometry * GEOSSimplify_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double tolerance)
GEOSGeometry * GEOSGeom_createEmptyPoint_r(GEOSContextHandle_t handle)
char GEOSPreparedWithin(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
GEOSValidFlags
Definition: geos_c.h:1257
char GEOSPreparedCoveredBy(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
char * GEOSGeoJSONWriter_writeGeometry_r(GEOSContextHandle_t handle, GEOSGeoJSONWriter *writer, const GEOSGeometry *g, int indent)
int GEOSBufferParams_setJoinStyle_r(GEOSContextHandle_t handle, GEOSBufferParams *p, int joinStyle)
GEOSGeometry * GEOSEnvelope_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
const GEOSPreparedGeometry * GEOSPrepare(const GEOSGeometry *g)
void * GEOSGeom_getUserData_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeoJSONReader * GEOSGeoJSONReader_create_r(GEOSContextHandle_t handle)
GEOSWKTReader * GEOSWKTReader_create_r(GEOSContextHandle_t handle)
int GEOSCoordSeq_copyToBuffer_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s, double *buf, int hasZ, int hasM)
GEOSGeometry * GEOSDensify_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double tolerance)
char GEOSIntersects(const GEOSGeometry *g1, const GEOSGeometry *g2)
int GEOSGeom_getXMax_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *value)
char * GEOSRelateBoundaryNodeRule_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, int bnr)
GEOSGeometry * GEOSGeomGetStartPoint(const GEOSGeometry *g)
char GEOSisEmpty(const GEOSGeometry *g)
GEOSGeoJSONWriter * GEOSGeoJSONWriter_create_r(GEOSContextHandle_t handle)
GEOSGeometry * GEOSLargestEmptyCircle(const GEOSGeometry *obstacles, const GEOSGeometry *boundary, double tolerance)
char GEOSCovers(const GEOSGeometry *g1, const GEOSGeometry *g2)
GEOSGeometry * GEOSUnaryUnionPrec(const GEOSGeometry *g, double gridSize)
Definition: geos_c.h:200
int GEOSGeom_getYMax_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *value)
int GEOSSegmentIntersection_r(GEOSContextHandle_t extHandle, double ax0, double ay0, double ax1, double ay1, double bx0, double by0, double bx1, double by1, double *cx, double *cy)
int GEOSSegmentIntersection(double ax0, double ay0, double ax1, double ay1, double bx0, double by0, double bx1, double by1, double *cx, double *cy)
char GEOSPreparedCoveredBy_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
GEOSRelateBoundaryNodeRules
Definition: geos_c.h:1215
GEOSGeometry * GEOSBuffer_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double width, int quadsegs)
int GEOSGeom_getYMin_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *value)
GEOSGeometry * GEOSBoundary_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
int GEOSCoordSeq_setY_r(GEOSContextHandle_t handle, GEOSCoordSequence *s, unsigned int idx, double val)
char GEOSPreparedTouches_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
void GEOSMakeValidParams_destroy_r(GEOSContextHandle_t handle, GEOSMakeValidParams *parms)
int GEOSFrechetDistanceDensify_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double densifyFrac, double *dist)
GEOSGeometry * GEOSBuffer(const GEOSGeometry *g, double width, int quadsegs)
GEOSGeometry * GEOSInterpolateNormalized_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double d)
int GEOSGeomGetNumPoints_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
void GEOSWKBWriter_setByteOrder(GEOSWKBWriter *writer, int byteOrder)
Definition: geos_c.h:576
int GEOSWKBWriter_getOutputDimension_r(GEOSContextHandle_t handle, const GEOSWKBWriter *writer)
int GEOSCoordSeq_getXY(const GEOSCoordSequence *s, unsigned int idx, double *x, double *y)
int GEOSCoordSeq_setX(GEOSCoordSequence *s, unsigned int idx, double val)
GEOSGeometry * GEOSGeom_clone_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSGeom_createEmptyCollection(int type)
int GEOSWKBWriter_getOutputDimension(const GEOSWKBWriter *writer)
int GEOSGeom_getDimensions(const GEOSGeometry *g)
GEOSContextHandle_t GEOS_init_r(void)
char GEOSisEmpty_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSBufCapStyles
Definition: geos_c.h:555
GEOSGeometry * GEOSMakeValidWithParams(const GEOSGeometry *g, const GEOSMakeValidParams *makeValidParams)
int GEOS_getWKBByteOrder(void)
GEOSGeometry * GEOSGeomFromWKT_r(GEOSContextHandle_t handle, const char *wkt)
const void * GEOSSTRtree_nearest_generic(GEOSSTRtree *tree, const void *item, const GEOSGeometry *itemEnvelope, GEOSDistanceCallback distancefn, void *userdata)
int GEOSCoordSeq_getX(const GEOSCoordSequence *s, unsigned int idx, double *val)
char GEOSisValidDetail_r(GEOSContextHandle_t handle, const GEOSGeometry *g, int flags, char **reason, GEOSGeometry **location)
int GEOSGeomGetX(const GEOSGeometry *g, double *x)
GEOSCoordSequence * GEOSCoordSeq_copyFromArrays(const double *x, const double *y, const double *z, const double *m, unsigned int size)
GEOSGeometry * GEOSGeom_createPointFromXY_r(GEOSContextHandle_t handle, double x, double y)
char GEOSCovers_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
int GEOSBufferParams_setMitreLimit(GEOSBufferParams *p, double mitreLimit)
double GEOSGeom_getPrecision(const GEOSGeometry *g)
int GEOSArea(const GEOSGeometry *g, double *area)
GEOSGeometry * GEOSUnaryUnion_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSGeomGetPointN(const GEOSGeometry *g, int n)
double GEOSProjectNormalized_r(GEOSContextHandle_t handle, const GEOSGeometry *g, const GEOSGeometry *p)
GEOSGeometry * GEOSMinimumRotatedRectangle_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
char GEOSHasZ(const GEOSGeometry *g)
char GEOSRelatePattern(const GEOSGeometry *g1, const GEOSGeometry *g2, const char *pat)
GEOSSTRtree * GEOSSTRtree_create_r(GEOSContextHandle_t handle, size_t nodeCapacity)
void GEOSWKTReader_destroy(GEOSWKTReader *reader)
void GEOSGeom_setUserData_r(GEOSContextHandle_t handle, GEOSGeometry *g, void *userData)
struct GEOSGeoJSONWriter_t GEOSGeoJSONWriter
Definition: geos_c.h:1636
char GEOSisSimple_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSWKBReader_readHEX(GEOSWKBReader *reader, const unsigned char *hex, size_t size)
int GEOS_setWKBByteOrder(int byteOrder)
GEOSBufferParams * GEOSBufferParams_create_r(GEOSContextHandle_t handle)
void GEOSSTRtree_destroy(GEOSSTRtree *tree)
int GEOSGeomTypeId_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
struct GEOSWKBWriter_t GEOSWKBWriter
Definition: geos_c.h:1622
GEOSGeometry * GEOSOffsetCurve(const GEOSGeometry *g, double width, int quadsegs, int joinStyle, double mitreLimit)
Definition: geos_c.h:239
int GEOSCoordSeq_getOrdinate_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s, unsigned int idx, unsigned int dim, double *val)
GEOSGeometry * GEOSSingleSidedBuffer(const GEOSGeometry *g, double width, int quadsegs, int joinStyle, double mitreLimit, int leftSide)
int GEOSCoordSeq_copyToBuffer(const GEOSCoordSequence *s, double *buf, int hasZ, int hasM)
int GEOSWKBWriter_getFlavor_r(GEOSContextHandle_t handle, const GEOSWKBWriter *writer)
GEOSGeometry * GEOSWKBReader_read_r(GEOSContextHandle_t handle, GEOSWKBReader *reader, const unsigned char *wkb, size_t size)
int GEOSGeom_getDimensions_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSBuildArea(const GEOSGeometry *g)
int GEOSMakeValidParams_setMethod(GEOSMakeValidParams *p, enum GEOSMakeValidMethods method)
int GEOSBufferParams_setEndCapStyle_r(GEOSContextHandle_t handle, GEOSBufferParams *p, int style)
GEOSGeometry * GEOSVoronoiDiagram_r(GEOSContextHandle_t extHandle, const GEOSGeometry *g, const GEOSGeometry *env, double tolerance, int onlyEdges)
GEOSGeometry * GEOSInterpolateNormalized(const GEOSGeometry *line, double proportion)
const GEOSGeometry * GEOSGetGeometryN_r(GEOSContextHandle_t handle, const GEOSGeometry *g, int n)
Definition: geos_c.h:1390
char GEOSPreparedContains(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
GEOSGeometry * GEOSGetCentroid(const GEOSGeometry *g)
void GEOSSTRtree_iterate_r(GEOSContextHandle_t handle, GEOSSTRtree *tree, GEOSQueryCallback callback, void *userdata)
GEOSGeometry * GEOSBufferWithStyle(const GEOSGeometry *g, double width, int quadsegs, int endCapStyle, int joinStyle, double mitreLimit)
GEOSGeometry * GEOSUnaryUnion(const GEOSGeometry *g)
double GEOSProjectNormalized(const GEOSGeometry *line, const GEOSGeometry *point)
unsigned char * GEOSWKBWriter_writeHEX_r(GEOSContextHandle_t handle, GEOSWKBWriter *writer, const GEOSGeometry *g, size_t *size)
void GEOSSetSRID(GEOSGeometry *g, int SRID)
GEOSGeometry * GEOSSnap_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double tolerance)
GEOSMessageHandler GEOSContext_setErrorHandler_r(GEOSContextHandle_t extHandle, GEOSMessageHandler ef)
char * GEOSisValidReason_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
const GEOSGeometry * GEOSSTRtree_nearest_r(GEOSContextHandle_t handle, GEOSSTRtree *tree, const GEOSGeometry *geom)
char GEOSPreparedIntersects(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
const void * GEOSSTRtree_nearest_generic_r(GEOSContextHandle_t handle, GEOSSTRtree *tree, const void *item, const GEOSGeometry *itemEnvelope, GEOSDistanceCallback distancefn, void *userdata)
char GEOSOverlaps_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
char * GEOSRelateBoundaryNodeRule(const GEOSGeometry *g1, const GEOSGeometry *g2, int bnr)
void GEOSWKBWriter_destroy(GEOSWKBWriter *writer)
int GEOSArea_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *area)
char * GEOSRelate_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
GEOSGeometry * GEOSGeom_createEmptyPoint(void)
int GEOSGeom_getCoordinateDimension(const GEOSGeometry *g)
GEOSGeometry * GEOSSnap(const GEOSGeometry *input, const GEOSGeometry *snap_target, double tolerance)
struct GEOSBufParams_t GEOSBufferParams
Definition: geos_c.h:167
void GEOSWKTWriter_destroy_r(GEOSContextHandle_t handle, GEOSWKTWriter *writer)
void GEOSGeoJSONWriter_destroy_r(GEOSContextHandle_t handle, GEOSGeoJSONWriter *writer)
GEOSMakeValidParams * GEOSMakeValidParams_create_r(GEOSContextHandle_t extHandle)
int GEOSFrechetDistance_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double *dist)
int GEOSHausdorffDistance(const GEOSGeometry *g1, const GEOSGeometry *g2, double *dist)
int GEOSCoordSeq_getDimensions(const GEOSCoordSequence *s, unsigned int *dims)
int GEOSCoordSeq_setOrdinate_r(GEOSContextHandle_t handle, GEOSCoordSequence *s, unsigned int idx, unsigned int dim, double val)
int GEOSCoordSeq_setZ_r(GEOSContextHandle_t handle, GEOSCoordSequence *s, unsigned int idx, double val)
int GEOSCoordSeq_getY_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s, unsigned int idx, double *val)
GEOSGeometry * GEOSBufferWithParams_r(GEOSContextHandle_t handle, const GEOSGeometry *g, const GEOSBufferParams *p, double width)
int GEOSGeomGetNumPoints(const GEOSGeometry *g)
void GEOSWKBWriter_setIncludeSRID_r(GEOSContextHandle_t handle, GEOSWKBWriter *writer, const char writeSRID)
GEOSContextHandle_t initGEOS_r(GEOSMessageHandler notice_function, GEOSMessageHandler error_function)
int GEOSGeom_getYMax(const GEOSGeometry *g, double *value)
const GEOSPreparedGeometry * GEOSPrepare_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
const GEOSGeometry * GEOSGetExteriorRing(const GEOSGeometry *g)
GEOSGeometry * GEOSClipByRect_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double xmin, double ymin, double xmax, double ymax)
int GEOSCoordSeq_getXYZ_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s, unsigned int idx, double *x, double *y, double *z)
GEOSGeometry * GEOSMinimumWidth_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
void GEOSGeoJSONWriter_destroy(GEOSGeoJSONWriter *writer)
GEOSCoordSequence * GEOSPreparedNearestPoints_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
int GEOSLength(const GEOSGeometry *g, double *length)
GEOSCoordSequence * GEOSCoordSeq_copyFromArrays_r(GEOSContextHandle_t handle, const double *x, const double *y, const double *z, const double *m, unsigned int size)
Definition: geos_c.h:1297
char GEOSContains_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
GEOSGeometry * GEOSGeomFromWKB_buf_r(GEOSContextHandle_t handle, const unsigned char *wkb, size_t size)
GEOSMakeValidParams * GEOSMakeValidParams_create(void)
Definition: geos_c.h:1221
struct GEOSWKTReader_t GEOSWKTReader
Definition: geos_c.h:1601
char GEOSDistanceWithin_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double dist)
int GEOSCoordSeq_getXYZ(const GEOSCoordSequence *s, unsigned int idx, double *x, double *y, double *z)
int GEOSCoordSeq_isCCW(const GEOSCoordSequence *s, char *is_ccw)
GEOSGeometry * GEOSGeomFromWKB_buf(const unsigned char *wkb, size_t size)
GEOSWKTWriter * GEOSWKTWriter_create_r(GEOSContextHandle_t handle)
char GEOSRelatePattern_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, const char *pat)
int GEOSGeom_getCoordinateDimension_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
void * GEOSGeom_getUserData(const GEOSGeometry *g)
double GEOSProject(const GEOSGeometry *line, const GEOSGeometry *point)
char GEOSEquals_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
GEOSGeometry * GEOSConvexHull_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
char GEOSSTRtree_remove(GEOSSTRtree *tree, const GEOSGeometry *g, void *item)
Definition: geos_c.h:561
GEOSGeometry * GEOSUnion(const GEOSGeometry *ga, const GEOSGeometry *gb)
int GEOSNormalize(GEOSGeometry *g)
GEOSMessageHandler_r GEOSContext_setNoticeMessageHandler_r(GEOSContextHandle_t extHandle, GEOSMessageHandler_r nf, void *userData)
int GEOSCoordSeq_getX_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s, unsigned int idx, double *val)
char GEOSWithin_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
void GEOSWKTWriter_setRoundingPrecision_r(GEOSContextHandle_t handle, GEOSWKTWriter *writer, int precision)
void GEOSMakeValidParams_destroy(GEOSMakeValidParams *parms)
int GEOSGeomGetLength_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *length)
Definition: geos_c.h:1223
char * GEOSGeomToWKT(const GEOSGeometry *g)
void initGEOS(GEOSMessageHandler notice_function, GEOSMessageHandler error_function)
int GEOSGetSRID_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
int GEOS_getWKBOutputDims_r(GEOSContextHandle_t handle)
GEOSGeometry * GEOSSharedPaths_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
int GEOSGetNumCoordinates_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
char GEOSPreparedCrosses(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
GEOSGeometry * GEOSWKTReader_read(GEOSWKTReader *reader, const char *wkt)
struct GEOSGeoJSONReader_t GEOSGeoJSONReader
Definition: geos_c.h:1629
void(* GEOSMessageHandler)(const char *fmt,...)
Definition: geos_c.h:105
GEOSGeometry * GEOSConstrainedDelaunayTriangulation(const GEOSGeometry *g)
struct GEOSGeom_t GEOSGeometry
Definition: geos_c.h:139
GEOSGeometry * GEOSCoverageUnion_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
int GEOSWKTWriter_getOutputDimension(GEOSWKTWriter *writer)
GEOSGeometry * GEOSGeoJSONReader_readGeometry(GEOSGeoJSONReader *reader, const char *geojson)
double GEOSGeom_getPrecision_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSInterruptCallback * GEOS_interruptRegisterCallback(GEOSInterruptCallback *cb)
int GEOSHausdorffDistanceDensify_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double densifyFrac, double *dist)
GEOSCoordSequence * GEOSNearestPoints_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
GEOSGeometry * GEOSWKBReader_read(GEOSWKBReader *reader, const unsigned char *wkb, size_t size)
int GEOSBufferParams_setSingleSided(GEOSBufferParams *p, int singleSided)
char * GEOSGeoJSONWriter_writeGeometry(GEOSGeoJSONWriter *writer, const GEOSGeometry *g, int indent)
GEOSCoordSequence * GEOSCoordSeq_copyFromBuffer(const double *buf, unsigned int size, int hasZ, int hasM)
GEOSGeometry * GEOSCoverageUnion(const GEOSGeometry *g)
const GEOSGeometry * GEOSGetGeometryN(const GEOSGeometry *g, int n)
GEOSGeometry * GEOSSharedPaths(const GEOSGeometry *g1, const GEOSGeometry *g2)
void GEOSWKBReader_destroy(GEOSWKBReader *reader)
GEOSGeometry * GEOSConvexHull(const GEOSGeometry *g)
GEOSGeometry * GEOSGeomGetPointN_r(GEOSContextHandle_t handle, const GEOSGeometry *g, int n)
char GEOSPreparedDistanceWithin(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2, double dist)
int GEOSGetNumGeometries(const GEOSGeometry *g)
char GEOSRelatePatternMatch(const char *mat, const char *pat)
int GEOSFrechetDistanceDensify(const GEOSGeometry *g1, const GEOSGeometry *g2, double densifyFrac, double *dist)
int GEOSCoordSeq_copyToArrays(const GEOSCoordSequence *s, double *x, double *y, double *z, double *m)
GEOSGeometry * GEOSDifference_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
int GEOS_setWKBOutputDims_r(GEOSContextHandle_t handle, int newDims)
GEOSGeometry * GEOSSimplify(const GEOSGeometry *g, double tolerance)
int GEOSBufferParams_setQuadrantSegments(GEOSBufferParams *p, int quadSegs)
GEOSGeometry * GEOSConstrainedDelaunayTriangulation_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSGeom_createPoint_r(GEOSContextHandle_t handle, GEOSCoordSequence *s)
struct GEOSContextHandle_HS * GEOSContextHandle_t
Definition: geos_c.h:94
GEOSGeometry * GEOSGeom_createLineString(GEOSCoordSequence *s)
char GEOSPreparedDistanceWithin_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2, double dist)
GEOSWKBWriter * GEOSWKBWriter_create_r(GEOSContextHandle_t handle)
GEOSGeometry * GEOSTopologyPreserveSimplify_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double tolerance)
int GEOSLength_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *length)
void GEOSFree_r(GEOSContextHandle_t handle, void *buffer)
void GEOSWKBWriter_setFlavor(GEOSWKBWriter *writer, int flavor)
char GEOSWKBWriter_getIncludeSRID_r(GEOSContextHandle_t handle, const GEOSWKBWriter *writer)
unsigned char * GEOSWKBWriter_write_r(GEOSContextHandle_t handle, GEOSWKBWriter *writer, const GEOSGeometry *g, size_t *size)
unsigned char * GEOSWKBWriter_writeHEX(GEOSWKBWriter *writer, const GEOSGeometry *g, size_t *size)
GEOSGeometry * GEOSGeom_createEmptyLineString_r(GEOSContextHandle_t handle)
void GEOSWKBWriter_setFlavor_r(GEOSContextHandle_t handle, GEOSWKBWriter *writer, int flavor)
Definition: geos_c.h:1392
char GEOSPreparedCovers(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
GEOSGeometry * GEOSDifference(const GEOSGeometry *ga, const GEOSGeometry *gb)
const GEOSCoordSequence * GEOSGeom_getCoordSeq_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSSymDifference(const GEOSGeometry *ga, const GEOSGeometry *gb)
GEOSGeometry * GEOSPolygonize_valid(const GEOSGeometry *const geoms[], unsigned int ngeoms)
int GEOSOrientationIndex_r(GEOSContextHandle_t handle, double Ax, double Ay, double Bx, double By, double Px, double Py)
char GEOSTouches(const GEOSGeometry *g1, const GEOSGeometry *g2)
void GEOSFree(void *buffer)
int GEOSCoordSeq_setXYZ(GEOSCoordSequence *s, unsigned int idx, double x, double y, double z)
char GEOSisSimple(const GEOSGeometry *g)
int GEOSCoordSeq_isCCW_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s, char *is_ccw)
char GEOSCoveredBy_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
int GEOSCoordSeq_setX_r(GEOSContextHandle_t handle, GEOSCoordSequence *s, unsigned int idx, double val)
Definition: geos_c.h:202
GEOSGeometry * GEOSGeomGetEndPoint(const GEOSGeometry *g)
GEOSGeoJSONReader * GEOSGeoJSONReader_create(void)
int GEOSPreparedDistance(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2, double *dist)
char GEOSisClosed_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
int GEOSDistanceIndexed(const GEOSGeometry *g1, const GEOSGeometry *g2, double *dist)
int GEOSGeomTypeId(const GEOSGeometry *g)
int GEOSCoordSeq_getZ(const GEOSCoordSequence *s, unsigned int idx, double *val)
const GEOSGeometry * GEOSGetInteriorRingN_r(GEOSContextHandle_t handle, const GEOSGeometry *g, int n)
void GEOSCoordSeq_destroy(GEOSCoordSequence *s)
const GEOSGeometry * GEOSGetInteriorRingN(const GEOSGeometry *g, int n)
int GEOSCoordSeq_setOrdinate(GEOSCoordSequence *s, unsigned int idx, unsigned int dim, double val)
GEOSGeometry * GEOSMinimumRotatedRectangle(const GEOSGeometry *g)
Definition: geos_c.h:208
void(* GEOSQueryCallback)(void *item, void *userdata)
Definition: geos_c.h:251
void GEOSGeom_destroy_r(GEOSContextHandle_t handle, GEOSGeometry *g)
GEOSWKTWriter * GEOSWKTWriter_create(void)
char GEOSCrosses(const GEOSGeometry *g1, const GEOSGeometry *g2)
GEOSGeometry * GEOSMinimumClearanceLine_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSEnvelope(const GEOSGeometry *g)
int GEOSBufferParams_setJoinStyle(GEOSBufferParams *p, int joinStyle)
GEOSGeometry * GEOSReverse_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSInterpolate(const GEOSGeometry *line, double d)
Definition: geos_c.h:198
int GEOSBufferParams_setEndCapStyle(GEOSBufferParams *p, int style)
double GEOSProject_r(GEOSContextHandle_t handle, const GEOSGeometry *line, const GEOSGeometry *point)
GEOSGeometry * GEOSMaximumInscribedCircle(const GEOSGeometry *g, double tolerance)
GEOSGeometry * GEOSGeom_createCollection(int type, GEOSGeometry **geoms, unsigned int ngeoms)
char * GEOSGeomToWKT_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
void GEOSWKBReader_destroy_r(GEOSContextHandle_t handle, GEOSWKBReader *reader)
int GEOSGeom_getXMin_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *value)
int GEOSCoordSeq_getXY_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s, unsigned int idx, double *x, double *y)
void() GEOSInterruptCallback(void)
Definition: geos_c.h:286
int GEOSGeomGetLength(const GEOSGeometry *g, double *length)
int GEOSBufferParams_setMitreLimit_r(GEOSContextHandle_t handle, GEOSBufferParams *p, double mitreLimit)
char GEOSPreparedOverlaps(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
int GEOSGeom_getXMax(const GEOSGeometry *g, double *value)
int GEOSMakeValidParams_setMethod_r(GEOSContextHandle_t handle, GEOSMakeValidParams *p, enum GEOSMakeValidMethods method)
char GEOSisRing(const GEOSGeometry *g)
char GEOSPreparedDisjoint_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
GEOSGeometry * GEOSGeom_createLineString_r(GEOSContextHandle_t handle, GEOSCoordSequence *s)
char GEOSPreparedDisjoint(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
int GEOSGeomGetZ(const GEOSGeometry *g, double *z)
void GEOSWKTWriter_setOutputDimension_r(GEOSContextHandle_t handle, GEOSWKTWriter *writer, int dim)
unsigned char * GEOSGeomToHEX_buf(const GEOSGeometry *g, size_t *size)
void GEOSWKBWriter_setIncludeSRID(GEOSWKBWriter *writer, const char writeSRID)
GEOSGeometry * GEOSBufferWithStyle_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double width, int quadsegs, int endCapStyle, int joinStyle, double mitreLimit)
GEOSGeometry * GEOSPolygonizer_getCutEdges(const GEOSGeometry *const geoms[], unsigned int ngeoms)
const GEOSGeometry * GEOSSTRtree_nearest(GEOSSTRtree *tree, const GEOSGeometry *geom)
GEOSGeometry * GEOSMinimumClearanceLine(const GEOSGeometry *g)
unsigned char * GEOSWKBWriter_write(GEOSWKBWriter *writer, const GEOSGeometry *g, size_t *size)
int GEOSMakeValidParams_setKeepCollapsed_r(GEOSContextHandle_t handle, GEOSMakeValidParams *p, int style)
GEOSCoordSequence * GEOSPreparedNearestPoints(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
char GEOSRelatePatternMatch_r(GEOSContextHandle_t handle, const char *mat, const char *pat)
GEOSGeometry * GEOSTopologyPreserveSimplify(const GEOSGeometry *g, double tolerance)
void GEOSWKTWriter_setOld3D_r(GEOSContextHandle_t handle, GEOSWKTWriter *writer, int useOld3D)
GEOSGeoJSONWriter * GEOSGeoJSONWriter_create(void)
void GEOSWKBWriter_destroy_r(GEOSContextHandle_t handle, GEOSWKBWriter *writer)
GEOSGeometry * GEOSDifferencePrec(const GEOSGeometry *ga, const GEOSGeometry *gb, double gridSize)
char * GEOSWKTWriter_write(GEOSWKTWriter *writer, const GEOSGeometry *g)
void GEOSGeom_setUserData(GEOSGeometry *g, void *userData)
GEOSBufferParams * GEOSBufferParams_create(void)
int GEOSCoordSeq_getSize(const GEOSCoordSequence *s, unsigned int *size)
GEOSWKBWriter * GEOSWKBWriter_create(void)
GEOSGeometry * GEOSMakeValidWithParams_r(GEOSContextHandle_t handle, const GEOSGeometry *g, const GEOSMakeValidParams *makeValidParams)
struct GEOSPrepGeom_t GEOSPreparedGeometry
Definition: geos_c.h:146
GEOSGeometry * GEOSVoronoiDiagram(const GEOSGeometry *g, const GEOSGeometry *env, double tolerance, int onlyEdges)
char GEOSDisjoint(const GEOSGeometry *g1, const GEOSGeometry *g2)
GEOSGeometry * GEOSPolygonize(const GEOSGeometry *const geoms[], unsigned int ngeoms)
Definition: geos_c.h:1388
void GEOS_finish_r(GEOSContextHandle_t handle)
GEOSGeometry * GEOSGeom_createPoint(GEOSCoordSequence *s)
GEOSGeometry * GEOSBufferWithParams(const GEOSGeometry *g, const GEOSBufferParams *p, double width)
GEOSGeometry * GEOSGeom_extractUniquePoints(const GEOSGeometry *g)
void GEOSSTRtree_insert_r(GEOSContextHandle_t handle, GEOSSTRtree *tree, const GEOSGeometry *g, void *item)
char GEOSisValid_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
char * GEOSGeomType_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
int GEOSGeom_getYMin(const GEOSGeometry *g, double *value)
char * GEOSRelate(const GEOSGeometry *g1, const GEOSGeometry *g2)
struct GEOSWKBReader_t GEOSWKBReader
Definition: geos_c.h:1615
GEOSGeometry * GEOSUnion_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
GEOSGeometry * GEOSBuildArea_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSMakeValidMethods
Definition: geos_c.h:1288
GEOSGeometry * GEOSDifferencePrec_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double gridSize)
int GEOSGeomGetX_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *x)
GEOSWKBReader * GEOSWKBReader_create_r(GEOSContextHandle_t handle)
GEOSGeometry * GEOSMinimumWidth(const GEOSGeometry *g)
char GEOSPreparedTouches(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
void GEOSSTRtree_insert(GEOSSTRtree *tree, const GEOSGeometry *g, void *item)
GEOSGeometry * GEOSSymDifferencePrec(const GEOSGeometry *ga, const GEOSGeometry *gb, double gridSize)
void finishGEOS_r(GEOSContextHandle_t handle)
GEOSGeometry * GEOSMaximumInscribedCircle_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double tolerance)
void GEOSGeoJSONReader_destroy(GEOSGeoJSONReader *reader)
GEOSGeometry * GEOSUnionPrec_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double gridSize)
char GEOSSTRtree_remove_r(GEOSContextHandle_t handle, GEOSSTRtree *tree, const GEOSGeometry *g, void *item)
char GEOSTouches_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
char GEOSisValidDetail(const GEOSGeometry *g, int flags, char **reason, GEOSGeometry **location)
GEOSGeometry * GEOSPolygonize_full_r(GEOSContextHandle_t handle, const GEOSGeometry *input, GEOSGeometry **cuts, GEOSGeometry **dangles, GEOSGeometry **invalidRings)
int GEOSGetNumInteriorRings_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSWKBReader_readHEX_r(GEOSContextHandle_t handle, GEOSWKBReader *reader, const unsigned char *hex, size_t size)
int GEOSFrechetDistance(const GEOSGeometry *g1, const GEOSGeometry *g2, double *dist)
GEOSGeometry * GEOSGeom_setPrecision(const GEOSGeometry *g, double gridSize, int flags)
GEOSGeometry * GEOSSymDifference_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
void GEOSGeom_destroy(GEOSGeometry *g)
int GEOSPreparedDistance_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2, double *dist)
Definition: geos_c.h:1219
int GEOSCoordSeq_copyToArrays_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s, double *x, double *y, double *z, double *m)
char GEOSisClosed(const GEOSGeometry *g)
GEOSGeometry * GEOSGeom_createEmptyPolygon(void)
Definition: geos_c.h:558
int GEOSBufferParams_setSingleSided_r(GEOSContextHandle_t handle, GEOSBufferParams *p, int singleSided)
void GEOSPreparedGeom_destroy(const GEOSPreparedGeometry *g)
void GEOSSTRtree_query(GEOSSTRtree *tree, const GEOSGeometry *g, GEOSQueryCallback callback, void *userdata)
int GEOSCoordSeq_getDimensions_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s, unsigned int *dims)
GEOSBufJoinStyles
Definition: geos_c.h:571
int GEOS_setWKBOutputDims(int newDims)
GEOSCoordSequence * GEOSCoordSeq_create_r(GEOSContextHandle_t handle, unsigned int size, unsigned int dims)
int GEOSDistance_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double *dist)
void GEOS_interruptRequest(void)
GEOSGeometry * GEOSBoundary(const GEOSGeometry *g)
GEOSGeometry * GEOSLineMerge_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSMinimumBoundingCircle(const GEOSGeometry *g, double *radius, GEOSGeometry **center)
GEOSSTRtree * GEOSSTRtree_create(size_t nodeCapacity)
GEOSGeometry * GEOSUnaryUnionPrec_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double gridSize)
void GEOSBufferParams_destroy_r(GEOSContextHandle_t handle, GEOSBufferParams *parms)
Definition: geos_c.h:225
void GEOSSTRtree_destroy_r(GEOSContextHandle_t handle, GEOSSTRtree *tree)
Definition: geos_c.h:206
GEOSCoordSequence * GEOSCoordSeq_create(unsigned int size, unsigned int dims)
void GEOSWKTWriter_setOutputDimension(GEOSWKTWriter *writer, int dim)
int GEOS_getWKBOutputDims(void)
int GEOSBufferParams_setQuadrantSegments_r(GEOSContextHandle_t handle, GEOSBufferParams *p, int quadSegs)
GEOSGeometry * GEOSGeomFromWKT(const char *wkt)
int GEOSWKBWriter_getByteOrder(const GEOSWKBWriter *writer)
char GEOSOverlaps(const GEOSGeometry *g1, const GEOSGeometry *g2)
Definition: geos_c.h:1225
void GEOSGeoJSONReader_destroy_r(GEOSContextHandle_t handle, GEOSGeoJSONReader *reader)
int GEOSCoordSeq_setXY_r(GEOSContextHandle_t handle, GEOSCoordSequence *s, unsigned int idx, double x, double y)
char GEOSPreparedIntersects_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
Definition: geos_c.h:212
void finishGEOS(void)
int GEOSWKBWriter_getFlavor(const GEOSWKBWriter *writer)
int GEOSDistance(const GEOSGeometry *g1, const GEOSGeometry *g2, double *dist)
struct GEOSCoordSeq_t GEOSCoordSequence
Definition: geos_c.h:153
char GEOSWKBWriter_getIncludeSRID(const GEOSWKBWriter *writer)
GEOSGeometry * GEOSGeom_clone(const GEOSGeometry *g)
int GEOS_setWKBByteOrder_r(GEOSContextHandle_t handle, int byteOrder)
GEOSGeometry * GEOSGeom_extractUniquePoints_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSGeom_createPointFromXY(double x, double y)
const GEOSCoordSequence * GEOSGeom_getCoordSeq(const GEOSGeometry *g)
int GEOSCoordSeq_setZ(GEOSCoordSequence *s, unsigned int idx, double val)
char GEOSPreparedOverlaps_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
GEOSPrecisionRules
Definition: geos_c.h:1386
Definition: geos_c.h:210
void GEOSWKBWriter_setOutputDimension_r(GEOSContextHandle_t handle, GEOSWKBWriter *writer, int newDimension)
GEOSGeometry * GEOSInterpolate_r(GEOSContextHandle_t handle, const GEOSGeometry *line, double d)
void GEOSSTRtree_iterate(GEOSSTRtree *tree, GEOSQueryCallback callback, void *userdata)
int GEOSMakeValidParams_setKeepCollapsed(GEOSMakeValidParams *p, int keepCollapsed)
int GEOSOrientationIndex(double Ax, double Ay, double Bx, double By, double Px, double Py)
int GEOSMinimumClearance(const GEOSGeometry *g, double *d)
GEOSGeometry * GEOSGeom_createPolygon_r(GEOSContextHandle_t handle, GEOSGeometry *shell, GEOSGeometry **holes, unsigned int nholes)
char GEOSPreparedContainsProperly_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
GEOSGeometry * GEOSGeom_createLinearRing(GEOSCoordSequence *s)
GEOSGeometry * GEOSIntersection_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
int GEOSCoordSeq_setY(GEOSCoordSequence *s, unsigned int idx, double val)
int GEOSHausdorffDistance_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double *dist)
int GEOSCoordSeq_getOrdinate(const GEOSCoordSequence *s, unsigned int idx, unsigned int dim, double *val)
int GEOSGeom_getXMin(const GEOSGeometry *g, double *value)
char GEOSEquals(const GEOSGeometry *g1, const GEOSGeometry *g2)
GEOSGeometry * GEOSGeoJSONReader_readGeometry_r(GEOSContextHandle_t handle, GEOSGeoJSONReader *reader, const char *geojson)
int GEOSCoordSeq_setXY(GEOSCoordSequence *s, unsigned int idx, double x, double y)
char GEOSContains(const GEOSGeometry *g1, const GEOSGeometry *g2)
GEOSGeometry * GEOSGeomGetStartPoint_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSWKBFlavors
Definition: geos_c.h:237
void GEOS_interruptCancel(void)
GEOSMessageHandler GEOSContext_setNoticeHandler_r(GEOSContextHandle_t extHandle, GEOSMessageHandler nf)
GEOSGeometry * GEOSPointOnSurface(const GEOSGeometry *g)
GEOSGeometry * GEOSDensify(const GEOSGeometry *g, double tolerance)
GEOSGeometry * GEOSGeomGetEndPoint_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSGeom_createEmptyLineString(void)
char GEOSisValid(const GEOSGeometry *g)
char GEOSEqualsExact_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double tolerance)
GEOSGeometry * GEOSDelaunayTriangulation_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double tolerance, int onlyEdges)
int GEOSHausdorffDistanceDensify(const GEOSGeometry *g1, const GEOSGeometry *g2, double densifyFrac, double *dist)
char GEOSDisjoint_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
GEOSGeometry * GEOSOffsetCurve_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double width, int quadsegs, int joinStyle, double mitreLimit)
GEOSMessageHandler_r GEOSContext_setErrorMessageHandler_r(GEOSContextHandle_t extHandle, GEOSMessageHandler_r ef, void *userData)
GEOSGeometry * GEOSPointOnSurface_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSMakeValid(const GEOSGeometry *g)
Definition: geos_c.h:581
GEOSGeometry * GEOSMakeValid_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
struct GEOSSTRtree_t GEOSSTRtree
Definition: geos_c.h:160
GEOSGeometry * GEOSPolygonize_r(GEOSContextHandle_t handle, const GEOSGeometry *const geoms[], unsigned int ngeoms)
int(* GEOSDistanceCallback)(const void *item1, const void *item2, double *distance, void *userdata)
Definition: geos_c.h:270
char GEOSCrosses_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
void GEOSWKTWriter_setTrim(GEOSWKTWriter *writer, char trim)
char GEOSCoveredBy(const GEOSGeometry *g1, const GEOSGeometry *g2)
GEOSGeometry * GEOSNode_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSUnionPrec(const GEOSGeometry *ga, const GEOSGeometry *gb, double gridSize)
GEOSGeomTypes
Definition: geos_c.h:196
GEOSGeometry * GEOSSymDifferencePrec_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double gridSize)
void GEOSSetSRID_r(GEOSContextHandle_t handle, GEOSGeometry *g, int SRID)
unsigned char * GEOSGeomToWKB_buf(const GEOSGeometry *g, size_t *size)
char GEOSPreparedContainsProperly(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
struct GEOSWKTWriter_t GEOSWKTWriter
Definition: geos_c.h:1608
void GEOSBufferParams_destroy(GEOSBufferParams *parms)
GEOSCoordSequence * GEOSCoordSeq_copyFromBuffer_r(GEOSContextHandle_t handle, const double *buf, unsigned int size, int hasZ, int hasM)
char GEOSIntersects_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
char GEOSPreparedContains_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
GEOSWKBByteOrders
Definition: geos_c.h:221
char GEOSDistanceWithin(const GEOSGeometry *g1, const GEOSGeometry *g2, double dist)
int GEOSGetNumCoordinates(const GEOSGeometry *g)
void GEOSWKTWriter_setOld3D(GEOSWKTWriter *writer, int useOld3D)
Definition: geos_c.h:1217
GEOSGeometry * GEOSGeom_createEmptyPolygon_r(GEOSContextHandle_t handle)
GEOSWKTReader * GEOSWKTReader_create(void)
GEOSGeometry * GEOSIntersectionPrec_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double gridSize)
GEOSGeometry * GEOSGeom_createPolygon(GEOSGeometry *shell, GEOSGeometry **holes, unsigned int nholes)
void GEOSWKTWriter_setTrim_r(GEOSContextHandle_t handle, GEOSWKTWriter *writer, char trim)
const GEOSGeometry * GEOSGetExteriorRing_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSCoordSequence * GEOSCoordSeq_clone(const GEOSCoordSequence *s)
GEOSGeometry * GEOSUnionCascaded_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSGeom_createCollection_r(GEOSContextHandle_t handle, int type, GEOSGeometry **geoms, unsigned int ngeoms)
int GEOSGetNumGeometries_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSCoordSequence * GEOSCoordSeq_clone_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s)
const char * GEOSversion(void)
GEOSGeometry * GEOSGeomFromHEX_buf_r(GEOSContextHandle_t handle, const unsigned char *hex, size_t size)
void GEOSWKBWriter_setOutputDimension(GEOSWKBWriter *writer, int newDimension)
Definition: geos_c.h:241
Definition: geos_c.h:204
void GEOSWKBWriter_setByteOrder_r(GEOSContextHandle_t handle, GEOSWKBWriter *writer, int byteOrder)
GEOSGeometry * GEOSIntersectionPrec(const GEOSGeometry *g1, const GEOSGeometry *g2, double gridSize)
void GEOSWKTWriter_setRoundingPrecision(GEOSWKTWriter *writer, int precision)
GEOSGeometry * GEOSPolygonize_full(const GEOSGeometry *input, GEOSGeometry **cuts, GEOSGeometry **dangles, GEOSGeometry **invalid)
GEOSGeometry * GEOSReverse(const GEOSGeometry *g)
char GEOSPreparedWithin_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
char * GEOSWKTWriter_write_r(GEOSContextHandle_t handle, GEOSWKTWriter *writer, const GEOSGeometry *g)
int GEOSCoordSeq_getSize_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s, unsigned int *size)
Definition: geos_c.h:564
char GEOSPreparedCovers_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
Definition: geos_c.h:1292
GEOSGeometry * GEOSWKTReader_read_r(GEOSContextHandle_t handle, GEOSWKTReader *reader, const char *wkt)
int GEOSCoordSeq_getY(const GEOSCoordSequence *s, unsigned int idx, double *val)
GEOSGeometry * GEOSGeomFromHEX_buf(const unsigned char *hex, size_t size)
GEOSGeometry * GEOSIntersection(const GEOSGeometry *g1, const GEOSGeometry *g2)
int GEOSGeomGetY_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *y)
char GEOSWithin(const GEOSGeometry *g1, const GEOSGeometry *g2)
int GEOSGeomGetY(const GEOSGeometry *g, double *y)
int GEOSWKBWriter_getByteOrder_r(GEOSContextHandle_t handle, const GEOSWKBWriter *writer)
GEOSGeometry * GEOSNode(const GEOSGeometry *g)
struct GEOSMakeValidParams_t GEOSMakeValidParams
Definition: geos_c.h:174
int GEOSGeomGetZ_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *z)
int GEOSGetSRID(const GEOSGeometry *g)
GEOSGeometry * GEOSUnionCascaded(const GEOSGeometry *g)
GEOSGeometry * GEOSLineMerge(const GEOSGeometry *g)
GEOSGeometry * GEOSLargestEmptyCircle_r(GEOSContextHandle_t handle, const GEOSGeometry *g, const GEOSGeometry *boundary, double tolerance)
void GEOSCoordSeq_destroy_r(GEOSContextHandle_t handle, GEOSCoordSequence *s)
int GEOSDistanceIndexed_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double *dist)
int GEOSCoordSeq_setXYZ_r(GEOSContextHandle_t handle, GEOSCoordSequence *s, unsigned int idx, double x, double y, double z)
GEOSGeometry * GEOSGeom_createLinearRing_r(GEOSContextHandle_t handle, GEOSCoordSequence *s)
int GEOSNormalize_r(GEOSContextHandle_t handle, GEOSGeometry *g)
int GEOS_getWKBByteOrder_r(GEOSContextHandle_t handle)
GEOSCoordSequence * GEOSNearestPoints(const GEOSGeometry *g1, const GEOSGeometry *g2)
GEOSGeometry * GEOSPolygonizer_getCutEdges_r(GEOSContextHandle_t handle, const GEOSGeometry *const geoms[], unsigned int ngeoms)
unsigned char * GEOSGeomToWKB_buf_r(GEOSContextHandle_t handle, const GEOSGeometry *g, size_t *size)
void GEOSWKTReader_destroy_r(GEOSContextHandle_t handle, GEOSWKTReader *reader)
GEOSGeometry * GEOSClipByRect(const GEOSGeometry *g, double xmin, double ymin, double xmax, double ymax)
unsigned char * GEOSGeomToHEX_buf_r(GEOSContextHandle_t handle, const GEOSGeometry *g, size_t *size)
Definition: geos_c.h:586
int GEOSMinimumClearance_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *distance)
GEOSGeometry * GEOSMinimumBoundingCircle_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *radius, GEOSGeometry **center)
char GEOSisRing_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSDelaunayTriangulation(const GEOSGeometry *g, double tolerance, int onlyEdges)
GEOSWKBReader * GEOSWKBReader_create(void)
int GEOSWKTWriter_getOutputDimension_r(GEOSContextHandle_t handle, GEOSWKTWriter *writer)
GEOSGeometry * GEOSGeom_setPrecision_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double gridSize, int flags)
int GEOSCoordSeq_getZ_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s, unsigned int idx, double *val)
GEOSGeometry * GEOSPolygonize_valid_r(GEOSContextHandle_t handle, const GEOSGeometry *const geoms[], unsigned int ngems)
GEOSGeometry * GEOSGeom_createEmptyCollection_r(GEOSContextHandle_t handle, int type)
Definition: geos_c.h:223
void GEOSSTRtree_query_r(GEOSContextHandle_t handle, GEOSSTRtree *tree, const GEOSGeometry *g, GEOSQueryCallback callback, void *userdata)
char GEOSHasZ_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
char GEOSPreparedCrosses_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)