GEOS  3.12.0dev
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 12
65 #endif
66 #ifndef GEOS_VERSION_PATCH
67 #define GEOS_VERSION_PATCH 0dev
68 #endif
69 #ifndef GEOS_VERSION
70 #define GEOS_VERSION "3.12.0dev"
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 18
78 #define GEOS_CAPI_VERSION_PATCH 0
79 #define GEOS_CAPI_VERSION "3.12.0dev-CAPI-1.18.0"
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 
106 typedef void (*GEOSMessageHandler)(const char *fmt, ...);
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 
154 typedef struct GEOSCoordSeq_t GEOSCoordSequence;
155 
161 typedef struct GEOSSTRtree_t GEOSSTRtree;
162 
168 typedef struct GEOSBufParams_t GEOSBufferParams;
169 
175 typedef struct GEOSMakeValidParams_t GEOSMakeValidParams;
176 
177 #endif
178 
181 /*
182 * These are compatibility definitions for source compatibility
183 * with GEOS 2.X clients relying on that type.
184 */
185 typedef GEOSGeometry* GEOSGeom;
186 typedef GEOSCoordSequence* GEOSCoordSeq;
187 
214 };
215 
226  GEOS_WKB_NDR = 1
227 };
228 
242  GEOS_WKB_ISO = 2
243 };
244 
252 typedef void (*GEOSQueryCallback)(void *item, void *userdata);
253 
271 typedef int (*GEOSDistanceCallback)(
272  const void* item1,
273  const void* item2,
274  double* distance,
275  void* userdata);
276 
277 
290 typedef int (*GEOSTransformXYCallback)(
291  double* x,
292  double* y,
293  void* userdata);
294 
295 
296 /* ========== Interruption ========== */
297 
306 typedef void (GEOSInterruptCallback)(void);
307 
316 
320 extern void GEOS_DLL GEOS_interruptRequest(void);
321 
325 extern void GEOS_DLL GEOS_interruptCancel(void);
326 
327 /* ========== Initialization and Cleanup ========== */
328 
336 extern GEOSContextHandle_t GEOS_DLL GEOS_init_r(void);
337 
345 extern void GEOS_DLL GEOS_finish_r(GEOSContextHandle_t handle);
346 
356  GEOSContextHandle_t extHandle,
357  GEOSMessageHandler nf);
358 
370  GEOSContextHandle_t extHandle,
371  GEOSMessageHandler ef);
372 
383  GEOSContextHandle_t extHandle,
385  void *userData);
386 
399  GEOSContextHandle_t extHandle,
401  void *userData);
402 
403 /* ========== Coordinate Sequence functions ========== */
404 
407  GEOSContextHandle_t handle,
408  unsigned int size,
409  unsigned int dims);
410 
413  GEOSContextHandle_t handle,
414  const double* buf,
415  unsigned int size,
416  int hasZ,
417  int hasM);
418 
421  GEOSContextHandle_t handle,
422  const double* x,
423  const double* y,
424  const double* z,
425  const double* m,
426  unsigned int size);
427 
429 extern int GEOS_DLL GEOSCoordSeq_copyToBuffer_r(
430  GEOSContextHandle_t handle,
431  const GEOSCoordSequence* s,
432  double* buf,
433  int hasZ,
434  int hasM);
435 
437 extern int GEOS_DLL GEOSCoordSeq_copyToArrays_r(
438  GEOSContextHandle_t handle,
439  const GEOSCoordSequence* s,
440  double* x,
441  double* y,
442  double* z,
443  double* m);
444 
447  GEOSContextHandle_t handle,
448  const GEOSCoordSequence* s);
449 
451 extern void GEOS_DLL GEOSCoordSeq_destroy_r(
452  GEOSContextHandle_t handle,
453  GEOSCoordSequence* s);
454 
456 extern int GEOS_DLL GEOSCoordSeq_setX_r(
457  GEOSContextHandle_t handle,
458  GEOSCoordSequence* s, unsigned int idx,
459  double val);
460 
462 extern int GEOS_DLL GEOSCoordSeq_setY_r(
463  GEOSContextHandle_t handle,
464  GEOSCoordSequence* s, unsigned int idx,
465  double val);
466 
468 extern int GEOS_DLL GEOSCoordSeq_setZ_r(
469  GEOSContextHandle_t handle,
470  GEOSCoordSequence* s, unsigned int idx,
471  double val);
472 
474 extern int GEOS_DLL GEOSCoordSeq_setXY_r(
475  GEOSContextHandle_t handle,
476  GEOSCoordSequence* s, unsigned int idx,
477  double x, double y);
478 
480 extern int GEOS_DLL GEOSCoordSeq_setXYZ_r(
481  GEOSContextHandle_t handle,
482  GEOSCoordSequence* s, unsigned int idx,
483  double x, double y, double z);
484 
486 extern int GEOS_DLL GEOSCoordSeq_setOrdinate_r(
487  GEOSContextHandle_t handle,
489  unsigned int idx,
490  unsigned int dim, double val);
491 
493 extern int GEOS_DLL GEOSCoordSeq_getX_r(
494  GEOSContextHandle_t handle,
495  const GEOSCoordSequence* s,
496  unsigned int idx, double *val);
497 
499 extern int GEOS_DLL GEOSCoordSeq_getY_r(
500  GEOSContextHandle_t handle,
501  const GEOSCoordSequence* s,
502  unsigned int idx, double *val);
503 
505 extern int GEOS_DLL GEOSCoordSeq_getZ_r(
506  GEOSContextHandle_t handle,
507  const GEOSCoordSequence* s,
508  unsigned int idx, double *val);
509 
511 extern int GEOS_DLL GEOSCoordSeq_getXY_r(
512  GEOSContextHandle_t handle,
513  const GEOSCoordSequence* s,
514  unsigned int idx,
515  double *x, double *y);
516 
518 extern int GEOS_DLL GEOSCoordSeq_getXYZ_r(
519  GEOSContextHandle_t handle,
520  const GEOSCoordSequence* s,
521  unsigned int idx,
522  double *x, double *y, double *z);
523 
525 extern int GEOS_DLL GEOSCoordSeq_getOrdinate_r(
526  GEOSContextHandle_t handle,
527  const GEOSCoordSequence* s,
528  unsigned int idx,
529  unsigned int dim, double *val);
530 
532 extern int GEOS_DLL GEOSCoordSeq_getSize_r(
533  GEOSContextHandle_t handle,
534  const GEOSCoordSequence* s,
535  unsigned int *size);
536 
538 extern int GEOS_DLL GEOSCoordSeq_getDimensions_r(
539  GEOSContextHandle_t handle,
540  const GEOSCoordSequence* s,
541  unsigned int *dims);
542 
544 extern int GEOS_DLL GEOSCoordSeq_isCCW_r(
545  GEOSContextHandle_t handle,
546  const GEOSCoordSequence* s,
547  char* is_ccw);
548 
549 /* ========= Linear referencing functions ========= */
550 
552 extern double GEOS_DLL GEOSProject_r(
553  GEOSContextHandle_t handle,
554  const GEOSGeometry *line,
555  const GEOSGeometry *point);
556 
559  GEOSContextHandle_t handle,
560  const GEOSGeometry *line,
561  double d);
562 
564 extern double GEOS_DLL GEOSProjectNormalized_r(
565  GEOSContextHandle_t handle,
566  const GEOSGeometry *g,
567  const GEOSGeometry *p);
568 
571  GEOSContextHandle_t handle,
572  const GEOSGeometry *g,
573  double d);
574 
575 /* ========== Buffer related functions ========== */
576 
578 extern GEOSGeometry GEOS_DLL *GEOSBuffer_r(
579  GEOSContextHandle_t handle,
580  const GEOSGeometry* g,
581  double width, int quadsegs);
582 
588 
591 
594 
597 };
598 
619 };
620 
623  GEOSContextHandle_t handle);
624 
626 extern void GEOS_DLL GEOSBufferParams_destroy_r(
627  GEOSContextHandle_t handle,
628  GEOSBufferParams* parms);
629 
632  GEOSContextHandle_t handle,
633  GEOSBufferParams* p,
634  int style);
635 
638  GEOSContextHandle_t handle,
639  GEOSBufferParams* p,
640  int joinStyle);
641 
644  GEOSContextHandle_t handle,
645  GEOSBufferParams* p,
646  double mitreLimit);
647 
650  GEOSContextHandle_t handle,
651  GEOSBufferParams* p,
652  int quadSegs);
653 
656  GEOSContextHandle_t handle,
657  GEOSBufferParams* p,
658  int singleSided);
659 
662  GEOSContextHandle_t handle,
663  const GEOSGeometry* g,
664  const GEOSBufferParams* p,
665  double width);
666 
669  GEOSContextHandle_t handle,
670  const GEOSGeometry* g,
671  double width, int quadsegs, int endCapStyle,
672  int joinStyle, double mitreLimit);
673 
675 extern GEOSGeometry GEOS_DLL *GEOSDensify_r(
676  GEOSContextHandle_t handle,
677  const GEOSGeometry* g,
678  double tolerance);
679 
682  GEOSContextHandle_t handle,
683  const GEOSGeometry* g, double width, int quadsegs,
684  int joinStyle, double mitreLimit);
685 
686 
687 /* ========= Geometry Constructors ========= */
688 
691  GEOSContextHandle_t handle,
692  GEOSCoordSequence* s);
693 
696  GEOSContextHandle_t handle,
697  double x, double y);
698 
701  GEOSContextHandle_t handle);
702 
705  GEOSContextHandle_t handle,
706  GEOSCoordSequence* s);
707 
710  GEOSContextHandle_t handle,
711  GEOSCoordSequence* s);
712 
715  GEOSContextHandle_t handle);
716 
719  GEOSContextHandle_t handle);
720 
723  GEOSContextHandle_t handle,
724  GEOSGeometry* shell,
725  GEOSGeometry** holes,
726  unsigned int nholes);
727 
730  GEOSContextHandle_t handle,
731  int type,
732  GEOSGeometry* *geoms,
733  unsigned int ngeoms);
734 
737  GEOSContextHandle_t handle, int type);
738 
741  GEOSContextHandle_t handle,
742  double xmin, double ymin,
743  double xmax, double ymax);
744 
747  GEOSContextHandle_t handle,
748  const GEOSGeometry* g);
749 
750 /* ========= Memory management ========= */
751 
753 extern void GEOS_DLL GEOSGeom_destroy_r(
754  GEOSContextHandle_t handle,
755  GEOSGeometry* g);
756 
757 /* ========= Topology Operations ========= */
758 
760 extern GEOSGeometry GEOS_DLL *GEOSEnvelope_r(
761  GEOSContextHandle_t handle,
762  const GEOSGeometry* g);
763 
766  GEOSContextHandle_t handle,
767  const GEOSGeometry* g1,
768  const GEOSGeometry* g2);
769 
772  GEOSContextHandle_t handle,
773  const GEOSGeometry* g1,
774  const GEOSGeometry* g2,
775  double gridSize);
776 
779  GEOSContextHandle_t handle,
780  const GEOSGeometry* g);
781 
784  GEOSContextHandle_t handle,
785  const GEOSGeometry* g,
786  double ratio,
787  unsigned int allowHoles);
788 
791  GEOSContextHandle_t handle,
792  const GEOSGeometry* g,
793  double ratio,
794  unsigned int allowHoles);
795 
798  GEOSContextHandle_t handle,
799  const GEOSGeometry* g,
800  unsigned int isOuter,
801  double vertexNumFraction);
802 
805  GEOSContextHandle_t handle,
806  const GEOSGeometry* g,
807  unsigned int isOuter,
808  unsigned int parameterMode,
809  double parameter);
810 
813  GEOSContextHandle_t handle,
814  const GEOSGeometry* g,
815  double lengthRatio,
816  unsigned int isTight,
817  unsigned int isHolesAllowed);
818 
821  GEOSContextHandle_t handle,
822  const GEOSGeometry* g);
823 
826  GEOSContextHandle_t handle,
827  const GEOSGeometry* g,
828  double tolerance);
829 
832  GEOSContextHandle_t handle,
833  const GEOSGeometry* g,
834  const GEOSGeometry* boundary,
835  double tolerance);
836 
839  GEOSContextHandle_t handle,
840  const GEOSGeometry* g);
841 
844  GEOSContextHandle_t handle,
845  const GEOSGeometry* g);
846 
848 extern int GEOS_DLL GEOSMinimumClearance_r(
849  GEOSContextHandle_t handle,
850  const GEOSGeometry* g,
851  double* distance);
852 
855  GEOSContextHandle_t handle,
856  const GEOSGeometry* g1,
857  const GEOSGeometry* g2);
858 
861  GEOSContextHandle_t handle,
862  const GEOSGeometry* g1,
863  const GEOSGeometry* g2,
864  double gridSize);
865 
868  GEOSContextHandle_t handle,
869  const GEOSGeometry* g1,
870  const GEOSGeometry* g2);
871 
874  GEOSContextHandle_t handle,
875  const GEOSGeometry* g1,
876  const GEOSGeometry* g2,
877  double gridSize);
878 
880 extern GEOSGeometry GEOS_DLL *GEOSBoundary_r(
881  GEOSContextHandle_t handle,
882  const GEOSGeometry* g);
883 
885 extern GEOSGeometry GEOS_DLL *GEOSUnion_r(
886  GEOSContextHandle_t handle,
887  const GEOSGeometry* g1,
888  const GEOSGeometry* g2);
889 
891 extern GEOSGeometry GEOS_DLL *GEOSUnionPrec_r(
892  GEOSContextHandle_t handle,
893  const GEOSGeometry* g1,
894  const GEOSGeometry* g2,
895  double gridSize);
896 
899  GEOSContextHandle_t handle,
900  const GEOSGeometry* g);
901 
904  GEOSContextHandle_t handle,
905  const GEOSGeometry* g,
906  double gridSize);
907 
910  GEOSContextHandle_t handle,
911  const GEOSGeometry* g);
912 
915  GEOSContextHandle_t handle,
916  const GEOSGeometry* g);
917 
920  GEOSContextHandle_t handle,
921  const GEOSGeometry* g);
922 
925  GEOSContextHandle_t handle,
926  const GEOSGeometry* g);
927 
930  GEOSContextHandle_t handle,
931  const GEOSGeometry* g,
932  double* radius,
933  GEOSGeometry** center);
934 
936 extern GEOSGeometry GEOS_DLL *GEOSNode_r(
937  GEOSContextHandle_t handle,
938  const GEOSGeometry* g);
939 
942  GEOSContextHandle_t handle,
943  const GEOSGeometry* g,
944  double xmin, double ymin,
945  double xmax, double ymax);
946 
949  GEOSContextHandle_t handle,
950  const GEOSGeometry *const geoms[],
951  unsigned int ngeoms);
952 
955  GEOSContextHandle_t handle,
956  const GEOSGeometry *const geoms[],
957  unsigned int ngems);
958 
961  GEOSContextHandle_t handle,
962  const GEOSGeometry * const geoms[],
963  unsigned int ngeoms);
964 
967  GEOSContextHandle_t handle,
968  const GEOSGeometry* input,
969  GEOSGeometry** cuts,
970  GEOSGeometry** dangles,
971  GEOSGeometry** invalidRings);
972 
974 extern GEOSGeometry GEOS_DLL *GEOSBuildArea_r(
975  GEOSContextHandle_t handle,
976  const GEOSGeometry* g);
977 
979 extern GEOSGeometry GEOS_DLL *GEOSLineMerge_r(
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  double start_fraction,
993  double end_fdraction);
994 
996 extern GEOSGeometry GEOS_DLL *GEOSReverse_r(
997  GEOSContextHandle_t handle,
998  const GEOSGeometry* g);
999 
1001 extern GEOSGeometry GEOS_DLL *GEOSSimplify_r(
1002  GEOSContextHandle_t handle,
1003  const GEOSGeometry* g,
1004  double tolerance);
1005 
1008  GEOSContextHandle_t handle,
1009  const GEOSGeometry* g, double tolerance);
1010 
1013  GEOSContextHandle_t handle,
1014  const GEOSGeometry* g);
1015 
1018  GEOSContextHandle_t handle,
1019  const GEOSGeometry* g1,
1020  const GEOSGeometry* g2);
1021 
1023 extern GEOSGeometry GEOS_DLL *GEOSSnap_r(
1024  GEOSContextHandle_t handle,
1025  const GEOSGeometry* g1,
1026  const GEOSGeometry* g2,
1027  double tolerance);
1028 
1031  GEOSContextHandle_t handle,
1032  const GEOSGeometry *g,
1033  double tolerance,
1034  int onlyEdges);
1035 
1038  GEOSContextHandle_t handle,
1039  const GEOSGeometry *g);
1040 
1043  GEOSContextHandle_t extHandle,
1044  const GEOSGeometry *g,
1045  const GEOSGeometry *env,
1046  double tolerance,
1047  int flags);
1048 
1050 extern int GEOS_DLL GEOSSegmentIntersection_r(
1051  GEOSContextHandle_t extHandle,
1052  double ax0, double ay0,
1053  double ax1, double ay1,
1054  double bx0, double by0,
1055  double bx1, double by1,
1056  double* cx, double* cy);
1057 
1058 /* ========= Binary predicates ========= */
1059 
1061 extern char GEOS_DLL GEOSDisjoint_r(
1062  GEOSContextHandle_t handle,
1063  const GEOSGeometry* g1,
1064  const GEOSGeometry* g2);
1065 
1067 extern char GEOS_DLL GEOSTouches_r(
1068  GEOSContextHandle_t handle,
1069  const GEOSGeometry* g1,
1070  const GEOSGeometry* g2);
1071 
1073 extern char GEOS_DLL GEOSIntersects_r(
1074  GEOSContextHandle_t handle,
1075  const GEOSGeometry* g1,
1076  const GEOSGeometry* g2);
1077 
1079 extern char GEOS_DLL GEOSCrosses_r(
1080  GEOSContextHandle_t handle,
1081  const GEOSGeometry* g1,
1082  const GEOSGeometry* g2);
1083 
1085 extern char GEOS_DLL GEOSWithin_r(
1086  GEOSContextHandle_t handle,
1087  const GEOSGeometry* g1,
1088  const GEOSGeometry* g2);
1089 
1091 extern char GEOS_DLL GEOSContains_r(
1092  GEOSContextHandle_t handle,
1093  const GEOSGeometry* g1,
1094  const GEOSGeometry* g2);
1095 
1097 extern char GEOS_DLL GEOSOverlaps_r(
1098  GEOSContextHandle_t handle,
1099  const GEOSGeometry* g1,
1100  const GEOSGeometry* g2);
1101 
1103 extern char GEOS_DLL GEOSEquals_r(
1104  GEOSContextHandle_t handle,
1105  const GEOSGeometry* g1,
1106  const GEOSGeometry* g2);
1107 
1109 extern char GEOS_DLL GEOSEqualsExact_r(
1110  GEOSContextHandle_t handle,
1111  const GEOSGeometry* g1,
1112  const GEOSGeometry* g2,
1113  double tolerance);
1114 
1116 extern char GEOS_DLL GEOSEqualsIdentical_r(
1117  GEOSContextHandle_t handle,
1118  const GEOSGeometry* g1,
1119  const GEOSGeometry* g2);
1120 
1122 extern char GEOS_DLL GEOSCovers_r(
1123  GEOSContextHandle_t handle,
1124  const GEOSGeometry* g1,
1125  const GEOSGeometry* g2);
1126 
1128 extern char GEOS_DLL GEOSCoveredBy_r(
1129  GEOSContextHandle_t handle,
1130  const GEOSGeometry* g1,
1131  const GEOSGeometry* g2);
1132 
1133 /* ========= Prepared Geometry Binary Predicates ========== */
1134 
1136 extern const GEOSPreparedGeometry GEOS_DLL *GEOSPrepare_r(
1137  GEOSContextHandle_t handle,
1138  const GEOSGeometry* g);
1139 
1141 extern void GEOS_DLL GEOSPreparedGeom_destroy_r(
1142  GEOSContextHandle_t handle,
1143  const GEOSPreparedGeometry* g);
1144 
1146 extern char GEOS_DLL GEOSPreparedContains_r(
1147  GEOSContextHandle_t handle,
1148  const GEOSPreparedGeometry* pg1,
1149  const GEOSGeometry* g2);
1150 
1152 extern char GEOS_DLL GEOSPreparedContainsXY_r(
1153  GEOSContextHandle_t handle,
1154  const GEOSPreparedGeometry* pg1,
1155  double x,
1156  double y);
1157 
1159 extern char GEOS_DLL GEOSPreparedContainsProperly_r(
1160  GEOSContextHandle_t handle,
1161  const GEOSPreparedGeometry* pg1,
1162  const GEOSGeometry* g2);
1163 
1165 extern char GEOS_DLL GEOSPreparedCoveredBy_r(
1166  GEOSContextHandle_t handle,
1167  const GEOSPreparedGeometry* pg1,
1168  const GEOSGeometry* g2);
1169 
1171 extern char GEOS_DLL GEOSPreparedCovers_r(
1172  GEOSContextHandle_t handle,
1173  const GEOSPreparedGeometry* pg1,
1174  const GEOSGeometry* g2);
1175 
1177 extern char GEOS_DLL GEOSPreparedCrosses_r(
1178  GEOSContextHandle_t handle,
1179  const GEOSPreparedGeometry* pg1,
1180  const GEOSGeometry* g2);
1181 
1183 extern char GEOS_DLL GEOSPreparedDisjoint_r(
1184  GEOSContextHandle_t handle,
1185  const GEOSPreparedGeometry* pg1,
1186  const GEOSGeometry* g2);
1187 
1189 extern char GEOS_DLL GEOSPreparedIntersects_r(
1190  GEOSContextHandle_t handle,
1191  const GEOSPreparedGeometry* pg1,
1192  const GEOSGeometry* g2);
1193 
1195 extern char GEOS_DLL GEOSPreparedIntersectsXY_r(
1196  GEOSContextHandle_t handle,
1197  const GEOSPreparedGeometry* pg1,
1198  double x,
1199  double y);
1200 
1202 extern char GEOS_DLL GEOSPreparedOverlaps_r(
1203  GEOSContextHandle_t handle,
1204  const GEOSPreparedGeometry* pg1,
1205  const GEOSGeometry* g2);
1206 
1208 extern char GEOS_DLL GEOSPreparedTouches_r(
1209  GEOSContextHandle_t handle,
1210  const GEOSPreparedGeometry* pg1,
1211  const GEOSGeometry* g2);
1212 
1214 extern char GEOS_DLL GEOSPreparedWithin_r(
1215  GEOSContextHandle_t handle,
1216  const GEOSPreparedGeometry* pg1,
1217  const GEOSGeometry* g2);
1218 
1221  GEOSContextHandle_t handle,
1222  const GEOSPreparedGeometry* pg1,
1223  const GEOSGeometry* g2);
1224 
1226 extern int GEOS_DLL GEOSPreparedDistance_r(
1227  GEOSContextHandle_t handle,
1228  const GEOSPreparedGeometry* pg1,
1229  const GEOSGeometry* g2, double *dist);
1230 
1232 extern char GEOS_DLL GEOSPreparedDistanceWithin_r(
1233  GEOSContextHandle_t handle,
1234  const GEOSPreparedGeometry* pg1,
1235  const GEOSGeometry* g2, double dist);
1236 
1237 /* ========== STRtree ========== */
1238 
1241  GEOSContextHandle_t handle,
1242  size_t nodeCapacity);
1243 
1245 extern int GEOS_DLL GEOSSTRtree_build_r(
1246  GEOSContextHandle_t handle,
1247  GEOSSTRtree *tree);
1248 
1250 extern void GEOS_DLL GEOSSTRtree_insert_r(
1251  GEOSContextHandle_t handle,
1252  GEOSSTRtree *tree,
1253  const GEOSGeometry *g,
1254  void *item);
1255 
1257 extern void GEOS_DLL GEOSSTRtree_query_r(
1258  GEOSContextHandle_t handle,
1259  GEOSSTRtree *tree,
1260  const GEOSGeometry *g,
1261  GEOSQueryCallback callback,
1262  void *userdata);
1263 
1265 extern const GEOSGeometry GEOS_DLL *GEOSSTRtree_nearest_r(
1266  GEOSContextHandle_t handle,
1267  GEOSSTRtree *tree,
1268  const GEOSGeometry* geom);
1269 
1271 extern const void GEOS_DLL *GEOSSTRtree_nearest_generic_r(
1272  GEOSContextHandle_t handle,
1273  GEOSSTRtree *tree,
1274  const void* item,
1275  const GEOSGeometry* itemEnvelope,
1276  GEOSDistanceCallback distancefn,
1277  void* userdata);
1278 
1280 extern void GEOS_DLL GEOSSTRtree_iterate_r(
1281  GEOSContextHandle_t handle,
1282  GEOSSTRtree *tree,
1283  GEOSQueryCallback callback,
1284  void *userdata);
1285 
1287 extern char GEOS_DLL GEOSSTRtree_remove_r(
1288  GEOSContextHandle_t handle,
1289  GEOSSTRtree *tree,
1290  const GEOSGeometry *g,
1291  void *item);
1292 
1294 extern void GEOS_DLL GEOSSTRtree_destroy_r(
1295  GEOSContextHandle_t handle,
1296  GEOSSTRtree *tree);
1297 
1298 
1299 /* ========= Unary predicate ========= */
1300 
1302 extern char GEOS_DLL GEOSisEmpty_r(
1303  GEOSContextHandle_t handle,
1304  const GEOSGeometry* g);
1305 
1307 extern char GEOS_DLL GEOSisSimple_r(
1308  GEOSContextHandle_t handle,
1309  const GEOSGeometry* g);
1310 
1312 extern char GEOS_DLL GEOSisRing_r(
1313  GEOSContextHandle_t handle,
1314  const GEOSGeometry* g);
1315 
1317 extern char GEOS_DLL GEOSHasZ_r(
1318  GEOSContextHandle_t handle,
1319  const GEOSGeometry* g);
1320 
1322 extern char GEOS_DLL GEOSHasM_r(
1323  GEOSContextHandle_t handle,
1324  const GEOSGeometry* g);
1325 
1327 extern char GEOS_DLL GEOSisClosed_r(
1328  GEOSContextHandle_t handle,
1329  const GEOSGeometry *g);
1330 
1331 /* ========== Dimensionally Extended 9 Intersection Model ========== */
1332 
1348 };
1349 
1351 extern char GEOS_DLL GEOSRelatePattern_r(
1352  GEOSContextHandle_t handle,
1353  const GEOSGeometry* g1,
1354  const GEOSGeometry* g2,
1355  const char *pat);
1356 
1358 extern char GEOS_DLL *GEOSRelate_r(
1359  GEOSContextHandle_t handle,
1360  const GEOSGeometry* g1,
1361  const GEOSGeometry* g2);
1362 
1364 extern char GEOS_DLL GEOSRelatePatternMatch_r(
1365  GEOSContextHandle_t handle,
1366  const char *mat,
1367  const char *pat);
1368 
1370 extern char GEOS_DLL *GEOSRelateBoundaryNodeRule_r(
1371  GEOSContextHandle_t handle,
1372  const GEOSGeometry* g1,
1373  const GEOSGeometry* g2,
1374  int bnr);
1375 
1376 /* ========= Validity checking ========= */
1377 
1380 {
1383 };
1384 
1386 extern char GEOS_DLL GEOSisValid_r(
1387  GEOSContextHandle_t handle,
1388  const GEOSGeometry* g);
1389 
1391 extern char GEOS_DLL *GEOSisValidReason_r(
1392  GEOSContextHandle_t handle,
1393  const GEOSGeometry* g);
1394 
1396 extern char GEOS_DLL GEOSisValidDetail_r(
1397  GEOSContextHandle_t handle,
1398  const GEOSGeometry* g,
1399  int flags,
1400  char** reason,
1401  GEOSGeometry** location);
1402 
1403 /* ========== Make Valid ========== */
1404 
1420 };
1421 
1424  GEOSContextHandle_t extHandle);
1425 
1427 extern void GEOS_DLL GEOSMakeValidParams_destroy_r(
1428  GEOSContextHandle_t handle,
1429  GEOSMakeValidParams* parms);
1430 
1433  GEOSContextHandle_t handle,
1435  int style);
1436 
1439  GEOSContextHandle_t handle,
1441  enum GEOSMakeValidMethods method);
1442 
1445  GEOSContextHandle_t handle,
1446  const GEOSGeometry* g);
1447 
1450  GEOSContextHandle_t handle,
1451  const GEOSGeometry* g,
1452  const GEOSMakeValidParams* makeValidParams);
1453 
1456  GEOSContextHandle_t handle,
1457  const GEOSGeometry* g,
1458  double tolerance);
1459 
1460 /* ========== Geometry info ========== */
1461 
1463 /* Return NULL on exception, result must be freed by caller. */
1464 extern char GEOS_DLL *GEOSGeomType_r(
1465  GEOSContextHandle_t handle,
1466  const GEOSGeometry* g);
1467 
1469 extern int GEOS_DLL GEOSGeomTypeId_r(
1470  GEOSContextHandle_t handle,
1471  const GEOSGeometry* g);
1472 
1474 extern int GEOS_DLL GEOSGetSRID_r(
1475  GEOSContextHandle_t handle,
1476  const GEOSGeometry* g);
1477 
1479 extern void GEOS_DLL GEOSSetSRID_r(
1480  GEOSContextHandle_t handle,
1481  GEOSGeometry* g, int SRID);
1482 
1484 extern void GEOS_DLL *GEOSGeom_getUserData_r(
1485  GEOSContextHandle_t handle,
1486  const GEOSGeometry* g);
1487 
1489 extern void GEOS_DLL GEOSGeom_setUserData_r(
1490  GEOSContextHandle_t handle,
1491  GEOSGeometry* g,
1492  void* userData);
1493 
1495 extern int GEOS_DLL GEOSGetNumGeometries_r(
1496  GEOSContextHandle_t handle,
1497  const GEOSGeometry* g);
1498 
1500 extern const GEOSGeometry GEOS_DLL *GEOSGetGeometryN_r(
1501  GEOSContextHandle_t handle,
1502  const GEOSGeometry* g, int n);
1503 
1505 extern int GEOS_DLL GEOSNormalize_r(
1506  GEOSContextHandle_t handle,
1507  GEOSGeometry* g);
1508 
1520 };
1521 
1524  GEOSContextHandle_t handle,
1525  const GEOSGeometry *g,
1526  double gridSize,
1527  int flags);
1528 
1530 extern double GEOS_DLL GEOSGeom_getPrecision_r(
1531  GEOSContextHandle_t handle,
1532  const GEOSGeometry *g);
1533 
1535 extern int GEOS_DLL GEOSGetNumInteriorRings_r(
1536  GEOSContextHandle_t handle,
1537  const GEOSGeometry* g);
1538 
1540 extern int GEOS_DLL GEOSGeomGetNumPoints_r(
1541  GEOSContextHandle_t handle,
1542  const GEOSGeometry* g);
1543 
1545 extern int GEOS_DLL GEOSGeomGetX_r(
1546  GEOSContextHandle_t handle,
1547  const GEOSGeometry *g,
1548  double *x);
1549 
1551 extern int GEOS_DLL GEOSGeomGetY_r(
1552  GEOSContextHandle_t handle,
1553  const GEOSGeometry *g,
1554  double *y);
1555 
1557 extern int GEOS_DLL GEOSGeomGetZ_r(
1558  GEOSContextHandle_t handle,
1559  const GEOSGeometry *g,
1560  double *z);
1561 
1563 extern const GEOSGeometry GEOS_DLL *GEOSGetInteriorRingN_r(
1564  GEOSContextHandle_t handle,
1565  const GEOSGeometry* g, int n);
1566 
1568 extern const GEOSGeometry GEOS_DLL *GEOSGetExteriorRing_r(
1569  GEOSContextHandle_t handle,
1570  const GEOSGeometry* g);
1571 
1573 extern int GEOS_DLL GEOSGetNumCoordinates_r(
1574  GEOSContextHandle_t handle,
1575  const GEOSGeometry* g);
1576 
1579  GEOSContextHandle_t handle,
1580  const GEOSGeometry* g);
1581 
1583 extern int GEOS_DLL GEOSGeom_getDimensions_r(
1584  GEOSContextHandle_t handle,
1585  const GEOSGeometry* g);
1586 
1589  GEOSContextHandle_t handle,
1590  const GEOSGeometry* g);
1591 
1593 extern int GEOS_DLL GEOSGeom_getXMin_r(
1594  GEOSContextHandle_t handle,
1595  const GEOSGeometry* g,
1596  double* value);
1597 
1599 extern int GEOS_DLL GEOSGeom_getYMin_r(
1600  GEOSContextHandle_t handle,
1601  const GEOSGeometry* g,
1602  double* value);
1603 
1605 extern int GEOS_DLL GEOSGeom_getXMax_r(
1606  GEOSContextHandle_t handle,
1607  const GEOSGeometry* g,
1608  double* value);
1609 
1611 extern int GEOS_DLL GEOSGeom_getYMax_r(
1612  GEOSContextHandle_t handle,
1613  const GEOSGeometry* g,
1614  double* value);
1615 
1617 extern int GEOS_DLL GEOSGeom_getExtent_r(
1618  GEOSContextHandle_t handle,
1619  const GEOSGeometry* g,
1620  double* xmin,
1621  double* ymin,
1622  double* xmax,
1623  double* ymax);
1624 
1627  GEOSContextHandle_t handle,
1628  const GEOSGeometry *g,
1629  int n);
1630 
1633  GEOSContextHandle_t handle,
1634  const GEOSGeometry *g);
1635 
1638  GEOSContextHandle_t handle,
1639  const GEOSGeometry *g);
1640 
1641 /* ========= Misc functions ========= */
1642 
1644 extern int GEOS_DLL GEOSArea_r(
1645  GEOSContextHandle_t handle,
1646  const GEOSGeometry* g,
1647  double *area);
1648 
1650 extern int GEOS_DLL GEOSLength_r(
1651  GEOSContextHandle_t handle,
1652  const GEOSGeometry* g,
1653  double *length);
1654 
1656 extern int GEOS_DLL GEOSDistance_r(
1657  GEOSContextHandle_t handle,
1658  const GEOSGeometry* g1,
1659  const GEOSGeometry* g2,
1660  double *dist);
1661 
1663 extern char GEOS_DLL GEOSDistanceWithin_r(
1664  GEOSContextHandle_t handle,
1665  const GEOSGeometry* g1,
1666  const GEOSGeometry* g2,
1667  double dist);
1668 
1670 extern int GEOS_DLL GEOSDistanceIndexed_r(
1671  GEOSContextHandle_t handle,
1672  const GEOSGeometry* g1,
1673  const GEOSGeometry* g2,
1674  double *dist);
1675 
1677 extern int GEOS_DLL GEOSHausdorffDistance_r(
1678  GEOSContextHandle_t handle,
1679  const GEOSGeometry *g1,
1680  const GEOSGeometry *g2,
1681  double *dist);
1682 
1685  GEOSContextHandle_t handle,
1686  const GEOSGeometry *g1,
1687  const GEOSGeometry *g2,
1688  double densifyFrac, double *dist);
1689 
1691 extern int GEOS_DLL GEOSFrechetDistance_r(
1692  GEOSContextHandle_t handle,
1693  const GEOSGeometry *g1,
1694  const GEOSGeometry *g2,
1695  double *dist);
1696 
1698 extern int GEOS_DLL GEOSFrechetDistanceDensify_r(
1699  GEOSContextHandle_t handle,
1700  const GEOSGeometry *g1,
1701  const GEOSGeometry *g2,
1702  double densifyFrac,
1703  double *dist);
1704 
1705 
1707 extern int GEOS_DLL GEOSHilbertCode_r(
1708  GEOSContextHandle_t handle,
1709  const GEOSGeometry *geom,
1710  const GEOSGeometry* extent,
1711  unsigned int level,
1712  unsigned int *code
1713 );
1714 
1716 extern int GEOS_DLL GEOSGeomGetLength_r(
1717  GEOSContextHandle_t handle,
1718  const GEOSGeometry *g,
1719  double *length);
1720 
1723  GEOSContextHandle_t handle,
1724  const GEOSGeometry* g1,
1725  const GEOSGeometry* g2);
1726 
1729  GEOSContextHandle_t handle,
1730  const GEOSGeometry* g,
1731  GEOSTransformXYCallback callback,
1732  void* userdata);
1733 
1734 /* ========= Algorithms ========= */
1735 
1737 extern int GEOS_DLL GEOSOrientationIndex_r(
1738  GEOSContextHandle_t handle,
1739  double Ax, double Ay,
1740  double Bx, double By,
1741  double Px, double Py);
1742 
1743 
1744 /* ========== Reader and Writer APIs ========== */
1745 
1746 #ifndef GEOSWKTReader
1747 
1753 typedef struct GEOSWKTReader_t GEOSWKTReader;
1754 
1760 typedef struct GEOSWKTWriter_t GEOSWKTWriter;
1761 
1767 typedef struct GEOSWKBReader_t GEOSWKBReader;
1768 
1774 typedef struct GEOSWKBWriter_t GEOSWKBWriter;
1775 
1781 typedef struct GEOSGeoJSONReader_t GEOSGeoJSONReader;
1782 
1788 typedef struct GEOSGeoJSONWriter_t GEOSGeoJSONWriter;
1789 
1790 #endif
1791 
1792 /* ========== WKT Reader ========== */
1793 
1796  GEOSContextHandle_t handle);
1797 
1799 extern void GEOS_DLL GEOSWKTReader_destroy_r(GEOSContextHandle_t handle,
1800  GEOSWKTReader* reader);
1801 
1804  GEOSContextHandle_t handle,
1805  GEOSWKTReader* reader,
1806  const char *wkt);
1807 
1809 extern void GEOS_DLL GEOSWKTReader_setFixStructure_r(
1810  GEOSContextHandle_t handle,
1811  GEOSWKTReader *reader,
1812  char doFix);
1813 
1814 /* ========== WKT Writer ========== */
1815 
1818  GEOSContextHandle_t handle);
1819 
1821 extern void GEOS_DLL GEOSWKTWriter_destroy_r(
1822  GEOSContextHandle_t handle,
1823  GEOSWKTWriter* writer);
1824 
1826 extern char GEOS_DLL *GEOSWKTWriter_write_r(
1827  GEOSContextHandle_t handle,
1828  GEOSWKTWriter* writer,
1829  const GEOSGeometry* g);
1830 
1832 extern void GEOS_DLL GEOSWKTWriter_setTrim_r(
1833  GEOSContextHandle_t handle,
1834  GEOSWKTWriter *writer,
1835  char trim);
1836 
1839  GEOSContextHandle_t handle,
1840  GEOSWKTWriter *writer,
1841  int precision);
1842 
1845  GEOSContextHandle_t handle,
1846  GEOSWKTWriter *writer,
1847  int dim);
1848 
1851  GEOSContextHandle_t handle,
1852  GEOSWKTWriter *writer);
1853 
1855 extern void GEOS_DLL GEOSWKTWriter_setOld3D_r(
1856  GEOSContextHandle_t handle,
1857  GEOSWKTWriter *writer,
1858  int useOld3D);
1859 
1860 /* ========== WKB Reader ========== */
1861 
1864  GEOSContextHandle_t handle);
1865 
1867 extern void GEOS_DLL GEOSWKBReader_destroy_r(
1868  GEOSContextHandle_t handle,
1869  GEOSWKBReader* reader);
1870 
1872 extern void GEOS_DLL GEOSWKBReader_setFixStructure_r(
1873  GEOSContextHandle_t handle,
1874  GEOSWKBReader *reader,
1875  char doFix);
1876 
1879  GEOSContextHandle_t handle,
1880  GEOSWKBReader* reader,
1881  const unsigned char *wkb,
1882  size_t size);
1883 
1886  GEOSContextHandle_t handle,
1887  GEOSWKBReader* reader,
1888  const unsigned char *hex,
1889  size_t size);
1890 
1891 
1892 /* ========== WKB Writer ========== */
1893 
1896  GEOSContextHandle_t handle);
1897 
1899 extern void GEOS_DLL GEOSWKBWriter_destroy_r(
1900  GEOSContextHandle_t handle,
1901  GEOSWKBWriter* writer);
1902 
1904 extern unsigned char GEOS_DLL *GEOSWKBWriter_write_r(
1905  GEOSContextHandle_t handle,
1906  GEOSWKBWriter* writer,
1907  const GEOSGeometry* g,
1908  size_t *size);
1909 
1911 extern unsigned char GEOS_DLL *GEOSWKBWriter_writeHEX_r(
1912  GEOSContextHandle_t handle,
1913  GEOSWKBWriter* writer,
1914  const GEOSGeometry* g,
1915  size_t *size);
1916 
1919  GEOSContextHandle_t handle,
1920  const GEOSWKBWriter* writer);
1921 
1924  GEOSContextHandle_t handle,
1925  GEOSWKBWriter* writer, int newDimension);
1926 
1928 extern int GEOS_DLL GEOSWKBWriter_getByteOrder_r(
1929  GEOSContextHandle_t handle,
1930  const GEOSWKBWriter* writer);
1931 
1933 extern void GEOS_DLL GEOSWKBWriter_setByteOrder_r(
1934  GEOSContextHandle_t handle,
1935  GEOSWKBWriter* writer,
1936  int byteOrder);
1937 
1939 extern int GEOS_DLL GEOSWKBWriter_getFlavor_r(
1940  GEOSContextHandle_t handle,
1941  const GEOSWKBWriter* writer);
1942 
1944 extern void GEOS_DLL GEOSWKBWriter_setFlavor_r(
1945  GEOSContextHandle_t handle,
1946  GEOSWKBWriter* writer,
1947  int flavor);
1948 
1950 extern char GEOS_DLL GEOSWKBWriter_getIncludeSRID_r(
1951  GEOSContextHandle_t handle,
1952  const GEOSWKBWriter* writer);
1953 
1955 extern void GEOS_DLL GEOSWKBWriter_setIncludeSRID_r(
1956  GEOSContextHandle_t handle,
1957  GEOSWKBWriter* writer, const char writeSRID);
1958 
1959 /* ========== GeoJSON Reader ========== */
1960 
1963  GEOSContextHandle_t handle);
1964 
1967  GEOSGeoJSONReader* reader);
1968 
1971  GEOSContextHandle_t handle,
1972  GEOSGeoJSONReader* reader,
1973  const char *geojson);
1974 
1975 /* ========== GeoJSON Writer ========== */
1976 
1979  GEOSContextHandle_t handle);
1980 
1983  GEOSGeoJSONWriter* writer);
1984 
1987  GEOSContextHandle_t handle,
1988  GEOSGeoJSONWriter* writer,
1989  const GEOSGeometry* g,
1990  int indent);
1991 
1993 extern void GEOS_DLL GEOSFree_r(
1994  GEOSContextHandle_t handle,
1995  void *buffer);
1996 
2003 extern const char GEOS_DLL *GEOSversion(void);
2004 
2005 /*
2006 * External code to GEOS can define GEOS_USE_ONLY_R_API
2007 * to strip the non-reentrant API functions from this header,
2008 * leaving only the "_r" compatible variants.
2009 */
2010 #ifndef GEOS_USE_ONLY_R_API
2011 
2012 /* ========== Initialization, cleanup ================================= */
2018 
2030 extern void GEOS_DLL initGEOS(
2031  GEOSMessageHandler notice_function,
2032  GEOSMessageHandler error_function);
2033 
2038 extern void GEOS_DLL finishGEOS(void);
2039 
2046 extern void GEOS_DLL GEOSFree(void *buffer);
2047 
2049 
2050 /* ========= Coordinate Sequence functions ========= */
2056 
2063 extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_create(unsigned int size, unsigned int dims);
2064 
2075 extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_copyFromBuffer(const double* buf, unsigned int size, int hasZ, int hasM);
2076 
2088 extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_copyFromArrays(const double* x, const double* y, const double* z, const double* m, unsigned int size);
2089 
2100 extern int GEOS_DLL GEOSCoordSeq_copyToBuffer(const GEOSCoordSequence* s, double* buf, int hasZ, int hasM);
2101 
2113 extern int GEOS_DLL GEOSCoordSeq_copyToArrays(const GEOSCoordSequence* s, double* x, double* y, double* z, double* m);
2114 
2121 
2126 extern void GEOS_DLL GEOSCoordSeq_destroy(GEOSCoordSequence* s);
2127 
2135 extern int GEOS_DLL GEOSCoordSeq_setX(GEOSCoordSequence* s,
2136  unsigned int idx, double val);
2144 extern int GEOS_DLL GEOSCoordSeq_setY(GEOSCoordSequence* s,
2145  unsigned int idx, double val);
2153 extern int GEOS_DLL GEOSCoordSeq_setZ(GEOSCoordSequence* s,
2154  unsigned int idx, double val);
2165 extern int GEOS_DLL GEOSCoordSeq_setXY(GEOSCoordSequence* s,
2166  unsigned int idx, double x, double y);
2179  unsigned int idx, double x, double y, double z);
2189  unsigned int idx, unsigned int dim, double val);
2190 
2198 extern int GEOS_DLL GEOSCoordSeq_getX(const GEOSCoordSequence* s,
2199  unsigned int idx, double *val);
2200 
2208 extern int GEOS_DLL GEOSCoordSeq_getY(const GEOSCoordSequence* s,
2209  unsigned int idx, double *val);
2217 extern int GEOS_DLL GEOSCoordSeq_getZ(const GEOSCoordSequence* s,
2218  unsigned int idx, double *val);
2229 extern int GEOS_DLL GEOSCoordSeq_getXY(const GEOSCoordSequence* s,
2230  unsigned int idx, double *x, double *y);
2242 extern int GEOS_DLL GEOSCoordSeq_getXYZ(const GEOSCoordSequence* s,
2243  unsigned int idx, double *x, double *y, double *z);
2252 extern int GEOS_DLL GEOSCoordSeq_getOrdinate(const GEOSCoordSequence* s,
2253  unsigned int idx, unsigned int dim, double *val);
2254 
2261 extern int GEOS_DLL GEOSCoordSeq_getSize(
2262  const GEOSCoordSequence* s,
2263  unsigned int *size);
2264 
2271 extern int GEOS_DLL GEOSCoordSeq_getDimensions(
2272  const GEOSCoordSequence* s,
2273  unsigned int *dims);
2274 
2285 extern int GEOS_DLL GEOSCoordSeq_isCCW(
2286  const GEOSCoordSequence* s,
2287  char* is_ccw);
2288 
2290 
2291 /* ========= Geometry Constructors ========= */
2297 
2305 
2315 extern GEOSGeometry GEOS_DLL *GEOSGeom_createPointFromXY(double x, double y);
2316 
2325 
2333 
2341 
2350 
2359 
2373  GEOSGeometry* shell,
2374  GEOSGeometry** holes,
2375  unsigned int nholes);
2376 
2390  int type,
2391  GEOSGeometry** geoms,
2392  unsigned int ngeoms);
2393 
2403 
2415  double xmin, double ymin,
2416  double xmax, double ymax);
2417 
2424 extern GEOSGeometry GEOS_DLL *GEOSGeom_clone(const GEOSGeometry* g);
2425 
2430 extern void GEOS_DLL GEOSGeom_destroy(GEOSGeometry* g);
2431 
2433 
2434 /* ========== Geometry info ========== */
2439 
2448 extern char GEOS_DLL *GEOSGeomType(const GEOSGeometry* g);
2449 
2455 extern int GEOS_DLL GEOSGeomTypeId(const GEOSGeometry* g);
2456 
2462 extern int GEOS_DLL GEOSGetSRID(const GEOSGeometry* g);
2463 
2474 extern void GEOS_DLL *GEOSGeom_getUserData(const GEOSGeometry* g);
2475 
2485 extern int GEOS_DLL GEOSGetNumGeometries(const GEOSGeometry* g);
2486 
2501 extern const GEOSGeometry GEOS_DLL *GEOSGetGeometryN(
2502  const GEOSGeometry* g,
2503  int n);
2504 
2514 extern double GEOS_DLL GEOSGeom_getPrecision(const GEOSGeometry *g);
2515 
2522 extern int GEOS_DLL GEOSGetNumInteriorRings(const GEOSGeometry* g);
2523 
2530 extern int GEOS_DLL GEOSGeomGetNumPoints(const GEOSGeometry* g);
2531 
2539 extern int GEOS_DLL GEOSGeomGetX(const GEOSGeometry *g, double *x);
2540 
2548 extern int GEOS_DLL GEOSGeomGetY(const GEOSGeometry *g, double *y);
2549 
2559 extern int GEOS_DLL GEOSGeomGetZ(const GEOSGeometry *g, double *z);
2560 
2569 extern const GEOSGeometry GEOS_DLL *GEOSGetInteriorRingN(
2570  const GEOSGeometry* g,
2571  int n);
2572 
2580 extern const GEOSGeometry GEOS_DLL *GEOSGetExteriorRing(
2581  const GEOSGeometry* g);
2582 
2589 extern int GEOS_DLL GEOSGetNumCoordinates(
2590  const GEOSGeometry* g);
2591 
2601  const GEOSGeometry* g);
2602 
2614 extern int GEOS_DLL GEOSGeom_getDimensions(
2615  const GEOSGeometry* g);
2616 
2629  const GEOSGeometry* g);
2630 
2639 extern int GEOS_DLL GEOSGeom_getXMin(const GEOSGeometry* g, double* value);
2640 
2649 extern int GEOS_DLL GEOSGeom_getYMin(const GEOSGeometry* g, double* value);
2650 
2659 extern int GEOS_DLL GEOSGeom_getXMax(const GEOSGeometry* g, double* value);
2660 
2669 extern int GEOS_DLL GEOSGeom_getYMax(const GEOSGeometry* g, double* value);
2670 
2684 extern int GEOS_DLL GEOSGeom_getExtent(
2685  const GEOSGeometry* g,
2686  double* xmin,
2687  double* ymin,
2688  double* xmax,
2689  double* ymax);
2690 
2699 extern GEOSGeometry GEOS_DLL *GEOSGeomGetPointN(const GEOSGeometry *g, int n);
2700 
2709 
2717 extern GEOSGeometry GEOS_DLL *GEOSGeomGetEndPoint(const GEOSGeometry *g);
2718 
2719 
2727 extern char GEOS_DLL GEOSisEmpty(const GEOSGeometry* g);
2728 
2736 extern char GEOS_DLL GEOSisRing(const GEOSGeometry* g);
2737 
2743 extern char GEOS_DLL GEOSHasZ(const GEOSGeometry* g);
2744 
2752 extern char GEOS_DLL GEOSHasM(const GEOSGeometry* g);
2753 
2761 extern char GEOS_DLL GEOSisClosed(const GEOSGeometry *g);
2762 
2764 
2765 /* ==================================================================================== */
2770 
2776 extern void GEOS_DLL GEOSSetSRID(GEOSGeometry* g, int SRID);
2777 
2785 extern void GEOS_DLL GEOSGeom_setUserData(GEOSGeometry* g, void* userData);
2786 
2805 extern int GEOS_DLL GEOSNormalize(GEOSGeometry* g);
2806 
2808 
2809 /* ========== Validity checking ============================================================ */
2815 
2822 extern char GEOS_DLL GEOSisSimple(const GEOSGeometry* g);
2823 
2836 extern char GEOS_DLL GEOSisValid(const GEOSGeometry* g);
2837 
2847 extern char GEOS_DLL *GEOSisValidReason(const GEOSGeometry *g);
2848 
2863 extern char GEOS_DLL GEOSisValidDetail(
2864  const GEOSGeometry* g,
2865  int flags,
2866  char** reason,
2867  GEOSGeometry** location);
2868 
2876 extern GEOSGeometry GEOS_DLL *GEOSMakeValid(
2877  const GEOSGeometry* g);
2878 
2893  const GEOSGeometry* g,
2894  const GEOSMakeValidParams *makeValidParams);
2895 
2905 
2914 
2923 extern int GEOS_DLL GEOSMakeValidParams_setMethod(
2925  enum GEOSMakeValidMethods method);
2926 
2939  int keepCollapsed);
2940 
2960 extern int GEOS_DLL GEOSMinimumClearance(const GEOSGeometry* g, double* d);
2961 
2974 
2993  const GEOSGeometry* g,
2994  double tolerance);
2995 
2997 
2998 /* ========= Metric functions ================================================== */
3003 
3010 extern int GEOS_DLL GEOSArea(
3011  const GEOSGeometry* g,
3012  double *area);
3013 
3020 extern int GEOS_DLL GEOSLength(
3021  const GEOSGeometry* g,
3022  double *length);
3023 
3032 extern int GEOS_DLL GEOSGeomGetLength(
3033  const GEOSGeometry *g,
3034  double *length);
3035 
3037 
3038 /* ========== Distance functions ================================================ */
3044 
3052 extern int GEOS_DLL GEOSDistance(
3053  const GEOSGeometry* g1,
3054  const GEOSGeometry* g2,
3055  double *dist);
3056 
3067 extern char GEOS_DLL GEOSDistanceWithin(
3068  const GEOSGeometry* g1,
3069  const GEOSGeometry* g2,
3070  double dist);
3071 
3085 extern int GEOS_DLL GEOSDistanceIndexed(
3086  const GEOSGeometry* g1,
3087  const GEOSGeometry* g2,
3088  double *dist);
3089 
3102  const GEOSGeometry* g1,
3103  const GEOSGeometry* g2);
3104 
3115 extern int GEOS_DLL GEOSHausdorffDistance(
3116  const GEOSGeometry *g1,
3117  const GEOSGeometry *g2,
3118  double *dist);
3119 
3133 extern int GEOS_DLL GEOSHausdorffDistanceDensify(
3134  const GEOSGeometry *g1,
3135  const GEOSGeometry *g2,
3136  double densifyFrac,
3137  double *dist);
3138 
3152 extern int GEOS_DLL GEOSFrechetDistance(
3153  const GEOSGeometry *g1,
3154  const GEOSGeometry *g2,
3155  double *dist);
3156 
3173 extern int GEOS_DLL GEOSFrechetDistanceDensify(
3174  const GEOSGeometry *g1,
3175  const GEOSGeometry *g2,
3176  double densifyFrac,
3177  double *dist);
3178 
3180 
3181 /* ========== Linear referencing functions */
3187 
3196 extern double GEOS_DLL GEOSProject(const GEOSGeometry* line,
3197  const GEOSGeometry* point);
3198 
3209 extern GEOSGeometry GEOS_DLL *GEOSInterpolate(const GEOSGeometry* line,
3210  double d);
3211 
3221 extern double GEOS_DLL GEOSProjectNormalized(const GEOSGeometry* line,
3222  const GEOSGeometry* point);
3223 
3233  const GEOSGeometry *line,
3234  double proportion);
3235 
3237 
3238 /* ========== Overlay functions ========== */
3244 
3254 extern GEOSGeometry GEOS_DLL *GEOSIntersection(const GEOSGeometry* g1, const GEOSGeometry* g2);
3255 
3270 extern GEOSGeometry GEOS_DLL *GEOSIntersectionPrec(const GEOSGeometry* g1, const GEOSGeometry* g2, double gridSize);
3271 
3281 extern GEOSGeometry GEOS_DLL *GEOSDifference(
3282  const GEOSGeometry* ga,
3283  const GEOSGeometry* gb);
3284 
3301  const GEOSGeometry* ga,
3302  const GEOSGeometry* gb,
3303  double gridSize);
3304 
3316  const GEOSGeometry* ga,
3317  const GEOSGeometry* gb);
3318 
3336  const GEOSGeometry* ga,
3337  const GEOSGeometry* gb,
3338  double gridSize);
3339 
3349 extern GEOSGeometry GEOS_DLL *GEOSUnion(
3350  const GEOSGeometry* ga,
3351  const GEOSGeometry* gb);
3352 
3368 extern GEOSGeometry GEOS_DLL *GEOSUnionPrec(
3369  const GEOSGeometry* ga,
3370  const GEOSGeometry* gb,
3371  double gridSize);
3372 
3384 extern GEOSGeometry GEOS_DLL *GEOSUnaryUnion(const GEOSGeometry* g);
3385 
3402  const GEOSGeometry* g,
3403  double gridSize);
3404 
3415 extern GEOSGeometry GEOS_DLL *GEOSCoverageUnion(const GEOSGeometry *g);
3416 
3428 
3444 extern GEOSGeometry GEOS_DLL *GEOSClipByRect(
3445  const GEOSGeometry* g,
3446  double xmin, double ymin,
3447  double xmax, double ymax);
3448 
3468  const GEOSGeometry* g1,
3469  const GEOSGeometry* g2);
3470 
3472 
3473 /* ========== Buffer related functions ========== */
3478 
3489 extern GEOSGeometry GEOS_DLL *GEOSBuffer(const GEOSGeometry* g,
3490  double width, int quadsegs);
3491 
3501 
3508 extern void GEOS_DLL GEOSBufferParams_destroy(GEOSBufferParams* parms);
3509 
3518  GEOSBufferParams* p,
3519  int style);
3520 
3528 extern int GEOS_DLL GEOSBufferParams_setJoinStyle(
3529  GEOSBufferParams* p,
3530  int joinStyle);
3531 
3544  GEOSBufferParams* p,
3545  double mitreLimit);
3546 
3558  GEOSBufferParams* p,
3559  int quadSegs);
3560 
3572  GEOSBufferParams* p,
3573  int singleSided);
3574 
3586  const GEOSGeometry* g,
3587  const GEOSBufferParams* p,
3588  double width);
3589 
3604  const GEOSGeometry* g,
3605  double width,
3606  int quadsegs,
3607  int endCapStyle,
3608  int joinStyle,
3609  double mitreLimit);
3610 
3633 extern GEOSGeometry GEOS_DLL *GEOSOffsetCurve(const GEOSGeometry* g,
3634  double width, int quadsegs, int joinStyle, double mitreLimit);
3635 
3637 
3638 /* ========== Construction Operations ========== */
3643 
3651 extern GEOSGeometry GEOS_DLL *GEOSEnvelope(const GEOSGeometry* g);
3652 
3665 extern GEOSGeometry GEOS_DLL *GEOSBoundary(const GEOSGeometry* g);
3666 
3675 extern GEOSGeometry GEOS_DLL *GEOSConvexHull(const GEOSGeometry* g);
3676 
3708  const GEOSGeometry* g,
3709  double ratio,
3710  unsigned int allowHoles);
3711 
3742  const GEOSGeometry* g,
3743  double length,
3744  unsigned int allowHoles);
3745 
3783  const GEOSGeometry* g,
3784  double lengthRatio,
3785  unsigned int isTight,
3786  unsigned int isHolesAllowed);
3787 
3808  const GEOSGeometry* g,
3809  unsigned int isOuter,
3810  double vertexNumFraction);
3811 
3812 
3821 };
3822 
3845  const GEOSGeometry* g,
3846  unsigned int isOuter,
3847  unsigned int parameterMode,
3848  double parameter);
3849 
3864 
3890  const GEOSGeometry* g,
3891  double tolerance);
3892 
3918  const GEOSGeometry* obstacles,
3919  const GEOSGeometry* boundary,
3920  double tolerance);
3921 
3935 extern GEOSGeometry GEOS_DLL *GEOSMinimumWidth(const GEOSGeometry* g);
3936 
3937 
3945 extern GEOSGeometry GEOS_DLL *GEOSPointOnSurface(const GEOSGeometry* g);
3946 
3954 extern GEOSGeometry GEOS_DLL *GEOSGetCentroid(const GEOSGeometry* g);
3955 
3969  const GEOSGeometry* g,
3970  double* radius,
3971  GEOSGeometry** center);
3972 
3987  const GEOSGeometry *g,
3988  double tolerance,
3989  int onlyEdges);
3990 
4003  const GEOSGeometry *g);
4004 
4007 {
4014 };
4015 
4037  const GEOSGeometry *g,
4038  const GEOSGeometry *env,
4039  double tolerance,
4040  int flags);
4041 
4043 
4044 /* ============================================================== */
4049 
4060 extern GEOSGeometry GEOS_DLL *GEOSNode(const GEOSGeometry* g);
4061 
4102 extern GEOSGeometry GEOS_DLL *GEOSPolygonize(
4103  const GEOSGeometry * const geoms[],
4104  unsigned int ngeoms);
4105 
4119  const GEOSGeometry * const geoms[],
4120  unsigned int ngeoms);
4121 
4136  const GEOSGeometry * const geoms[],
4137  unsigned int ngeoms);
4138 
4154  const GEOSGeometry* input,
4155  GEOSGeometry** cuts,
4156  GEOSGeometry** dangles,
4157  GEOSGeometry** invalid);
4158 
4170 extern GEOSGeometry GEOS_DLL *GEOSBuildArea(const GEOSGeometry* g);
4171 
4173 
4174 /* ============================================================== */
4179 
4193 extern GEOSGeometry GEOS_DLL *GEOSDensify(
4194  const GEOSGeometry* g,
4195  double tolerance);
4196 
4205 extern GEOSGeometry GEOS_DLL *GEOSLineMerge(const GEOSGeometry* g);
4206 
4219 
4232  const GEOSGeometry* g,
4233  double start_fraction,
4234  double end_fraction);
4235 
4246 extern GEOSGeometry GEOS_DLL *GEOSReverse(const GEOSGeometry* g);
4247 
4262 extern GEOSGeometry GEOS_DLL *GEOSSimplify(
4263  const GEOSGeometry* g,
4264  double tolerance);
4265 
4283  const GEOSGeometry* g,
4284  double tolerance);
4285 
4297  const GEOSGeometry* g);
4298 
4314 extern int GEOS_DLL GEOSHilbertCode(
4315  const GEOSGeometry *geom,
4316  const GEOSGeometry* extent,
4317  unsigned int level,
4318  unsigned int *code
4319 );
4320 
4336  const GEOSGeometry* g,
4337  GEOSTransformXYCallback callback,
4338  void* userdata);
4339 
4361 extern GEOSGeometry GEOS_DLL *GEOSSnap(
4362  const GEOSGeometry* input,
4363  const GEOSGeometry* snap_target,
4364  double tolerance);
4365 
4396  const GEOSGeometry *g,
4397  double gridSize,
4398  int flags);
4399 
4401 
4402 /* ============================================================== */
4407 
4415 extern char GEOS_DLL GEOSDisjoint(const GEOSGeometry* g1, const GEOSGeometry* g2);
4416 
4425 extern char GEOS_DLL GEOSTouches(const GEOSGeometry* g1, const GEOSGeometry* g2);
4426 
4434 extern char GEOS_DLL GEOSIntersects(const GEOSGeometry* g1, const GEOSGeometry* g2);
4435 
4444 extern char GEOS_DLL GEOSCrosses(const GEOSGeometry* g1, const GEOSGeometry* g2);
4445 
4454 extern char GEOS_DLL GEOSWithin(const GEOSGeometry* g1, const GEOSGeometry* g2);
4455 
4463 extern char GEOS_DLL GEOSContains(const GEOSGeometry* g1, const GEOSGeometry* g2);
4464 
4473 extern char GEOS_DLL GEOSOverlaps(const GEOSGeometry* g1, const GEOSGeometry* g2);
4474 
4482 extern char GEOS_DLL GEOSEquals(const GEOSGeometry* g1, const GEOSGeometry* g2);
4483 
4494 extern char GEOS_DLL GEOSCovers(const GEOSGeometry* g1, const GEOSGeometry* g2);
4495 
4506 extern char GEOS_DLL GEOSCoveredBy(const GEOSGeometry* g1, const GEOSGeometry* g2);
4507 
4524 extern char GEOS_DLL GEOSEqualsExact(
4525  const GEOSGeometry* g1,
4526  const GEOSGeometry* g2,
4527  double tolerance);
4528 
4541 extern char GEOS_DLL GEOSEqualsIdentical(
4542  const GEOSGeometry* g1,
4543  const GEOSGeometry* g2);
4544 
4557 extern char GEOS_DLL GEOSRelatePattern(
4558  const GEOSGeometry* g1,
4559  const GEOSGeometry* g2,
4560  const char *pat);
4561 
4570 extern char GEOS_DLL *GEOSRelate(
4571  const GEOSGeometry* g1,
4572  const GEOSGeometry* g2);
4573 
4583 extern char GEOS_DLL GEOSRelatePatternMatch(
4584  const char *mat,
4585  const char *pat);
4586 
4600 extern char GEOS_DLL *GEOSRelateBoundaryNodeRule(
4601  const GEOSGeometry* g1,
4602  const GEOSGeometry* g2,
4603  int bnr);
4604 
4606 
4607 /* ========== Prepared Geometry Binary predicates ========== */
4608 
4620 
4634 extern const GEOSPreparedGeometry GEOS_DLL *GEOSPrepare(const GEOSGeometry* g);
4635 
4644 extern void GEOS_DLL GEOSPreparedGeom_destroy(const GEOSPreparedGeometry* g);
4645 
4656 extern char GEOS_DLL GEOSPreparedContains(
4657  const GEOSPreparedGeometry* pg1,
4658  const GEOSGeometry* g2);
4659 
4671 extern char GEOS_DLL GEOSPreparedContainsXY(
4672  const GEOSPreparedGeometry* pg1,
4673  double x,
4674  double y);
4675 
4686 extern char GEOS_DLL GEOSPreparedContainsProperly(
4687  const GEOSPreparedGeometry* pg1,
4688  const GEOSGeometry* g2);
4689 
4700 extern char GEOS_DLL GEOSPreparedCoveredBy(
4701  const GEOSPreparedGeometry* pg1,
4702  const GEOSGeometry* g2);
4703 
4714 extern char GEOS_DLL GEOSPreparedCovers(
4715  const GEOSPreparedGeometry* pg1,
4716  const GEOSGeometry* g2);
4717 
4728 extern char GEOS_DLL GEOSPreparedCrosses(
4729  const GEOSPreparedGeometry* pg1,
4730  const GEOSGeometry* g2);
4731 
4742 extern char GEOS_DLL GEOSPreparedDisjoint(
4743  const GEOSPreparedGeometry* pg1,
4744  const GEOSGeometry* g2);
4745 
4756 extern char GEOS_DLL GEOSPreparedIntersects(
4757  const GEOSPreparedGeometry* pg1,
4758  const GEOSGeometry* g2);
4759 
4771 extern char GEOS_DLL GEOSPreparedIntersectsXY(
4772  const GEOSPreparedGeometry* pg1,
4773  double x,
4774  double y);
4775 
4786 extern char GEOS_DLL GEOSPreparedOverlaps(
4787  const GEOSPreparedGeometry* pg1,
4788  const GEOSGeometry* g2);
4789 
4800 extern char GEOS_DLL GEOSPreparedTouches(
4801  const GEOSPreparedGeometry* pg1,
4802  const GEOSGeometry* g2);
4803 
4814 extern char GEOS_DLL GEOSPreparedWithin(
4815  const GEOSPreparedGeometry* pg1,
4816  const GEOSGeometry* g2);
4817 
4831  const GEOSPreparedGeometry* pg1,
4832  const GEOSGeometry* g2);
4833 
4847 extern int GEOS_DLL GEOSPreparedDistance(
4848  const GEOSPreparedGeometry* pg1,
4849  const GEOSGeometry* g2,
4850  double *dist);
4851 
4866 extern char GEOS_DLL GEOSPreparedDistanceWithin(
4867  const GEOSPreparedGeometry* pg1,
4868  const GEOSGeometry* g2,
4869  double dist);
4870 
4872 
4873 /* ========== STRtree functions ========== */
4879 
4892 extern GEOSSTRtree GEOS_DLL *GEOSSTRtree_create(size_t nodeCapacity);
4893 
4905 extern int GEOS_DLL GEOSSTRtree_build(GEOSSTRtree *tree);
4906 
4919 extern void GEOS_DLL GEOSSTRtree_insert(
4920  GEOSSTRtree *tree,
4921  const GEOSGeometry *g,
4922  void *item);
4923 
4938 extern void GEOS_DLL GEOSSTRtree_query(
4939  GEOSSTRtree *tree,
4940  const GEOSGeometry *g,
4941  GEOSQueryCallback callback,
4942  void *userdata);
4943 
4958 extern const GEOSGeometry GEOS_DLL *GEOSSTRtree_nearest(
4959  GEOSSTRtree *tree,
4960  const GEOSGeometry* geom);
4961 
4982 extern const void GEOS_DLL *GEOSSTRtree_nearest_generic(
4983  GEOSSTRtree *tree,
4984  const void* item,
4985  const GEOSGeometry* itemEnvelope,
4986  GEOSDistanceCallback distancefn,
4987  void* userdata);
4988 
4999 extern void GEOS_DLL GEOSSTRtree_iterate(
5000  GEOSSTRtree *tree,
5001  GEOSQueryCallback callback,
5002  void *userdata);
5003 
5018 extern char GEOS_DLL GEOSSTRtree_remove(
5019  GEOSSTRtree *tree,
5020  const GEOSGeometry *g,
5021  void *item);
5022 
5031 extern void GEOS_DLL GEOSSTRtree_destroy(GEOSSTRtree *tree);
5032 
5034 
5035 /* ========== Algorithms ====================================================== */
5040 
5059 extern int GEOS_DLL GEOSSegmentIntersection(
5060  double ax0, double ay0,
5061  double ax1, double ay1,
5062  double bx0, double by0,
5063  double bx1, double by1,
5064  double* cx, double* cy);
5065 
5081 extern int GEOS_DLL GEOSOrientationIndex(
5082  double Ax, double Ay,
5083  double Bx, double By,
5084  double Px, double Py);
5085 
5087 
5088 /* ========= Reader and Writer APIs ========= */
5089 
5094 /* ========= WKT Reader ========= */
5095 
5100 extern GEOSWKTReader GEOS_DLL *GEOSWKTReader_create(void);
5101 
5106 extern void GEOS_DLL GEOSWKTReader_destroy(GEOSWKTReader* reader);
5107 
5116  GEOSWKTReader* reader,
5117  const char *wkt);
5118 
5127 extern void GEOS_DLL GEOSWKTReader_setFixStructure(
5128  GEOSWKTReader *reader,
5129  char doFix);
5130 
5131 /* ========= WKT Writer ========= */
5132 
5137 extern GEOSWKTWriter GEOS_DLL *GEOSWKTWriter_create(void);
5138 
5143 extern void GEOS_DLL GEOSWKTWriter_destroy(
5144  GEOSWKTWriter* writer);
5145 
5154 extern char GEOS_DLL *GEOSWKTWriter_write(
5155  GEOSWKTWriter* writer,
5156  const GEOSGeometry* g);
5157 
5168 extern void GEOS_DLL GEOSWKTWriter_setTrim(
5169  GEOSWKTWriter *writer,
5170  char trim);
5171 
5181  GEOSWKTWriter *writer,
5182  int precision);
5183 
5193  GEOSWKTWriter *writer,
5194  int dim);
5195 
5204 
5214 extern void GEOS_DLL GEOSWKTWriter_setOld3D(
5215  GEOSWKTWriter *writer,
5216  int useOld3D);
5218 
5219 /* ============================================================================== */
5224 
5225 /* ========== WKB Reader ========== */
5230 extern GEOSWKBReader GEOS_DLL *GEOSWKBReader_create(void);
5231 
5236 extern void GEOS_DLL GEOSWKBReader_destroy(
5237  GEOSWKBReader* reader);
5238 
5247 extern void GEOS_DLL GEOSWKBReader_setFixStructure(
5248  GEOSWKBReader *reader,
5249  char doFix);
5250 
5259  GEOSWKBReader* reader,
5260  const unsigned char *wkb,
5261  size_t size);
5262 
5271  GEOSWKBReader* reader,
5272  const unsigned char *hex,
5273  size_t size);
5274 
5275 /* ========== WKB Writer ========== */
5276 
5281 extern GEOSWKBWriter GEOS_DLL *GEOSWKBWriter_create(void);
5282 
5287 extern void GEOS_DLL GEOSWKBWriter_destroy(GEOSWKBWriter* writer);
5288 
5297 extern unsigned char GEOS_DLL *GEOSWKBWriter_write(
5298  GEOSWKBWriter* writer,
5299  const GEOSGeometry* g,
5300  size_t *size);
5301 
5310 extern unsigned char GEOS_DLL *GEOSWKBWriter_writeHEX(
5311  GEOSWKBWriter* writer,
5312  const GEOSGeometry* g,
5313  size_t *size);
5314 
5323  const GEOSWKBWriter* writer);
5324 
5332  GEOSWKBWriter* writer,
5333  int newDimension);
5334 
5343 extern int GEOS_DLL GEOSWKBWriter_getByteOrder(
5344  const GEOSWKBWriter* writer);
5345 
5352 extern void GEOS_DLL GEOSWKBWriter_setByteOrder(
5353  GEOSWKBWriter* writer,
5354  int byteOrder);
5355 
5370 extern int GEOS_DLL GEOSWKBWriter_getFlavor(
5371  const GEOSWKBWriter* writer);
5372 
5381 extern void GEOS_DLL GEOSWKBWriter_setFlavor(
5382  GEOSWKBWriter* writer,
5383  int flavor);
5384 
5389 extern char GEOS_DLL GEOSWKBWriter_getIncludeSRID(
5390  const GEOSWKBWriter* writer);
5391 
5398 extern void GEOS_DLL GEOSWKBWriter_setIncludeSRID(
5399  GEOSWKBWriter* writer,
5400  const char writeSRID);
5401 
5403 
5404 /* ============================================================================= */
5409 /* ========= GeoJSON Reader ========= */
5410 
5418 
5425 extern void GEOS_DLL GEOSGeoJSONReader_destroy(GEOSGeoJSONReader* reader);
5426 
5438  GEOSGeoJSONReader* reader,
5439  const char *geojson);
5440 
5441 /* ========= GeoJSON Writer ========= */
5442 
5450 
5457 extern void GEOS_DLL GEOSGeoJSONWriter_destroy(GEOSGeoJSONWriter* writer);
5458 
5469 extern char GEOS_DLL *GEOSGeoJSONWriter_writeGeometry(
5470  GEOSGeoJSONWriter* writer,
5471  const GEOSGeometry* g,
5472  int indent);
5473 
5475 
5476 #endif /* #ifndef GEOS_USE_ONLY_R_API */
5477 
5478 /* ====================================================================== */
5479 /* DEPRECATIONS */
5480 /* ====================================================================== */
5481 
5487 
5492  const GEOSGeometry* g,
5493  double width, int quadsegs,
5494  int joinStyle, double mitreLimit,
5495  int leftSide);
5496 
5501  GEOSContextHandle_t handle,
5502  const GEOSGeometry* g,
5503  double width, int quadsegs,
5504  int joinStyle, double mitreLimit,
5505  int leftSide);
5506 
5512  GEOSMessageHandler notice_function,
5513  GEOSMessageHandler error_function);
5514 
5518 extern void GEOS_DLL finishGEOS_r(GEOSContextHandle_t handle);
5519 
5524  GEOSContextHandle_t handle,
5525  const char *wkt);
5526 
5530 extern char GEOS_DLL *GEOSGeomToWKT_r(
5531  GEOSContextHandle_t handle,
5532  const GEOSGeometry* g);
5533 
5537 extern int GEOS_DLL GEOS_getWKBOutputDims_r(
5538  GEOSContextHandle_t handle);
5539 
5543 extern int GEOS_DLL GEOS_setWKBOutputDims_r(
5544  GEOSContextHandle_t handle,
5545  int newDims);
5546 
5550 extern int GEOS_DLL GEOS_getWKBByteOrder_r(
5551  GEOSContextHandle_t handle);
5552 
5556 extern int GEOS_DLL GEOS_setWKBByteOrder_r(
5557  GEOSContextHandle_t handle,
5558  int byteOrder);
5559 
5564  GEOSContextHandle_t handle,
5565  const unsigned char *wkb,
5566  size_t size);
5567 
5571 extern unsigned char GEOS_DLL *GEOSGeomToWKB_buf_r(
5572  GEOSContextHandle_t handle,
5573  const GEOSGeometry* g,
5574  size_t *size);
5575 
5580  GEOSContextHandle_t handle,
5581  const unsigned char *hex,
5582  size_t size);
5583 
5587 extern unsigned char GEOS_DLL *GEOSGeomToHEX_buf_r(
5588  GEOSContextHandle_t handle,
5589  const GEOSGeometry* g,
5590  size_t *size);
5591 
5595 extern GEOSGeometry GEOS_DLL *GEOSGeomFromWKT(const char *wkt);
5596 
5600 extern char GEOS_DLL *GEOSGeomToWKT(const GEOSGeometry* g);
5601 
5605 extern int GEOS_DLL GEOS_getWKBOutputDims(void);
5606 
5610 extern int GEOS_DLL GEOS_setWKBOutputDims(int newDims);
5611 
5615 extern int GEOS_DLL GEOS_getWKBByteOrder(void);
5616 
5620 extern int GEOS_DLL GEOS_setWKBByteOrder(int byteOrder);
5621 
5625 extern GEOSGeometry GEOS_DLL *GEOSGeomFromWKB_buf(const unsigned char *wkb, size_t size);
5626 
5630 extern unsigned char GEOS_DLL *GEOSGeomToWKB_buf(const GEOSGeometry* g, size_t *size);
5631 
5635 extern GEOSGeometry GEOS_DLL *GEOSGeomFromHEX_buf(const unsigned char *hex, size_t size);
5636 
5640 extern unsigned char GEOS_DLL *GEOSGeomToHEX_buf(const GEOSGeometry* g, size_t *size);
5641 
5645 extern GEOSGeometry GEOS_DLL *GEOSUnionCascaded(const GEOSGeometry* g);
5646 
5651  GEOSContextHandle_t handle,
5652  const GEOSGeometry* g);
5653 
5655 
5656 /* ====================================================================== */
5657 /* END DEPRECATIONS */
5658 /* ====================================================================== */
5659 
5660 
5661 #ifdef __cplusplus
5662 } // extern "C"
5663 #endif
5664 
5665 #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)
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)
GEOSGeometry * GEOSGeom_createEmptyPoint_r(GEOSContextHandle_t handle)
struct GEOSGeoJSONReader_t GEOSGeoJSONReader
Definition: geos_c.h:1781
GEOSGeometry * GEOSBuildArea(const GEOSGeometry *g)
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)
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:271
struct GEOSWKBReader_t GEOSWKBReader
Definition: geos_c.h:1767
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)
int GEOSDistance_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double *dist)
char GEOSTouches(const GEOSGeometry *g1, const GEOSGeometry *g2)
struct GEOSCoordSeq_t GEOSCoordSequence
Definition: geos_c.h:154
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:197
@ GEOS_MULTILINESTRING
Definition: geos_c.h:209
@ GEOS_GEOMETRYCOLLECTION
Definition: geos_c.h:213
@ GEOS_POINT
Definition: geos_c.h:199
@ GEOS_MULTIPOLYGON
Definition: geos_c.h:211
@ GEOS_LINEARRING
Definition: geos_c.h:203
@ GEOS_POLYGON
Definition: geos_c.h:205
@ GEOS_MULTIPOINT
Definition: geos_c.h:207
@ GEOS_LINESTRING
Definition: geos_c.h:201
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:252
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:238
@ GEOS_WKB_ISO
Definition: geos_c.h:242
@ GEOS_WKB_EXTENDED
Definition: geos_c.h:240
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)
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 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)
void(* GEOSMessageHandler_r)(const char *message, void *userdata)
Definition: geos_c.h:118
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)
char GEOSDisjoint(const GEOSGeometry *g1, const GEOSGeometry *g2)
int GEOSCoordSeq_setX(GEOSCoordSequence *s, unsigned int idx, double val)
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:587
@ GEOSBUF_CAP_SQUARE
Definition: geos_c.h:596
@ GEOSBUF_CAP_FLAT
Definition: geos_c.h:593
@ GEOSBUF_CAP_ROUND
Definition: geos_c.h:590
GEOSVoronoiFlags
Definition: geos_c.h:4007
@ GEOS_VORONOI_PRESERVE_ORDER
Definition: geos_c.h:4013
@ GEOS_VORONOI_ONLY_EDGES
Definition: geos_c.h:4009
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:1380
@ GEOSVALID_ALLOW_SELFTOUCHING_RING_FORMING_HOLE
Definition: geos_c.h:1382
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:1774
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)
char GEOSRelatePatternMatch_r(GEOSContextHandle_t handle, const char *mat, const char *pat)
struct GEOSWKTWriter_t GEOSWKTWriter
Definition: geos_c.h:1760
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)
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)
int GEOS_setWKBByteOrder(int byteOrder)
GEOSWKBReader * GEOSWKBReader_create_r(GEOSContextHandle_t handle)
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)
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:222
@ GEOS_WKB_NDR
Definition: geos_c.h:226
@ GEOS_WKB_XDR
Definition: geos_c.h:224
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:1753
char GEOSPreparedCoveredBy_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
GEOSGeometry * GEOSWKTReader_read(GEOSWKTReader *reader, const char *wkt)
char GEOSRelatePattern(const GEOSGeometry *g1, const GEOSGeometry *g2, const char *pat)
char * GEOSRelateBoundaryNodeRule(const GEOSGeometry *g1, const GEOSGeometry *g2, int bnr)
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:1337
@ GEOSRELATE_BNR_OGC
Definition: geos_c.h:1341
@ GEOSRELATE_BNR_MULTIVALENT_ENDPOINT
Definition: geos_c.h:1345
@ GEOSRELATE_BNR_ENDPOINT
Definition: geos_c.h:1343
@ GEOSRELATE_BNR_MOD2
Definition: geos_c.h:1339
@ GEOSRELATE_BNR_MONOVALENT_ENDPOINT
Definition: geos_c.h:1347
unsigned char * GEOSWKBWriter_writeHEX_r(GEOSContextHandle_t handle, GEOSWKBWriter *writer, const GEOSGeometry *g, size_t *size)
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:3816
@ GEOSHULL_PARAM_AREA_RATIO
Definition: geos_c.h:3820
@ GEOSHULL_PARAM_VERTEX_RATIO
Definition: geos_c.h:3818
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)
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:603
@ GEOSBUF_JOIN_MITRE
Definition: geos_c.h:613
@ GEOSBUF_JOIN_ROUND
Definition: geos_c.h:608
@ GEOSBUF_JOIN_BEVEL
Definition: geos_c.h:618
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)
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)
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 * 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)
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:290
char GEOSRelatePatternMatch(const char *mat, const char *pat)
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)
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:1788
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)
int GEOSGeom_getYMin_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *value)
void GEOSGeom_setUserData(GEOSGeometry *g, void *userData)
void GEOSGeoJSONReader_destroy(GEOSGeoJSONReader *reader)
char GEOSRelatePattern_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, const char *pat)
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 * 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:168
char GEOSPreparedCovers_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
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:1513
@ GEOS_PREC_NO_TOPO
Definition: geos_c.h:1517
@ GEOS_PREC_KEEP_COLLAPSED
Definition: geos_c.h:1519
@ GEOS_PREC_VALID_OUTPUT
Definition: geos_c.h:1515
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:175
void GEOS_finish_r(GEOSContextHandle_t handle)
GEOSMakeValidMethods
Definition: geos_c.h:1410
@ GEOS_MAKE_VALID_LINEWORK
Definition: geos_c.h:1414
@ GEOS_MAKE_VALID_STRUCTURE
Definition: geos_c.h:1419
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)
void(* GEOSMessageHandler)(const char *fmt,...)
Definition: geos_c.h:106
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:306
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:161
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 * 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