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 
334 extern GEOSContextHandle_t GEOS_DLL GEOS_init_r(void);
335 
341 extern void GEOS_DLL GEOS_finish_r(GEOSContextHandle_t handle);
342 
352  GEOSContextHandle_t extHandle,
353  GEOSMessageHandler nf);
354 
366  GEOSContextHandle_t extHandle,
367  GEOSMessageHandler ef);
368 
377  GEOSContextHandle_t extHandle,
379  void *userData);
380 
391  GEOSContextHandle_t extHandle,
393  void *userData);
394 
395 /* ========== Coordinate Sequence functions ========== */
396 
399  GEOSContextHandle_t handle,
400  unsigned int size,
401  unsigned int dims);
402 
405  GEOSContextHandle_t handle,
406  const double* buf,
407  unsigned int size,
408  int hasZ,
409  int hasM);
410 
413  GEOSContextHandle_t handle,
414  const double* x,
415  const double* y,
416  const double* z,
417  const double* m,
418  unsigned int size);
419 
421 extern int GEOS_DLL GEOSCoordSeq_copyToBuffer_r(
422  GEOSContextHandle_t handle,
423  const GEOSCoordSequence* s,
424  double* buf,
425  int hasZ,
426  int hasM);
427 
429 extern int GEOS_DLL GEOSCoordSeq_copyToArrays_r(
430  GEOSContextHandle_t handle,
431  const GEOSCoordSequence* s,
432  double* x,
433  double* y,
434  double* z,
435  double* m);
436 
439  GEOSContextHandle_t handle,
440  const GEOSCoordSequence* s);
441 
443 extern void GEOS_DLL GEOSCoordSeq_destroy_r(
444  GEOSContextHandle_t handle,
445  GEOSCoordSequence* s);
446 
448 extern int GEOS_DLL GEOSCoordSeq_setX_r(
449  GEOSContextHandle_t handle,
450  GEOSCoordSequence* s, unsigned int idx,
451  double val);
452 
454 extern int GEOS_DLL GEOSCoordSeq_setY_r(
455  GEOSContextHandle_t handle,
456  GEOSCoordSequence* s, unsigned int idx,
457  double val);
458 
460 extern int GEOS_DLL GEOSCoordSeq_setZ_r(
461  GEOSContextHandle_t handle,
462  GEOSCoordSequence* s, unsigned int idx,
463  double val);
464 
466 extern int GEOS_DLL GEOSCoordSeq_setXY_r(
467  GEOSContextHandle_t handle,
468  GEOSCoordSequence* s, unsigned int idx,
469  double x, double y);
470 
472 extern int GEOS_DLL GEOSCoordSeq_setXYZ_r(
473  GEOSContextHandle_t handle,
474  GEOSCoordSequence* s, unsigned int idx,
475  double x, double y, double z);
476 
478 extern int GEOS_DLL GEOSCoordSeq_setOrdinate_r(
479  GEOSContextHandle_t handle,
481  unsigned int idx,
482  unsigned int dim, double val);
483 
485 extern int GEOS_DLL GEOSCoordSeq_getX_r(
486  GEOSContextHandle_t handle,
487  const GEOSCoordSequence* s,
488  unsigned int idx, double *val);
489 
491 extern int GEOS_DLL GEOSCoordSeq_getY_r(
492  GEOSContextHandle_t handle,
493  const GEOSCoordSequence* s,
494  unsigned int idx, double *val);
495 
497 extern int GEOS_DLL GEOSCoordSeq_getZ_r(
498  GEOSContextHandle_t handle,
499  const GEOSCoordSequence* s,
500  unsigned int idx, double *val);
501 
503 extern int GEOS_DLL GEOSCoordSeq_getXY_r(
504  GEOSContextHandle_t handle,
505  const GEOSCoordSequence* s,
506  unsigned int idx,
507  double *x, double *y);
508 
510 extern int GEOS_DLL GEOSCoordSeq_getXYZ_r(
511  GEOSContextHandle_t handle,
512  const GEOSCoordSequence* s,
513  unsigned int idx,
514  double *x, double *y, double *z);
515 
517 extern int GEOS_DLL GEOSCoordSeq_getOrdinate_r(
518  GEOSContextHandle_t handle,
519  const GEOSCoordSequence* s,
520  unsigned int idx,
521  unsigned int dim, double *val);
522 
524 extern int GEOS_DLL GEOSCoordSeq_getSize_r(
525  GEOSContextHandle_t handle,
526  const GEOSCoordSequence* s,
527  unsigned int *size);
528 
530 extern int GEOS_DLL GEOSCoordSeq_getDimensions_r(
531  GEOSContextHandle_t handle,
532  const GEOSCoordSequence* s,
533  unsigned int *dims);
534 
536 extern int GEOS_DLL GEOSCoordSeq_isCCW_r(
537  GEOSContextHandle_t handle,
538  const GEOSCoordSequence* s,
539  char* is_ccw);
540 
541 /* ========= Linear referencing functions ========= */
542 
544 extern double GEOS_DLL GEOSProject_r(
545  GEOSContextHandle_t handle,
546  const GEOSGeometry *line,
547  const GEOSGeometry *point);
548 
551  GEOSContextHandle_t handle,
552  const GEOSGeometry *line,
553  double d);
554 
556 extern double GEOS_DLL GEOSProjectNormalized_r(
557  GEOSContextHandle_t handle,
558  const GEOSGeometry *g,
559  const GEOSGeometry *p);
560 
563  GEOSContextHandle_t handle,
564  const GEOSGeometry *g,
565  double d);
566 
567 /* ========== Buffer related functions ========== */
568 
570 extern GEOSGeometry GEOS_DLL *GEOSBuffer_r(
571  GEOSContextHandle_t handle,
572  const GEOSGeometry* g,
573  double width, int quadsegs);
574 
580 
583 
586 
589 };
590 
611 };
612 
615  GEOSContextHandle_t handle);
616 
618 extern void GEOS_DLL GEOSBufferParams_destroy_r(
619  GEOSContextHandle_t handle,
620  GEOSBufferParams* parms);
621 
624  GEOSContextHandle_t handle,
625  GEOSBufferParams* p,
626  int style);
627 
630  GEOSContextHandle_t handle,
631  GEOSBufferParams* p,
632  int joinStyle);
633 
636  GEOSContextHandle_t handle,
637  GEOSBufferParams* p,
638  double mitreLimit);
639 
642  GEOSContextHandle_t handle,
643  GEOSBufferParams* p,
644  int quadSegs);
645 
648  GEOSContextHandle_t handle,
649  GEOSBufferParams* p,
650  int singleSided);
651 
654  GEOSContextHandle_t handle,
655  const GEOSGeometry* g,
656  const GEOSBufferParams* p,
657  double width);
658 
661  GEOSContextHandle_t handle,
662  const GEOSGeometry* g,
663  double width, int quadsegs, int endCapStyle,
664  int joinStyle, double mitreLimit);
665 
667 extern GEOSGeometry GEOS_DLL *GEOSDensify_r(
668  GEOSContextHandle_t handle,
669  const GEOSGeometry* g,
670  double tolerance);
671 
674  GEOSContextHandle_t handle,
675  const GEOSGeometry* g, double width, int quadsegs,
676  int joinStyle, double mitreLimit);
677 
678 
679 /* ========= Geometry Constructors ========= */
680 
683  GEOSContextHandle_t handle,
684  GEOSCoordSequence* s);
685 
688  GEOSContextHandle_t handle,
689  double x, double y);
690 
693  GEOSContextHandle_t handle);
694 
697  GEOSContextHandle_t handle,
698  GEOSCoordSequence* s);
699 
702  GEOSContextHandle_t handle,
703  GEOSCoordSequence* s);
704 
707  GEOSContextHandle_t handle);
708 
711  GEOSContextHandle_t handle);
712 
715  GEOSContextHandle_t handle,
716  GEOSGeometry* shell,
717  GEOSGeometry** holes,
718  unsigned int nholes);
719 
722  GEOSContextHandle_t handle,
723  int type,
724  GEOSGeometry* *geoms,
725  unsigned int ngeoms);
726 
729  GEOSContextHandle_t handle, int type);
730 
733  GEOSContextHandle_t handle,
734  double xmin, double ymin,
735  double xmax, double ymax);
736 
739  GEOSContextHandle_t handle,
740  const GEOSGeometry* g);
741 
742 /* ========= Memory management ========= */
743 
745 extern void GEOS_DLL GEOSGeom_destroy_r(
746  GEOSContextHandle_t handle,
747  GEOSGeometry* g);
748 
749 /* ========= Topology Operations ========= */
750 
752 extern GEOSGeometry GEOS_DLL *GEOSEnvelope_r(
753  GEOSContextHandle_t handle,
754  const GEOSGeometry* g);
755 
758  GEOSContextHandle_t handle,
759  const GEOSGeometry* g1,
760  const GEOSGeometry* g2);
761 
764  GEOSContextHandle_t handle,
765  const GEOSGeometry* g1,
766  const GEOSGeometry* g2,
767  double gridSize);
768 
771  GEOSContextHandle_t handle,
772  const GEOSGeometry* g);
773 
776  GEOSContextHandle_t handle,
777  const GEOSGeometry* g,
778  double ratio,
779  unsigned int allowHoles);
780 
783  GEOSContextHandle_t handle,
784  const GEOSGeometry* g,
785  double ratio,
786  unsigned int allowHoles);
787 
790  GEOSContextHandle_t handle,
791  const GEOSGeometry* g,
792  unsigned int isOuter,
793  double vertexNumFraction);
794 
797  GEOSContextHandle_t handle,
798  const GEOSGeometry* g,
799  unsigned int isOuter,
800  unsigned int parameterMode,
801  double parameter);
802 
805  GEOSContextHandle_t handle,
806  const GEOSGeometry* g,
807  double lengthRatio,
808  unsigned int isTight,
809  unsigned int isHolesAllowed);
810 
813  GEOSContextHandle_t handle,
814  const GEOSGeometry* g);
815 
818  GEOSContextHandle_t handle,
819  const GEOSGeometry* g,
820  double tolerance);
821 
824  GEOSContextHandle_t handle,
825  const GEOSGeometry* g,
826  const GEOSGeometry* boundary,
827  double tolerance);
828 
831  GEOSContextHandle_t handle,
832  const GEOSGeometry* g);
833 
836  GEOSContextHandle_t handle,
837  const GEOSGeometry* g);
838 
840 extern int GEOS_DLL GEOSMinimumClearance_r(
841  GEOSContextHandle_t handle,
842  const GEOSGeometry* g,
843  double* distance);
844 
847  GEOSContextHandle_t handle,
848  const GEOSGeometry* g1,
849  const GEOSGeometry* g2);
850 
853  GEOSContextHandle_t handle,
854  const GEOSGeometry* g1,
855  const GEOSGeometry* g2,
856  double gridSize);
857 
860  GEOSContextHandle_t handle,
861  const GEOSGeometry* g1,
862  const GEOSGeometry* g2);
863 
866  GEOSContextHandle_t handle,
867  const GEOSGeometry* g1,
868  const GEOSGeometry* g2,
869  double gridSize);
870 
872 extern GEOSGeometry GEOS_DLL *GEOSBoundary_r(
873  GEOSContextHandle_t handle,
874  const GEOSGeometry* g);
875 
877 extern GEOSGeometry GEOS_DLL *GEOSUnion_r(
878  GEOSContextHandle_t handle,
879  const GEOSGeometry* g1,
880  const GEOSGeometry* g2);
881 
883 extern GEOSGeometry GEOS_DLL *GEOSUnionPrec_r(
884  GEOSContextHandle_t handle,
885  const GEOSGeometry* g1,
886  const GEOSGeometry* g2,
887  double gridSize);
888 
891  GEOSContextHandle_t handle,
892  const GEOSGeometry* g);
893 
896  GEOSContextHandle_t handle,
897  const GEOSGeometry* g,
898  double gridSize);
899 
902  GEOSContextHandle_t handle,
903  const GEOSGeometry* g);
904 
907  GEOSContextHandle_t handle,
908  const GEOSGeometry* g);
909 
912  GEOSContextHandle_t handle,
913  const GEOSGeometry* g);
914 
917  GEOSContextHandle_t handle,
918  const GEOSGeometry* g);
919 
922  GEOSContextHandle_t handle,
923  const GEOSGeometry* g,
924  double* radius,
925  GEOSGeometry** center);
926 
928 extern GEOSGeometry GEOS_DLL *GEOSNode_r(
929  GEOSContextHandle_t handle,
930  const GEOSGeometry* g);
931 
934  GEOSContextHandle_t handle,
935  const GEOSGeometry* g,
936  double xmin, double ymin,
937  double xmax, double ymax);
938 
941  GEOSContextHandle_t handle,
942  const GEOSGeometry *const geoms[],
943  unsigned int ngeoms);
944 
947  GEOSContextHandle_t handle,
948  const GEOSGeometry *const geoms[],
949  unsigned int ngems);
950 
953  GEOSContextHandle_t handle,
954  const GEOSGeometry * const geoms[],
955  unsigned int ngeoms);
956 
959  GEOSContextHandle_t handle,
960  const GEOSGeometry* input,
961  GEOSGeometry** cuts,
962  GEOSGeometry** dangles,
963  GEOSGeometry** invalidRings);
964 
966 extern GEOSGeometry GEOS_DLL *GEOSBuildArea_r(
967  GEOSContextHandle_t handle,
968  const GEOSGeometry* g);
969 
971 extern GEOSGeometry GEOS_DLL *GEOSLineMerge_r(
972  GEOSContextHandle_t handle,
973  const GEOSGeometry* g);
974 
977  GEOSContextHandle_t handle,
978  const GEOSGeometry* g);
979 
982  GEOSContextHandle_t handle,
983  const GEOSGeometry* g,
984  double start_fraction,
985  double end_fdraction);
986 
988 extern GEOSGeometry GEOS_DLL *GEOSReverse_r(
989  GEOSContextHandle_t handle,
990  const GEOSGeometry* g);
991 
993 extern GEOSGeometry GEOS_DLL *GEOSSimplify_r(
994  GEOSContextHandle_t handle,
995  const GEOSGeometry* g,
996  double tolerance);
997 
1000  GEOSContextHandle_t handle,
1001  const GEOSGeometry* g, double tolerance);
1002 
1005  GEOSContextHandle_t handle,
1006  const GEOSGeometry* g);
1007 
1010  GEOSContextHandle_t handle,
1011  const GEOSGeometry* g1,
1012  const GEOSGeometry* g2);
1013 
1015 extern GEOSGeometry GEOS_DLL *GEOSSnap_r(
1016  GEOSContextHandle_t handle,
1017  const GEOSGeometry* g1,
1018  const GEOSGeometry* g2,
1019  double tolerance);
1020 
1023  GEOSContextHandle_t handle,
1024  const GEOSGeometry *g,
1025  double tolerance,
1026  int onlyEdges);
1027 
1030  GEOSContextHandle_t handle,
1031  const GEOSGeometry *g);
1032 
1035  GEOSContextHandle_t extHandle,
1036  const GEOSGeometry *g,
1037  const GEOSGeometry *env,
1038  double tolerance,
1039  int flags);
1040 
1042 extern int GEOS_DLL GEOSSegmentIntersection_r(
1043  GEOSContextHandle_t extHandle,
1044  double ax0, double ay0,
1045  double ax1, double ay1,
1046  double bx0, double by0,
1047  double bx1, double by1,
1048  double* cx, double* cy);
1049 
1050 /* ========= Binary predicates ========= */
1051 
1053 extern char GEOS_DLL GEOSDisjoint_r(
1054  GEOSContextHandle_t handle,
1055  const GEOSGeometry* g1,
1056  const GEOSGeometry* g2);
1057 
1059 extern char GEOS_DLL GEOSTouches_r(
1060  GEOSContextHandle_t handle,
1061  const GEOSGeometry* g1,
1062  const GEOSGeometry* g2);
1063 
1065 extern char GEOS_DLL GEOSIntersects_r(
1066  GEOSContextHandle_t handle,
1067  const GEOSGeometry* g1,
1068  const GEOSGeometry* g2);
1069 
1071 extern char GEOS_DLL GEOSCrosses_r(
1072  GEOSContextHandle_t handle,
1073  const GEOSGeometry* g1,
1074  const GEOSGeometry* g2);
1075 
1077 extern char GEOS_DLL GEOSWithin_r(
1078  GEOSContextHandle_t handle,
1079  const GEOSGeometry* g1,
1080  const GEOSGeometry* g2);
1081 
1083 extern char GEOS_DLL GEOSContains_r(
1084  GEOSContextHandle_t handle,
1085  const GEOSGeometry* g1,
1086  const GEOSGeometry* g2);
1087 
1089 extern char GEOS_DLL GEOSOverlaps_r(
1090  GEOSContextHandle_t handle,
1091  const GEOSGeometry* g1,
1092  const GEOSGeometry* g2);
1093 
1095 extern char GEOS_DLL GEOSEquals_r(
1096  GEOSContextHandle_t handle,
1097  const GEOSGeometry* g1,
1098  const GEOSGeometry* g2);
1099 
1101 extern char GEOS_DLL GEOSEqualsExact_r(
1102  GEOSContextHandle_t handle,
1103  const GEOSGeometry* g1,
1104  const GEOSGeometry* g2,
1105  double tolerance);
1106 
1108 extern char GEOS_DLL GEOSEqualsIdentical_r(
1109  GEOSContextHandle_t handle,
1110  const GEOSGeometry* g1,
1111  const GEOSGeometry* g2);
1112 
1114 extern char GEOS_DLL GEOSCovers_r(
1115  GEOSContextHandle_t handle,
1116  const GEOSGeometry* g1,
1117  const GEOSGeometry* g2);
1118 
1120 extern char GEOS_DLL GEOSCoveredBy_r(
1121  GEOSContextHandle_t handle,
1122  const GEOSGeometry* g1,
1123  const GEOSGeometry* g2);
1124 
1125 /* ========= Prepared Geometry Binary Predicates ========== */
1126 
1128 extern const GEOSPreparedGeometry GEOS_DLL *GEOSPrepare_r(
1129  GEOSContextHandle_t handle,
1130  const GEOSGeometry* g);
1131 
1133 extern void GEOS_DLL GEOSPreparedGeom_destroy_r(
1134  GEOSContextHandle_t handle,
1135  const GEOSPreparedGeometry* g);
1136 
1138 extern char GEOS_DLL GEOSPreparedContains_r(
1139  GEOSContextHandle_t handle,
1140  const GEOSPreparedGeometry* pg1,
1141  const GEOSGeometry* g2);
1142 
1144 extern char GEOS_DLL GEOSPreparedContainsXY_r(
1145  GEOSContextHandle_t handle,
1146  const GEOSPreparedGeometry* pg1,
1147  double x,
1148  double y);
1149 
1151 extern char GEOS_DLL GEOSPreparedContainsProperly_r(
1152  GEOSContextHandle_t handle,
1153  const GEOSPreparedGeometry* pg1,
1154  const GEOSGeometry* g2);
1155 
1157 extern char GEOS_DLL GEOSPreparedCoveredBy_r(
1158  GEOSContextHandle_t handle,
1159  const GEOSPreparedGeometry* pg1,
1160  const GEOSGeometry* g2);
1161 
1163 extern char GEOS_DLL GEOSPreparedCovers_r(
1164  GEOSContextHandle_t handle,
1165  const GEOSPreparedGeometry* pg1,
1166  const GEOSGeometry* g2);
1167 
1169 extern char GEOS_DLL GEOSPreparedCrosses_r(
1170  GEOSContextHandle_t handle,
1171  const GEOSPreparedGeometry* pg1,
1172  const GEOSGeometry* g2);
1173 
1175 extern char GEOS_DLL GEOSPreparedDisjoint_r(
1176  GEOSContextHandle_t handle,
1177  const GEOSPreparedGeometry* pg1,
1178  const GEOSGeometry* g2);
1179 
1181 extern char GEOS_DLL GEOSPreparedIntersects_r(
1182  GEOSContextHandle_t handle,
1183  const GEOSPreparedGeometry* pg1,
1184  const GEOSGeometry* g2);
1185 
1187 extern char GEOS_DLL GEOSPreparedIntersectsXY_r(
1188  GEOSContextHandle_t handle,
1189  const GEOSPreparedGeometry* pg1,
1190  double x,
1191  double y);
1192 
1194 extern char GEOS_DLL GEOSPreparedOverlaps_r(
1195  GEOSContextHandle_t handle,
1196  const GEOSPreparedGeometry* pg1,
1197  const GEOSGeometry* g2);
1198 
1200 extern char GEOS_DLL GEOSPreparedTouches_r(
1201  GEOSContextHandle_t handle,
1202  const GEOSPreparedGeometry* pg1,
1203  const GEOSGeometry* g2);
1204 
1206 extern char GEOS_DLL GEOSPreparedWithin_r(
1207  GEOSContextHandle_t handle,
1208  const GEOSPreparedGeometry* pg1,
1209  const GEOSGeometry* g2);
1210 
1213  GEOSContextHandle_t handle,
1214  const GEOSPreparedGeometry* pg1,
1215  const GEOSGeometry* g2);
1216 
1218 extern int GEOS_DLL GEOSPreparedDistance_r(
1219  GEOSContextHandle_t handle,
1220  const GEOSPreparedGeometry* pg1,
1221  const GEOSGeometry* g2, double *dist);
1222 
1224 extern char GEOS_DLL GEOSPreparedDistanceWithin_r(
1225  GEOSContextHandle_t handle,
1226  const GEOSPreparedGeometry* pg1,
1227  const GEOSGeometry* g2, double dist);
1228 
1229 /* ========== STRtree ========== */
1230 
1233  GEOSContextHandle_t handle,
1234  size_t nodeCapacity);
1235 
1237 extern int GEOS_DLL GEOSSTRtree_build_r(
1238  GEOSContextHandle_t handle,
1239  GEOSSTRtree *tree);
1240 
1242 extern void GEOS_DLL GEOSSTRtree_insert_r(
1243  GEOSContextHandle_t handle,
1244  GEOSSTRtree *tree,
1245  const GEOSGeometry *g,
1246  void *item);
1247 
1249 extern void GEOS_DLL GEOSSTRtree_query_r(
1250  GEOSContextHandle_t handle,
1251  GEOSSTRtree *tree,
1252  const GEOSGeometry *g,
1253  GEOSQueryCallback callback,
1254  void *userdata);
1255 
1257 extern const GEOSGeometry GEOS_DLL *GEOSSTRtree_nearest_r(
1258  GEOSContextHandle_t handle,
1259  GEOSSTRtree *tree,
1260  const GEOSGeometry* geom);
1261 
1263 extern const void GEOS_DLL *GEOSSTRtree_nearest_generic_r(
1264  GEOSContextHandle_t handle,
1265  GEOSSTRtree *tree,
1266  const void* item,
1267  const GEOSGeometry* itemEnvelope,
1268  GEOSDistanceCallback distancefn,
1269  void* userdata);
1270 
1272 extern void GEOS_DLL GEOSSTRtree_iterate_r(
1273  GEOSContextHandle_t handle,
1274  GEOSSTRtree *tree,
1275  GEOSQueryCallback callback,
1276  void *userdata);
1277 
1279 extern char GEOS_DLL GEOSSTRtree_remove_r(
1280  GEOSContextHandle_t handle,
1281  GEOSSTRtree *tree,
1282  const GEOSGeometry *g,
1283  void *item);
1284 
1286 extern void GEOS_DLL GEOSSTRtree_destroy_r(
1287  GEOSContextHandle_t handle,
1288  GEOSSTRtree *tree);
1289 
1290 
1291 /* ========= Unary predicate ========= */
1292 
1294 extern char GEOS_DLL GEOSisEmpty_r(
1295  GEOSContextHandle_t handle,
1296  const GEOSGeometry* g);
1297 
1299 extern char GEOS_DLL GEOSisSimple_r(
1300  GEOSContextHandle_t handle,
1301  const GEOSGeometry* g);
1302 
1304 extern char GEOS_DLL GEOSisRing_r(
1305  GEOSContextHandle_t handle,
1306  const GEOSGeometry* g);
1307 
1309 extern char GEOS_DLL GEOSHasZ_r(
1310  GEOSContextHandle_t handle,
1311  const GEOSGeometry* g);
1312 
1314 extern char GEOS_DLL GEOSHasM_r(
1315  GEOSContextHandle_t handle,
1316  const GEOSGeometry* g);
1317 
1319 extern char GEOS_DLL GEOSisClosed_r(
1320  GEOSContextHandle_t handle,
1321  const GEOSGeometry *g);
1322 
1323 /* ========== Dimensionally Extended 9 Intersection Model ========== */
1324 
1340 };
1341 
1343 extern char GEOS_DLL GEOSRelatePattern_r(
1344  GEOSContextHandle_t handle,
1345  const GEOSGeometry* g1,
1346  const GEOSGeometry* g2,
1347  const char *pat);
1348 
1350 extern char GEOS_DLL *GEOSRelate_r(
1351  GEOSContextHandle_t handle,
1352  const GEOSGeometry* g1,
1353  const GEOSGeometry* g2);
1354 
1356 extern char GEOS_DLL GEOSRelatePatternMatch_r(
1357  GEOSContextHandle_t handle,
1358  const char *mat,
1359  const char *pat);
1360 
1362 extern char GEOS_DLL *GEOSRelateBoundaryNodeRule_r(
1363  GEOSContextHandle_t handle,
1364  const GEOSGeometry* g1,
1365  const GEOSGeometry* g2,
1366  int bnr);
1367 
1368 /* ========= Validity checking ========= */
1369 
1372 {
1375 };
1376 
1378 extern char GEOS_DLL GEOSisValid_r(
1379  GEOSContextHandle_t handle,
1380  const GEOSGeometry* g);
1381 
1383 extern char GEOS_DLL *GEOSisValidReason_r(
1384  GEOSContextHandle_t handle,
1385  const GEOSGeometry* g);
1386 
1388 extern char GEOS_DLL GEOSisValidDetail_r(
1389  GEOSContextHandle_t handle,
1390  const GEOSGeometry* g,
1391  int flags,
1392  char** reason,
1393  GEOSGeometry** location);
1394 
1395 /* ========== Make Valid ========== */
1396 
1412 };
1413 
1416  GEOSContextHandle_t extHandle);
1417 
1419 extern void GEOS_DLL GEOSMakeValidParams_destroy_r(
1420  GEOSContextHandle_t handle,
1421  GEOSMakeValidParams* parms);
1422 
1425  GEOSContextHandle_t handle,
1427  int style);
1428 
1431  GEOSContextHandle_t handle,
1433  enum GEOSMakeValidMethods method);
1434 
1437  GEOSContextHandle_t handle,
1438  const GEOSGeometry* g);
1439 
1442  GEOSContextHandle_t handle,
1443  const GEOSGeometry* g,
1444  const GEOSMakeValidParams* makeValidParams);
1445 
1448  GEOSContextHandle_t handle,
1449  const GEOSGeometry* g,
1450  double tolerance);
1451 
1452 /* ========== Geometry info ========== */
1453 
1455 /* Return NULL on exception, result must be freed by caller. */
1456 extern char GEOS_DLL *GEOSGeomType_r(
1457  GEOSContextHandle_t handle,
1458  const GEOSGeometry* g);
1459 
1461 extern int GEOS_DLL GEOSGeomTypeId_r(
1462  GEOSContextHandle_t handle,
1463  const GEOSGeometry* g);
1464 
1466 extern int GEOS_DLL GEOSGetSRID_r(
1467  GEOSContextHandle_t handle,
1468  const GEOSGeometry* g);
1469 
1471 extern void GEOS_DLL GEOSSetSRID_r(
1472  GEOSContextHandle_t handle,
1473  GEOSGeometry* g, int SRID);
1474 
1476 extern void GEOS_DLL *GEOSGeom_getUserData_r(
1477  GEOSContextHandle_t handle,
1478  const GEOSGeometry* g);
1479 
1481 extern void GEOS_DLL GEOSGeom_setUserData_r(
1482  GEOSContextHandle_t handle,
1483  GEOSGeometry* g,
1484  void* userData);
1485 
1487 extern int GEOS_DLL GEOSGetNumGeometries_r(
1488  GEOSContextHandle_t handle,
1489  const GEOSGeometry* g);
1490 
1492 extern const GEOSGeometry GEOS_DLL *GEOSGetGeometryN_r(
1493  GEOSContextHandle_t handle,
1494  const GEOSGeometry* g, int n);
1495 
1497 extern int GEOS_DLL GEOSNormalize_r(
1498  GEOSContextHandle_t handle,
1499  GEOSGeometry* g);
1500 
1512 };
1513 
1516  GEOSContextHandle_t handle,
1517  const GEOSGeometry *g,
1518  double gridSize,
1519  int flags);
1520 
1522 extern double GEOS_DLL GEOSGeom_getPrecision_r(
1523  GEOSContextHandle_t handle,
1524  const GEOSGeometry *g);
1525 
1527 extern int GEOS_DLL GEOSGetNumInteriorRings_r(
1528  GEOSContextHandle_t handle,
1529  const GEOSGeometry* g);
1530 
1532 extern int GEOS_DLL GEOSGeomGetNumPoints_r(
1533  GEOSContextHandle_t handle,
1534  const GEOSGeometry* g);
1535 
1537 extern int GEOS_DLL GEOSGeomGetX_r(
1538  GEOSContextHandle_t handle,
1539  const GEOSGeometry *g,
1540  double *x);
1541 
1543 extern int GEOS_DLL GEOSGeomGetY_r(
1544  GEOSContextHandle_t handle,
1545  const GEOSGeometry *g,
1546  double *y);
1547 
1549 extern int GEOS_DLL GEOSGeomGetZ_r(
1550  GEOSContextHandle_t handle,
1551  const GEOSGeometry *g,
1552  double *z);
1553 
1555 extern const GEOSGeometry GEOS_DLL *GEOSGetInteriorRingN_r(
1556  GEOSContextHandle_t handle,
1557  const GEOSGeometry* g, int n);
1558 
1560 extern const GEOSGeometry GEOS_DLL *GEOSGetExteriorRing_r(
1561  GEOSContextHandle_t handle,
1562  const GEOSGeometry* g);
1563 
1565 extern int GEOS_DLL GEOSGetNumCoordinates_r(
1566  GEOSContextHandle_t handle,
1567  const GEOSGeometry* g);
1568 
1571  GEOSContextHandle_t handle,
1572  const GEOSGeometry* g);
1573 
1575 extern int GEOS_DLL GEOSGeom_getDimensions_r(
1576  GEOSContextHandle_t handle,
1577  const GEOSGeometry* g);
1578 
1581  GEOSContextHandle_t handle,
1582  const GEOSGeometry* g);
1583 
1585 extern int GEOS_DLL GEOSGeom_getXMin_r(
1586  GEOSContextHandle_t handle,
1587  const GEOSGeometry* g,
1588  double* value);
1589 
1591 extern int GEOS_DLL GEOSGeom_getYMin_r(
1592  GEOSContextHandle_t handle,
1593  const GEOSGeometry* g,
1594  double* value);
1595 
1597 extern int GEOS_DLL GEOSGeom_getXMax_r(
1598  GEOSContextHandle_t handle,
1599  const GEOSGeometry* g,
1600  double* value);
1601 
1603 extern int GEOS_DLL GEOSGeom_getYMax_r(
1604  GEOSContextHandle_t handle,
1605  const GEOSGeometry* g,
1606  double* value);
1607 
1609 extern int GEOS_DLL GEOSGeom_getExtent_r(
1610  GEOSContextHandle_t handle,
1611  const GEOSGeometry* g,
1612  double* xmin,
1613  double* ymin,
1614  double* xmax,
1615  double* ymax);
1616 
1619  GEOSContextHandle_t handle,
1620  const GEOSGeometry *g,
1621  int n);
1622 
1625  GEOSContextHandle_t handle,
1626  const GEOSGeometry *g);
1627 
1630  GEOSContextHandle_t handle,
1631  const GEOSGeometry *g);
1632 
1633 /* ========= Misc functions ========= */
1634 
1636 extern int GEOS_DLL GEOSArea_r(
1637  GEOSContextHandle_t handle,
1638  const GEOSGeometry* g,
1639  double *area);
1640 
1642 extern int GEOS_DLL GEOSLength_r(
1643  GEOSContextHandle_t handle,
1644  const GEOSGeometry* g,
1645  double *length);
1646 
1648 extern int GEOS_DLL GEOSDistance_r(
1649  GEOSContextHandle_t handle,
1650  const GEOSGeometry* g1,
1651  const GEOSGeometry* g2,
1652  double *dist);
1653 
1655 extern char GEOS_DLL GEOSDistanceWithin_r(
1656  GEOSContextHandle_t handle,
1657  const GEOSGeometry* g1,
1658  const GEOSGeometry* g2,
1659  double dist);
1660 
1662 extern int GEOS_DLL GEOSDistanceIndexed_r(
1663  GEOSContextHandle_t handle,
1664  const GEOSGeometry* g1,
1665  const GEOSGeometry* g2,
1666  double *dist);
1667 
1669 extern int GEOS_DLL GEOSHausdorffDistance_r(
1670  GEOSContextHandle_t handle,
1671  const GEOSGeometry *g1,
1672  const GEOSGeometry *g2,
1673  double *dist);
1674 
1677  GEOSContextHandle_t handle,
1678  const GEOSGeometry *g1,
1679  const GEOSGeometry *g2,
1680  double densifyFrac, double *dist);
1681 
1683 extern int GEOS_DLL GEOSFrechetDistance_r(
1684  GEOSContextHandle_t handle,
1685  const GEOSGeometry *g1,
1686  const GEOSGeometry *g2,
1687  double *dist);
1688 
1690 extern int GEOS_DLL GEOSFrechetDistanceDensify_r(
1691  GEOSContextHandle_t handle,
1692  const GEOSGeometry *g1,
1693  const GEOSGeometry *g2,
1694  double densifyFrac,
1695  double *dist);
1696 
1697 
1699 extern int GEOS_DLL GEOSHilbertCode_r(
1700  GEOSContextHandle_t handle,
1701  const GEOSGeometry *geom,
1702  const GEOSGeometry* extent,
1703  unsigned int level,
1704  unsigned int *code
1705 );
1706 
1708 extern int GEOS_DLL GEOSGeomGetLength_r(
1709  GEOSContextHandle_t handle,
1710  const GEOSGeometry *g,
1711  double *length);
1712 
1715  GEOSContextHandle_t handle,
1716  const GEOSGeometry* g1,
1717  const GEOSGeometry* g2);
1718 
1721  GEOSContextHandle_t handle,
1722  const GEOSGeometry* g,
1723  GEOSTransformXYCallback callback,
1724  void* userdata);
1725 
1726 /* ========= Algorithms ========= */
1727 
1729 extern int GEOS_DLL GEOSOrientationIndex_r(
1730  GEOSContextHandle_t handle,
1731  double Ax, double Ay,
1732  double Bx, double By,
1733  double Px, double Py);
1734 
1735 
1736 /* ========== Reader and Writer APIs ========== */
1737 
1738 #ifndef GEOSWKTReader
1739 
1745 typedef struct GEOSWKTReader_t GEOSWKTReader;
1746 
1752 typedef struct GEOSWKTWriter_t GEOSWKTWriter;
1753 
1759 typedef struct GEOSWKBReader_t GEOSWKBReader;
1760 
1766 typedef struct GEOSWKBWriter_t GEOSWKBWriter;
1767 
1773 typedef struct GEOSGeoJSONReader_t GEOSGeoJSONReader;
1774 
1780 typedef struct GEOSGeoJSONWriter_t GEOSGeoJSONWriter;
1781 
1782 #endif
1783 
1784 /* ========== WKT Reader ========== */
1785 
1788  GEOSContextHandle_t handle);
1789 
1791 extern void GEOS_DLL GEOSWKTReader_destroy_r(GEOSContextHandle_t handle,
1792  GEOSWKTReader* reader);
1793 
1796  GEOSContextHandle_t handle,
1797  GEOSWKTReader* reader,
1798  const char *wkt);
1799 
1801 extern void GEOS_DLL GEOSWKTReader_setFixStructure_r(
1802  GEOSContextHandle_t handle,
1803  GEOSWKTReader *reader,
1804  char doFix);
1805 
1806 /* ========== WKT Writer ========== */
1807 
1810  GEOSContextHandle_t handle);
1811 
1813 extern void GEOS_DLL GEOSWKTWriter_destroy_r(
1814  GEOSContextHandle_t handle,
1815  GEOSWKTWriter* writer);
1816 
1818 extern char GEOS_DLL *GEOSWKTWriter_write_r(
1819  GEOSContextHandle_t handle,
1820  GEOSWKTWriter* writer,
1821  const GEOSGeometry* g);
1822 
1824 extern void GEOS_DLL GEOSWKTWriter_setTrim_r(
1825  GEOSContextHandle_t handle,
1826  GEOSWKTWriter *writer,
1827  char trim);
1828 
1831  GEOSContextHandle_t handle,
1832  GEOSWKTWriter *writer,
1833  int precision);
1834 
1837  GEOSContextHandle_t handle,
1838  GEOSWKTWriter *writer,
1839  int dim);
1840 
1843  GEOSContextHandle_t handle,
1844  GEOSWKTWriter *writer);
1845 
1847 extern void GEOS_DLL GEOSWKTWriter_setOld3D_r(
1848  GEOSContextHandle_t handle,
1849  GEOSWKTWriter *writer,
1850  int useOld3D);
1851 
1852 /* ========== WKB Reader ========== */
1853 
1856  GEOSContextHandle_t handle);
1857 
1859 extern void GEOS_DLL GEOSWKBReader_destroy_r(
1860  GEOSContextHandle_t handle,
1861  GEOSWKBReader* reader);
1862 
1864 extern void GEOS_DLL GEOSWKBReader_setFixStructure_r(
1865  GEOSContextHandle_t handle,
1866  GEOSWKBReader *reader,
1867  char doFix);
1868 
1871  GEOSContextHandle_t handle,
1872  GEOSWKBReader* reader,
1873  const unsigned char *wkb,
1874  size_t size);
1875 
1878  GEOSContextHandle_t handle,
1879  GEOSWKBReader* reader,
1880  const unsigned char *hex,
1881  size_t size);
1882 
1883 
1884 /* ========== WKB Writer ========== */
1885 
1888  GEOSContextHandle_t handle);
1889 
1891 extern void GEOS_DLL GEOSWKBWriter_destroy_r(
1892  GEOSContextHandle_t handle,
1893  GEOSWKBWriter* writer);
1894 
1896 extern unsigned char GEOS_DLL *GEOSWKBWriter_write_r(
1897  GEOSContextHandle_t handle,
1898  GEOSWKBWriter* writer,
1899  const GEOSGeometry* g,
1900  size_t *size);
1901 
1903 extern unsigned char GEOS_DLL *GEOSWKBWriter_writeHEX_r(
1904  GEOSContextHandle_t handle,
1905  GEOSWKBWriter* writer,
1906  const GEOSGeometry* g,
1907  size_t *size);
1908 
1911  GEOSContextHandle_t handle,
1912  const GEOSWKBWriter* writer);
1913 
1916  GEOSContextHandle_t handle,
1917  GEOSWKBWriter* writer, int newDimension);
1918 
1920 extern int GEOS_DLL GEOSWKBWriter_getByteOrder_r(
1921  GEOSContextHandle_t handle,
1922  const GEOSWKBWriter* writer);
1923 
1925 extern void GEOS_DLL GEOSWKBWriter_setByteOrder_r(
1926  GEOSContextHandle_t handle,
1927  GEOSWKBWriter* writer,
1928  int byteOrder);
1929 
1931 extern int GEOS_DLL GEOSWKBWriter_getFlavor_r(
1932  GEOSContextHandle_t handle,
1933  const GEOSWKBWriter* writer);
1934 
1936 extern void GEOS_DLL GEOSWKBWriter_setFlavor_r(
1937  GEOSContextHandle_t handle,
1938  GEOSWKBWriter* writer,
1939  int flavor);
1940 
1942 extern char GEOS_DLL GEOSWKBWriter_getIncludeSRID_r(
1943  GEOSContextHandle_t handle,
1944  const GEOSWKBWriter* writer);
1945 
1947 extern void GEOS_DLL GEOSWKBWriter_setIncludeSRID_r(
1948  GEOSContextHandle_t handle,
1949  GEOSWKBWriter* writer, const char writeSRID);
1950 
1951 /* ========== GeoJSON Reader ========== */
1952 
1955  GEOSContextHandle_t handle);
1956 
1959  GEOSGeoJSONReader* reader);
1960 
1963  GEOSContextHandle_t handle,
1964  GEOSGeoJSONReader* reader,
1965  const char *geojson);
1966 
1967 /* ========== GeoJSON Writer ========== */
1968 
1971  GEOSContextHandle_t handle);
1972 
1975  GEOSGeoJSONWriter* writer);
1976 
1979  GEOSContextHandle_t handle,
1980  GEOSGeoJSONWriter* writer,
1981  const GEOSGeometry* g,
1982  int indent);
1983 
1985 extern void GEOS_DLL GEOSFree_r(
1986  GEOSContextHandle_t handle,
1987  void *buffer);
1988 
1995 extern const char GEOS_DLL *GEOSversion(void);
1996 
1997 /*
1998 * External code to GEOS can define GEOS_USE_ONLY_R_API
1999 * to strip the non-reentrant API functions from this header,
2000 * leaving only the "_r" compatible variants.
2001 */
2002 #ifndef GEOS_USE_ONLY_R_API
2003 
2004 /* ========== Initialization, cleanup ================================= */
2010 
2022 extern void GEOS_DLL initGEOS(
2023  GEOSMessageHandler notice_function,
2024  GEOSMessageHandler error_function);
2025 
2030 extern void GEOS_DLL finishGEOS(void);
2031 
2038 extern void GEOS_DLL GEOSFree(void *buffer);
2039 
2041 
2042 /* ========= Coordinate Sequence functions ========= */
2048 
2055 extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_create(unsigned int size, unsigned int dims);
2056 
2067 extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_copyFromBuffer(const double* buf, unsigned int size, int hasZ, int hasM);
2068 
2080 extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_copyFromArrays(const double* x, const double* y, const double* z, const double* m, unsigned int size);
2081 
2092 extern int GEOS_DLL GEOSCoordSeq_copyToBuffer(const GEOSCoordSequence* s, double* buf, int hasZ, int hasM);
2093 
2105 extern int GEOS_DLL GEOSCoordSeq_copyToArrays(const GEOSCoordSequence* s, double* x, double* y, double* z, double* m);
2106 
2113 
2118 extern void GEOS_DLL GEOSCoordSeq_destroy(GEOSCoordSequence* s);
2119 
2127 extern int GEOS_DLL GEOSCoordSeq_setX(GEOSCoordSequence* s,
2128  unsigned int idx, double val);
2136 extern int GEOS_DLL GEOSCoordSeq_setY(GEOSCoordSequence* s,
2137  unsigned int idx, double val);
2145 extern int GEOS_DLL GEOSCoordSeq_setZ(GEOSCoordSequence* s,
2146  unsigned int idx, double val);
2157 extern int GEOS_DLL GEOSCoordSeq_setXY(GEOSCoordSequence* s,
2158  unsigned int idx, double x, double y);
2171  unsigned int idx, double x, double y, double z);
2181  unsigned int idx, unsigned int dim, double val);
2182 
2190 extern int GEOS_DLL GEOSCoordSeq_getX(const GEOSCoordSequence* s,
2191  unsigned int idx, double *val);
2192 
2200 extern int GEOS_DLL GEOSCoordSeq_getY(const GEOSCoordSequence* s,
2201  unsigned int idx, double *val);
2209 extern int GEOS_DLL GEOSCoordSeq_getZ(const GEOSCoordSequence* s,
2210  unsigned int idx, double *val);
2221 extern int GEOS_DLL GEOSCoordSeq_getXY(const GEOSCoordSequence* s,
2222  unsigned int idx, double *x, double *y);
2234 extern int GEOS_DLL GEOSCoordSeq_getXYZ(const GEOSCoordSequence* s,
2235  unsigned int idx, double *x, double *y, double *z);
2244 extern int GEOS_DLL GEOSCoordSeq_getOrdinate(const GEOSCoordSequence* s,
2245  unsigned int idx, unsigned int dim, double *val);
2246 
2253 extern int GEOS_DLL GEOSCoordSeq_getSize(
2254  const GEOSCoordSequence* s,
2255  unsigned int *size);
2256 
2263 extern int GEOS_DLL GEOSCoordSeq_getDimensions(
2264  const GEOSCoordSequence* s,
2265  unsigned int *dims);
2266 
2277 extern int GEOS_DLL GEOSCoordSeq_isCCW(
2278  const GEOSCoordSequence* s,
2279  char* is_ccw);
2280 
2282 
2283 /* ========= Geometry Constructors ========= */
2289 
2297 
2307 extern GEOSGeometry GEOS_DLL *GEOSGeom_createPointFromXY(double x, double y);
2308 
2317 
2325 
2333 
2342 
2351 
2365  GEOSGeometry* shell,
2366  GEOSGeometry** holes,
2367  unsigned int nholes);
2368 
2382  int type,
2383  GEOSGeometry** geoms,
2384  unsigned int ngeoms);
2385 
2395 
2407  double xmin, double ymin,
2408  double xmax, double ymax);
2409 
2416 extern GEOSGeometry GEOS_DLL *GEOSGeom_clone(const GEOSGeometry* g);
2417 
2422 extern void GEOS_DLL GEOSGeom_destroy(GEOSGeometry* g);
2423 
2425 
2426 /* ========== Geometry info ========== */
2431 
2440 extern char GEOS_DLL *GEOSGeomType(const GEOSGeometry* g);
2441 
2447 extern int GEOS_DLL GEOSGeomTypeId(const GEOSGeometry* g);
2448 
2454 extern int GEOS_DLL GEOSGetSRID(const GEOSGeometry* g);
2455 
2466 extern void GEOS_DLL *GEOSGeom_getUserData(const GEOSGeometry* g);
2467 
2477 extern int GEOS_DLL GEOSGetNumGeometries(const GEOSGeometry* g);
2478 
2493 extern const GEOSGeometry GEOS_DLL *GEOSGetGeometryN(
2494  const GEOSGeometry* g,
2495  int n);
2496 
2506 extern double GEOS_DLL GEOSGeom_getPrecision(const GEOSGeometry *g);
2507 
2514 extern int GEOS_DLL GEOSGetNumInteriorRings(const GEOSGeometry* g);
2515 
2522 extern int GEOS_DLL GEOSGeomGetNumPoints(const GEOSGeometry* g);
2523 
2531 extern int GEOS_DLL GEOSGeomGetX(const GEOSGeometry *g, double *x);
2532 
2540 extern int GEOS_DLL GEOSGeomGetY(const GEOSGeometry *g, double *y);
2541 
2551 extern int GEOS_DLL GEOSGeomGetZ(const GEOSGeometry *g, double *z);
2552 
2561 extern const GEOSGeometry GEOS_DLL *GEOSGetInteriorRingN(
2562  const GEOSGeometry* g,
2563  int n);
2564 
2572 extern const GEOSGeometry GEOS_DLL *GEOSGetExteriorRing(
2573  const GEOSGeometry* g);
2574 
2581 extern int GEOS_DLL GEOSGetNumCoordinates(
2582  const GEOSGeometry* g);
2583 
2593  const GEOSGeometry* g);
2594 
2606 extern int GEOS_DLL GEOSGeom_getDimensions(
2607  const GEOSGeometry* g);
2608 
2621  const GEOSGeometry* g);
2622 
2631 extern int GEOS_DLL GEOSGeom_getXMin(const GEOSGeometry* g, double* value);
2632 
2641 extern int GEOS_DLL GEOSGeom_getYMin(const GEOSGeometry* g, double* value);
2642 
2651 extern int GEOS_DLL GEOSGeom_getXMax(const GEOSGeometry* g, double* value);
2652 
2661 extern int GEOS_DLL GEOSGeom_getYMax(const GEOSGeometry* g, double* value);
2662 
2676 extern int GEOS_DLL GEOSGeom_getExtent(
2677  const GEOSGeometry* g,
2678  double* xmin,
2679  double* ymin,
2680  double* xmax,
2681  double* ymax);
2682 
2691 extern GEOSGeometry GEOS_DLL *GEOSGeomGetPointN(const GEOSGeometry *g, int n);
2692 
2701 
2709 extern GEOSGeometry GEOS_DLL *GEOSGeomGetEndPoint(const GEOSGeometry *g);
2710 
2711 
2719 extern char GEOS_DLL GEOSisEmpty(const GEOSGeometry* g);
2720 
2728 extern char GEOS_DLL GEOSisRing(const GEOSGeometry* g);
2729 
2735 extern char GEOS_DLL GEOSHasZ(const GEOSGeometry* g);
2736 
2742 extern char GEOS_DLL GEOSHasM(const GEOSGeometry* g);
2743 
2751 extern char GEOS_DLL GEOSisClosed(const GEOSGeometry *g);
2752 
2754 
2755 /* ==================================================================================== */
2760 
2766 extern void GEOS_DLL GEOSSetSRID(GEOSGeometry* g, int SRID);
2767 
2775 extern void GEOS_DLL GEOSGeom_setUserData(GEOSGeometry* g, void* userData);
2776 
2795 extern int GEOS_DLL GEOSNormalize(GEOSGeometry* g);
2796 
2798 
2799 /* ========== Validity checking ============================================================ */
2805 
2812 extern char GEOS_DLL GEOSisSimple(const GEOSGeometry* g);
2813 
2826 extern char GEOS_DLL GEOSisValid(const GEOSGeometry* g);
2827 
2837 extern char GEOS_DLL *GEOSisValidReason(const GEOSGeometry *g);
2838 
2853 extern char GEOS_DLL GEOSisValidDetail(
2854  const GEOSGeometry* g,
2855  int flags,
2856  char** reason,
2857  GEOSGeometry** location);
2858 
2866 extern GEOSGeometry GEOS_DLL *GEOSMakeValid(
2867  const GEOSGeometry* g);
2868 
2883  const GEOSGeometry* g,
2884  const GEOSMakeValidParams *makeValidParams);
2885 
2893 
2900 
2907 extern int GEOS_DLL GEOSMakeValidParams_setMethod(
2909  enum GEOSMakeValidMethods method);
2910 
2921  int keepCollapsed);
2922 
2942 extern int GEOS_DLL GEOSMinimumClearance(const GEOSGeometry* g, double* d);
2943 
2956 
2975  const GEOSGeometry* g,
2976  double tolerance);
2977 
2979 
2980 /* ========= Metric functions ================================================== */
2985 
2992 extern int GEOS_DLL GEOSArea(
2993  const GEOSGeometry* g,
2994  double *area);
2995 
3002 extern int GEOS_DLL GEOSLength(
3003  const GEOSGeometry* g,
3004  double *length);
3005 
3014 extern int GEOS_DLL GEOSGeomGetLength(
3015  const GEOSGeometry *g,
3016  double *length);
3017 
3019 
3020 /* ========== Distance functions ================================================ */
3026 
3034 extern int GEOS_DLL GEOSDistance(
3035  const GEOSGeometry* g1,
3036  const GEOSGeometry* g2,
3037  double *dist);
3038 
3049 extern char GEOS_DLL GEOSDistanceWithin(
3050  const GEOSGeometry* g1,
3051  const GEOSGeometry* g2,
3052  double dist);
3053 
3067 extern int GEOS_DLL GEOSDistanceIndexed(
3068  const GEOSGeometry* g1,
3069  const GEOSGeometry* g2,
3070  double *dist);
3071 
3084  const GEOSGeometry* g1,
3085  const GEOSGeometry* g2);
3086 
3097 extern int GEOS_DLL GEOSHausdorffDistance(
3098  const GEOSGeometry *g1,
3099  const GEOSGeometry *g2,
3100  double *dist);
3101 
3115 extern int GEOS_DLL GEOSHausdorffDistanceDensify(
3116  const GEOSGeometry *g1,
3117  const GEOSGeometry *g2,
3118  double densifyFrac,
3119  double *dist);
3120 
3134 extern int GEOS_DLL GEOSFrechetDistance(
3135  const GEOSGeometry *g1,
3136  const GEOSGeometry *g2,
3137  double *dist);
3138 
3153 extern int GEOS_DLL GEOSFrechetDistanceDensify(
3154  const GEOSGeometry *g1,
3155  const GEOSGeometry *g2,
3156  double densifyFrac,
3157  double *dist);
3158 
3160 
3161 /* ========== Linear referencing functions */
3167 
3176 extern double GEOS_DLL GEOSProject(const GEOSGeometry* line,
3177  const GEOSGeometry* point);
3178 
3189 extern GEOSGeometry GEOS_DLL *GEOSInterpolate(const GEOSGeometry* line,
3190  double d);
3191 
3201 extern double GEOS_DLL GEOSProjectNormalized(const GEOSGeometry* line,
3202  const GEOSGeometry* point);
3203 
3213  const GEOSGeometry *line,
3214  double proportion);
3215 
3217 
3218 /* ========== Overlay functions ========== */
3224 
3234 extern GEOSGeometry GEOS_DLL *GEOSIntersection(const GEOSGeometry* g1, const GEOSGeometry* g2);
3235 
3250 extern GEOSGeometry GEOS_DLL *GEOSIntersectionPrec(const GEOSGeometry* g1, const GEOSGeometry* g2, double gridSize);
3251 
3261 extern GEOSGeometry GEOS_DLL *GEOSDifference(
3262  const GEOSGeometry* ga,
3263  const GEOSGeometry* gb);
3264 
3281  const GEOSGeometry* ga,
3282  const GEOSGeometry* gb,
3283  double gridSize);
3284 
3296  const GEOSGeometry* ga,
3297  const GEOSGeometry* gb);
3298 
3316  const GEOSGeometry* ga,
3317  const GEOSGeometry* gb,
3318  double gridSize);
3319 
3329 extern GEOSGeometry GEOS_DLL *GEOSUnion(
3330  const GEOSGeometry* ga,
3331  const GEOSGeometry* gb);
3332 
3348 extern GEOSGeometry GEOS_DLL *GEOSUnionPrec(
3349  const GEOSGeometry* ga,
3350  const GEOSGeometry* gb,
3351  double gridSize);
3352 
3364 extern GEOSGeometry GEOS_DLL *GEOSUnaryUnion(const GEOSGeometry* g);
3365 
3382  const GEOSGeometry* g,
3383  double gridSize);
3384 
3395 extern GEOSGeometry GEOS_DLL *GEOSCoverageUnion(const GEOSGeometry *g);
3396 
3408 
3422 extern GEOSGeometry GEOS_DLL *GEOSClipByRect(
3423  const GEOSGeometry* g,
3424  double xmin, double ymin,
3425  double xmax, double ymax);
3426 
3446  const GEOSGeometry* g1,
3447  const GEOSGeometry* g2);
3448 
3450 
3451 /* ========== Buffer related functions ========== */
3456 
3467 extern GEOSGeometry GEOS_DLL *GEOSBuffer(const GEOSGeometry* g,
3468  double width, int quadsegs);
3469 
3477 
3482 extern void GEOS_DLL GEOSBufferParams_destroy(GEOSBufferParams* parms);
3483 
3490  GEOSBufferParams* p,
3491  int style);
3492 
3498 extern int GEOS_DLL GEOSBufferParams_setJoinStyle(
3499  GEOSBufferParams* p,
3500  int joinStyle);
3501 
3512  GEOSBufferParams* p,
3513  double mitreLimit);
3514 
3524  GEOSBufferParams* p,
3525  int quadSegs);
3526 
3536  GEOSBufferParams* p,
3537  int singleSided);
3538 
3550  const GEOSGeometry* g,
3551  const GEOSBufferParams* p,
3552  double width);
3553 
3566  const GEOSGeometry* g,
3567  double width,
3568  int quadsegs,
3569  int endCapStyle,
3570  int joinStyle,
3571  double mitreLimit);
3572 
3593 extern GEOSGeometry GEOS_DLL *GEOSOffsetCurve(const GEOSGeometry* g,
3594  double width, int quadsegs, int joinStyle, double mitreLimit);
3595 
3597 
3598 /* ========== Construction Operations ========== */
3603 
3611 extern GEOSGeometry GEOS_DLL *GEOSEnvelope(const GEOSGeometry* g);
3612 
3625 extern GEOSGeometry GEOS_DLL *GEOSBoundary(const GEOSGeometry* g);
3626 
3635 extern GEOSGeometry GEOS_DLL *GEOSConvexHull(const GEOSGeometry* g);
3636 
3668  const GEOSGeometry* g,
3669  double ratio,
3670  unsigned int allowHoles);
3671 
3702  const GEOSGeometry* g,
3703  double length,
3704  unsigned int allowHoles);
3705 
3743  const GEOSGeometry* g,
3744  double lengthRatio,
3745  unsigned int isTight,
3746  unsigned int isHolesAllowed);
3747 
3768  const GEOSGeometry* g,
3769  unsigned int isOuter,
3770  double vertexNumFraction);
3771 
3772 
3781 };
3782 
3805  const GEOSGeometry* g,
3806  unsigned int isOuter,
3807  unsigned int parameterMode,
3808  double parameter);
3809 
3824 
3848  const GEOSGeometry* g,
3849  double tolerance);
3850 
3874  const GEOSGeometry* obstacles,
3875  const GEOSGeometry* boundary,
3876  double tolerance);
3877 
3891 extern GEOSGeometry GEOS_DLL *GEOSMinimumWidth(const GEOSGeometry* g);
3892 
3893 
3901 extern GEOSGeometry GEOS_DLL *GEOSPointOnSurface(const GEOSGeometry* g);
3902 
3910 extern GEOSGeometry GEOS_DLL *GEOSGetCentroid(const GEOSGeometry* g);
3911 
3925  const GEOSGeometry* g,
3926  double* radius,
3927  GEOSGeometry** center);
3928 
3941  const GEOSGeometry *g,
3942  double tolerance,
3943  int onlyEdges);
3944 
3957  const GEOSGeometry *g);
3958 
3961 {
3968 };
3969 
3991  const GEOSGeometry *g,
3992  const GEOSGeometry *env,
3993  double tolerance,
3994  int flags);
3995 
3997 
3998 /* ============================================================== */
4003 
4012 extern GEOSGeometry GEOS_DLL *GEOSNode(const GEOSGeometry* g);
4013 
4054 extern GEOSGeometry GEOS_DLL *GEOSPolygonize(
4055  const GEOSGeometry * const geoms[],
4056  unsigned int ngeoms);
4057 
4071  const GEOSGeometry * const geoms[],
4072  unsigned int ngeoms);
4073 
4086  const GEOSGeometry * const geoms[],
4087  unsigned int ngeoms);
4088 
4104  const GEOSGeometry* input,
4105  GEOSGeometry** cuts,
4106  GEOSGeometry** dangles,
4107  GEOSGeometry** invalid);
4108 
4120 extern GEOSGeometry GEOS_DLL *GEOSBuildArea(const GEOSGeometry* g);
4121 
4123 
4124 /* ============================================================== */
4129 
4143 extern GEOSGeometry GEOS_DLL *GEOSDensify(
4144  const GEOSGeometry* g,
4145  double tolerance);
4146 
4155 extern GEOSGeometry GEOS_DLL *GEOSLineMerge(const GEOSGeometry* g);
4156 
4169 
4182  const GEOSGeometry* g,
4183  double start_fraction,
4184  double end_fraction);
4185 
4196 extern GEOSGeometry GEOS_DLL *GEOSReverse(const GEOSGeometry* g);
4197 
4212 extern GEOSGeometry GEOS_DLL *GEOSSimplify(
4213  const GEOSGeometry* g,
4214  double tolerance);
4215 
4233  const GEOSGeometry* g,
4234  double tolerance);
4235 
4247  const GEOSGeometry* g);
4248 
4264 extern int GEOS_DLL GEOSHilbertCode(
4265  const GEOSGeometry *geom,
4266  const GEOSGeometry* extent,
4267  unsigned int level,
4268  unsigned int *code
4269 );
4270 
4286  const GEOSGeometry* g,
4287  GEOSTransformXYCallback callback,
4288  void* userdata);
4289 
4311 extern GEOSGeometry GEOS_DLL *GEOSSnap(
4312  const GEOSGeometry* input,
4313  const GEOSGeometry* snap_target,
4314  double tolerance);
4315 
4346  const GEOSGeometry *g,
4347  double gridSize,
4348  int flags);
4349 
4351 
4352 /* ============================================================== */
4357 
4365 extern char GEOS_DLL GEOSDisjoint(const GEOSGeometry* g1, const GEOSGeometry* g2);
4366 
4375 extern char GEOS_DLL GEOSTouches(const GEOSGeometry* g1, const GEOSGeometry* g2);
4376 
4384 extern char GEOS_DLL GEOSIntersects(const GEOSGeometry* g1, const GEOSGeometry* g2);
4385 
4394 extern char GEOS_DLL GEOSCrosses(const GEOSGeometry* g1, const GEOSGeometry* g2);
4395 
4404 extern char GEOS_DLL GEOSWithin(const GEOSGeometry* g1, const GEOSGeometry* g2);
4405 
4413 extern char GEOS_DLL GEOSContains(const GEOSGeometry* g1, const GEOSGeometry* g2);
4414 
4423 extern char GEOS_DLL GEOSOverlaps(const GEOSGeometry* g1, const GEOSGeometry* g2);
4424 
4432 extern char GEOS_DLL GEOSEquals(const GEOSGeometry* g1, const GEOSGeometry* g2);
4433 
4444 extern char GEOS_DLL GEOSCovers(const GEOSGeometry* g1, const GEOSGeometry* g2);
4445 
4456 extern char GEOS_DLL GEOSCoveredBy(const GEOSGeometry* g1, const GEOSGeometry* g2);
4457 
4474 extern char GEOS_DLL GEOSEqualsExact(
4475  const GEOSGeometry* g1,
4476  const GEOSGeometry* g2,
4477  double tolerance);
4478 
4491 extern char GEOS_DLL GEOSEqualsIdentical(
4492  const GEOSGeometry* g1,
4493  const GEOSGeometry* g2);
4494 
4507 extern char GEOS_DLL GEOSRelatePattern(
4508  const GEOSGeometry* g1,
4509  const GEOSGeometry* g2,
4510  const char *pat);
4511 
4520 extern char GEOS_DLL *GEOSRelate(
4521  const GEOSGeometry* g1,
4522  const GEOSGeometry* g2);
4523 
4533 extern char GEOS_DLL GEOSRelatePatternMatch(
4534  const char *mat,
4535  const char *pat);
4536 
4550 extern char GEOS_DLL *GEOSRelateBoundaryNodeRule(
4551  const GEOSGeometry* g1,
4552  const GEOSGeometry* g2,
4553  int bnr);
4554 
4556 
4557 /* ========== Prepared Geometry Binary predicates ========== */
4558 
4570 
4582 extern const GEOSPreparedGeometry GEOS_DLL *GEOSPrepare(const GEOSGeometry* g);
4583 
4590 extern void GEOS_DLL GEOSPreparedGeom_destroy(const GEOSPreparedGeometry* g);
4591 
4600 extern char GEOS_DLL GEOSPreparedContains(
4601  const GEOSPreparedGeometry* pg1,
4602  const GEOSGeometry* g2);
4603 
4615 extern char GEOS_DLL GEOSPreparedContainsXY(
4616  const GEOSPreparedGeometry* pg1,
4617  double x,
4618  double y);
4619 
4628 extern char GEOS_DLL GEOSPreparedContainsProperly(
4629  const GEOSPreparedGeometry* pg1,
4630  const GEOSGeometry* g2);
4631 
4640 extern char GEOS_DLL GEOSPreparedCoveredBy(
4641  const GEOSPreparedGeometry* pg1,
4642  const GEOSGeometry* g2);
4643 
4652 extern char GEOS_DLL GEOSPreparedCovers(
4653  const GEOSPreparedGeometry* pg1,
4654  const GEOSGeometry* g2);
4655 
4664 extern char GEOS_DLL GEOSPreparedCrosses(
4665  const GEOSPreparedGeometry* pg1,
4666  const GEOSGeometry* g2);
4667 
4676 extern char GEOS_DLL GEOSPreparedDisjoint(
4677  const GEOSPreparedGeometry* pg1,
4678  const GEOSGeometry* g2);
4679 
4688 extern char GEOS_DLL GEOSPreparedIntersects(
4689  const GEOSPreparedGeometry* pg1,
4690  const GEOSGeometry* g2);
4691 
4703 extern char GEOS_DLL GEOSPreparedIntersectsXY(
4704  const GEOSPreparedGeometry* pg1,
4705  double x,
4706  double y);
4707 
4716 extern char GEOS_DLL GEOSPreparedOverlaps(
4717  const GEOSPreparedGeometry* pg1,
4718  const GEOSGeometry* g2);
4719 
4728 extern char GEOS_DLL GEOSPreparedTouches(
4729  const GEOSPreparedGeometry* pg1,
4730  const GEOSGeometry* g2);
4731 
4740 extern char GEOS_DLL GEOSPreparedWithin(
4741  const GEOSPreparedGeometry* pg1,
4742  const GEOSGeometry* g2);
4743 
4757  const GEOSPreparedGeometry* pg1,
4758  const GEOSGeometry* g2);
4759 
4773 extern int GEOS_DLL GEOSPreparedDistance(
4774  const GEOSPreparedGeometry* pg1,
4775  const GEOSGeometry* g2,
4776  double *dist);
4777 
4792 extern char GEOS_DLL GEOSPreparedDistanceWithin(
4793  const GEOSPreparedGeometry* pg1,
4794  const GEOSGeometry* g2,
4795  double dist);
4796 
4798 
4799 /* ========== STRtree functions ========== */
4805 
4816 extern GEOSSTRtree GEOS_DLL *GEOSSTRtree_create(size_t nodeCapacity);
4817 
4829 extern int GEOS_DLL GEOSSTRtree_build(GEOSSTRtree *tree);
4830 
4841 extern void GEOS_DLL GEOSSTRtree_insert(
4842  GEOSSTRtree *tree,
4843  const GEOSGeometry *g,
4844  void *item);
4845 
4858 extern void GEOS_DLL GEOSSTRtree_query(
4859  GEOSSTRtree *tree,
4860  const GEOSGeometry *g,
4861  GEOSQueryCallback callback,
4862  void *userdata);
4863 
4878 extern const GEOSGeometry GEOS_DLL *GEOSSTRtree_nearest(
4879  GEOSSTRtree *tree,
4880  const GEOSGeometry* geom);
4881 
4902 extern const void GEOS_DLL *GEOSSTRtree_nearest_generic(
4903  GEOSSTRtree *tree,
4904  const void* item,
4905  const GEOSGeometry* itemEnvelope,
4906  GEOSDistanceCallback distancefn,
4907  void* userdata);
4908 
4917 extern void GEOS_DLL GEOSSTRtree_iterate(
4918  GEOSSTRtree *tree,
4919  GEOSQueryCallback callback,
4920  void *userdata);
4921 
4934 extern char GEOS_DLL GEOSSTRtree_remove(
4935  GEOSSTRtree *tree,
4936  const GEOSGeometry *g,
4937  void *item);
4938 
4945 extern void GEOS_DLL GEOSSTRtree_destroy(GEOSSTRtree *tree);
4946 
4948 
4949 /* ========== Algorithms ====================================================== */
4954 
4973 extern int GEOS_DLL GEOSSegmentIntersection(
4974  double ax0, double ay0,
4975  double ax1, double ay1,
4976  double bx0, double by0,
4977  double bx1, double by1,
4978  double* cx, double* cy);
4979 
4995 extern int GEOS_DLL GEOSOrientationIndex(
4996  double Ax, double Ay,
4997  double Bx, double By,
4998  double Px, double Py);
4999 
5001 
5002 /* ========= Reader and Writer APIs ========= */
5003 
5008 /* ========= WKT Reader ========= */
5009 
5014 extern GEOSWKTReader GEOS_DLL *GEOSWKTReader_create(void);
5015 
5020 extern void GEOS_DLL GEOSWKTReader_destroy(GEOSWKTReader* reader);
5021 
5030  GEOSWKTReader* reader,
5031  const char *wkt);
5032 
5041 extern void GEOS_DLL GEOSWKTReader_setFixStructure(
5042  GEOSWKTReader *reader,
5043  char doFix);
5044 
5045 /* ========= WKT Writer ========= */
5046 
5051 extern GEOSWKTWriter GEOS_DLL *GEOSWKTWriter_create(void);
5052 
5057 extern void GEOS_DLL GEOSWKTWriter_destroy(
5058  GEOSWKTWriter* writer);
5059 
5068 extern char GEOS_DLL *GEOSWKTWriter_write(
5069  GEOSWKTWriter* writer,
5070  const GEOSGeometry* g);
5071 
5080 extern void GEOS_DLL GEOSWKTWriter_setTrim(
5081  GEOSWKTWriter *writer,
5082  char trim);
5083 
5091  GEOSWKTWriter *writer,
5092  int precision);
5093 
5103  GEOSWKTWriter *writer,
5104  int dim);
5105 
5112 
5122 extern void GEOS_DLL GEOSWKTWriter_setOld3D(
5123  GEOSWKTWriter *writer,
5124  int useOld3D);
5126 
5127 /* ============================================================================== */
5132 
5133 /* ========== WKB Reader ========== */
5138 extern GEOSWKBReader GEOS_DLL *GEOSWKBReader_create(void);
5139 
5144 extern void GEOS_DLL GEOSWKBReader_destroy(
5145  GEOSWKBReader* reader);
5146 
5153 extern void GEOS_DLL GEOSWKBReader_setFixStructure(
5154  GEOSWKBReader *reader,
5155  char doFix);
5156 
5165  GEOSWKBReader* reader,
5166  const unsigned char *wkb,
5167  size_t size);
5168 
5177  GEOSWKBReader* reader,
5178  const unsigned char *hex,
5179  size_t size);
5180 
5181 /* ========== WKB Writer ========== */
5182 
5187 extern GEOSWKBWriter GEOS_DLL *GEOSWKBWriter_create(void);
5188 
5193 extern void GEOS_DLL GEOSWKBWriter_destroy(GEOSWKBWriter* writer);
5194 
5203 extern unsigned char GEOS_DLL *GEOSWKBWriter_write(
5204  GEOSWKBWriter* writer,
5205  const GEOSGeometry* g,
5206  size_t *size);
5207 
5216 extern unsigned char GEOS_DLL *GEOSWKBWriter_writeHEX(
5217  GEOSWKBWriter* writer,
5218  const GEOSGeometry* g,
5219  size_t *size);
5220 
5229  const GEOSWKBWriter* writer);
5230 
5238  GEOSWKBWriter* writer,
5239  int newDimension);
5240 
5249 extern int GEOS_DLL GEOSWKBWriter_getByteOrder(
5250  const GEOSWKBWriter* writer);
5251 
5258 extern void GEOS_DLL GEOSWKBWriter_setByteOrder(
5259  GEOSWKBWriter* writer,
5260  int byteOrder);
5261 
5276 extern int GEOS_DLL GEOSWKBWriter_getFlavor(
5277  const GEOSWKBWriter* writer);
5278 
5287 extern void GEOS_DLL GEOSWKBWriter_setFlavor(
5288  GEOSWKBWriter* writer,
5289  int flavor);
5290 
5295 extern char GEOS_DLL GEOSWKBWriter_getIncludeSRID(
5296  const GEOSWKBWriter* writer);
5297 
5304 extern void GEOS_DLL GEOSWKBWriter_setIncludeSRID(
5305  GEOSWKBWriter* writer,
5306  const char writeSRID);
5307 
5309 
5310 /* ============================================================================= */
5315 /* ========= GeoJSON Reader ========= */
5316 
5324 
5331 extern void GEOS_DLL GEOSGeoJSONReader_destroy(GEOSGeoJSONReader* reader);
5332 
5344  GEOSGeoJSONReader* reader,
5345  const char *geojson);
5346 
5347 /* ========= GeoJSON Writer ========= */
5348 
5356 
5363 extern void GEOS_DLL GEOSGeoJSONWriter_destroy(GEOSGeoJSONWriter* writer);
5364 
5375 extern char GEOS_DLL *GEOSGeoJSONWriter_writeGeometry(
5376  GEOSGeoJSONWriter* writer,
5377  const GEOSGeometry* g,
5378  int indent);
5379 
5381 
5382 #endif /* #ifndef GEOS_USE_ONLY_R_API */
5383 
5384 /* ====================================================================== */
5385 /* DEPRECATIONS */
5386 /* ====================================================================== */
5387 
5393 
5398  const GEOSGeometry* g,
5399  double width, int quadsegs,
5400  int joinStyle, double mitreLimit,
5401  int leftSide);
5402 
5407  GEOSContextHandle_t handle,
5408  const GEOSGeometry* g,
5409  double width, int quadsegs,
5410  int joinStyle, double mitreLimit,
5411  int leftSide);
5412 
5418  GEOSMessageHandler notice_function,
5419  GEOSMessageHandler error_function);
5420 
5424 extern void GEOS_DLL finishGEOS_r(GEOSContextHandle_t handle);
5425 
5430  GEOSContextHandle_t handle,
5431  const char *wkt);
5432 
5436 extern char GEOS_DLL *GEOSGeomToWKT_r(
5437  GEOSContextHandle_t handle,
5438  const GEOSGeometry* g);
5439 
5443 extern int GEOS_DLL GEOS_getWKBOutputDims_r(
5444  GEOSContextHandle_t handle);
5445 
5449 extern int GEOS_DLL GEOS_setWKBOutputDims_r(
5450  GEOSContextHandle_t handle,
5451  int newDims);
5452 
5456 extern int GEOS_DLL GEOS_getWKBByteOrder_r(
5457  GEOSContextHandle_t handle);
5458 
5462 extern int GEOS_DLL GEOS_setWKBByteOrder_r(
5463  GEOSContextHandle_t handle,
5464  int byteOrder);
5465 
5470  GEOSContextHandle_t handle,
5471  const unsigned char *wkb,
5472  size_t size);
5473 
5477 extern unsigned char GEOS_DLL *GEOSGeomToWKB_buf_r(
5478  GEOSContextHandle_t handle,
5479  const GEOSGeometry* g,
5480  size_t *size);
5481 
5486  GEOSContextHandle_t handle,
5487  const unsigned char *hex,
5488  size_t size);
5489 
5493 extern unsigned char GEOS_DLL *GEOSGeomToHEX_buf_r(
5494  GEOSContextHandle_t handle,
5495  const GEOSGeometry* g,
5496  size_t *size);
5497 
5501 extern GEOSGeometry GEOS_DLL *GEOSGeomFromWKT(const char *wkt);
5502 
5506 extern char GEOS_DLL *GEOSGeomToWKT(const GEOSGeometry* g);
5507 
5511 extern int GEOS_DLL GEOS_getWKBOutputDims(void);
5512 
5516 extern int GEOS_DLL GEOS_setWKBOutputDims(int newDims);
5517 
5521 extern int GEOS_DLL GEOS_getWKBByteOrder(void);
5522 
5526 extern int GEOS_DLL GEOS_setWKBByteOrder(int byteOrder);
5527 
5531 extern GEOSGeometry GEOS_DLL *GEOSGeomFromWKB_buf(const unsigned char *wkb, size_t size);
5532 
5536 extern unsigned char GEOS_DLL *GEOSGeomToWKB_buf(const GEOSGeometry* g, size_t *size);
5537 
5541 extern GEOSGeometry GEOS_DLL *GEOSGeomFromHEX_buf(const unsigned char *hex, size_t size);
5542 
5546 extern unsigned char GEOS_DLL *GEOSGeomToHEX_buf(const GEOSGeometry* g, size_t *size);
5547 
5551 extern GEOSGeometry GEOS_DLL *GEOSUnionCascaded(const GEOSGeometry* g);
5552 
5557  GEOSContextHandle_t handle,
5558  const GEOSGeometry* g);
5559 
5561 
5562 /* ====================================================================== */
5563 /* END DEPRECATIONS */
5564 /* ====================================================================== */
5565 
5566 
5567 #ifdef __cplusplus
5568 } // extern "C"
5569 #endif
5570 
5571 #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:1773
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:1759
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:579
@ GEOSBUF_CAP_SQUARE
Definition: geos_c.h:588
@ GEOSBUF_CAP_FLAT
Definition: geos_c.h:585
@ GEOSBUF_CAP_ROUND
Definition: geos_c.h:582
GEOSVoronoiFlags
Definition: geos_c.h:3961
@ GEOS_VORONOI_PRESERVE_ORDER
Definition: geos_c.h:3967
@ GEOS_VORONOI_ONLY_EDGES
Definition: geos_c.h:3963
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:1372
@ GEOSVALID_ALLOW_SELFTOUCHING_RING_FORMING_HOLE
Definition: geos_c.h:1374
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:1766
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:1752
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:1745
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:1329
@ GEOSRELATE_BNR_OGC
Definition: geos_c.h:1333
@ GEOSRELATE_BNR_MULTIVALENT_ENDPOINT
Definition: geos_c.h:1337
@ GEOSRELATE_BNR_ENDPOINT
Definition: geos_c.h:1335
@ GEOSRELATE_BNR_MOD2
Definition: geos_c.h:1331
@ GEOSRELATE_BNR_MONOVALENT_ENDPOINT
Definition: geos_c.h:1339
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:3776
@ GEOSHULL_PARAM_AREA_RATIO
Definition: geos_c.h:3780
@ GEOSHULL_PARAM_VERTEX_RATIO
Definition: geos_c.h:3778
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:595
@ GEOSBUF_JOIN_MITRE
Definition: geos_c.h:605
@ GEOSBUF_JOIN_ROUND
Definition: geos_c.h:600
@ GEOSBUF_JOIN_BEVEL
Definition: geos_c.h:610
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:1780
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:1505
@ GEOS_PREC_NO_TOPO
Definition: geos_c.h:1509
@ GEOS_PREC_KEEP_COLLAPSED
Definition: geos_c.h:1511
@ GEOS_PREC_VALID_OUTPUT
Definition: geos_c.h:1507
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:1402
@ GEOS_MAKE_VALID_LINEWORK
Definition: geos_c.h:1406
@ GEOS_MAKE_VALID_STRUCTURE
Definition: geos_c.h:1411
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