GEOS  3.13.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 
40 #ifndef GEOS_C_H_INCLUDED
41 #define GEOS_C_H_INCLUDED
42 
43 #ifndef __cplusplus
44 # include <stddef.h> /* for size_t definition */
45 #else
46 # include <cstddef>
47 using std::size_t;
48 #endif
49 
50 #ifdef __cplusplus
51 extern "C" {
52 #endif
53 
54 /* ====================================================================== */
55 /* Version */
56 /* ====================================================================== */
57 
60 #ifndef GEOS_VERSION_MAJOR
61 #define GEOS_VERSION_MAJOR 3
62 #endif
63 #ifndef GEOS_VERSION_MINOR
64 #define GEOS_VERSION_MINOR 13
65 #endif
66 #ifndef GEOS_VERSION_PATCH
67 #define GEOS_VERSION_PATCH 1
68 #endif
69 #ifndef GEOS_VERSION
70 #define GEOS_VERSION "3.13.1"
71 #endif
72 #ifndef GEOS_JTS_PORT
73 #define GEOS_JTS_PORT "1.18.0"
74 #endif
75 
76 #define GEOS_CAPI_VERSION_MAJOR 1
77 #define GEOS_CAPI_VERSION_MINOR 19
78 #define GEOS_CAPI_VERSION_PATCH 2
79 #define GEOS_CAPI_VERSION "3.13.1-CAPI-1.19.2"
80 
81 #define GEOS_CAPI_FIRST_INTERFACE GEOS_CAPI_VERSION_MAJOR
82 #define GEOS_CAPI_LAST_INTERFACE (GEOS_CAPI_VERSION_MAJOR+GEOS_CAPI_VERSION_MINOR)
83 
86 #include <geos/export.h>
87 
88 
95 typedef struct GEOSContextHandle_HS *GEOSContextHandle_t;
96 
105 typedef void (*GEOSMessageHandler)(GEOS_PRINTF_FORMAT const char *fmt, ...)
106  GEOS_PRINTF_FORMAT_ATTR(1, 2);
107 
118 typedef void (*GEOSMessageHandler_r)(const char *message, void *userdata);
119 
120 /*
121 * When we're included by geos_c.cpp, these types are #defined to the
122 * C++ definitions via preprocessor. We don't touch them to allow the
123 * compiler to cross-check the declarations. However, for all "normal"
124 * C-API users, we need to define these types as "opaque" struct pointers, as
125 * those clients don't have access to the original C++ headers, by design.
126 */
127 #ifndef GEOSGeometry
128 
140 typedef struct GEOSGeom_t GEOSGeometry;
141 
147 typedef struct GEOSPrepGeom_t GEOSPreparedGeometry;
148 
155 typedef struct GEOSCoordSeq_t GEOSCoordSequence;
156 
162 typedef struct GEOSSTRtree_t GEOSSTRtree;
163 
169 typedef struct GEOSBufParams_t GEOSBufferParams;
170 
176 typedef struct GEOSMakeValidParams_t GEOSMakeValidParams;
177 
178 #endif
179 
182 /*
183 * These are compatibility definitions for source compatibility
184 * with GEOS 2.X clients relying on that type.
185 */
186 typedef GEOSGeometry* GEOSGeom;
187 typedef GEOSCoordSequence* GEOSCoordSeq;
188 
215  GEOS_CIRCULARSTRING,
216  GEOS_COMPOUNDCURVE,
217  GEOS_CURVEPOLYGON,
218  GEOS_MULTICURVE,
219  GEOS_MULTISURFACE,
220 };
221 
232  GEOS_WKB_NDR = 1
233 };
234 
248  GEOS_WKB_ISO = 2
249 };
250 
258 typedef void (*GEOSQueryCallback)(void *item, void *userdata);
259 
277 typedef int (*GEOSDistanceCallback)(
278  const void* item1,
279  const void* item2,
280  double* distance,
281  void* userdata);
282 
283 
296 typedef int (*GEOSTransformXYCallback)(
297  double* x,
298  double* y,
299  void* userdata);
300 
301 
302 /* ========== Interruption ========== */
303 
312 typedef void (GEOSInterruptCallback)(void);
313 
323 
328 extern void GEOS_DLL GEOS_interruptRequest(void);
329 
334 extern void GEOS_DLL GEOS_interruptCancel(void);
335 
336 /* ========== Initialization and Cleanup ========== */
337 
346 extern GEOSContextHandle_t GEOS_DLL GEOS_init_r(void);
347 
355 extern void GEOS_DLL GEOS_finish_r(GEOSContextHandle_t handle);
356 
366  GEOSContextHandle_t extHandle,
367  GEOSMessageHandler nf);
368 
380  GEOSContextHandle_t extHandle,
381  GEOSMessageHandler ef);
382 
393  GEOSContextHandle_t extHandle,
395  void *userData);
396 
409  GEOSContextHandle_t extHandle,
411  void *userData);
412 
413 /* ========== Coordinate Sequence functions ========== */
414 
417  GEOSContextHandle_t handle,
418  unsigned int size,
419  unsigned int dims);
420 
423  GEOSContextHandle_t handle,
424  const double* buf,
425  unsigned int size,
426  int hasZ,
427  int hasM);
428 
431  GEOSContextHandle_t handle,
432  const double* x,
433  const double* y,
434  const double* z,
435  const double* m,
436  unsigned int size);
437 
439 extern int GEOS_DLL GEOSCoordSeq_copyToBuffer_r(
440  GEOSContextHandle_t handle,
441  const GEOSCoordSequence* s,
442  double* buf,
443  int hasZ,
444  int hasM);
445 
447 extern int GEOS_DLL GEOSCoordSeq_copyToArrays_r(
448  GEOSContextHandle_t handle,
449  const GEOSCoordSequence* s,
450  double* x,
451  double* y,
452  double* z,
453  double* m);
454 
457  GEOSContextHandle_t handle,
458  const GEOSCoordSequence* s);
459 
461 extern void GEOS_DLL GEOSCoordSeq_destroy_r(
462  GEOSContextHandle_t handle,
463  GEOSCoordSequence* s);
464 
466 extern int GEOS_DLL GEOSCoordSeq_setX_r(
467  GEOSContextHandle_t handle,
468  GEOSCoordSequence* s, unsigned int idx,
469  double val);
470 
472 extern int GEOS_DLL GEOSCoordSeq_setY_r(
473  GEOSContextHandle_t handle,
474  GEOSCoordSequence* s, unsigned int idx,
475  double val);
476 
478 extern int GEOS_DLL GEOSCoordSeq_setZ_r(
479  GEOSContextHandle_t handle,
480  GEOSCoordSequence* s, unsigned int idx,
481  double val);
482 
484 extern int GEOS_DLL GEOSCoordSeq_setXY_r(
485  GEOSContextHandle_t handle,
486  GEOSCoordSequence* s, unsigned int idx,
487  double x, double y);
488 
490 extern int GEOS_DLL GEOSCoordSeq_setXYZ_r(
491  GEOSContextHandle_t handle,
492  GEOSCoordSequence* s, unsigned int idx,
493  double x, double y, double z);
494 
496 extern int GEOS_DLL GEOSCoordSeq_setOrdinate_r(
497  GEOSContextHandle_t handle,
499  unsigned int idx,
500  unsigned int dim, double val);
501 
503 extern int GEOS_DLL GEOSCoordSeq_getX_r(
504  GEOSContextHandle_t handle,
505  const GEOSCoordSequence* s,
506  unsigned int idx, double *val);
507 
509 extern int GEOS_DLL GEOSCoordSeq_getY_r(
510  GEOSContextHandle_t handle,
511  const GEOSCoordSequence* s,
512  unsigned int idx, double *val);
513 
515 extern int GEOS_DLL GEOSCoordSeq_getZ_r(
516  GEOSContextHandle_t handle,
517  const GEOSCoordSequence* s,
518  unsigned int idx, double *val);
519 
521 extern int GEOS_DLL GEOSCoordSeq_getXY_r(
522  GEOSContextHandle_t handle,
523  const GEOSCoordSequence* s,
524  unsigned int idx,
525  double *x, double *y);
526 
528 extern int GEOS_DLL GEOSCoordSeq_getXYZ_r(
529  GEOSContextHandle_t handle,
530  const GEOSCoordSequence* s,
531  unsigned int idx,
532  double *x, double *y, double *z);
533 
535 extern int GEOS_DLL GEOSCoordSeq_getOrdinate_r(
536  GEOSContextHandle_t handle,
537  const GEOSCoordSequence* s,
538  unsigned int idx,
539  unsigned int dim, double *val);
540 
542 extern int GEOS_DLL GEOSCoordSeq_getSize_r(
543  GEOSContextHandle_t handle,
544  const GEOSCoordSequence* s,
545  unsigned int *size);
546 
548 extern int GEOS_DLL GEOSCoordSeq_getDimensions_r(
549  GEOSContextHandle_t handle,
550  const GEOSCoordSequence* s,
551  unsigned int *dims);
552 
554 extern int GEOS_DLL GEOSCoordSeq_isCCW_r(
555  GEOSContextHandle_t handle,
556  const GEOSCoordSequence* s,
557  char* is_ccw);
558 
559 /* ========= Linear referencing functions ========= */
560 
562 extern double GEOS_DLL GEOSProject_r(
563  GEOSContextHandle_t handle,
564  const GEOSGeometry *line,
565  const GEOSGeometry *point);
566 
569  GEOSContextHandle_t handle,
570  const GEOSGeometry *line,
571  double d);
572 
574 extern double GEOS_DLL GEOSProjectNormalized_r(
575  GEOSContextHandle_t handle,
576  const GEOSGeometry *g,
577  const GEOSGeometry *p);
578 
581  GEOSContextHandle_t handle,
582  const GEOSGeometry *g,
583  double d);
584 
585 /* ========== Buffer related functions ========== */
586 
588 extern GEOSGeometry GEOS_DLL *GEOSBuffer_r(
589  GEOSContextHandle_t handle,
590  const GEOSGeometry* g,
591  double width, int quadsegs);
592 
598 
601 
604 
607 };
608 
629 };
630 
633  GEOSContextHandle_t handle);
634 
636 extern void GEOS_DLL GEOSBufferParams_destroy_r(
637  GEOSContextHandle_t handle,
638  GEOSBufferParams* parms);
639 
642  GEOSContextHandle_t handle,
643  GEOSBufferParams* p,
644  int style);
645 
648  GEOSContextHandle_t handle,
649  GEOSBufferParams* p,
650  int joinStyle);
651 
654  GEOSContextHandle_t handle,
655  GEOSBufferParams* p,
656  double mitreLimit);
657 
660  GEOSContextHandle_t handle,
661  GEOSBufferParams* p,
662  int quadSegs);
663 
666  GEOSContextHandle_t handle,
667  GEOSBufferParams* p,
668  int singleSided);
669 
672  GEOSContextHandle_t handle,
673  const GEOSGeometry* g,
674  const GEOSBufferParams* p,
675  double width);
676 
679  GEOSContextHandle_t handle,
680  const GEOSGeometry* g,
681  double width, int quadsegs, int endCapStyle,
682  int joinStyle, double mitreLimit);
683 
685 extern GEOSGeometry GEOS_DLL *GEOSDensify_r(
686  GEOSContextHandle_t handle,
687  const GEOSGeometry* g,
688  double tolerance);
689 
692  GEOSContextHandle_t handle,
693  const GEOSGeometry* g, double width, int quadsegs,
694  int joinStyle, double mitreLimit);
695 
696 
697 /* ========= Geometry Constructors ========= */
698 
701  GEOSContextHandle_t handle,
702  GEOSCoordSequence* s);
703 
706  GEOSContextHandle_t handle,
707  double x, double y);
708 
711  GEOSContextHandle_t handle);
712 
715  GEOSContextHandle_t handle,
716  GEOSCoordSequence* s);
717 
720  GEOSContextHandle_t handle,
721  GEOSCoordSequence* s);
722 
725  GEOSContextHandle_t handle);
726 
729  GEOSContextHandle_t handle);
730 
733  GEOSContextHandle_t handle,
734  GEOSGeometry* shell,
735  GEOSGeometry** holes,
736  unsigned int nholes);
737 
740  GEOSContextHandle_t handle,
741  int type,
742  GEOSGeometry* *geoms,
743  unsigned int ngeoms);
744 
747  GEOSContextHandle_t handle,
748  GEOSGeometry * collection,
749  unsigned int * ngeoms);
750 
753  GEOSContextHandle_t handle, int type);
754 
757  GEOSContextHandle_t handle,
758  double xmin, double ymin,
759  double xmax, double ymax);
760 
763  GEOSContextHandle_t handle,
764  const GEOSGeometry* g);
765 
768  GEOSContextHandle_t handle,
769  GEOSCoordSequence* s);
770 
773  GEOSContextHandle_t handle);
774 
777  GEOSContextHandle_t handle,
778  GEOSGeometry** curves,
779  unsigned int ncurves);
780 
783  GEOSContextHandle_t handle);
784 
787  GEOSContextHandle_t handle,
788  GEOSGeometry* shell,
789  GEOSGeometry** holes,
790  unsigned int nholes);
791 
794  GEOSContextHandle_t handle);
795 
796 /* ========= Memory management ========= */
797 
799 extern void GEOS_DLL GEOSGeom_destroy_r(
800  GEOSContextHandle_t handle,
801  GEOSGeometry* g);
802 
803 /* ========= Coverages ========= */
804 
806 extern GEOSGeometry GEOS_DLL *
808  GEOSContextHandle_t handle,
809  const GEOSGeometry* g);
810 
812 extern int GEOS_DLL
814  GEOSContextHandle_t extHandle,
815  const GEOSGeometry* input,
816  double gapWidth,
817  GEOSGeometry** output);
818 
820 extern GEOSGeometry GEOS_DLL *
822  GEOSContextHandle_t extHandle,
823  const GEOSGeometry* input,
824  double tolerance,
825  int preserveBoundary);
826 
827 /* ========= Topology Operations ========= */
828 
830 extern GEOSGeometry GEOS_DLL *GEOSEnvelope_r(
831  GEOSContextHandle_t handle,
832  const GEOSGeometry* g);
833 
836  GEOSContextHandle_t handle,
837  const GEOSGeometry* g1,
838  const GEOSGeometry* g2);
839 
842  GEOSContextHandle_t handle,
843  const GEOSGeometry* g1,
844  const GEOSGeometry* g2,
845  double gridSize);
846 
849  GEOSContextHandle_t handle,
850  const GEOSGeometry* g);
851 
854  GEOSContextHandle_t handle,
855  const GEOSGeometry* g,
856  double ratio,
857  unsigned int allowHoles);
858 
861  GEOSContextHandle_t handle,
862  const GEOSGeometry* g,
863  double ratio,
864  unsigned int allowHoles);
865 
868  GEOSContextHandle_t handle,
869  const GEOSGeometry* g,
870  unsigned int isOuter,
871  double vertexNumFraction);
872 
875  GEOSContextHandle_t handle,
876  const GEOSGeometry* g,
877  unsigned int isOuter,
878  unsigned int parameterMode,
879  double parameter);
880 
883  GEOSContextHandle_t handle,
884  const GEOSGeometry* g,
885  double lengthRatio,
886  unsigned int isTight,
887  unsigned int isHolesAllowed);
888 
891  GEOSContextHandle_t handle,
892  const GEOSGeometry* g);
893 
896  GEOSContextHandle_t handle,
897  const GEOSGeometry* g,
898  double tolerance);
899 
902  GEOSContextHandle_t handle,
903  const GEOSGeometry* g,
904  const GEOSGeometry* boundary,
905  double tolerance);
906 
909  GEOSContextHandle_t handle,
910  const GEOSGeometry* g);
911 
914  GEOSContextHandle_t handle,
915  const GEOSGeometry* g);
916 
918 extern int GEOS_DLL GEOSMinimumClearance_r(
919  GEOSContextHandle_t handle,
920  const GEOSGeometry* g,
921  double* distance);
922 
925  GEOSContextHandle_t handle,
926  const GEOSGeometry* g1,
927  const GEOSGeometry* g2);
928 
931  GEOSContextHandle_t handle,
932  const GEOSGeometry* g1,
933  const GEOSGeometry* g2,
934  double gridSize);
935 
938  GEOSContextHandle_t handle,
939  const GEOSGeometry* g1,
940  const GEOSGeometry* g2);
941 
944  GEOSContextHandle_t handle,
945  const GEOSGeometry* g1,
946  const GEOSGeometry* g2,
947  double gridSize);
948 
950 extern GEOSGeometry GEOS_DLL *GEOSBoundary_r(
951  GEOSContextHandle_t handle,
952  const GEOSGeometry* g);
953 
955 extern GEOSGeometry GEOS_DLL *GEOSUnion_r(
956  GEOSContextHandle_t handle,
957  const GEOSGeometry* g1,
958  const GEOSGeometry* g2);
959 
961 extern GEOSGeometry GEOS_DLL *GEOSUnionPrec_r(
962  GEOSContextHandle_t handle,
963  const GEOSGeometry* g1,
964  const GEOSGeometry* g2,
965  double gridSize);
966 
969  GEOSContextHandle_t handle,
970  const GEOSGeometry* g);
971 
974  GEOSContextHandle_t handle,
975  const GEOSGeometry* g,
976  double gridSize);
977 
980  GEOSContextHandle_t handle,
981  const GEOSGeometry* g);
982 
985  GEOSContextHandle_t handle,
986  const GEOSGeometry* g);
987 
990  GEOSContextHandle_t handle,
991  const GEOSGeometry* g);
992 
995  GEOSContextHandle_t handle,
996  const GEOSGeometry* g,
997  double* radius,
998  GEOSGeometry** center);
999 
1001 extern GEOSGeometry GEOS_DLL *GEOSNode_r(
1002  GEOSContextHandle_t handle,
1003  const GEOSGeometry* g);
1004 
1007  GEOSContextHandle_t handle,
1008  const GEOSGeometry* g,
1009  double xmin, double ymin,
1010  double xmax, double ymax);
1011 
1014  GEOSContextHandle_t handle,
1015  const GEOSGeometry *const geoms[],
1016  unsigned int ngeoms);
1017 
1020  GEOSContextHandle_t handle,
1021  const GEOSGeometry *const geoms[],
1022  unsigned int ngems);
1023 
1026  GEOSContextHandle_t handle,
1027  const GEOSGeometry * const geoms[],
1028  unsigned int ngeoms);
1029 
1032  GEOSContextHandle_t handle,
1033  const GEOSGeometry* input,
1034  GEOSGeometry** cuts,
1035  GEOSGeometry** dangles,
1036  GEOSGeometry** invalidRings);
1037 
1040  GEOSContextHandle_t handle,
1041  const GEOSGeometry* g);
1042 
1045  GEOSContextHandle_t handle,
1046  const GEOSGeometry* g);
1047 
1050  GEOSContextHandle_t handle,
1051  const GEOSGeometry* g);
1052 
1055  GEOSContextHandle_t handle,
1056  const GEOSGeometry* g,
1057  double start_fraction,
1058  double end_fdraction);
1059 
1061 extern GEOSGeometry GEOS_DLL *GEOSReverse_r(
1062  GEOSContextHandle_t handle,
1063  const GEOSGeometry* g);
1064 
1066 extern GEOSGeometry GEOS_DLL *GEOSSimplify_r(
1067  GEOSContextHandle_t handle,
1068  const GEOSGeometry* g,
1069  double tolerance);
1070 
1073  GEOSContextHandle_t handle,
1074  const GEOSGeometry* g, double tolerance);
1075 
1078  GEOSContextHandle_t handle,
1079  const GEOSGeometry* g);
1080 
1083  GEOSContextHandle_t handle,
1084  const GEOSGeometry* g1,
1085  const GEOSGeometry* g2);
1086 
1088 extern GEOSGeometry GEOS_DLL *GEOSSnap_r(
1089  GEOSContextHandle_t handle,
1090  const GEOSGeometry* g1,
1091  const GEOSGeometry* g2,
1092  double tolerance);
1093 
1096  GEOSContextHandle_t handle,
1097  const GEOSGeometry *g,
1098  double tolerance,
1099  int onlyEdges);
1100 
1103  GEOSContextHandle_t handle,
1104  const GEOSGeometry *g);
1105 
1108  GEOSContextHandle_t extHandle,
1109  const GEOSGeometry *g,
1110  const GEOSGeometry *env,
1111  double tolerance,
1112  int flags);
1113 
1115 extern int GEOS_DLL GEOSSegmentIntersection_r(
1116  GEOSContextHandle_t extHandle,
1117  double ax0, double ay0,
1118  double ax1, double ay1,
1119  double bx0, double by0,
1120  double bx1, double by1,
1121  double* cx, double* cy);
1122 
1123 /* ========= Binary predicates ========= */
1124 
1126 extern char GEOS_DLL GEOSDisjoint_r(
1127  GEOSContextHandle_t handle,
1128  const GEOSGeometry* g1,
1129  const GEOSGeometry* g2);
1130 
1132 extern char GEOS_DLL GEOSTouches_r(
1133  GEOSContextHandle_t handle,
1134  const GEOSGeometry* g1,
1135  const GEOSGeometry* g2);
1136 
1138 extern char GEOS_DLL GEOSIntersects_r(
1139  GEOSContextHandle_t handle,
1140  const GEOSGeometry* g1,
1141  const GEOSGeometry* g2);
1142 
1144 extern char GEOS_DLL GEOSCrosses_r(
1145  GEOSContextHandle_t handle,
1146  const GEOSGeometry* g1,
1147  const GEOSGeometry* g2);
1148 
1150 extern char GEOS_DLL GEOSWithin_r(
1151  GEOSContextHandle_t handle,
1152  const GEOSGeometry* g1,
1153  const GEOSGeometry* g2);
1154 
1156 extern char GEOS_DLL GEOSContains_r(
1157  GEOSContextHandle_t handle,
1158  const GEOSGeometry* g1,
1159  const GEOSGeometry* g2);
1160 
1162 extern char GEOS_DLL GEOSOverlaps_r(
1163  GEOSContextHandle_t handle,
1164  const GEOSGeometry* g1,
1165  const GEOSGeometry* g2);
1166 
1168 extern char GEOS_DLL GEOSEquals_r(
1169  GEOSContextHandle_t handle,
1170  const GEOSGeometry* g1,
1171  const GEOSGeometry* g2);
1172 
1174 extern char GEOS_DLL GEOSEqualsExact_r(
1175  GEOSContextHandle_t handle,
1176  const GEOSGeometry* g1,
1177  const GEOSGeometry* g2,
1178  double tolerance);
1179 
1181 extern char GEOS_DLL GEOSEqualsIdentical_r(
1182  GEOSContextHandle_t handle,
1183  const GEOSGeometry* g1,
1184  const GEOSGeometry* g2);
1185 
1187 extern char GEOS_DLL GEOSCovers_r(
1188  GEOSContextHandle_t handle,
1189  const GEOSGeometry* g1,
1190  const GEOSGeometry* g2);
1191 
1193 extern char GEOS_DLL GEOSCoveredBy_r(
1194  GEOSContextHandle_t handle,
1195  const GEOSGeometry* g1,
1196  const GEOSGeometry* g2);
1197 
1198 /* ========= Prepared Geometry Binary Predicates ========== */
1199 
1201 extern const GEOSPreparedGeometry GEOS_DLL *GEOSPrepare_r(
1202  GEOSContextHandle_t handle,
1203  const GEOSGeometry* g);
1204 
1206 extern void GEOS_DLL GEOSPreparedGeom_destroy_r(
1207  GEOSContextHandle_t handle,
1208  const GEOSPreparedGeometry* g);
1209 
1211 extern char GEOS_DLL GEOSPreparedContains_r(
1212  GEOSContextHandle_t handle,
1213  const GEOSPreparedGeometry* pg1,
1214  const GEOSGeometry* g2);
1215 
1217 extern char GEOS_DLL GEOSPreparedContainsXY_r(
1218  GEOSContextHandle_t handle,
1219  const GEOSPreparedGeometry* pg1,
1220  double x,
1221  double y);
1222 
1224 extern char GEOS_DLL GEOSPreparedContainsProperly_r(
1225  GEOSContextHandle_t handle,
1226  const GEOSPreparedGeometry* pg1,
1227  const GEOSGeometry* g2);
1228 
1230 extern char GEOS_DLL GEOSPreparedCoveredBy_r(
1231  GEOSContextHandle_t handle,
1232  const GEOSPreparedGeometry* pg1,
1233  const GEOSGeometry* g2);
1234 
1236 extern char GEOS_DLL GEOSPreparedCovers_r(
1237  GEOSContextHandle_t handle,
1238  const GEOSPreparedGeometry* pg1,
1239  const GEOSGeometry* g2);
1240 
1242 extern char GEOS_DLL GEOSPreparedCrosses_r(
1243  GEOSContextHandle_t handle,
1244  const GEOSPreparedGeometry* pg1,
1245  const GEOSGeometry* g2);
1246 
1248 extern char GEOS_DLL GEOSPreparedDisjoint_r(
1249  GEOSContextHandle_t handle,
1250  const GEOSPreparedGeometry* pg1,
1251  const GEOSGeometry* g2);
1252 
1254 extern char GEOS_DLL GEOSPreparedIntersects_r(
1255  GEOSContextHandle_t handle,
1256  const GEOSPreparedGeometry* pg1,
1257  const GEOSGeometry* g2);
1258 
1260 extern char GEOS_DLL GEOSPreparedIntersectsXY_r(
1261  GEOSContextHandle_t handle,
1262  const GEOSPreparedGeometry* pg1,
1263  double x,
1264  double y);
1265 
1267 extern char GEOS_DLL GEOSPreparedOverlaps_r(
1268  GEOSContextHandle_t handle,
1269  const GEOSPreparedGeometry* pg1,
1270  const GEOSGeometry* g2);
1271 
1273 extern char GEOS_DLL GEOSPreparedTouches_r(
1274  GEOSContextHandle_t handle,
1275  const GEOSPreparedGeometry* pg1,
1276  const GEOSGeometry* g2);
1277 
1279 extern char GEOS_DLL GEOSPreparedWithin_r(
1280  GEOSContextHandle_t handle,
1281  const GEOSPreparedGeometry* pg1,
1282  const GEOSGeometry* g2);
1283 
1285 extern char GEOS_DLL * GEOSPreparedRelate_r(
1286  GEOSContextHandle_t handle,
1287  const GEOSPreparedGeometry* pg1,
1288  const GEOSGeometry* g2);
1289 
1291 extern char GEOS_DLL GEOSPreparedRelatePattern_r(
1292  GEOSContextHandle_t handle,
1293  const GEOSPreparedGeometry* pg1,
1294  const GEOSGeometry* g2,
1295  const char* im);
1296 
1299  GEOSContextHandle_t handle,
1300  const GEOSPreparedGeometry* pg1,
1301  const GEOSGeometry* g2);
1302 
1304 extern int GEOS_DLL GEOSPreparedDistance_r(
1305  GEOSContextHandle_t handle,
1306  const GEOSPreparedGeometry* pg1,
1307  const GEOSGeometry* g2, double *dist);
1308 
1310 extern char GEOS_DLL GEOSPreparedDistanceWithin_r(
1311  GEOSContextHandle_t handle,
1312  const GEOSPreparedGeometry* pg1,
1313  const GEOSGeometry* g2, double dist);
1314 
1315 /* ========== STRtree ========== */
1316 
1319  GEOSContextHandle_t handle,
1320  size_t nodeCapacity);
1321 
1323 extern int GEOS_DLL GEOSSTRtree_build_r(
1324  GEOSContextHandle_t handle,
1325  GEOSSTRtree *tree);
1326 
1328 extern void GEOS_DLL GEOSSTRtree_insert_r(
1329  GEOSContextHandle_t handle,
1330  GEOSSTRtree *tree,
1331  const GEOSGeometry *g,
1332  void *item);
1333 
1335 extern void GEOS_DLL GEOSSTRtree_query_r(
1336  GEOSContextHandle_t handle,
1337  GEOSSTRtree *tree,
1338  const GEOSGeometry *g,
1339  GEOSQueryCallback callback,
1340  void *userdata);
1341 
1343 extern const GEOSGeometry GEOS_DLL *GEOSSTRtree_nearest_r(
1344  GEOSContextHandle_t handle,
1345  GEOSSTRtree *tree,
1346  const GEOSGeometry* geom);
1347 
1349 extern const void GEOS_DLL *GEOSSTRtree_nearest_generic_r(
1350  GEOSContextHandle_t handle,
1351  GEOSSTRtree *tree,
1352  const void* item,
1353  const GEOSGeometry* itemEnvelope,
1354  GEOSDistanceCallback distancefn,
1355  void* userdata);
1356 
1358 extern void GEOS_DLL GEOSSTRtree_iterate_r(
1359  GEOSContextHandle_t handle,
1360  GEOSSTRtree *tree,
1361  GEOSQueryCallback callback,
1362  void *userdata);
1363 
1365 extern char GEOS_DLL GEOSSTRtree_remove_r(
1366  GEOSContextHandle_t handle,
1367  GEOSSTRtree *tree,
1368  const GEOSGeometry *g,
1369  void *item);
1370 
1372 extern void GEOS_DLL GEOSSTRtree_destroy_r(
1373  GEOSContextHandle_t handle,
1374  GEOSSTRtree *tree);
1375 
1376 
1377 /* ========= Unary predicate ========= */
1378 
1380 extern char GEOS_DLL GEOSisEmpty_r(
1381  GEOSContextHandle_t handle,
1382  const GEOSGeometry* g);
1383 
1385 extern char GEOS_DLL GEOSisSimple_r(
1386  GEOSContextHandle_t handle,
1387  const GEOSGeometry* g);
1388 
1390 extern char GEOS_DLL GEOSisRing_r(
1391  GEOSContextHandle_t handle,
1392  const GEOSGeometry* g);
1393 
1395 extern char GEOS_DLL GEOSHasZ_r(
1396  GEOSContextHandle_t handle,
1397  const GEOSGeometry* g);
1398 
1400 extern char GEOS_DLL GEOSHasM_r(
1401  GEOSContextHandle_t handle,
1402  const GEOSGeometry* g);
1403 
1405 extern char GEOS_DLL GEOSisClosed_r(
1406  GEOSContextHandle_t handle,
1407  const GEOSGeometry *g);
1408 
1409 /* ========== Dimensionally Extended 9 Intersection Model ========== */
1410 
1426 };
1427 
1429 extern char GEOS_DLL GEOSRelatePattern_r(
1430  GEOSContextHandle_t handle,
1431  const GEOSGeometry* g1,
1432  const GEOSGeometry* g2,
1433  const char *imPattern);
1434 
1436 extern char GEOS_DLL *GEOSRelate_r(
1437  GEOSContextHandle_t handle,
1438  const GEOSGeometry* g1,
1439  const GEOSGeometry* g2);
1440 
1442 extern char GEOS_DLL GEOSRelatePatternMatch_r(
1443  GEOSContextHandle_t handle,
1444  const char *intMatrix,
1445  const char *imPattern);
1446 
1448 extern char GEOS_DLL *GEOSRelateBoundaryNodeRule_r(
1449  GEOSContextHandle_t handle,
1450  const GEOSGeometry* g1,
1451  const GEOSGeometry* g2,
1452  int bnr);
1453 
1454 /* ========= Validity checking ========= */
1455 
1458 {
1461 };
1462 
1464 extern char GEOS_DLL GEOSisValid_r(
1465  GEOSContextHandle_t handle,
1466  const GEOSGeometry* g);
1467 
1469 extern char GEOS_DLL *GEOSisValidReason_r(
1470  GEOSContextHandle_t handle,
1471  const GEOSGeometry* g);
1472 
1474 extern char GEOS_DLL GEOSisValidDetail_r(
1475  GEOSContextHandle_t handle,
1476  const GEOSGeometry* g,
1477  int flags,
1478  char** reason,
1479  GEOSGeometry** location);
1480 
1481 /* ========== Make Valid ========== */
1482 
1498 };
1499 
1502  GEOSContextHandle_t extHandle);
1503 
1505 extern void GEOS_DLL GEOSMakeValidParams_destroy_r(
1506  GEOSContextHandle_t handle,
1507  GEOSMakeValidParams* parms);
1508 
1511  GEOSContextHandle_t handle,
1513  int style);
1514 
1517  GEOSContextHandle_t handle,
1519  enum GEOSMakeValidMethods method);
1520 
1523  GEOSContextHandle_t handle,
1524  const GEOSGeometry* g);
1525 
1528  GEOSContextHandle_t handle,
1529  const GEOSGeometry* g,
1530  const GEOSMakeValidParams* makeValidParams);
1531 
1534  GEOSContextHandle_t handle,
1535  const GEOSGeometry* g,
1536  double tolerance);
1537 
1538 /* ========== Geometry info ========== */
1539 
1541 /* Return NULL on exception, result must be freed by caller. */
1542 extern char GEOS_DLL *GEOSGeomType_r(
1543  GEOSContextHandle_t handle,
1544  const GEOSGeometry* g);
1545 
1547 extern int GEOS_DLL GEOSGeomTypeId_r(
1548  GEOSContextHandle_t handle,
1549  const GEOSGeometry* g);
1550 
1552 extern int GEOS_DLL GEOSGetSRID_r(
1553  GEOSContextHandle_t handle,
1554  const GEOSGeometry* g);
1555 
1557 extern void GEOS_DLL GEOSSetSRID_r(
1558  GEOSContextHandle_t handle,
1559  GEOSGeometry* g, int SRID);
1560 
1562 extern void GEOS_DLL *GEOSGeom_getUserData_r(
1563  GEOSContextHandle_t handle,
1564  const GEOSGeometry* g);
1565 
1567 extern void GEOS_DLL GEOSGeom_setUserData_r(
1568  GEOSContextHandle_t handle,
1569  GEOSGeometry* g,
1570  void* userData);
1571 
1573 extern int GEOS_DLL GEOSGetNumGeometries_r(
1574  GEOSContextHandle_t handle,
1575  const GEOSGeometry* g);
1576 
1578 extern const GEOSGeometry GEOS_DLL *GEOSGetGeometryN_r(
1579  GEOSContextHandle_t handle,
1580  const GEOSGeometry* g, int n);
1581 
1583 extern int GEOS_DLL GEOSNormalize_r(
1584  GEOSContextHandle_t handle,
1585  GEOSGeometry* g);
1586 
1588 extern int GEOS_DLL GEOSOrientPolygons_r(
1589  GEOSContextHandle_t handle,
1590  GEOSGeometry* g,
1591  int exteriorCW);
1592 
1604 };
1605 
1608  GEOSContextHandle_t handle,
1609  const GEOSGeometry *g,
1610  double gridSize,
1611  int flags);
1612 
1614 extern double GEOS_DLL GEOSGeom_getPrecision_r(
1615  GEOSContextHandle_t handle,
1616  const GEOSGeometry *g);
1617 
1619 extern int GEOS_DLL GEOSGetNumInteriorRings_r(
1620  GEOSContextHandle_t handle,
1621  const GEOSGeometry* g);
1622 
1624 extern int GEOS_DLL GEOSGeomGetNumPoints_r(
1625  GEOSContextHandle_t handle,
1626  const GEOSGeometry* g);
1627 
1629 extern int GEOS_DLL GEOSGeomGetX_r(
1630  GEOSContextHandle_t handle,
1631  const GEOSGeometry *g,
1632  double *x);
1633 
1635 extern int GEOS_DLL GEOSGeomGetY_r(
1636  GEOSContextHandle_t handle,
1637  const GEOSGeometry *g,
1638  double *y);
1639 
1641 extern int GEOS_DLL GEOSGeomGetZ_r(
1642  GEOSContextHandle_t handle,
1643  const GEOSGeometry *g,
1644  double *z);
1645 
1647 extern int GEOS_DLL GEOSGeomGetM_r(
1648  GEOSContextHandle_t handle,
1649  const GEOSGeometry *g,
1650  double *m);
1651 
1653 extern const GEOSGeometry GEOS_DLL *GEOSGetInteriorRingN_r(
1654  GEOSContextHandle_t handle,
1655  const GEOSGeometry* g, int n);
1656 
1658 extern const GEOSGeometry GEOS_DLL *GEOSGetExteriorRing_r(
1659  GEOSContextHandle_t handle,
1660  const GEOSGeometry* g);
1661 
1663 extern int GEOS_DLL GEOSGetNumCoordinates_r(
1664  GEOSContextHandle_t handle,
1665  const GEOSGeometry* g);
1666 
1669  GEOSContextHandle_t handle,
1670  const GEOSGeometry* g);
1671 
1673 extern int GEOS_DLL GEOSGeom_getDimensions_r(
1674  GEOSContextHandle_t handle,
1675  const GEOSGeometry* g);
1676 
1679  GEOSContextHandle_t handle,
1680  const GEOSGeometry* g);
1681 
1683 extern int GEOS_DLL GEOSGeom_getXMin_r(
1684  GEOSContextHandle_t handle,
1685  const GEOSGeometry* g,
1686  double* value);
1687 
1689 extern int GEOS_DLL GEOSGeom_getYMin_r(
1690  GEOSContextHandle_t handle,
1691  const GEOSGeometry* g,
1692  double* value);
1693 
1695 extern int GEOS_DLL GEOSGeom_getXMax_r(
1696  GEOSContextHandle_t handle,
1697  const GEOSGeometry* g,
1698  double* value);
1699 
1701 extern int GEOS_DLL GEOSGeom_getYMax_r(
1702  GEOSContextHandle_t handle,
1703  const GEOSGeometry* g,
1704  double* value);
1705 
1707 extern int GEOS_DLL GEOSGeom_getExtent_r(
1708  GEOSContextHandle_t handle,
1709  const GEOSGeometry* g,
1710  double* xmin,
1711  double* ymin,
1712  double* xmax,
1713  double* ymax);
1714 
1717  GEOSContextHandle_t handle,
1718  const GEOSGeometry *g,
1719  int n);
1720 
1723  GEOSContextHandle_t handle,
1724  const GEOSGeometry *g);
1725 
1728  GEOSContextHandle_t handle,
1729  const GEOSGeometry *g);
1730 
1731 /* ========= Misc functions ========= */
1732 
1734 extern int GEOS_DLL GEOSArea_r(
1735  GEOSContextHandle_t handle,
1736  const GEOSGeometry* g,
1737  double *area);
1738 
1740 extern int GEOS_DLL GEOSLength_r(
1741  GEOSContextHandle_t handle,
1742  const GEOSGeometry* g,
1743  double *length);
1744 
1746 extern int GEOS_DLL GEOSDistance_r(
1747  GEOSContextHandle_t handle,
1748  const GEOSGeometry* g1,
1749  const GEOSGeometry* g2,
1750  double *dist);
1751 
1753 extern char GEOS_DLL GEOSDistanceWithin_r(
1754  GEOSContextHandle_t handle,
1755  const GEOSGeometry* g1,
1756  const GEOSGeometry* g2,
1757  double dist);
1758 
1760 extern int GEOS_DLL GEOSDistanceIndexed_r(
1761  GEOSContextHandle_t handle,
1762  const GEOSGeometry* g1,
1763  const GEOSGeometry* g2,
1764  double *dist);
1765 
1767 extern int GEOS_DLL GEOSHausdorffDistance_r(
1768  GEOSContextHandle_t handle,
1769  const GEOSGeometry *g1,
1770  const GEOSGeometry *g2,
1771  double *dist);
1772 
1775  GEOSContextHandle_t handle,
1776  const GEOSGeometry *g1,
1777  const GEOSGeometry *g2,
1778  double densifyFrac, double *dist);
1779 
1781 extern int GEOS_DLL GEOSFrechetDistance_r(
1782  GEOSContextHandle_t handle,
1783  const GEOSGeometry *g1,
1784  const GEOSGeometry *g2,
1785  double *dist);
1786 
1788 extern int GEOS_DLL GEOSFrechetDistanceDensify_r(
1789  GEOSContextHandle_t handle,
1790  const GEOSGeometry *g1,
1791  const GEOSGeometry *g2,
1792  double densifyFrac,
1793  double *dist);
1794 
1795 
1797 extern int GEOS_DLL GEOSHilbertCode_r(
1798  GEOSContextHandle_t handle,
1799  const GEOSGeometry *geom,
1800  const GEOSGeometry* extent,
1801  unsigned int level,
1802  unsigned int *code
1803 );
1804 
1806 extern int GEOS_DLL GEOSGeomGetLength_r(
1807  GEOSContextHandle_t handle,
1808  const GEOSGeometry *g,
1809  double *length);
1810 
1813  GEOSContextHandle_t handle,
1814  const GEOSGeometry* g1,
1815  const GEOSGeometry* g2);
1816 
1819  GEOSContextHandle_t handle,
1820  const GEOSGeometry* g,
1821  GEOSTransformXYCallback callback,
1822  void* userdata);
1823 
1824 /* ========= Algorithms ========= */
1825 
1827 extern int GEOS_DLL GEOSOrientationIndex_r(
1828  GEOSContextHandle_t handle,
1829  double Ax, double Ay,
1830  double Bx, double By,
1831  double Px, double Py);
1832 
1833 
1834 /* ========== Reader and Writer APIs ========== */
1835 
1836 #ifndef GEOSWKTReader
1837 
1843 typedef struct GEOSWKTReader_t GEOSWKTReader;
1844 
1850 typedef struct GEOSWKTWriter_t GEOSWKTWriter;
1851 
1857 typedef struct GEOSWKBReader_t GEOSWKBReader;
1858 
1864 typedef struct GEOSWKBWriter_t GEOSWKBWriter;
1865 
1871 typedef struct GEOSGeoJSONReader_t GEOSGeoJSONReader;
1872 
1878 typedef struct GEOSGeoJSONWriter_t GEOSGeoJSONWriter;
1879 
1880 #endif
1881 
1882 /* ========== WKT Reader ========== */
1883 
1886  GEOSContextHandle_t handle);
1887 
1889 extern void GEOS_DLL GEOSWKTReader_destroy_r(GEOSContextHandle_t handle,
1890  GEOSWKTReader* reader);
1891 
1894  GEOSContextHandle_t handle,
1895  GEOSWKTReader* reader,
1896  const char *wkt);
1897 
1899 extern void GEOS_DLL GEOSWKTReader_setFixStructure_r(
1900  GEOSContextHandle_t handle,
1901  GEOSWKTReader *reader,
1902  char doFix);
1903 
1904 /* ========== WKT Writer ========== */
1905 
1908  GEOSContextHandle_t handle);
1909 
1911 extern void GEOS_DLL GEOSWKTWriter_destroy_r(
1912  GEOSContextHandle_t handle,
1913  GEOSWKTWriter* writer);
1914 
1916 extern char GEOS_DLL *GEOSWKTWriter_write_r(
1917  GEOSContextHandle_t handle,
1918  GEOSWKTWriter* writer,
1919  const GEOSGeometry* g);
1920 
1922 extern void GEOS_DLL GEOSWKTWriter_setTrim_r(
1923  GEOSContextHandle_t handle,
1924  GEOSWKTWriter *writer,
1925  char trim);
1926 
1929  GEOSContextHandle_t handle,
1930  GEOSWKTWriter *writer,
1931  int precision);
1932 
1935  GEOSContextHandle_t handle,
1936  GEOSWKTWriter *writer,
1937  int dim);
1938 
1941  GEOSContextHandle_t handle,
1942  GEOSWKTWriter *writer);
1943 
1945 extern void GEOS_DLL GEOSWKTWriter_setOld3D_r(
1946  GEOSContextHandle_t handle,
1947  GEOSWKTWriter *writer,
1948  int useOld3D);
1949 
1959 extern int GEOS_DLL GEOS_printDouble(
1960  double d,
1961  unsigned int precision,
1962  char *result
1963 );
1964 
1965 /* ========== WKB Reader ========== */
1966 
1969  GEOSContextHandle_t handle);
1970 
1972 extern void GEOS_DLL GEOSWKBReader_destroy_r(
1973  GEOSContextHandle_t handle,
1974  GEOSWKBReader* reader);
1975 
1977 extern void GEOS_DLL GEOSWKBReader_setFixStructure_r(
1978  GEOSContextHandle_t handle,
1979  GEOSWKBReader *reader,
1980  char doFix);
1981 
1984  GEOSContextHandle_t handle,
1985  GEOSWKBReader* reader,
1986  const unsigned char *wkb,
1987  size_t size);
1988 
1991  GEOSContextHandle_t handle,
1992  GEOSWKBReader* reader,
1993  const unsigned char *hex,
1994  size_t size);
1995 
1996 
1997 /* ========== WKB Writer ========== */
1998 
2001  GEOSContextHandle_t handle);
2002 
2004 extern void GEOS_DLL GEOSWKBWriter_destroy_r(
2005  GEOSContextHandle_t handle,
2006  GEOSWKBWriter* writer);
2007 
2009 extern unsigned char GEOS_DLL *GEOSWKBWriter_write_r(
2010  GEOSContextHandle_t handle,
2011  GEOSWKBWriter* writer,
2012  const GEOSGeometry* g,
2013  size_t *size);
2014 
2016 extern unsigned char GEOS_DLL *GEOSWKBWriter_writeHEX_r(
2017  GEOSContextHandle_t handle,
2018  GEOSWKBWriter* writer,
2019  const GEOSGeometry* g,
2020  size_t *size);
2021 
2024  GEOSContextHandle_t handle,
2025  const GEOSWKBWriter* writer);
2026 
2029  GEOSContextHandle_t handle,
2030  GEOSWKBWriter* writer, int newDimension);
2031 
2033 extern int GEOS_DLL GEOSWKBWriter_getByteOrder_r(
2034  GEOSContextHandle_t handle,
2035  const GEOSWKBWriter* writer);
2036 
2038 extern void GEOS_DLL GEOSWKBWriter_setByteOrder_r(
2039  GEOSContextHandle_t handle,
2040  GEOSWKBWriter* writer,
2041  int byteOrder);
2042 
2044 extern int GEOS_DLL GEOSWKBWriter_getFlavor_r(
2045  GEOSContextHandle_t handle,
2046  const GEOSWKBWriter* writer);
2047 
2049 extern void GEOS_DLL GEOSWKBWriter_setFlavor_r(
2050  GEOSContextHandle_t handle,
2051  GEOSWKBWriter* writer,
2052  int flavor);
2053 
2055 extern char GEOS_DLL GEOSWKBWriter_getIncludeSRID_r(
2056  GEOSContextHandle_t handle,
2057  const GEOSWKBWriter* writer);
2058 
2060 extern void GEOS_DLL GEOSWKBWriter_setIncludeSRID_r(
2061  GEOSContextHandle_t handle,
2062  GEOSWKBWriter* writer, const char writeSRID);
2063 
2064 /* ========== GeoJSON Reader ========== */
2065 
2068  GEOSContextHandle_t handle);
2069 
2072  GEOSGeoJSONReader* reader);
2073 
2076  GEOSContextHandle_t handle,
2077  GEOSGeoJSONReader* reader,
2078  const char *geojson);
2079 
2080 /* ========== GeoJSON Writer ========== */
2081 
2084  GEOSContextHandle_t handle);
2085 
2088  GEOSGeoJSONWriter* writer);
2089 
2092  GEOSContextHandle_t handle,
2093  GEOSGeoJSONWriter* writer,
2094  const GEOSGeometry* g,
2095  int indent);
2096 
2098 extern void GEOS_DLL GEOSFree_r(
2099  GEOSContextHandle_t handle,
2100  void *buffer);
2101 
2109 extern const char GEOS_DLL *GEOSversion(void);
2110 
2111 /*
2112 * External code to GEOS can define GEOS_USE_ONLY_R_API
2113 * to strip the non-reentrant API functions from this header,
2114 * leaving only the "_r" compatible variants.
2115 */
2116 #ifndef GEOS_USE_ONLY_R_API
2117 
2118 /* ========== Initialization, cleanup ================================= */
2124 
2137 extern void GEOS_DLL initGEOS(
2138  GEOSMessageHandler notice_function,
2139  GEOSMessageHandler error_function);
2140 
2146 extern void GEOS_DLL finishGEOS(void);
2147 
2157 extern void GEOS_DLL GEOSFree(void *buffer);
2158 
2160 
2161 /* ========= Coordinate Sequence functions ========= */
2167 
2175 extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_create(unsigned int size, unsigned int dims);
2176 
2187 extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_copyFromBuffer(const double* buf, unsigned int size, int hasZ, int hasM);
2188 
2200 extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_copyFromArrays(const double* x, const double* y, const double* z, const double* m, unsigned int size);
2201 
2212 extern int GEOS_DLL GEOSCoordSeq_copyToBuffer(const GEOSCoordSequence* s, double* buf, int hasZ, int hasM);
2213 
2225 extern int GEOS_DLL GEOSCoordSeq_copyToArrays(const GEOSCoordSequence* s, double* x, double* y, double* z, double* m);
2226 
2234 
2240 extern void GEOS_DLL GEOSCoordSeq_destroy(GEOSCoordSequence* s);
2241 
2250 extern int GEOS_DLL GEOSCoordSeq_setX(GEOSCoordSequence* s,
2251  unsigned int idx, double val);
2260 extern int GEOS_DLL GEOSCoordSeq_setY(GEOSCoordSequence* s,
2261  unsigned int idx, double val);
2270 extern int GEOS_DLL GEOSCoordSeq_setZ(GEOSCoordSequence* s,
2271  unsigned int idx, double val);
2282 extern int GEOS_DLL GEOSCoordSeq_setXY(GEOSCoordSequence* s,
2283  unsigned int idx, double x, double y);
2296  unsigned int idx, double x, double y, double z);
2307  unsigned int idx, unsigned int dim, double val);
2308 
2317 extern int GEOS_DLL GEOSCoordSeq_getX(const GEOSCoordSequence* s,
2318  unsigned int idx, double *val);
2319 
2328 extern int GEOS_DLL GEOSCoordSeq_getY(const GEOSCoordSequence* s,
2329  unsigned int idx, double *val);
2338 extern int GEOS_DLL GEOSCoordSeq_getZ(const GEOSCoordSequence* s,
2339  unsigned int idx, double *val);
2350 extern int GEOS_DLL GEOSCoordSeq_getXY(const GEOSCoordSequence* s,
2351  unsigned int idx, double *x, double *y);
2363 extern int GEOS_DLL GEOSCoordSeq_getXYZ(const GEOSCoordSequence* s,
2364  unsigned int idx, double *x, double *y, double *z);
2374 extern int GEOS_DLL GEOSCoordSeq_getOrdinate(const GEOSCoordSequence* s,
2375  unsigned int idx, unsigned int dim, double *val);
2376 
2384 extern int GEOS_DLL GEOSCoordSeq_getSize(
2385  const GEOSCoordSequence* s,
2386  unsigned int *size);
2387 
2395 extern int GEOS_DLL GEOSCoordSeq_getDimensions(
2396  const GEOSCoordSequence* s,
2397  unsigned int *dims);
2398 
2408 extern int GEOS_DLL GEOSCoordSeq_isCCW(
2409  const GEOSCoordSequence* s,
2410  char* is_ccw);
2411 
2413 
2414 /* ========= Geometry Constructors ========= */
2420 
2429 
2439 extern GEOSGeometry GEOS_DLL *GEOSGeom_createPointFromXY(double x, double y);
2440 
2449 
2458 
2467 
2476 
2485 
2500  GEOSGeometry* shell,
2501  GEOSGeometry** holes,
2502  unsigned int nholes);
2503 
2512 
2520 
2530  unsigned int ncurves);
2531 
2539 
2554  GEOSGeometry* shell,
2555  GEOSGeometry** holes,
2556  unsigned int nholes);
2557 
2565 
2580  int type,
2581  GEOSGeometry** geoms,
2582  unsigned int ngeoms);
2583 
2601  GEOSGeometry * collection,
2602  unsigned int * ngeoms);
2603 
2613 
2625  double xmin, double ymin,
2626  double xmax, double ymax);
2627 
2635 extern GEOSGeometry GEOS_DLL *GEOSGeom_clone(const GEOSGeometry* g);
2636 
2642 extern void GEOS_DLL GEOSGeom_destroy(GEOSGeometry* g);
2643 
2645 
2646 /* ========== Geometry info ========== */
2651 
2661 extern char GEOS_DLL *GEOSGeomType(const GEOSGeometry* g);
2662 
2669 extern int GEOS_DLL GEOSGeomTypeId(const GEOSGeometry* g);
2670 
2677 extern int GEOS_DLL GEOSGetSRID(const GEOSGeometry* g);
2678 
2689 extern void GEOS_DLL *GEOSGeom_getUserData(const GEOSGeometry* g);
2690 
2703 extern int GEOS_DLL GEOSGetNumGeometries(const GEOSGeometry* g);
2704 
2720 extern const GEOSGeometry GEOS_DLL *GEOSGetGeometryN(
2721  const GEOSGeometry* g,
2722  int n);
2723 
2733 extern double GEOS_DLL GEOSGeom_getPrecision(const GEOSGeometry *g);
2734 
2742 extern int GEOS_DLL GEOSGetNumInteriorRings(const GEOSGeometry* g);
2743 
2751 extern int GEOS_DLL GEOSGeomGetNumPoints(const GEOSGeometry* g);
2752 
2761 extern int GEOS_DLL GEOSGeomGetX(const GEOSGeometry *g, double *x);
2762 
2771 extern int GEOS_DLL GEOSGeomGetY(const GEOSGeometry *g, double *y);
2772 
2782 extern int GEOS_DLL GEOSGeomGetZ(const GEOSGeometry *g, double *z);
2783 
2793 extern int GEOS_DLL GEOSGeomGetM(const GEOSGeometry *g, double *m);
2794 
2804 extern const GEOSGeometry GEOS_DLL *GEOSGetInteriorRingN(
2805  const GEOSGeometry* g,
2806  int n);
2807 
2816 extern const GEOSGeometry GEOS_DLL *GEOSGetExteriorRing(
2817  const GEOSGeometry* g);
2818 
2826 extern int GEOS_DLL GEOSGetNumCoordinates(
2827  const GEOSGeometry* g);
2828 
2839  const GEOSGeometry* g);
2840 
2853 extern int GEOS_DLL GEOSGeom_getDimensions(
2854  const GEOSGeometry* g);
2855 
2868  const GEOSGeometry* g);
2869 
2878 extern int GEOS_DLL GEOSGeom_getXMin(const GEOSGeometry* g, double* value);
2879 
2888 extern int GEOS_DLL GEOSGeom_getYMin(const GEOSGeometry* g, double* value);
2889 
2898 extern int GEOS_DLL GEOSGeom_getXMax(const GEOSGeometry* g, double* value);
2899 
2908 extern int GEOS_DLL GEOSGeom_getYMax(const GEOSGeometry* g, double* value);
2909 
2923 extern int GEOS_DLL GEOSGeom_getExtent(
2924  const GEOSGeometry* g,
2925  double* xmin,
2926  double* ymin,
2927  double* xmax,
2928  double* ymax);
2929 
2939 extern GEOSGeometry GEOS_DLL *GEOSGeomGetPointN(const GEOSGeometry *g, int n);
2940 
2950 
2959 extern GEOSGeometry GEOS_DLL *GEOSGeomGetEndPoint(const GEOSGeometry *g);
2960 
2961 
2970 extern char GEOS_DLL GEOSisEmpty(const GEOSGeometry* g);
2971 
2980 extern char GEOS_DLL GEOSisRing(const GEOSGeometry* g);
2981 
2988 extern char GEOS_DLL GEOSHasZ(const GEOSGeometry* g);
2989 
2997 extern char GEOS_DLL GEOSHasM(const GEOSGeometry* g);
2998 
3007 extern char GEOS_DLL GEOSisClosed(const GEOSGeometry *g);
3008 
3010 
3011 /* ==================================================================================== */
3016 
3023 extern void GEOS_DLL GEOSSetSRID(GEOSGeometry* g, int SRID);
3024 
3032 extern void GEOS_DLL GEOSGeom_setUserData(GEOSGeometry* g, void* userData);
3033 
3053 extern int GEOS_DLL GEOSNormalize(GEOSGeometry* g);
3054 
3065 extern int GEOS_DLL GEOSOrientPolygons(GEOSGeometry* g,
3066  int exteriorCW);
3067 
3069 
3070 /* ========== Validity checking ============================================================ */
3076 
3084 extern char GEOS_DLL GEOSisSimple(const GEOSGeometry* g);
3085 
3099 extern char GEOS_DLL GEOSisValid(const GEOSGeometry* g);
3100 
3110 extern char GEOS_DLL *GEOSisValidReason(const GEOSGeometry *g);
3111 
3126 extern char GEOS_DLL GEOSisValidDetail(
3127  const GEOSGeometry* g,
3128  int flags,
3129  char** reason,
3130  GEOSGeometry** location);
3131 
3139 extern GEOSGeometry GEOS_DLL *GEOSMakeValid(
3140  const GEOSGeometry* g);
3141 
3156  const GEOSGeometry* g,
3157  const GEOSMakeValidParams *makeValidParams);
3158 
3168 
3177 
3186 extern int GEOS_DLL GEOSMakeValidParams_setMethod(
3188  enum GEOSMakeValidMethods method);
3189 
3202  int keepCollapsed);
3203 
3223 extern int GEOS_DLL GEOSMinimumClearance(const GEOSGeometry* g, double* d);
3224 
3237 
3256  const GEOSGeometry* g,
3257  double tolerance);
3258 
3260 
3261 /* ========= Metric functions ================================================== */
3266 
3274 extern int GEOS_DLL GEOSArea(
3275  const GEOSGeometry* g,
3276  double *area);
3277 
3285 extern int GEOS_DLL GEOSLength(
3286  const GEOSGeometry* g,
3287  double *length);
3288 
3298 extern int GEOS_DLL GEOSGeomGetLength(
3299  const GEOSGeometry *g,
3300  double *length);
3301 
3303 
3304 /* ========== Distance functions ================================================ */
3310 
3319 extern int GEOS_DLL GEOSDistance(
3320  const GEOSGeometry* g1,
3321  const GEOSGeometry* g2,
3322  double *dist);
3323 
3334 extern char GEOS_DLL GEOSDistanceWithin(
3335  const GEOSGeometry* g1,
3336  const GEOSGeometry* g2,
3337  double dist);
3338 
3352 extern int GEOS_DLL GEOSDistanceIndexed(
3353  const GEOSGeometry* g1,
3354  const GEOSGeometry* g2,
3355  double *dist);
3356 
3369  const GEOSGeometry* g1,
3370  const GEOSGeometry* g2);
3371 
3383 extern int GEOS_DLL GEOSHausdorffDistance(
3384  const GEOSGeometry *g1,
3385  const GEOSGeometry *g2,
3386  double *dist);
3387 
3402 extern int GEOS_DLL GEOSHausdorffDistanceDensify(
3403  const GEOSGeometry *g1,
3404  const GEOSGeometry *g2,
3405  double densifyFrac,
3406  double *dist);
3407 
3421 extern int GEOS_DLL GEOSFrechetDistance(
3422  const GEOSGeometry *g1,
3423  const GEOSGeometry *g2,
3424  double *dist);
3425 
3442 extern int GEOS_DLL GEOSFrechetDistanceDensify(
3443  const GEOSGeometry *g1,
3444  const GEOSGeometry *g2,
3445  double densifyFrac,
3446  double *dist);
3447 
3449 
3450 /* ========== Linear referencing functions */
3456 
3466 extern double GEOS_DLL GEOSProject(const GEOSGeometry* line,
3467  const GEOSGeometry* point);
3468 
3480 extern GEOSGeometry GEOS_DLL *GEOSInterpolate(const GEOSGeometry* line,
3481  double d);
3482 
3493 extern double GEOS_DLL GEOSProjectNormalized(const GEOSGeometry* line,
3494  const GEOSGeometry* point);
3495 
3506  const GEOSGeometry *line,
3507  double proportion);
3508 
3510 
3511 /* ========== Overlay functions ========== */
3517 
3528 extern GEOSGeometry GEOS_DLL *GEOSIntersection(const GEOSGeometry* g1, const GEOSGeometry* g2);
3529 
3544 extern GEOSGeometry GEOS_DLL *GEOSIntersectionPrec(const GEOSGeometry* g1, const GEOSGeometry* g2, double gridSize);
3545 
3556 extern GEOSGeometry GEOS_DLL *GEOSDifference(
3557  const GEOSGeometry* ga,
3558  const GEOSGeometry* gb);
3559 
3576  const GEOSGeometry* ga,
3577  const GEOSGeometry* gb,
3578  double gridSize);
3579 
3592  const GEOSGeometry* ga,
3593  const GEOSGeometry* gb);
3594 
3612  const GEOSGeometry* ga,
3613  const GEOSGeometry* gb,
3614  double gridSize);
3615 
3626 extern GEOSGeometry GEOS_DLL *GEOSUnion(
3627  const GEOSGeometry* ga,
3628  const GEOSGeometry* gb);
3629 
3645 extern GEOSGeometry GEOS_DLL *GEOSUnionPrec(
3646  const GEOSGeometry* ga,
3647  const GEOSGeometry* gb,
3648  double gridSize);
3649 
3661 extern GEOSGeometry GEOS_DLL *GEOSUnaryUnion(const GEOSGeometry* g);
3662 
3679  const GEOSGeometry* g,
3680  double gridSize);
3681 
3693 
3709 extern GEOSGeometry GEOS_DLL *GEOSClipByRect(
3710  const GEOSGeometry* g,
3711  double xmin, double ymin,
3712  double xmax, double ymax);
3713 
3733  const GEOSGeometry* g1,
3734  const GEOSGeometry* g2);
3735 
3737 
3738 /* ========== Buffer related functions ========== */
3743 
3755 extern GEOSGeometry GEOS_DLL *GEOSBuffer(const GEOSGeometry* g,
3756  double width, int quadsegs);
3757 
3767 
3774 extern void GEOS_DLL GEOSBufferParams_destroy(GEOSBufferParams* parms);
3775 
3784  GEOSBufferParams* p,
3785  int style);
3786 
3794 extern int GEOS_DLL GEOSBufferParams_setJoinStyle(
3795  GEOSBufferParams* p,
3796  int joinStyle);
3797 
3810  GEOSBufferParams* p,
3811  double mitreLimit);
3812 
3824  GEOSBufferParams* p,
3825  int quadSegs);
3826 
3838  GEOSBufferParams* p,
3839  int singleSided);
3840 
3852  const GEOSGeometry* g,
3853  const GEOSBufferParams* p,
3854  double width);
3855 
3870  const GEOSGeometry* g,
3871  double width,
3872  int quadsegs,
3873  int endCapStyle,
3874  int joinStyle,
3875  double mitreLimit);
3876 
3899 extern GEOSGeometry GEOS_DLL *GEOSOffsetCurve(const GEOSGeometry* g,
3900  double width, int quadsegs, int joinStyle, double mitreLimit);
3901 
3903 
3904 
3905 /* ====================================================================== */
3911 
3923 extern GEOSGeometry GEOS_DLL *GEOSCoverageUnion(const GEOSGeometry *g);
3924 
3925 
3949 extern int GEOS_DLL GEOSCoverageIsValid(
3950  const GEOSGeometry* input,
3951  double gapWidth,
3952  GEOSGeometry** invalidEdges);
3953 
3980  const GEOSGeometry* input,
3981  double tolerance,
3982  int preserveBoundary);
3983 
3985 
3986 /* ========== Construction Operations ========== */
3991 
4000 extern GEOSGeometry GEOS_DLL *GEOSEnvelope(const GEOSGeometry* g);
4001 
4015 extern GEOSGeometry GEOS_DLL *GEOSBoundary(const GEOSGeometry* g);
4016 
4026 extern GEOSGeometry GEOS_DLL *GEOSConvexHull(const GEOSGeometry* g);
4027 
4059  const GEOSGeometry* g,
4060  double ratio,
4061  unsigned int allowHoles);
4062 
4093  const GEOSGeometry* g,
4094  double length,
4095  unsigned int allowHoles);
4096 
4136  const GEOSGeometry* g,
4137  double lengthRatio,
4138  unsigned int isTight,
4139  unsigned int isHolesAllowed);
4140 
4161  const GEOSGeometry* g,
4162  unsigned int isOuter,
4163  double vertexNumFraction);
4164 
4165 
4174 };
4175 
4198  const GEOSGeometry* g,
4199  unsigned int isOuter,
4200  unsigned int parameterMode,
4201  double parameter);
4202 
4217 
4243  const GEOSGeometry* g,
4244  double tolerance);
4245 
4280  const GEOSGeometry* obstacles,
4281  const GEOSGeometry* boundary,
4282  double tolerance);
4283 
4297 extern GEOSGeometry GEOS_DLL *GEOSMinimumWidth(const GEOSGeometry* g);
4298 
4299 
4309 extern GEOSGeometry GEOS_DLL *GEOSPointOnSurface(const GEOSGeometry* g);
4310 
4320 extern GEOSGeometry GEOS_DLL *GEOSGetCentroid(const GEOSGeometry* g);
4321 
4335  const GEOSGeometry* g,
4336  double* radius,
4337  GEOSGeometry** center);
4338 
4353  const GEOSGeometry *g,
4354  double tolerance,
4355  int onlyEdges);
4356 
4369  const GEOSGeometry *g);
4370 
4373 {
4380 };
4381 
4403  const GEOSGeometry *g,
4404  const GEOSGeometry *env,
4405  double tolerance,
4406  int flags);
4407 
4409 
4410 /* ============================================================== */
4415 
4426 extern GEOSGeometry GEOS_DLL *GEOSNode(const GEOSGeometry* g);
4427 
4470 extern GEOSGeometry GEOS_DLL *GEOSPolygonize(
4471  const GEOSGeometry * const geoms[],
4472  unsigned int ngeoms);
4473 
4489  const GEOSGeometry * const geoms[],
4490  unsigned int ngeoms);
4491 
4506  const GEOSGeometry * const geoms[],
4507  unsigned int ngeoms);
4508 
4524  const GEOSGeometry* input,
4525  GEOSGeometry** cuts,
4526  GEOSGeometry** dangles,
4527  GEOSGeometry** invalid);
4528 
4540 extern GEOSGeometry GEOS_DLL *GEOSBuildArea(const GEOSGeometry* g);
4541 
4543 
4544 /* ============================================================== */
4549 
4563 extern GEOSGeometry GEOS_DLL *GEOSDensify(
4564  const GEOSGeometry* g,
4565  double tolerance);
4566 
4578 extern GEOSGeometry GEOS_DLL *GEOSLineMerge(const GEOSGeometry* g);
4579 
4594 
4607  const GEOSGeometry* g,
4608  double start_fraction,
4609  double end_fraction);
4610 
4621 extern GEOSGeometry GEOS_DLL *GEOSReverse(const GEOSGeometry* g);
4622 
4637 extern GEOSGeometry GEOS_DLL *GEOSSimplify(
4638  const GEOSGeometry* g,
4639  double tolerance);
4640 
4658  const GEOSGeometry* g,
4659  double tolerance);
4660 
4672  const GEOSGeometry* g);
4673 
4689 extern int GEOS_DLL GEOSHilbertCode(
4690  const GEOSGeometry *geom,
4691  const GEOSGeometry* extent,
4692  unsigned int level,
4693  unsigned int *code
4694 );
4695 
4711  const GEOSGeometry* g,
4712  GEOSTransformXYCallback callback,
4713  void* userdata);
4714 
4736 extern GEOSGeometry GEOS_DLL *GEOSSnap(
4737  const GEOSGeometry* input,
4738  const GEOSGeometry* snap_target,
4739  double tolerance);
4740 
4771  const GEOSGeometry *g,
4772  double gridSize,
4773  int flags);
4774 
4776 
4777 /* ============================================================== */
4782 
4791 extern char GEOS_DLL GEOSDisjoint(const GEOSGeometry* g1, const GEOSGeometry* g2);
4792 
4802 extern char GEOS_DLL GEOSTouches(const GEOSGeometry* g1, const GEOSGeometry* g2);
4803 
4812 extern char GEOS_DLL GEOSIntersects(const GEOSGeometry* g1, const GEOSGeometry* g2);
4813 
4823 extern char GEOS_DLL GEOSCrosses(const GEOSGeometry* g1, const GEOSGeometry* g2);
4824 
4834 extern char GEOS_DLL GEOSWithin(const GEOSGeometry* g1, const GEOSGeometry* g2);
4835 
4844 extern char GEOS_DLL GEOSContains(const GEOSGeometry* g1, const GEOSGeometry* g2);
4845 
4855 extern char GEOS_DLL GEOSOverlaps(const GEOSGeometry* g1, const GEOSGeometry* g2);
4856 
4865 extern char GEOS_DLL GEOSEquals(const GEOSGeometry* g1, const GEOSGeometry* g2);
4866 
4877 extern char GEOS_DLL GEOSCovers(const GEOSGeometry* g1, const GEOSGeometry* g2);
4878 
4889 extern char GEOS_DLL GEOSCoveredBy(const GEOSGeometry* g1, const GEOSGeometry* g2);
4890 
4908 extern char GEOS_DLL GEOSEqualsExact(
4909  const GEOSGeometry* g1,
4910  const GEOSGeometry* g2,
4911  double tolerance);
4912 
4925 extern char GEOS_DLL GEOSEqualsIdentical(
4926  const GEOSGeometry* g1,
4927  const GEOSGeometry* g2);
4928 
4945 extern char GEOS_DLL GEOSRelatePattern(
4946  const GEOSGeometry* g1,
4947  const GEOSGeometry* g2,
4948  const char *imPattern);
4949 
4960 extern char GEOS_DLL *GEOSRelate(
4961  const GEOSGeometry* g1,
4962  const GEOSGeometry* g2);
4963 
4973 extern char GEOS_DLL GEOSRelatePatternMatch(
4974  const char *intMatrix,
4975  const char *imPattern);
4976 
4990 extern char GEOS_DLL *GEOSRelateBoundaryNodeRule(
4991  const GEOSGeometry* g1,
4992  const GEOSGeometry* g2,
4993  int bnr);
4994 
4996 
4997 /* ========== Prepared Geometry Binary predicates ========== */
4998 
5010 
5024 extern const GEOSPreparedGeometry GEOS_DLL *GEOSPrepare(const GEOSGeometry* g);
5025 
5034 extern void GEOS_DLL GEOSPreparedGeom_destroy(const GEOSPreparedGeometry* g);
5035 
5046 extern char GEOS_DLL GEOSPreparedContains(
5047  const GEOSPreparedGeometry* pg1,
5048  const GEOSGeometry* g2);
5049 
5061 extern char GEOS_DLL GEOSPreparedContainsXY(
5062  const GEOSPreparedGeometry* pg1,
5063  double x,
5064  double y);
5065 
5076 extern char GEOS_DLL GEOSPreparedContainsProperly(
5077  const GEOSPreparedGeometry* pg1,
5078  const GEOSGeometry* g2);
5079 
5090 extern char GEOS_DLL GEOSPreparedCoveredBy(
5091  const GEOSPreparedGeometry* pg1,
5092  const GEOSGeometry* g2);
5093 
5104 extern char GEOS_DLL GEOSPreparedCovers(
5105  const GEOSPreparedGeometry* pg1,
5106  const GEOSGeometry* g2);
5107 
5118 extern char GEOS_DLL GEOSPreparedCrosses(
5119  const GEOSPreparedGeometry* pg1,
5120  const GEOSGeometry* g2);
5121 
5132 extern char GEOS_DLL GEOSPreparedDisjoint(
5133  const GEOSPreparedGeometry* pg1,
5134  const GEOSGeometry* g2);
5135 
5146 extern char GEOS_DLL GEOSPreparedIntersects(
5147  const GEOSPreparedGeometry* pg1,
5148  const GEOSGeometry* g2);
5149 
5161 extern char GEOS_DLL GEOSPreparedIntersectsXY(
5162  const GEOSPreparedGeometry* pg1,
5163  double x,
5164  double y);
5165 
5176 extern char GEOS_DLL GEOSPreparedOverlaps(
5177  const GEOSPreparedGeometry* pg1,
5178  const GEOSGeometry* g2);
5179 
5190 extern char GEOS_DLL GEOSPreparedTouches(
5191  const GEOSPreparedGeometry* pg1,
5192  const GEOSGeometry* g2);
5193 
5204 extern char GEOS_DLL GEOSPreparedWithin(
5205  const GEOSPreparedGeometry* pg1,
5206  const GEOSGeometry* g2);
5207 
5221 extern char GEOS_DLL * GEOSPreparedRelate(
5222  const GEOSPreparedGeometry* pg1,
5223  const GEOSGeometry* g2);
5224 
5241 extern char GEOS_DLL GEOSPreparedRelatePattern(
5242  const GEOSPreparedGeometry* pg1,
5243  const GEOSGeometry* g2,
5244  const char* imPattern);
5245 
5259  const GEOSPreparedGeometry* pg1,
5260  const GEOSGeometry* g2);
5261 
5275 extern int GEOS_DLL GEOSPreparedDistance(
5276  const GEOSPreparedGeometry* pg1,
5277  const GEOSGeometry* g2,
5278  double *dist);
5279 
5294 extern char GEOS_DLL GEOSPreparedDistanceWithin(
5295  const GEOSPreparedGeometry* pg1,
5296  const GEOSGeometry* g2,
5297  double dist);
5298 
5300 
5301 /* ========== STRtree functions ========== */
5307 
5320 extern GEOSSTRtree GEOS_DLL *GEOSSTRtree_create(size_t nodeCapacity);
5321 
5334 extern int GEOS_DLL GEOSSTRtree_build(GEOSSTRtree *tree);
5335 
5348 extern void GEOS_DLL GEOSSTRtree_insert(
5349  GEOSSTRtree *tree,
5350  const GEOSGeometry *g,
5351  void *item);
5352 
5367 extern void GEOS_DLL GEOSSTRtree_query(
5368  GEOSSTRtree *tree,
5369  const GEOSGeometry *g,
5370  GEOSQueryCallback callback,
5371  void *userdata);
5372 
5387 extern const GEOSGeometry GEOS_DLL *GEOSSTRtree_nearest(
5388  GEOSSTRtree *tree,
5389  const GEOSGeometry* geom);
5390 
5411 extern const void GEOS_DLL *GEOSSTRtree_nearest_generic(
5412  GEOSSTRtree *tree,
5413  const void* item,
5414  const GEOSGeometry* itemEnvelope,
5415  GEOSDistanceCallback distancefn,
5416  void* userdata);
5417 
5428 extern void GEOS_DLL GEOSSTRtree_iterate(
5429  GEOSSTRtree *tree,
5430  GEOSQueryCallback callback,
5431  void *userdata);
5432 
5447 extern char GEOS_DLL GEOSSTRtree_remove(
5448  GEOSSTRtree *tree,
5449  const GEOSGeometry *g,
5450  void *item);
5451 
5462 extern void GEOS_DLL GEOSSTRtree_destroy(GEOSSTRtree *tree);
5463 
5465 
5466 /* ========== Algorithms ====================================================== */
5471 
5490 extern int GEOS_DLL GEOSSegmentIntersection(
5491  double ax0, double ay0,
5492  double ax1, double ay1,
5493  double bx0, double by0,
5494  double bx1, double by1,
5495  double* cx, double* cy);
5496 
5512 extern int GEOS_DLL GEOSOrientationIndex(
5513  double Ax, double Ay,
5514  double Bx, double By,
5515  double Px, double Py);
5516 
5518 
5519 /* ========= Reader and Writer APIs ========= */
5520 
5525 /* ========= WKT Reader ========= */
5526 
5532 extern GEOSWKTReader GEOS_DLL *GEOSWKTReader_create(void);
5533 
5539 extern void GEOS_DLL GEOSWKTReader_destroy(GEOSWKTReader* reader);
5540 
5550  GEOSWKTReader* reader,
5551  const char *wkt);
5552 
5561 extern void GEOS_DLL GEOSWKTReader_setFixStructure(
5562  GEOSWKTReader *reader,
5563  char doFix);
5564 
5565 /* ========= WKT Writer ========= */
5566 
5572 extern GEOSWKTWriter GEOS_DLL *GEOSWKTWriter_create(void);
5573 
5579 extern void GEOS_DLL GEOSWKTWriter_destroy(
5580  GEOSWKTWriter* writer);
5581 
5591 extern char GEOS_DLL *GEOSWKTWriter_write(
5592  GEOSWKTWriter* writer,
5593  const GEOSGeometry* g);
5594 
5609 extern void GEOS_DLL GEOSWKTWriter_setTrim(
5610  GEOSWKTWriter *writer,
5611  char trim);
5612 
5622  GEOSWKTWriter *writer,
5623  int precision);
5624 
5634  GEOSWKTWriter *writer,
5635  int dim);
5636 
5645 
5656 extern void GEOS_DLL GEOSWKTWriter_setOld3D(
5657  GEOSWKTWriter *writer,
5658  int useOld3D);
5660 
5661 /* ============================================================================== */
5666 
5667 /* ========== WKB Reader ========== */
5673 extern GEOSWKBReader GEOS_DLL *GEOSWKBReader_create(void);
5674 
5680 extern void GEOS_DLL GEOSWKBReader_destroy(
5681  GEOSWKBReader* reader);
5682 
5691 extern void GEOS_DLL GEOSWKBReader_setFixStructure(
5692  GEOSWKBReader *reader,
5693  char doFix);
5694 
5704  GEOSWKBReader* reader,
5705  const unsigned char *wkb,
5706  size_t size);
5707 
5717  GEOSWKBReader* reader,
5718  const unsigned char *hex,
5719  size_t size);
5720 
5721 /* ========== WKB Writer ========== */
5722 
5728 extern GEOSWKBWriter GEOS_DLL *GEOSWKBWriter_create(void);
5729 
5735 extern void GEOS_DLL GEOSWKBWriter_destroy(GEOSWKBWriter* writer);
5736 
5746 extern unsigned char GEOS_DLL *GEOSWKBWriter_write(
5747  GEOSWKBWriter* writer,
5748  const GEOSGeometry* g,
5749  size_t *size);
5750 
5760 extern unsigned char GEOS_DLL *GEOSWKBWriter_writeHEX(
5761  GEOSWKBWriter* writer,
5762  const GEOSGeometry* g,
5763  size_t *size);
5764 
5774  const GEOSWKBWriter* writer);
5775 
5784  GEOSWKBWriter* writer,
5785  int newDimension);
5786 
5796 extern int GEOS_DLL GEOSWKBWriter_getByteOrder(
5797  const GEOSWKBWriter* writer);
5798 
5806 extern void GEOS_DLL GEOSWKBWriter_setByteOrder(
5807  GEOSWKBWriter* writer,
5808  int byteOrder);
5809 
5824 extern int GEOS_DLL GEOSWKBWriter_getFlavor(
5825  const GEOSWKBWriter* writer);
5826 
5835 extern void GEOS_DLL GEOSWKBWriter_setFlavor(
5836  GEOSWKBWriter* writer,
5837  int flavor);
5838 
5844 extern char GEOS_DLL GEOSWKBWriter_getIncludeSRID(
5845  const GEOSWKBWriter* writer);
5846 
5854 extern void GEOS_DLL GEOSWKBWriter_setIncludeSRID(
5855  GEOSWKBWriter* writer,
5856  const char writeSRID);
5857 
5859 
5860 /* ============================================================================= */
5865 /* ========= GeoJSON Reader ========= */
5866 
5874 
5881 extern void GEOS_DLL GEOSGeoJSONReader_destroy(GEOSGeoJSONReader* reader);
5882 
5894  GEOSGeoJSONReader* reader,
5895  const char *geojson);
5896 
5897 /* ========= GeoJSON Writer ========= */
5898 
5906 
5913 extern void GEOS_DLL GEOSGeoJSONWriter_destroy(GEOSGeoJSONWriter* writer);
5914 
5925 extern char GEOS_DLL *GEOSGeoJSONWriter_writeGeometry(
5926  GEOSGeoJSONWriter* writer,
5927  const GEOSGeometry* g,
5928  int indent);
5929 
5931 
5932 #endif /* #ifndef GEOS_USE_ONLY_R_API */
5933 
5934 /* ====================================================================== */
5935 /* DEPRECATIONS */
5936 /* ====================================================================== */
5937 
5943 
5948  const GEOSGeometry* g,
5949  double width, int quadsegs,
5950  int joinStyle, double mitreLimit,
5951  int leftSide);
5952 
5957  GEOSContextHandle_t handle,
5958  const GEOSGeometry* g,
5959  double width, int quadsegs,
5960  int joinStyle, double mitreLimit,
5961  int leftSide);
5962 
5968  GEOSMessageHandler notice_function,
5969  GEOSMessageHandler error_function);
5970 
5974 extern void GEOS_DLL finishGEOS_r(GEOSContextHandle_t handle);
5975 
5980  GEOSContextHandle_t handle,
5981  const char *wkt);
5982 
5986 extern char GEOS_DLL *GEOSGeomToWKT_r(
5987  GEOSContextHandle_t handle,
5988  const GEOSGeometry* g);
5989 
5993 extern int GEOS_DLL GEOS_getWKBOutputDims_r(
5994  GEOSContextHandle_t handle);
5995 
5999 extern int GEOS_DLL GEOS_setWKBOutputDims_r(
6000  GEOSContextHandle_t handle,
6001  int newDims);
6002 
6006 extern int GEOS_DLL GEOS_getWKBByteOrder_r(
6007  GEOSContextHandle_t handle);
6008 
6012 extern int GEOS_DLL GEOS_setWKBByteOrder_r(
6013  GEOSContextHandle_t handle,
6014  int byteOrder);
6015 
6020  GEOSContextHandle_t handle,
6021  const unsigned char *wkb,
6022  size_t size);
6023 
6027 extern unsigned char GEOS_DLL *GEOSGeomToWKB_buf_r(
6028  GEOSContextHandle_t handle,
6029  const GEOSGeometry* g,
6030  size_t *size);
6031 
6036  GEOSContextHandle_t handle,
6037  const unsigned char *hex,
6038  size_t size);
6039 
6043 extern unsigned char GEOS_DLL *GEOSGeomToHEX_buf_r(
6044  GEOSContextHandle_t handle,
6045  const GEOSGeometry* g,
6046  size_t *size);
6047 
6051 extern GEOSGeometry GEOS_DLL *GEOSGeomFromWKT(const char *wkt);
6052 
6056 extern char GEOS_DLL *GEOSGeomToWKT(const GEOSGeometry* g);
6057 
6061 extern int GEOS_DLL GEOS_getWKBOutputDims(void);
6062 
6066 extern int GEOS_DLL GEOS_setWKBOutputDims(int newDims);
6067 
6071 extern int GEOS_DLL GEOS_getWKBByteOrder(void);
6072 
6076 extern int GEOS_DLL GEOS_setWKBByteOrder(int byteOrder);
6077 
6081 extern GEOSGeometry GEOS_DLL *GEOSGeomFromWKB_buf(const unsigned char *wkb, size_t size);
6082 
6086 extern unsigned char GEOS_DLL *GEOSGeomToWKB_buf(const GEOSGeometry* g, size_t *size);
6087 
6091 extern GEOSGeometry GEOS_DLL *GEOSGeomFromHEX_buf(const unsigned char *hex, size_t size);
6092 
6096 extern unsigned char GEOS_DLL *GEOSGeomToHEX_buf(const GEOSGeometry* g, size_t *size);
6097 
6101 extern GEOSGeometry GEOS_DLL *GEOSUnionCascaded(const GEOSGeometry* g);
6102 
6107  GEOSContextHandle_t handle,
6108  const GEOSGeometry* g);
6109 
6111 
6112 /* ====================================================================== */
6113 /* END DEPRECATIONS */
6114 /* ====================================================================== */
6115 
6116 
6117 #ifdef __cplusplus
6118 } // extern "C"
6119 #endif
6120 
6121 #endif /* #ifndef GEOS_C_H_INCLUDED */
GEOSGeometry * GEOSGeomFromWKT(const char *wkt)
GEOSGeometry * GEOSLineMergeDirected(const GEOSGeometry *g)
int GEOS_setWKBOutputDims_r(GEOSContextHandle_t handle, int newDims)
int GEOSBufferParams_setEndCapStyle_r(GEOSContextHandle_t handle, GEOSBufferParams *p, int style)
char GEOSisEmpty_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
char GEOSisSimple(const GEOSGeometry *g)
void GEOSWKBWriter_setByteOrder(GEOSWKBWriter *writer, int byteOrder)
GEOSGeometry * GEOSBuffer(const GEOSGeometry *g, double width, int quadsegs)
int GEOSCoordSeq_setZ_r(GEOSContextHandle_t handle, GEOSCoordSequence *s, unsigned int idx, double val)
void GEOSGeom_setUserData_r(GEOSContextHandle_t handle, GEOSGeometry *g, void *userData)
GEOSGeometry * GEOSGeom_createPolygon_r(GEOSContextHandle_t handle, GEOSGeometry *shell, GEOSGeometry **holes, unsigned int nholes)
int GEOS_getWKBOutputDims_r(GEOSContextHandle_t handle)
GEOSGeometry * GEOSSymDifferencePrec_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double gridSize)
int GEOSGeomGetM(const GEOSGeometry *g, double *m)
const GEOSPreparedGeometry * GEOSPrepare(const GEOSGeometry *g)
char GEOSisRing_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSDelaunayTriangulation_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double tolerance, int onlyEdges)
int GEOSSTRtree_build_r(GEOSContextHandle_t handle, GEOSSTRtree *tree)
GEOSGeometry * GEOSPointOnSurface(const GEOSGeometry *g)
void GEOSBufferParams_destroy_r(GEOSContextHandle_t handle, GEOSBufferParams *parms)
GEOSGeometry * GEOSGeom_createLinearRing(GEOSCoordSequence *s)
GEOSWKTReader * GEOSWKTReader_create_r(GEOSContextHandle_t handle)
char GEOSPreparedDistanceWithin(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2, double dist)
unsigned char * GEOSGeomToWKB_buf(const GEOSGeometry *g, size_t *size)
GEOSGeometry * GEOSRemoveRepeatedPoints_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double tolerance)
int GEOSBufferParams_setQuadrantSegments_r(GEOSContextHandle_t handle, GEOSBufferParams *p, int quadSegs)
void GEOSSTRtree_iterate(GEOSSTRtree *tree, GEOSQueryCallback callback, void *userdata)
void(*) typedef void(* GEOSMessageHandler_r)(const char *message, void *userdata)
Definition: geos_c.h:118
GEOSGeometry * GEOSGeom_createEmptyPoint_r(GEOSContextHandle_t handle)
struct GEOSGeoJSONReader_t GEOSGeoJSONReader
Definition: geos_c.h:1871
GEOSGeometry * GEOSBuildArea(const GEOSGeometry *g)
char GEOSRelatePattern_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, const char *imPattern)
int GEOS_getWKBByteOrder(void)
void GEOSWKBReader_destroy(GEOSWKBReader *reader)
char * GEOSGeomType_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
char GEOSPreparedContainsProperly(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
void GEOSSTRtree_iterate_r(GEOSContextHandle_t handle, GEOSSTRtree *tree, GEOSQueryCallback callback, void *userdata)
GEOSGeometry * GEOSGeom_createEmptyCompoundCurve_r(GEOSContextHandle_t handle)
int GEOS_printDouble(double d, unsigned int precision, char *result)
char * GEOSWKTWriter_write(GEOSWKTWriter *writer, const GEOSGeometry *g)
GEOSGeometry * GEOSGeomGetEndPoint_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
int GEOSDistanceIndexed(const GEOSGeometry *g1, const GEOSGeometry *g2, double *dist)
int GEOSGeom_getDimensions_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
unsigned char * GEOSWKBWriter_write_r(GEOSContextHandle_t handle, GEOSWKBWriter *writer, const GEOSGeometry *g, size_t *size)
int GEOSCoordSeq_getZ(const GEOSCoordSequence *s, unsigned int idx, double *val)
GEOSGeometry * GEOSUnion(const GEOSGeometry *ga, const GEOSGeometry *gb)
GEOSCoordSequence * GEOSPreparedNearestPoints(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
GEOSGeometry * GEOSConstrainedDelaunayTriangulation(const GEOSGeometry *g)
GEOSGeometry * GEOSGeom_createPolygon(GEOSGeometry *shell, GEOSGeometry **holes, unsigned int nholes)
GEOSGeoJSONWriter * GEOSGeoJSONWriter_create(void)
void GEOSWKTWriter_setOld3D_r(GEOSContextHandle_t handle, GEOSWKTWriter *writer, int useOld3D)
int(* GEOSDistanceCallback)(const void *item1, const void *item2, double *distance, void *userdata)
Definition: geos_c.h:277
struct GEOSWKBReader_t GEOSWKBReader
Definition: geos_c.h:1857
char GEOSHasM(const GEOSGeometry *g)
unsigned char * GEOSGeomToHEX_buf_r(GEOSContextHandle_t handle, const GEOSGeometry *g, size_t *size)
void GEOSGeom_destroy(GEOSGeometry *g)
int GEOS_setWKBByteOrder_r(GEOSContextHandle_t handle, int byteOrder)
GEOSCoordSequence * GEOSCoordSeq_clone(const GEOSCoordSequence *s)
void(* GEOSMessageHandler)(GEOS_PRINTF_FORMAT const char *fmt,...) GEOS_PRINTF_FORMAT_ATTR(1
Definition: geos_c.h:105
int GEOSDistance_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double *dist)
int GEOSGeomGetM_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *m)
char GEOSTouches(const GEOSGeometry *g1, const GEOSGeometry *g2)
struct GEOSCoordSeq_t GEOSCoordSequence
Definition: geos_c.h:155
char GEOSRelatePatternMatch_r(GEOSContextHandle_t handle, const char *intMatrix, const char *imPattern)
void GEOSSTRtree_destroy(GEOSSTRtree *tree)
void GEOSBufferParams_destroy(GEOSBufferParams *parms)
int GEOSCoordSeq_setXY_r(GEOSContextHandle_t handle, GEOSCoordSequence *s, unsigned int idx, double x, double y)
GEOSGeomTypes
Definition: geos_c.h:198
@ GEOS_MULTILINESTRING
Definition: geos_c.h:210
@ GEOS_GEOMETRYCOLLECTION
Definition: geos_c.h:214
@ GEOS_POINT
Definition: geos_c.h:200
@ GEOS_MULTIPOLYGON
Definition: geos_c.h:212
@ GEOS_LINEARRING
Definition: geos_c.h:204
@ GEOS_POLYGON
Definition: geos_c.h:206
@ GEOS_MULTIPOINT
Definition: geos_c.h:208
@ GEOS_LINESTRING
Definition: geos_c.h:202
GEOSGeometry * GEOSGeom_clone(const GEOSGeometry *g)
int GEOSGetNumInteriorRings(const GEOSGeometry *g)
GEOSMakeValidParams * GEOSMakeValidParams_create(void)
char * GEOSGeoJSONWriter_writeGeometry(GEOSGeoJSONWriter *writer, const GEOSGeometry *g, int indent)
GEOSGeometry * GEOSGeoJSONReader_readGeometry_r(GEOSContextHandle_t handle, GEOSGeoJSONReader *reader, const char *geojson)
char GEOSSTRtree_remove_r(GEOSContextHandle_t handle, GEOSSTRtree *tree, const GEOSGeometry *g, void *item)
void GEOSSTRtree_query_r(GEOSContextHandle_t handle, GEOSSTRtree *tree, const GEOSGeometry *g, GEOSQueryCallback callback, void *userdata)
GEOSGeometry * GEOSWKBReader_readHEX_r(GEOSContextHandle_t handle, GEOSWKBReader *reader, const unsigned char *hex, size_t size)
char GEOSEqualsExact(const GEOSGeometry *g1, const GEOSGeometry *g2, double tolerance)
GEOSGeometry * GEOSIntersection(const GEOSGeometry *g1, const GEOSGeometry *g2)
GEOSGeometry * GEOSIntersectionPrec_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double gridSize)
GEOSGeometry * GEOSGeom_createPointFromXY(double x, double y)
GEOSGeometry * GEOSOffsetCurve_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double width, int quadsegs, int joinStyle, double mitreLimit)
GEOSGeometry * GEOSDensify_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double tolerance)
GEOSGeoJSONReader * GEOSGeoJSONReader_create_r(GEOSContextHandle_t handle)
char * GEOSWKTWriter_write_r(GEOSContextHandle_t handle, GEOSWKTWriter *writer, const GEOSGeometry *g)
GEOSMessageHandler_r GEOSContext_setNoticeMessageHandler_r(GEOSContextHandle_t extHandle, GEOSMessageHandler_r nf, void *userData)
GEOSGeometry * GEOSGeom_createCollection_r(GEOSContextHandle_t handle, int type, GEOSGeometry **geoms, unsigned int ngeoms)
int GEOSCoordSeq_getOrdinate(const GEOSCoordSequence *s, unsigned int idx, unsigned int dim, double *val)
GEOSGeometry * GEOSPointOnSurface_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
void GEOSWKBReader_destroy_r(GEOSContextHandle_t handle, GEOSWKBReader *reader)
char * GEOSGeoJSONWriter_writeGeometry_r(GEOSContextHandle_t handle, GEOSGeoJSONWriter *writer, const GEOSGeometry *g, int indent)
int GEOSDistanceIndexed_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double *dist)
void GEOSWKTReader_destroy(GEOSWKTReader *reader)
GEOSGeometry * GEOSDifference_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
void(* GEOSQueryCallback)(void *item, void *userdata)
Definition: geos_c.h:258
int GEOSCoordSeq_getSize_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s, unsigned int *size)
GEOSGeometry * GEOSDifference(const GEOSGeometry *ga, const GEOSGeometry *gb)
GEOSGeometry * GEOSGeom_createEmptyCollection(int type)
const GEOSCoordSequence * GEOSGeom_getCoordSeq_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSPolygonizer_getCutEdges(const GEOSGeometry *const geoms[], unsigned int ngeoms)
char GEOSContains_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
double GEOSProject_r(GEOSContextHandle_t handle, const GEOSGeometry *line, const GEOSGeometry *point)
GEOSGeometry * GEOSClipByRect_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double xmin, double ymin, double xmax, double ymax)
void GEOSGeom_destroy_r(GEOSContextHandle_t handle, GEOSGeometry *g)
GEOSBufferParams * GEOSBufferParams_create(void)
GEOSContextHandle_t GEOS_init_r(void)
struct GEOSGeom_t GEOSGeometry
Definition: geos_c.h:140
GEOSSTRtree * GEOSSTRtree_create_r(GEOSContextHandle_t handle, size_t nodeCapacity)
char GEOSPreparedContainsXY_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, double x, double y)
GEOSCoordSequence * GEOSNearestPoints(const GEOSGeometry *g1, const GEOSGeometry *g2)
GEOSGeometry * GEOSGeom_transformXY_r(GEOSContextHandle_t handle, const GEOSGeometry *g, GEOSTransformXYCallback callback, void *userdata)
int GEOSGeomTypeId(const GEOSGeometry *g)
GEOSGeometry * GEOSGeom_createEmptyPolygon_r(GEOSContextHandle_t handle)
const void * GEOSSTRtree_nearest_generic_r(GEOSContextHandle_t handle, GEOSSTRtree *tree, const void *item, const GEOSGeometry *itemEnvelope, GEOSDistanceCallback distancefn, void *userdata)
int GEOSSTRtree_build(GEOSSTRtree *tree)
GEOSGeometry * GEOSPolygonize_valid(const GEOSGeometry *const geoms[], unsigned int ngeoms)
char GEOSCoveredBy_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
int GEOSGetNumCoordinates_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSGeom_clone_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
void GEOSWKTWriter_destroy(GEOSWKTWriter *writer)
int GEOSCoordSeq_getDimensions_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s, unsigned int *dims)
GEOSGeometry * GEOSLineSubstring(const GEOSGeometry *g, double start_fraction, double end_fraction)
void GEOSWKBWriter_setOutputDimension(GEOSWKBWriter *writer, int newDimension)
GEOSGeometry * GEOSPolygonHullSimplifyMode_r(GEOSContextHandle_t handle, const GEOSGeometry *g, unsigned int isOuter, unsigned int parameterMode, double parameter)
GEOSWKBFlavors
Definition: geos_c.h:244
@ GEOS_WKB_ISO
Definition: geos_c.h:248
@ GEOS_WKB_EXTENDED
Definition: geos_c.h:246
void GEOSWKBReader_setFixStructure_r(GEOSContextHandle_t handle, GEOSWKBReader *reader, char doFix)
GEOSGeometry * GEOSGeom_createEmptyPoint(void)
void GEOSFree_r(GEOSContextHandle_t handle, void *buffer)
int GEOSHausdorffDistance(const GEOSGeometry *g1, const GEOSGeometry *g2, double *dist)
int GEOSWKBWriter_getOutputDimension(const GEOSWKBWriter *writer)
void GEOSPreparedGeom_destroy_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *g)
GEOSGeometry * GEOSGeom_createLinearRing_r(GEOSContextHandle_t handle, GEOSCoordSequence *s)
const GEOSGeometry * GEOSGetExteriorRing_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
int GEOS_getWKBOutputDims(void)
GEOSGeometry * GEOSGeomGetPointN(const GEOSGeometry *g, int n)
GEOSGeometry * GEOSNode_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
int GEOSMakeValidParams_setMethod(GEOSMakeValidParams *p, enum GEOSMakeValidMethods method)
void initGEOS(GEOSMessageHandler notice_function, GEOSMessageHandler error_function)
int GEOSOrientPolygons_r(GEOSContextHandle_t handle, GEOSGeometry *g, int exteriorCW)
GEOSGeoJSONReader * GEOSGeoJSONReader_create(void)
GEOSGeometry * GEOSGeom_extractUniquePoints(const GEOSGeometry *g)
const GEOSCoordSequence * GEOSGeom_getCoordSeq(const GEOSGeometry *g)
int GEOSFrechetDistanceDensify_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double densifyFrac, double *dist)
char GEOSPreparedRelatePattern_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2, const char *im)
char GEOSPreparedIntersects_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
char GEOSCrosses_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
GEOSGeometry * GEOSUnionCascaded(const GEOSGeometry *g)
char GEOSEquals(const GEOSGeometry *g1, const GEOSGeometry *g2)
int GEOSGeom_getYMin(const GEOSGeometry *g, double *value)
int GEOSGeomGetX(const GEOSGeometry *g, double *x)
GEOSGeometry * GEOSInterpolate(const GEOSGeometry *line, double d)
char * GEOSisValidReason(const GEOSGeometry *g)
char GEOSPreparedDistanceWithin_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2, double dist)
GEOSGeometry * GEOSDelaunayTriangulation(const GEOSGeometry *g, double tolerance, int onlyEdges)
GEOSGeometry * GEOSVoronoiDiagram_r(GEOSContextHandle_t extHandle, const GEOSGeometry *g, const GEOSGeometry *env, double tolerance, int flags)
void GEOSSTRtree_query(GEOSSTRtree *tree, const GEOSGeometry *g, GEOSQueryCallback callback, void *userdata)
GEOSGeometry * GEOSGeom_extractUniquePoints_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
void GEOS_interruptCancel(void)
void GEOSMakeValidParams_destroy(GEOSMakeValidParams *parms)
int GEOSGeomGetY(const GEOSGeometry *g, double *y)
int GEOSFrechetDistance(const GEOSGeometry *g1, const GEOSGeometry *g2, double *dist)
GEOSGeometry * GEOSUnaryUnionPrec(const GEOSGeometry *g, double gridSize)
void GEOSWKTReader_setFixStructure_r(GEOSContextHandle_t handle, GEOSWKTReader *reader, char doFix)
GEOSGeometry * GEOSConcaveHullByLength(const GEOSGeometry *g, double length, unsigned int allowHoles)
GEOSCoordSequence * GEOSCoordSeq_copyFromBuffer(const double *buf, unsigned int size, int hasZ, int hasM)
GEOSGeometry * GEOSSymDifferencePrec(const GEOSGeometry *ga, const GEOSGeometry *gb, double gridSize)
GEOSGeometry * GEOSCoverageUnion_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
int GEOSMinimumClearance(const GEOSGeometry *g, double *d)
const GEOSGeometry * GEOSGetInteriorRingN_r(GEOSContextHandle_t handle, const GEOSGeometry *g, int n)
GEOSGeometry * GEOSSnap(const GEOSGeometry *input, const GEOSGeometry *snap_target, double tolerance)
GEOSGeometry * GEOSGeomFromWKB_buf_r(GEOSContextHandle_t handle, const unsigned char *wkb, size_t size)
char GEOSSTRtree_remove(GEOSSTRtree *tree, const GEOSGeometry *g, void *item)
GEOSMessageHandler GEOSContext_setNoticeHandler_r(GEOSContextHandle_t extHandle, GEOSMessageHandler nf)
const char * GEOSversion(void)
GEOSGeometry * GEOSUnionCascaded_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSSingleSidedBuffer_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double width, int quadsegs, int joinStyle, double mitreLimit, int leftSide)
GEOSGeometry * GEOSInterpolate_r(GEOSContextHandle_t handle, const GEOSGeometry *line, double d)
int GEOSCoordSeq_getXYZ(const GEOSCoordSequence *s, unsigned int idx, double *x, double *y, double *z)
GEOSGeometry * GEOSConcaveHullOfPolygons(const GEOSGeometry *g, double lengthRatio, unsigned int isTight, unsigned int isHolesAllowed)
GEOSGeometry * GEOSPolygonize_full(const GEOSGeometry *input, GEOSGeometry **cuts, GEOSGeometry **dangles, GEOSGeometry **invalid)
char GEOSisValidDetail_r(GEOSContextHandle_t handle, const GEOSGeometry *g, int flags, char **reason, GEOSGeometry **location)
GEOSGeometry * GEOSGeom_createEmptyCircularString_r(GEOSContextHandle_t handle)
char GEOSDisjoint(const GEOSGeometry *g1, const GEOSGeometry *g2)
int GEOSCoordSeq_setX(GEOSCoordSequence *s, unsigned int idx, double val)
int GEOSCoverageIsValid(const GEOSGeometry *input, double gapWidth, GEOSGeometry **invalidEdges)
GEOSGeometry * GEOSGetCentroid_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
int GEOSPreparedDistance(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2, double *dist)
char GEOSPreparedContains(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
char * GEOSRelateBoundaryNodeRule_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, int bnr)
GEOSGeometry * GEOSGeom_createPoint(GEOSCoordSequence *s)
int GEOSCoordSeq_getXYZ_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s, unsigned int idx, double *x, double *y, double *z)
void GEOSWKBWriter_setFlavor(GEOSWKBWriter *writer, int flavor)
GEOSContextHandle_t initGEOS_r(GEOSMessageHandler notice_function, GEOSMessageHandler error_function)
GEOSBufCapStyles
Definition: geos_c.h:597
@ GEOSBUF_CAP_SQUARE
Definition: geos_c.h:606
@ GEOSBUF_CAP_FLAT
Definition: geos_c.h:603
@ GEOSBUF_CAP_ROUND
Definition: geos_c.h:600
GEOSVoronoiFlags
Definition: geos_c.h:4373
@ GEOS_VORONOI_PRESERVE_ORDER
Definition: geos_c.h:4379
@ GEOS_VORONOI_ONLY_EDGES
Definition: geos_c.h:4375
int GEOSCoordSeq_setY_r(GEOSContextHandle_t handle, GEOSCoordSequence *s, unsigned int idx, double val)
int GEOSMakeValidParams_setMethod_r(GEOSContextHandle_t handle, GEOSMakeValidParams *p, enum GEOSMakeValidMethods method)
GEOSGeometry * GEOSSimplify(const GEOSGeometry *g, double tolerance)
void GEOSPreparedGeom_destroy(const GEOSPreparedGeometry *g)
int GEOSBufferParams_setJoinStyle(GEOSBufferParams *p, int joinStyle)
void GEOSCoordSeq_destroy(GEOSCoordSequence *s)
GEOSGeometry * GEOSSharedPaths(const GEOSGeometry *g1, const GEOSGeometry *g2)
int GEOSCoordSeq_setOrdinate(GEOSCoordSequence *s, unsigned int idx, unsigned int dim, double val)
char GEOSPreparedIntersectsXY(const GEOSPreparedGeometry *pg1, double x, double y)
GEOSGeometry * GEOSGeom_createEmptyLineString(void)
int GEOSBufferParams_setMitreLimit_r(GEOSContextHandle_t handle, GEOSBufferParams *p, double mitreLimit)
char GEOSContains(const GEOSGeometry *g1, const GEOSGeometry *g2)
char GEOSPreparedIntersectsXY_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, double x, double y)
GEOSGeometry * GEOSGeom_createLineString_r(GEOSContextHandle_t handle, GEOSCoordSequence *s)
GEOSValidFlags
Definition: geos_c.h:1458
@ GEOSVALID_ALLOW_SELFTOUCHING_RING_FORMING_HOLE
Definition: geos_c.h:1460
GEOSGeometry * GEOSGeom_createCurvePolygon(GEOSGeometry *shell, GEOSGeometry **holes, unsigned int nholes)
GEOSCoordSequence * GEOSCoordSeq_copyFromBuffer_r(GEOSContextHandle_t handle, const double *buf, unsigned int size, int hasZ, int hasM)
void GEOSWKBWriter_setByteOrder_r(GEOSContextHandle_t handle, GEOSWKBWriter *writer, int byteOrder)
GEOSGeometry * GEOSDisjointSubsetUnion_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSPolygonize_valid_r(GEOSContextHandle_t handle, const GEOSGeometry *const geoms[], unsigned int ngems)
struct GEOSWKBWriter_t GEOSWKBWriter
Definition: geos_c.h:1864
void GEOSWKBWriter_setFlavor_r(GEOSContextHandle_t handle, GEOSWKBWriter *writer, int flavor)
char GEOSPreparedOverlaps_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
int GEOSCoordSeq_copyToBuffer(const GEOSCoordSequence *s, double *buf, int hasZ, int hasM)
void GEOSWKTReader_setFixStructure(GEOSWKTReader *reader, char doFix)
GEOSGeometry * GEOSLargestEmptyCircle(const GEOSGeometry *obstacles, const GEOSGeometry *boundary, double tolerance)
int GEOSGeomTypeId_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
const void * GEOSSTRtree_nearest_generic(GEOSSTRtree *tree, const void *item, const GEOSGeometry *itemEnvelope, GEOSDistanceCallback distancefn, void *userdata)
struct GEOSWKTWriter_t GEOSWKTWriter
Definition: geos_c.h:1850
char GEOSPreparedWithin_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
int GEOSSegmentIntersection(double ax0, double ay0, double ax1, double ay1, double bx0, double by0, double bx1, double by1, double *cx, double *cy)
GEOSGeometry * GEOSGeom_createCompoundCurve(GEOSGeometry **curves, unsigned int ncurves)
int GEOSCoordSeq_setY(GEOSCoordSequence *s, unsigned int idx, double val)
void GEOSMakeValidParams_destroy_r(GEOSContextHandle_t handle, GEOSMakeValidParams *parms)
char GEOSPreparedCovers(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
GEOSMessageHandler_r GEOSContext_setErrorMessageHandler_r(GEOSContextHandle_t extHandle, GEOSMessageHandler_r ef, void *userData)
char GEOSEqualsIdentical(const GEOSGeometry *g1, const GEOSGeometry *g2)
const GEOSGeometry * GEOSSTRtree_nearest_r(GEOSContextHandle_t handle, GEOSSTRtree *tree, const GEOSGeometry *geom)
GEOSWKBReader * GEOSWKBReader_create(void)
int GEOSGeom_getExtent_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *xmin, double *ymin, double *xmax, double *ymax)
GEOSGeometry * GEOSGeom_createEmptyCompoundCurve()
char GEOSPreparedRelatePattern(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2, const char *imPattern)
int GEOS_setWKBByteOrder(int byteOrder)
GEOSWKBReader * GEOSWKBReader_create_r(GEOSContextHandle_t handle)
int GEOSCoverageIsValid_r(GEOSContextHandle_t extHandle, const GEOSGeometry *input, double gapWidth, GEOSGeometry **output)
void GEOSWKBReader_setFixStructure(GEOSWKBReader *reader, char doFix)
char GEOSPreparedContains_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
const GEOSGeometry * GEOSGetGeometryN_r(GEOSContextHandle_t handle, const GEOSGeometry *g, int n)
int GEOSCoordSeq_getY_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s, unsigned int idx, double *val)
GEOSGeometry * GEOSMinimumRotatedRectangle_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSSTRtree * GEOSSTRtree_create(size_t nodeCapacity)
double GEOSGeom_getPrecision(const GEOSGeometry *g)
char GEOSIntersects(const GEOSGeometry *g1, const GEOSGeometry *g2)
int GEOSCoordSeq_getDimensions(const GEOSCoordSequence *s, unsigned int *dims)
GEOSGeometry * GEOSWKTReader_read_r(GEOSContextHandle_t handle, GEOSWKTReader *reader, const char *wkt)
GEOSGeometry * GEOSUnaryUnion_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
char GEOSPreparedCoveredBy(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
char GEOSCovers(const GEOSGeometry *g1, const GEOSGeometry *g2)
int GEOSGeom_getXMin_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *value)
int GEOSCoordSeq_getOrdinate_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s, unsigned int idx, unsigned int dim, double *val)
GEOSGeometry * GEOSWKBReader_readHEX(GEOSWKBReader *reader, const unsigned char *hex, size_t size)
int GEOSCoordSeq_getXY(const GEOSCoordSequence *s, unsigned int idx, double *x, double *y)
GEOSGeometry * GEOSGeoJSONReader_readGeometry(GEOSGeoJSONReader *reader, const char *geojson)
int GEOSOrientPolygons(GEOSGeometry *g, int exteriorCW)
char GEOSOverlaps(const GEOSGeometry *g1, const GEOSGeometry *g2)
GEOSGeometry * GEOSSimplify_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double tolerance)
char GEOSHasM_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSGeom_createPointFromXY_r(GEOSContextHandle_t handle, double x, double y)
void GEOSWKTWriter_setTrim_r(GEOSContextHandle_t handle, GEOSWKTWriter *writer, char trim)
GEOSInterruptCallback * GEOS_interruptRegisterCallback(GEOSInterruptCallback *cb)
void GEOSWKTWriter_setTrim(GEOSWKTWriter *writer, char trim)
GEOSGeometry * GEOSConcaveHull_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double ratio, unsigned int allowHoles)
unsigned char * GEOSGeomToHEX_buf(const GEOSGeometry *g, size_t *size)
GEOSWKBByteOrders
Definition: geos_c.h:228
@ GEOS_WKB_NDR
Definition: geos_c.h:232
@ GEOS_WKB_XDR
Definition: geos_c.h:230
void GEOSWKBWriter_setIncludeSRID_r(GEOSContextHandle_t handle, GEOSWKBWriter *writer, const char writeSRID)
int GEOSCoordSeq_copyToArrays(const GEOSCoordSequence *s, double *x, double *y, double *z, double *m)
char GEOSDistanceWithin_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double dist)
struct GEOSWKTReader_t GEOSWKTReader
Definition: geos_c.h:1843
char GEOSPreparedCoveredBy_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
GEOSGeometry * GEOSWKTReader_read(GEOSWKTReader *reader, const char *wkt)
char * GEOSRelateBoundaryNodeRule(const GEOSGeometry *g1, const GEOSGeometry *g2, int bnr)
char * GEOSPreparedRelate(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
void GEOSWKBWriter_setOutputDimension_r(GEOSContextHandle_t handle, GEOSWKBWriter *writer, int newDimension)
void GEOSSetSRID_r(GEOSContextHandle_t handle, GEOSGeometry *g, int SRID)
void GEOSWKTReader_destroy_r(GEOSContextHandle_t handle, GEOSWKTReader *reader)
void GEOSSTRtree_destroy_r(GEOSContextHandle_t handle, GEOSSTRtree *tree)
char GEOSPreparedDisjoint(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
GEOSGeometry * GEOSBuffer_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double width, int quadsegs)
GEOSGeometry * GEOSUnionPrec(const GEOSGeometry *ga, const GEOSGeometry *gb, double gridSize)
GEOSRelateBoundaryNodeRules
Definition: geos_c.h:1415
@ GEOSRELATE_BNR_OGC
Definition: geos_c.h:1419
@ GEOSRELATE_BNR_MULTIVALENT_ENDPOINT
Definition: geos_c.h:1423
@ GEOSRELATE_BNR_ENDPOINT
Definition: geos_c.h:1421
@ GEOSRELATE_BNR_MOD2
Definition: geos_c.h:1417
@ GEOSRELATE_BNR_MONOVALENT_ENDPOINT
Definition: geos_c.h:1425
unsigned char * GEOSWKBWriter_writeHEX_r(GEOSContextHandle_t handle, GEOSWKBWriter *writer, const GEOSGeometry *g, size_t *size)
GEOSGeometry * GEOSGeom_createEmptyCurvePolygon()
int GEOSBufferParams_setSingleSided_r(GEOSContextHandle_t handle, GEOSBufferParams *p, int singleSided)
char GEOSCrosses(const GEOSGeometry *g1, const GEOSGeometry *g2)
void * GEOSGeom_getUserData(const GEOSGeometry *g)
int GEOSMakeValidParams_setKeepCollapsed_r(GEOSContextHandle_t handle, GEOSMakeValidParams *p, int style)
int GEOSCoordSeq_setOrdinate_r(GEOSContextHandle_t handle, GEOSCoordSequence *s, unsigned int idx, unsigned int dim, double val)
void GEOSSetSRID(GEOSGeometry *g, int SRID)
GEOSWKTWriter * GEOSWKTWriter_create(void)
GEOSWKTReader * GEOSWKTReader_create(void)
GEOSGeometry * GEOSBuildArea_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSPolygonHullSimplify(const GEOSGeometry *g, unsigned int isOuter, double vertexNumFraction)
GEOSGeometry * GEOSGeom_transformXY(const GEOSGeometry *g, GEOSTransformXYCallback callback, void *userdata)
GEOSGeometry * GEOSReverse_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSGeom_createCollection(int type, GEOSGeometry **geoms, unsigned int ngeoms)
int GEOSWKBWriter_getFlavor(const GEOSWKBWriter *writer)
GEOSGeometry * GEOSPolygonize_r(GEOSContextHandle_t handle, const GEOSGeometry *const geoms[], unsigned int ngeoms)
char GEOSIntersects_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
int GEOSCoordSeq_getSize(const GEOSCoordSequence *s, unsigned int *size)
const GEOSPreparedGeometry * GEOSPrepare_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSPolygonHullParameterModes
Definition: geos_c.h:4169
@ GEOSHULL_PARAM_AREA_RATIO
Definition: geos_c.h:4173
@ GEOSHULL_PARAM_VERTEX_RATIO
Definition: geos_c.h:4171
int GEOSOrientationIndex(double Ax, double Ay, double Bx, double By, double Px, double Py)
void GEOSWKTWriter_setOutputDimension_r(GEOSContextHandle_t handle, GEOSWKTWriter *writer, int dim)
GEOSGeometry * GEOSMinimumClearanceLine(const GEOSGeometry *g)
int GEOSGetNumInteriorRings_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSCoordSequence * GEOSCoordSeq_copyFromArrays(const double *x, const double *y, const double *z, const double *m, unsigned int size)
GEOSGeometry ** GEOSGeom_releaseCollection_r(GEOSContextHandle_t handle, GEOSGeometry *collection, unsigned int *ngeoms)
GEOSCoordSequence * GEOSNearestPoints_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
GEOSGeometry * GEOSGeom_createRectangle(double xmin, double ymin, double xmax, double ymax)
int GEOSGeomGetZ(const GEOSGeometry *g, double *z)
char * GEOSGeomToWKT(const GEOSGeometry *g)
int GEOSWKBWriter_getFlavor_r(GEOSContextHandle_t handle, const GEOSWKBWriter *writer)
char * GEOSGeomToWKT_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
int GEOSCoordSeq_isCCW(const GEOSCoordSequence *s, char *is_ccw)
struct GEOSContextHandle_HS * GEOSContextHandle_t
Definition: geos_c.h:95
int GEOSCoordSeq_copyToBuffer_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s, double *buf, int hasZ, int hasM)
int GEOSCoordSeq_setXY(GEOSCoordSequence *s, unsigned int idx, double x, double y)
void GEOSCoordSeq_destroy_r(GEOSContextHandle_t handle, GEOSCoordSequence *s)
int GEOSGetSRID_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
int GEOSHilbertCode_r(GEOSContextHandle_t handle, const GEOSGeometry *geom, const GEOSGeometry *extent, unsigned int level, unsigned int *code)
int GEOSMakeValidParams_setKeepCollapsed(GEOSMakeValidParams *p, int keepCollapsed)
int GEOSHausdorffDistanceDensify(const GEOSGeometry *g1, const GEOSGeometry *g2, double densifyFrac, double *dist)
GEOSGeometry * GEOSNode(const GEOSGeometry *g)
GEOSBufJoinStyles
Definition: geos_c.h:613
@ GEOSBUF_JOIN_MITRE
Definition: geos_c.h:623
@ GEOSBUF_JOIN_ROUND
Definition: geos_c.h:618
@ GEOSBUF_JOIN_BEVEL
Definition: geos_c.h:628
GEOSGeometry * GEOSIntersectionPrec(const GEOSGeometry *g1, const GEOSGeometry *g2, double gridSize)
GEOSGeometry * GEOSBufferWithParams(const GEOSGeometry *g, const GEOSBufferParams *p, double width)
GEOSCoordSequence * GEOSCoordSeq_clone_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s)
int GEOSWKBWriter_getByteOrder_r(GEOSContextHandle_t handle, const GEOSWKBWriter *writer)
int GEOSGeom_getXMax_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *value)
void GEOSWKBWriter_destroy(GEOSWKBWriter *writer)
char GEOSEquals_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
GEOSGeometry * GEOSGeom_createEmptyPolygon(void)
int GEOSGeom_getXMin(const GEOSGeometry *g, double *value)
char GEOSCovers_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
int GEOSGeomGetLength(const GEOSGeometry *g, double *length)
char GEOSOverlaps_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
char * GEOSPreparedRelate_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
GEOSGeometry * GEOSSymDifference_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
int GEOSLength_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *length)
GEOSGeometry * GEOSMinimumWidth(const GEOSGeometry *g)
GEOSGeometry * GEOSPolygonHullSimplify_r(GEOSContextHandle_t handle, const GEOSGeometry *g, unsigned int isOuter, double vertexNumFraction)
unsigned char * GEOSGeomToWKB_buf_r(GEOSContextHandle_t handle, const GEOSGeometry *g, size_t *size)
GEOSGeometry ** GEOSGeom_releaseCollection(GEOSGeometry *collection, unsigned int *ngeoms)
char GEOSDisjoint_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
char GEOSPreparedContainsProperly_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
char * GEOSGeomType(const GEOSGeometry *g)
GEOSGeometry * GEOSInterpolateNormalized(const GEOSGeometry *line, double proportion)
GEOSGeometry * GEOSPolygonize(const GEOSGeometry *const geoms[], unsigned int ngeoms)
GEOSGeometry * GEOSGeomGetPointN_r(GEOSContextHandle_t handle, const GEOSGeometry *g, int n)
int GEOSGeom_getCoordinateDimension_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
int GEOSNormalize(GEOSGeometry *g)
GEOSGeometry * GEOSGeom_createCurvePolygon_r(GEOSContextHandle_t handle, GEOSGeometry *shell, GEOSGeometry **holes, unsigned int nholes)
GEOSGeometry * GEOSClipByRect(const GEOSGeometry *g, double xmin, double ymin, double xmax, double ymax)
int GEOSGetNumGeometries_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
char GEOSEqualsExact_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double tolerance)
GEOSGeometry * GEOSLineMerge(const GEOSGeometry *g)
int GEOSWKTWriter_getOutputDimension(GEOSWKTWriter *writer)
GEOSGeometry * GEOSReverse(const GEOSGeometry *g)
GEOSGeometry * GEOSBufferWithParams_r(GEOSContextHandle_t handle, const GEOSGeometry *g, const GEOSBufferParams *p, double width)
char GEOSTouches_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
GEOSGeometry * GEOSGeomGetStartPoint_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSGeom_createCircularString(GEOSCoordSequence *s)
int GEOSArea_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *area)
GEOSGeometry * GEOSDensify(const GEOSGeometry *g, double tolerance)
double GEOSGeom_getPrecision_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSSnap_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double tolerance)
void GEOSWKTWriter_setOutputDimension(GEOSWKTWriter *writer, int dim)
int GEOSCoordSeq_getY(const GEOSCoordSequence *s, unsigned int idx, double *val)
int GEOSCoordSeq_setZ(GEOSCoordSequence *s, unsigned int idx, double val)
int GEOSBufferParams_setMitreLimit(GEOSBufferParams *p, double mitreLimit)
GEOSGeometry * GEOSVoronoiDiagram(const GEOSGeometry *g, const GEOSGeometry *env, double tolerance, int flags)
int(* GEOSTransformXYCallback)(double *x, double *y, void *userdata)
Definition: geos_c.h:296
GEOSGeoJSONWriter * GEOSGeoJSONWriter_create_r(GEOSContextHandle_t handle)
void GEOSWKTWriter_setOld3D(GEOSWKTWriter *writer, int useOld3D)
int GEOSGeom_getExtent(const GEOSGeometry *g, double *xmin, double *ymin, double *xmax, double *ymax)
GEOSGeometry * GEOSConcaveHull(const GEOSGeometry *g, double ratio, unsigned int allowHoles)
GEOSGeometry * GEOSGeomFromWKB_buf(const unsigned char *wkb, size_t size)
GEOSGeometry * GEOSGeom_setPrecision_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double gridSize, int flags)
int GEOSCoordSeq_copyToArrays_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s, double *x, double *y, double *z, double *m)
char GEOSWithin(const GEOSGeometry *g1, const GEOSGeometry *g2)
int GEOSNormalize_r(GEOSContextHandle_t handle, GEOSGeometry *g)
void GEOSWKBWriter_destroy_r(GEOSContextHandle_t handle, GEOSWKBWriter *writer)
GEOSGeometry * GEOSMaximumInscribedCircle_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double tolerance)
int GEOSDistance(const GEOSGeometry *g1, const GEOSGeometry *g2, double *dist)
GEOSGeometry * GEOSMakeValidWithParams_r(GEOSContextHandle_t handle, const GEOSGeometry *g, const GEOSMakeValidParams *makeValidParams)
void finishGEOS_r(GEOSContextHandle_t handle)
GEOSGeometry * GEOSCoverageUnion(const GEOSGeometry *g)
char GEOSisClosed(const GEOSGeometry *g)
int GEOSGeom_getCoordinateDimension(const GEOSGeometry *g)
GEOSGeometry * GEOSRemoveRepeatedPoints(const GEOSGeometry *g, double tolerance)
int GEOSFrechetDistance_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double *dist)
char GEOSRelatePattern(const GEOSGeometry *g1, const GEOSGeometry *g2, const char *imPattern)
GEOSGeometry * GEOSGeom_createEmptyCollection_r(GEOSContextHandle_t handle, int type)
GEOSGeometry * GEOSGeomFromHEX_buf_r(GEOSContextHandle_t handle, const unsigned char *hex, size_t size)
struct GEOSGeoJSONWriter_t GEOSGeoJSONWriter
Definition: geos_c.h:1878
GEOSGeometry * GEOSGeom_createRectangle_r(GEOSContextHandle_t handle, double xmin, double ymin, double xmax, double ymax)
char GEOSPreparedTouches_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
GEOSMessageHandler GEOSContext_setErrorHandler_r(GEOSContextHandle_t extHandle, GEOSMessageHandler ef)
int GEOSCoordSeq_setXYZ(GEOSCoordSequence *s, unsigned int idx, double x, double y, double z)
GEOSGeometry * GEOSOffsetCurve(const GEOSGeometry *g, double width, int quadsegs, int joinStyle, double mitreLimit)
int GEOSWKTWriter_getOutputDimension_r(GEOSContextHandle_t handle, GEOSWKTWriter *writer)
double GEOSProjectNormalized(const GEOSGeometry *line, const GEOSGeometry *point)
GEOSGeometry * GEOSTopologyPreserveSimplify(const GEOSGeometry *g, double tolerance)
GEOSGeometry * GEOSCoverageSimplifyVW_r(GEOSContextHandle_t extHandle, const GEOSGeometry *input, double tolerance, int preserveBoundary)
int GEOSGeom_getYMin_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *value)
void GEOSGeom_setUserData(GEOSGeometry *g, void *userData)
void GEOSGeoJSONReader_destroy(GEOSGeoJSONReader *reader)
GEOSGeometry * GEOSMakeValid_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
int GEOSGeomGetNumPoints(const GEOSGeometry *g)
GEOSGeometry * GEOSBufferWithStyle_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double width, int quadsegs, int endCapStyle, int joinStyle, double mitreLimit)
void GEOSGeoJSONWriter_destroy(GEOSGeoJSONWriter *writer)
double GEOSProjectNormalized_r(GEOSContextHandle_t handle, const GEOSGeometry *g, const GEOSGeometry *p)
char GEOSPreparedCrosses(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
int GEOSGeomGetNumPoints_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
const GEOSGeometry * GEOSGetInteriorRingN(const GEOSGeometry *g, int n)
GEOSGeometry * GEOSGeom_createEmptyCircularString()
GEOSGeometry * GEOSGeom_createCircularString_r(GEOSContextHandle_t handle, GEOSCoordSequence *s)
GEOSGeometry * GEOSUnionPrec_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double gridSize)
char GEOSPreparedIntersects(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
char GEOSWithin_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
GEOSGeometry * GEOSBoundary(const GEOSGeometry *g)
int GEOS_setWKBOutputDims(int newDims)
int GEOSFrechetDistanceDensify(const GEOSGeometry *g1, const GEOSGeometry *g2, double densifyFrac, double *dist)
struct GEOSBufParams_t GEOSBufferParams
Definition: geos_c.h:169
char GEOSPreparedCovers_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
GEOSGeometry * GEOSGeom_createEmptyCurvePolygon_r(GEOSContextHandle_t handle)
GEOSGeometry * GEOSCoverageSimplifyVW(const GEOSGeometry *input, double tolerance, int preserveBoundary)
int GEOSOrientationIndex_r(GEOSContextHandle_t handle, double Ax, double Ay, double Bx, double By, double Px, double Py)
GEOSGeometry * GEOSBufferWithStyle(const GEOSGeometry *g, double width, int quadsegs, int endCapStyle, int joinStyle, double mitreLimit)
GEOSPrecisionRules
Definition: geos_c.h:1597
@ GEOS_PREC_NO_TOPO
Definition: geos_c.h:1601
@ GEOS_PREC_KEEP_COLLAPSED
Definition: geos_c.h:1603
@ GEOS_PREC_VALID_OUTPUT
Definition: geos_c.h:1599
int GEOSGetNumGeometries(const GEOSGeometry *g)
GEOSGeometry * GEOSEnvelope_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSMaximumInscribedCircle(const GEOSGeometry *g, double tolerance)
GEOSWKTWriter * GEOSWKTWriter_create_r(GEOSContextHandle_t handle)
GEOSGeometry * GEOSConstrainedDelaunayTriangulation_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
int GEOSGetNumCoordinates(const GEOSGeometry *g)
struct GEOSMakeValidParams_t GEOSMakeValidParams
Definition: geos_c.h:176
char GEOSRelatePatternMatch(const char *intMatrix, const char *imPattern)
void GEOS_finish_r(GEOSContextHandle_t handle)
GEOSMakeValidMethods
Definition: geos_c.h:1488
@ GEOS_MAKE_VALID_LINEWORK
Definition: geos_c.h:1492
@ GEOS_MAKE_VALID_STRUCTURE
Definition: geos_c.h:1497
int GEOSGeom_getYMax_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *value)
GEOSGeometry * GEOSMinimumClearanceLine_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSWKBReader_read_r(GEOSContextHandle_t handle, GEOSWKBReader *reader, const unsigned char *wkb, size_t size)
unsigned char * GEOSWKBWriter_writeHEX(GEOSWKBWriter *writer, const GEOSGeometry *g, size_t *size)
GEOSGeometry * GEOSConcaveHullOfPolygons_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double lengthRatio, unsigned int isTight, unsigned int isHolesAllowed)
GEOSGeometry * GEOSMakeValid(const GEOSGeometry *g)
GEOSGeometry * GEOSMinimumWidth_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSPolygonizer_getCutEdges_r(GEOSContextHandle_t handle, const GEOSGeometry *const geoms[], unsigned int ngeoms)
GEOSGeometry * GEOSUnaryUnionPrec_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double gridSize)
GEOSCoordSequence * GEOSCoordSeq_copyFromArrays_r(GEOSContextHandle_t handle, const double *x, const double *y, const double *z, const double *m, unsigned int size)
void GEOSGeoJSONWriter_destroy_r(GEOSContextHandle_t handle, GEOSGeoJSONWriter *writer)
int GEOSBufferParams_setSingleSided(GEOSBufferParams *p, int singleSided)
int GEOSGeomGetZ_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *z)
char GEOSEqualsIdentical_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
GEOSGeometry * GEOSLineSubstring_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double start_fraction, double end_fdraction)
GEOSGeometry * GEOSSymDifference(const GEOSGeometry *ga, const GEOSGeometry *gb)
void GEOSWKTWriter_destroy_r(GEOSContextHandle_t handle, GEOSWKTWriter *writer)
int GEOSWKBWriter_getByteOrder(const GEOSWKBWriter *writer)
char * GEOSRelate(const GEOSGeometry *g1, const GEOSGeometry *g2)
char GEOSPreparedOverlaps(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
char GEOSHasZ_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSMinimumRotatedRectangle(const GEOSGeometry *g)
GEOSGeometry * GEOSMakeValidWithParams(const GEOSGeometry *g, const GEOSMakeValidParams *makeValidParams)
GEOSGeometry * GEOSGeomFromWKT_r(GEOSContextHandle_t handle, const char *wkt)
void GEOSGeoJSONReader_destroy_r(GEOSContextHandle_t handle, GEOSGeoJSONReader *reader)
GEOSGeometry * GEOSBoundary_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSPolygonHullSimplifyMode(const GEOSGeometry *g, unsigned int isOuter, unsigned int parameterMode, double parameter)
void GEOSSTRtree_insert(GEOSSTRtree *tree, const GEOSGeometry *g, void *item)
char GEOSisSimple_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
char GEOSDistanceWithin(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)
int GEOSGeomGetX_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *x)
char GEOSPreparedWithin(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
char GEOSHasZ(const GEOSGeometry *g)
int GEOSWKBWriter_getOutputDimension_r(GEOSContextHandle_t handle, const GEOSWKBWriter *writer)
GEOSGeometry * GEOSConvexHull(const GEOSGeometry *g)
int GEOSBufferParams_setQuadrantSegments(GEOSBufferParams *p, int quadSegs)
void GEOS_interruptRequest(void)
char GEOSWKBWriter_getIncludeSRID_r(GEOSContextHandle_t handle, const GEOSWKBWriter *writer)
void finishGEOS(void)
int GEOSLength(const GEOSGeometry *g, double *length)
GEOSBufferParams * GEOSBufferParams_create_r(GEOSContextHandle_t handle)
int GEOSCoordSeq_getZ_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s, unsigned int idx, double *val)
int GEOSBufferParams_setEndCapStyle(GEOSBufferParams *p, int style)
GEOSGeometry * GEOSUnaryUnion(const GEOSGeometry *g)
int GEOSGetSRID(const GEOSGeometry *g)
GEOSGeometry * GEOSDifferencePrec(const GEOSGeometry *ga, const GEOSGeometry *gb, double gridSize)
GEOSMakeValidParams * GEOSMakeValidParams_create_r(GEOSContextHandle_t extHandle)
const GEOSGeometry * GEOSGetGeometryN(const GEOSGeometry *g, int n)
GEOSGeometry * GEOSSingleSidedBuffer(const GEOSGeometry *g, double width, int quadsegs, int joinStyle, double mitreLimit, int leftSide)
char * GEOSRelate_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
GEOSGeometry * GEOSGeomGetStartPoint(const GEOSGeometry *g)
void GEOSWKTWriter_setRoundingPrecision(GEOSWKTWriter *writer, int precision)
char GEOSisClosed_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSGeom_createEmptyLineString_r(GEOSContextHandle_t handle)
GEOSWKBWriter * GEOSWKBWriter_create_r(GEOSContextHandle_t handle)
int GEOSBufferParams_setJoinStyle_r(GEOSContextHandle_t handle, GEOSBufferParams *p, int joinStyle)
char GEOSisRing(const GEOSGeometry *g)
GEOSWKBWriter * GEOSWKBWriter_create(void)
GEOSGeometry * GEOSConcaveHullByLength_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double ratio, unsigned int allowHoles)
int GEOSCoordSeq_getXY_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s, unsigned int idx, double *x, double *y)
GEOSGeometry * GEOSDisjointSubsetUnion(const GEOSGeometry *g)
char GEOSPreparedContainsXY(const GEOSPreparedGeometry *pg1, double x, double y)
GEOSGeometry * GEOSGeom_setPrecision(const GEOSGeometry *g, double gridSize, int flags)
int GEOSCoordSeq_getX_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s, unsigned int idx, double *val)
unsigned char * GEOSWKBWriter_write(GEOSWKBWriter *writer, const GEOSGeometry *g, size_t *size)
int GEOSPreparedDistance_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2, double *dist)
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)
char GEOSisValid(const GEOSGeometry *g)
const GEOSGeometry * GEOSSTRtree_nearest(GEOSSTRtree *tree, const GEOSGeometry *geom)
GEOSCoordSequence * GEOSCoordSeq_create_r(GEOSContextHandle_t handle, unsigned int size, unsigned int dims)
char GEOSCoveredBy(const GEOSGeometry *g1, const GEOSGeometry *g2)
int GEOSGeom_getDimensions(const GEOSGeometry *g)
GEOSGeometry * GEOSWKBReader_read(GEOSWKBReader *reader, const unsigned char *wkb, size_t size)
char GEOSPreparedDisjoint_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
GEOSGeometry * GEOSIntersection_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
GEOSGeometry * GEOSLargestEmptyCircle_r(GEOSContextHandle_t handle, const GEOSGeometry *g, const GEOSGeometry *boundary, double tolerance)
int GEOSHausdorffDistance_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double *dist)
void GEOSWKBWriter_setIncludeSRID(GEOSWKBWriter *writer, const char writeSRID)
char GEOSisEmpty(const GEOSGeometry *g)
GEOSGeometry * GEOSGeomFromHEX_buf(const unsigned char *hex, size_t size)
GEOSGeometry * GEOSPolygonize_full_r(GEOSContextHandle_t handle, const GEOSGeometry *input, GEOSGeometry **cuts, GEOSGeometry **dangles, GEOSGeometry **invalidRings)
int GEOSMinimumClearance_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *distance)
int GEOSHilbertCode(const GEOSGeometry *geom, const GEOSGeometry *extent, unsigned int level, unsigned int *code)
void() GEOSInterruptCallback(void)
Definition: geos_c.h:312
int GEOS_getWKBByteOrder_r(GEOSContextHandle_t handle)
char GEOSPreparedTouches(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
char GEOSWKBWriter_getIncludeSRID(const GEOSWKBWriter *writer)
struct GEOSSTRtree_t GEOSSTRtree
Definition: geos_c.h:162
void * GEOSGeom_getUserData_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
int GEOSGeom_getXMax(const GEOSGeometry *g, double *value)
GEOSGeometry * GEOSTopologyPreserveSimplify_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double tolerance)
GEOSGeometry * GEOSGeom_createLineString(GEOSCoordSequence *s)
GEOSGeometry * GEOSMinimumBoundingCircle(const GEOSGeometry *g, double *radius, GEOSGeometry **center)
GEOSGeometry * GEOSConvexHull_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSGetCentroid(const GEOSGeometry *g)
void GEOSFree(void *buffer)
GEOSGeometry * GEOSGeom_createPoint_r(GEOSContextHandle_t handle, GEOSCoordSequence *s)
int GEOSCoordSeq_getX(const GEOSCoordSequence *s, unsigned int idx, double *val)
GEOSGeometry * GEOSEnvelope(const GEOSGeometry *g)
int GEOSArea(const GEOSGeometry *g, double *area)
int GEOSGeomGetLength_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *length)
char GEOSPreparedCrosses_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
GEOSGeometry * GEOSLineMergeDirected_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
int GEOSGeomGetY_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *y)
int GEOSCoordSeq_isCCW_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s, char *is_ccw)
GEOSGeometry * GEOSInterpolateNormalized_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double d)
char GEOSisValid_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSLineMerge_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
void GEOSSTRtree_insert_r(GEOSContextHandle_t handle, GEOSSTRtree *tree, const GEOSGeometry *g, void *item)
GEOSGeometry * GEOSGeom_createCompoundCurve_r(GEOSContextHandle_t handle, GEOSGeometry **curves, unsigned int ncurves)
GEOSGeometry * GEOSGeomGetEndPoint(const GEOSGeometry *g)
GEOSGeometry * GEOSMinimumBoundingCircle_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *radius, GEOSGeometry **center)
int GEOSCoordSeq_setX_r(GEOSContextHandle_t handle, GEOSCoordSequence *s, unsigned int idx, double val)
GEOSCoordSequence * GEOSCoordSeq_create(unsigned int size, unsigned int dims)
char GEOSisValidDetail(const GEOSGeometry *g, int flags, char **reason, GEOSGeometry **location)
GEOSCoordSequence * GEOSPreparedNearestPoints_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
GEOSGeometry * GEOSSharedPaths_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
void GEOSWKTWriter_setRoundingPrecision_r(GEOSContextHandle_t handle, GEOSWKTWriter *writer, int precision)
int GEOSGeom_getYMax(const GEOSGeometry *g, double *value)
int GEOSHausdorffDistanceDensify_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double densifyFrac, double *dist)
const GEOSGeometry * GEOSGetExteriorRing(const GEOSGeometry *g)
GEOSGeometry * GEOSDifferencePrec_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double gridSize)
double GEOSProject(const GEOSGeometry *line, const GEOSGeometry *point)
GEOSGeometry * GEOSUnion_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
char * GEOSisValidReason_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
struct GEOSPrepGeom_t GEOSPreparedGeometry
Definition: geos_c.h:147