GEOS 3.15.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>
47using std::size_t;
48#endif
49
50#ifdef __cplusplus
51extern "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 15
65#endif
66#ifndef GEOS_VERSION_PATCH
67#define GEOS_VERSION_PATCH 0dev
68#endif
69#ifndef GEOS_VERSION
70#define GEOS_VERSION "3.15.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 21
78#define GEOS_CAPI_VERSION_PATCH 0
79#define GEOS_CAPI_VERSION "3.15.0dev-CAPI-1.21.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
95typedef struct GEOSContextHandle_HS *GEOSContextHandle_t;
96
105typedef void (*GEOSMessageHandler)(GEOS_PRINTF_FORMAT const char *fmt, ...)
106 GEOS_PRINTF_FORMAT_ATTR(1, 2);
107
118typedef 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
140typedef struct GEOSGeom_t GEOSGeometry;
141
147typedef struct GEOSPrepGeom_t GEOSPreparedGeometry;
148
155typedef struct GEOSCoordSeq_t GEOSCoordSequence;
156
162typedef struct GEOSSTRtree_t GEOSSTRtree;
163
169typedef struct GEOSBufParams_t GEOSBufferParams;
170
176typedef struct GEOSCoverageCleanParams_t GEOSCoverageCleanParams;
177
183typedef struct GEOSMakeValidParams_t GEOSMakeValidParams;
184
189typedef struct GEOSClusterInfo_t GEOSClusterInfo;
190
191#endif
192
195/*
196* These are compatibility definitions for source compatibility
197* with GEOS 2.X clients relying on that type.
198*/
199typedef GEOSGeometry* GEOSGeom;
200typedef GEOSCoordSequence* GEOSCoordSeq;
201
228 GEOS_CIRCULARSTRING,
229 GEOS_COMPOUNDCURVE,
230 GEOS_CURVEPOLYGON,
231 GEOS_MULTICURVE,
232 GEOS_MULTISURFACE,
233};
234
247
263
278
286typedef void (*GEOSQueryCallback)(void *item, void *userdata);
287
305typedef int (*GEOSDistanceCallback)(
306 const void* item1,
307 const void* item2,
308 double* distance,
309 void* userdata);
310
311
325 double* x,
326 double* y,
327 void* userdata);
328
329
344 double* x,
345 double* y,
346 double* z,
347 void* userdata);
348
349
350/* ========== Interruption ========== */
359typedef void (GEOSInterruptCallback)(void);
360
369typedef int (GEOSContextInterruptCallback)(void*);
370
383
397 GEOSContextHandle_t extHandle,
399 void* userData);
400
407extern void GEOS_DLL GEOS_interruptRequest(void);
408
413extern void GEOS_DLL GEOS_interruptThread(void);
414
419extern void GEOS_DLL GEOS_interruptCancel(void);
420
421/* ========== Initialization and Cleanup ========== */
422
431extern GEOSContextHandle_t GEOS_DLL GEOS_init_r(void);
432
440extern void GEOS_DLL GEOS_finish_r(GEOSContextHandle_t handle);
441
451 GEOSContextHandle_t extHandle,
453
465 GEOSContextHandle_t extHandle,
467
478 GEOSContextHandle_t extHandle,
480 void *userData);
481
494 GEOSContextHandle_t extHandle,
496 void *userData);
497
498/* ========== Coordinate Sequence functions ========== */
499
502 GEOSContextHandle_t handle,
503 unsigned int size,
504 unsigned int dims);
505
508 GEOSContextHandle_t handle,
509 unsigned int size,
510 int hasZ,
511 int hasM);
512
515 GEOSContextHandle_t handle,
516 const double* buf,
517 unsigned int size,
518 int hasZ,
519 int hasM);
520
523 GEOSContextHandle_t handle,
524 const double* x,
525 const double* y,
526 const double* z,
527 const double* m,
528 unsigned int size);
529
531extern int GEOS_DLL GEOSCoordSeq_copyToBuffer_r(
532 GEOSContextHandle_t handle,
533 const GEOSCoordSequence* s,
534 double* buf,
535 int hasZ,
536 int hasM);
537
539extern int GEOS_DLL GEOSCoordSeq_copyToArrays_r(
540 GEOSContextHandle_t handle,
541 const GEOSCoordSequence* s,
542 double* x,
543 double* y,
544 double* z,
545 double* m);
546
549 GEOSContextHandle_t handle,
550 const GEOSCoordSequence* s);
551
553extern void GEOS_DLL GEOSCoordSeq_destroy_r(
554 GEOSContextHandle_t handle,
556
558extern char GEOS_DLL GEOSCoordSeq_hasZ_r(
559 GEOSContextHandle_t handle,
561
563extern char GEOS_DLL GEOSCoordSeq_hasM_r(
564 GEOSContextHandle_t handle,
566
568extern int GEOS_DLL GEOSCoordSeq_setX_r(
569 GEOSContextHandle_t handle,
570 GEOSCoordSequence* s, unsigned int idx,
571 double val);
572
574extern int GEOS_DLL GEOSCoordSeq_setY_r(
575 GEOSContextHandle_t handle,
576 GEOSCoordSequence* s, unsigned int idx,
577 double val);
578
580extern int GEOS_DLL GEOSCoordSeq_setZ_r(
581 GEOSContextHandle_t handle,
582 GEOSCoordSequence* s, unsigned int idx,
583 double val);
584
586extern int GEOS_DLL GEOSCoordSeq_setM_r(
587 GEOSContextHandle_t handle,
588 GEOSCoordSequence* s, unsigned int idx,
589 double val);
590
592extern int GEOS_DLL GEOSCoordSeq_setXY_r(
593 GEOSContextHandle_t handle,
594 GEOSCoordSequence* s, unsigned int idx,
595 double x, double y);
596
598extern int GEOS_DLL GEOSCoordSeq_setXYZ_r(
599 GEOSContextHandle_t handle,
600 GEOSCoordSequence* s, unsigned int idx,
601 double x, double y, double z);
602
604extern int GEOS_DLL GEOSCoordSeq_setOrdinate_r(
605 GEOSContextHandle_t handle,
607 unsigned int idx,
608 unsigned int dim, double val);
609
611extern int GEOS_DLL GEOSCoordSeq_getX_r(
612 GEOSContextHandle_t handle,
613 const GEOSCoordSequence* s,
614 unsigned int idx, double *val);
615
617extern int GEOS_DLL GEOSCoordSeq_getY_r(
618 GEOSContextHandle_t handle,
619 const GEOSCoordSequence* s,
620 unsigned int idx, double *val);
621
623extern int GEOS_DLL GEOSCoordSeq_getZ_r(
624 GEOSContextHandle_t handle,
625 const GEOSCoordSequence* s,
626 unsigned int idx, double *val);
627
629extern int GEOS_DLL GEOSCoordSeq_getM_r(
630 GEOSContextHandle_t handle,
631 const GEOSCoordSequence* s,
632 unsigned int idx, double *val);
633
635extern int GEOS_DLL GEOSCoordSeq_getXY_r(
636 GEOSContextHandle_t handle,
637 const GEOSCoordSequence* s,
638 unsigned int idx,
639 double *x, double *y);
640
642extern int GEOS_DLL GEOSCoordSeq_getXYZ_r(
643 GEOSContextHandle_t handle,
644 const GEOSCoordSequence* s,
645 unsigned int idx,
646 double *x, double *y, double *z);
647
649extern int GEOS_DLL GEOSCoordSeq_getOrdinate_r(
650 GEOSContextHandle_t handle,
651 const GEOSCoordSequence* s,
652 unsigned int idx,
653 unsigned int dim, double *val);
654
656extern int GEOS_DLL GEOSCoordSeq_getSize_r(
657 GEOSContextHandle_t handle,
658 const GEOSCoordSequence* s,
659 unsigned int *size);
660
663 GEOSContextHandle_t handle,
664 const GEOSCoordSequence* s,
665 unsigned int *dims);
666
668extern int GEOS_DLL GEOSCoordSeq_isCCW_r(
669 GEOSContextHandle_t handle,
670 const GEOSCoordSequence* s,
671 char* is_ccw);
672
673/* ========= Linear referencing functions ========= */
674
676extern double GEOS_DLL GEOSProject_r(
677 GEOSContextHandle_t handle,
678 const GEOSGeometry *line,
679 const GEOSGeometry *point);
680
683 GEOSContextHandle_t handle,
684 const GEOSGeometry *line,
685 double d);
686
688extern double GEOS_DLL GEOSProjectNormalized_r(
689 GEOSContextHandle_t handle,
690 const GEOSGeometry *g,
691 const GEOSGeometry *p);
692
695 GEOSContextHandle_t handle,
696 const GEOSGeometry *g,
697 double d);
698
699/* ========== Buffer related functions ========== */
700
702extern GEOSGeometry GEOS_DLL *GEOSBuffer_r(
703 GEOSContextHandle_t handle,
704 const GEOSGeometry* g,
705 double width, int quadsegs);
706
722
744
747 GEOSContextHandle_t handle);
748
750extern void GEOS_DLL GEOSBufferParams_destroy_r(
751 GEOSContextHandle_t handle,
752 GEOSBufferParams* parms);
753
756 GEOSContextHandle_t handle,
758 int style);
759
762 GEOSContextHandle_t handle,
764 int joinStyle);
765
768 GEOSContextHandle_t handle,
770 double mitreLimit);
771
774 GEOSContextHandle_t handle,
776 int quadSegs);
777
780 GEOSContextHandle_t handle,
782 int singleSided);
783
786 GEOSContextHandle_t handle,
787 const GEOSGeometry* g,
788 const GEOSBufferParams* p,
789 double width);
790
793 GEOSContextHandle_t handle,
794 const GEOSGeometry* g,
795 double width, int quadsegs, int endCapStyle,
796 int joinStyle, double mitreLimit);
797
800 GEOSContextHandle_t handle,
801 const GEOSGeometry* g,
802 double tolerance);
803
806 GEOSContextHandle_t handle,
807 const GEOSGeometry* g, double width, int quadsegs,
808 int joinStyle, double mitreLimit);
809
810
811/* ========= Geometry Constructors ========= */
812
815 GEOSContextHandle_t handle,
817
820 GEOSContextHandle_t handle,
821 double x, double y);
822
825 GEOSContextHandle_t handle);
826
829 GEOSContextHandle_t handle,
831
834 GEOSContextHandle_t handle,
836
839 GEOSContextHandle_t handle);
840
843 GEOSContextHandle_t handle);
844
847 GEOSContextHandle_t handle,
848 GEOSGeometry* shell,
849 GEOSGeometry** holes,
850 unsigned int nholes);
851
854 GEOSContextHandle_t handle,
855 int type,
856 GEOSGeometry* *geoms,
857 unsigned int ngeoms);
858
861 GEOSContextHandle_t handle,
862 GEOSGeometry * collection,
863 unsigned int * ngeoms);
864
867 GEOSContextHandle_t handle, int type);
868
871 GEOSContextHandle_t handle,
872 double xmin, double ymin,
873 double xmax, double ymax);
874
877 GEOSContextHandle_t handle,
878 const GEOSGeometry* g);
879
882 GEOSContextHandle_t handle,
884
887 GEOSContextHandle_t handle);
888
891 GEOSContextHandle_t handle,
892 GEOSGeometry** curves,
893 unsigned int ncurves);
894
897 GEOSContextHandle_t handle);
898
901 GEOSContextHandle_t handle,
902 GEOSGeometry* shell,
903 GEOSGeometry** holes,
904 unsigned int nholes);
905
908 GEOSContextHandle_t handle);
909
910/* ========= Memory management ========= */
911
913extern void GEOS_DLL GEOSGeom_destroy_r(
914 GEOSContextHandle_t handle,
915 GEOSGeometry* g);
916
917/* ========= Coverages ========= */
918
920extern GEOSGeometry GEOS_DLL *
922 GEOSContextHandle_t handle,
923 const GEOSGeometry* g);
924
926extern int GEOS_DLL
928 GEOSContextHandle_t extHandle,
929 const GEOSGeometry* input,
930 double gapWidth,
931 GEOSGeometry** output);
932
934extern GEOSGeometry GEOS_DLL *
936 GEOSContextHandle_t extHandle,
937 const GEOSGeometry* input,
938 double tolerance,
939 int preserveBoundary);
940
942extern GEOSGeometry GEOS_DLL *
944 GEOSContextHandle_t handle,
945 const GEOSGeometry* input,
946 int edgetype);
947
949extern GEOSCoverageCleanParams GEOS_DLL *
951 GEOSContextHandle_t extHandle);
952
954extern void GEOS_DLL
956 GEOSContextHandle_t extHandle,
958
960extern int GEOS_DLL
962 GEOSContextHandle_t extHandle,
964 double snappingDistance);
965
967extern int GEOS_DLL
969 GEOSContextHandle_t extHandle,
971 double gapMaximumWidth);
972
974extern int GEOS_DLL
976 GEOSContextHandle_t extHandle,
978 int overlapMergeStrategy);
979
981extern GEOSGeometry GEOS_DLL *
983 GEOSContextHandle_t extHandle,
984 const GEOSGeometry* input,
985 const GEOSCoverageCleanParams* params);
986
988extern GEOSGeometry GEOS_DLL *
990 GEOSContextHandle_t extHandle,
991 const GEOSGeometry* input);
992
993/* ========= Topology Operations ========= */
994
997 GEOSContextHandle_t handle,
998 const GEOSGeometry* g);
999
1002 GEOSContextHandle_t handle,
1003 const GEOSGeometry* g1,
1004 const GEOSGeometry* g2);
1005
1008 GEOSContextHandle_t handle,
1009 const GEOSGeometry* g1,
1010 const GEOSGeometry* g2,
1011 double gridSize);
1012
1015 GEOSContextHandle_t handle,
1016 const GEOSGeometry* g);
1017
1020 GEOSContextHandle_t handle,
1021 const GEOSGeometry* g,
1022 double ratio,
1023 unsigned int allowHoles);
1024
1027 GEOSContextHandle_t handle,
1028 const GEOSGeometry* g,
1029 double ratio,
1030 unsigned int allowHoles);
1031
1034 GEOSContextHandle_t handle,
1035 const GEOSGeometry* g,
1036 unsigned int isOuter,
1037 double vertexNumFraction);
1038
1041 GEOSContextHandle_t handle,
1042 const GEOSGeometry* g,
1043 unsigned int isOuter,
1044 unsigned int parameterMode,
1045 double parameter);
1046
1049 GEOSContextHandle_t handle,
1050 const GEOSGeometry* g,
1051 double lengthRatio,
1052 unsigned int isTight,
1053 unsigned int isHolesAllowed);
1054
1057 GEOSContextHandle_t handle,
1058 const GEOSGeometry* g);
1059
1062 GEOSContextHandle_t handle,
1063 const GEOSGeometry* g,
1064 double tolerance);
1065
1068 GEOSContextHandle_t handle,
1069 const GEOSGeometry* g,
1070 const GEOSGeometry* boundary,
1071 double tolerance);
1072
1075 GEOSContextHandle_t handle,
1076 const GEOSGeometry* g);
1077
1080 GEOSContextHandle_t handle,
1081 const GEOSGeometry* g);
1082
1084extern int GEOS_DLL GEOSMinimumClearance_r(
1085 GEOSContextHandle_t handle,
1086 const GEOSGeometry* g,
1087 double* distance);
1088
1091 GEOSContextHandle_t handle,
1092 const GEOSGeometry* g1,
1093 const GEOSGeometry* g2);
1094
1097 GEOSContextHandle_t handle,
1098 const GEOSGeometry* g1,
1099 const GEOSGeometry* g2,
1100 double gridSize);
1101
1104 GEOSContextHandle_t handle,
1105 const GEOSGeometry* g1,
1106 const GEOSGeometry* g2);
1107
1110 GEOSContextHandle_t handle,
1111 const GEOSGeometry* g1,
1112 const GEOSGeometry* g2,
1113 double gridSize);
1114
1117 GEOSContextHandle_t handle,
1118 const GEOSGeometry* g);
1119
1121extern GEOSGeometry GEOS_DLL *GEOSUnion_r(
1122 GEOSContextHandle_t handle,
1123 const GEOSGeometry* g1,
1124 const GEOSGeometry* g2);
1125
1128 GEOSContextHandle_t handle,
1129 const GEOSGeometry* g1,
1130 const GEOSGeometry* g2,
1131 double gridSize);
1132
1135 GEOSContextHandle_t handle,
1136 const GEOSGeometry* g);
1137
1140 GEOSContextHandle_t handle,
1141 const GEOSGeometry* g,
1142 double gridSize);
1143
1146 GEOSContextHandle_t handle,
1147 const GEOSGeometry* g);
1148
1151 GEOSContextHandle_t handle,
1152 const GEOSGeometry* g);
1153
1156 GEOSContextHandle_t handle,
1157 const GEOSGeometry* g);
1158
1161 GEOSContextHandle_t handle,
1162 const GEOSGeometry* g,
1163 double* radius,
1164 GEOSGeometry** center);
1165
1167extern GEOSGeometry GEOS_DLL *GEOSNode_r(
1168 GEOSContextHandle_t handle,
1169 const GEOSGeometry* g);
1170
1172extern GEOSGeometry GEOS_DLL *GEOSSplit_r(
1173 GEOSContextHandle_t handle,
1174 const GEOSGeometry* g,
1175 const GEOSGeometry* edge);
1176
1179 GEOSContextHandle_t handle,
1180 const GEOSGeometry* g,
1181 double xmin, double ymin,
1182 double xmax, double ymax);
1183
1186 GEOSContextHandle_t handle,
1187 const GEOSGeometry* g,
1188 double xmin, double ymin,
1189 double xmax, double ymax,
1190 unsigned nx, unsigned ny,
1191 int includeExterior);
1192
1195 GEOSContextHandle_t handle,
1196 const GEOSGeometry* g,
1197 double xmin, double ymin,
1198 double xmax, double ymax,
1199 unsigned nx, unsigned ny,
1200 float* buf);
1201
1204 GEOSContextHandle_t handle,
1205 const GEOSGeometry *const geoms[],
1206 unsigned int ngeoms);
1207
1210 GEOSContextHandle_t handle,
1211 const GEOSGeometry *const geoms[],
1212 unsigned int ngems);
1213
1216 GEOSContextHandle_t handle,
1217 const GEOSGeometry * const geoms[],
1218 unsigned int ngeoms);
1219
1222 GEOSContextHandle_t handle,
1223 const GEOSGeometry* input,
1224 GEOSGeometry** cuts,
1225 GEOSGeometry** dangles,
1226 GEOSGeometry** invalidRings);
1227
1230 GEOSContextHandle_t handle,
1231 const GEOSGeometry* g);
1232
1235 GEOSContextHandle_t handle,
1236 const GEOSGeometry* g);
1237
1239extern size_t GEOS_DLL *GEOSMinimumSpanningTree_r(
1240 GEOSContextHandle_t handle,
1241 const GEOSGeometry * const geoms[],
1242 unsigned int ngeoms);
1243
1246 GEOSContextHandle_t handle,
1247 const GEOSGeometry* g);
1248
1251 GEOSContextHandle_t handle,
1252 const GEOSGeometry* g,
1253 double start_fraction,
1254 double end_fdraction);
1255
1258 GEOSContextHandle_t handle,
1259 const GEOSGeometry* g);
1260
1263 GEOSContextHandle_t handle,
1264 const GEOSGeometry* g,
1265 double tolerance);
1266
1269 GEOSContextHandle_t handle,
1270 const GEOSGeometry* g, double tolerance);
1271
1274 GEOSContextHandle_t handle,
1275 const GEOSGeometry* g);
1276
1279 GEOSContextHandle_t handle,
1280 const GEOSGeometry* g1,
1281 const GEOSGeometry* g2);
1282
1284extern GEOSGeometry GEOS_DLL *GEOSSnap_r(
1285 GEOSContextHandle_t handle,
1286 const GEOSGeometry* g1,
1287 const GEOSGeometry* g2,
1288 double tolerance);
1289
1292 GEOSContextHandle_t handle,
1293 const GEOSGeometry *g,
1294 double tolerance,
1295 int onlyEdges);
1296
1299 GEOSContextHandle_t handle,
1300 const GEOSGeometry *g);
1301
1304 GEOSContextHandle_t extHandle,
1305 const GEOSGeometry *g,
1306 const GEOSGeometry *env,
1307 double tolerance,
1308 int flags);
1309
1311extern int GEOS_DLL GEOSSegmentIntersection_r(
1312 GEOSContextHandle_t extHandle,
1313 double ax0, double ay0,
1314 double ax1, double ay1,
1315 double bx0, double by0,
1316 double bx1, double by1,
1317 double* cx, double* cy);
1318
1319/* ========= Binary predicates ========= */
1320
1322extern char GEOS_DLL GEOSDisjoint_r(
1323 GEOSContextHandle_t handle,
1324 const GEOSGeometry* g1,
1325 const GEOSGeometry* g2);
1326
1328extern char GEOS_DLL GEOSTouches_r(
1329 GEOSContextHandle_t handle,
1330 const GEOSGeometry* g1,
1331 const GEOSGeometry* g2);
1332
1334extern char GEOS_DLL GEOSIntersects_r(
1335 GEOSContextHandle_t handle,
1336 const GEOSGeometry* g1,
1337 const GEOSGeometry* g2);
1338
1340extern char GEOS_DLL GEOSCrosses_r(
1341 GEOSContextHandle_t handle,
1342 const GEOSGeometry* g1,
1343 const GEOSGeometry* g2);
1344
1346extern char GEOS_DLL GEOSWithin_r(
1347 GEOSContextHandle_t handle,
1348 const GEOSGeometry* g1,
1349 const GEOSGeometry* g2);
1350
1352extern char GEOS_DLL GEOSContains_r(
1353 GEOSContextHandle_t handle,
1354 const GEOSGeometry* g1,
1355 const GEOSGeometry* g2);
1356
1358extern char GEOS_DLL GEOSOverlaps_r(
1359 GEOSContextHandle_t handle,
1360 const GEOSGeometry* g1,
1361 const GEOSGeometry* g2);
1362
1364extern char GEOS_DLL GEOSEquals_r(
1365 GEOSContextHandle_t handle,
1366 const GEOSGeometry* g1,
1367 const GEOSGeometry* g2);
1368
1370extern char GEOS_DLL GEOSEqualsExact_r(
1371 GEOSContextHandle_t handle,
1372 const GEOSGeometry* g1,
1373 const GEOSGeometry* g2,
1374 double tolerance);
1375
1377extern char GEOS_DLL GEOSEqualsIdentical_r(
1378 GEOSContextHandle_t handle,
1379 const GEOSGeometry* g1,
1380 const GEOSGeometry* g2);
1381
1383extern char GEOS_DLL GEOSCovers_r(
1384 GEOSContextHandle_t handle,
1385 const GEOSGeometry* g1,
1386 const GEOSGeometry* g2);
1387
1389extern char GEOS_DLL GEOSCoveredBy_r(
1390 GEOSContextHandle_t handle,
1391 const GEOSGeometry* g1,
1392 const GEOSGeometry* g2);
1393
1394/* ========= Prepared Geometry Binary Predicates ========== */
1395
1398 GEOSContextHandle_t handle,
1399 const GEOSGeometry* g);
1400
1402extern void GEOS_DLL GEOSPreparedGeom_destroy_r(
1403 GEOSContextHandle_t handle,
1404 const GEOSPreparedGeometry* g);
1405
1407extern char GEOS_DLL GEOSPreparedContains_r(
1408 GEOSContextHandle_t handle,
1409 const GEOSPreparedGeometry* pg1,
1410 const GEOSGeometry* g2);
1411
1413extern char GEOS_DLL GEOSPreparedContainsXY_r(
1414 GEOSContextHandle_t handle,
1415 const GEOSPreparedGeometry* pg1,
1416 double x,
1417 double y);
1418
1421 GEOSContextHandle_t handle,
1422 const GEOSPreparedGeometry* pg1,
1423 const GEOSGeometry* g2);
1424
1426extern char GEOS_DLL GEOSPreparedCoveredBy_r(
1427 GEOSContextHandle_t handle,
1428 const GEOSPreparedGeometry* pg1,
1429 const GEOSGeometry* g2);
1430
1432extern char GEOS_DLL GEOSPreparedCovers_r(
1433 GEOSContextHandle_t handle,
1434 const GEOSPreparedGeometry* pg1,
1435 const GEOSGeometry* g2);
1436
1438extern char GEOS_DLL GEOSPreparedCrosses_r(
1439 GEOSContextHandle_t handle,
1440 const GEOSPreparedGeometry* pg1,
1441 const GEOSGeometry* g2);
1442
1444extern char GEOS_DLL GEOSPreparedDisjoint_r(
1445 GEOSContextHandle_t handle,
1446 const GEOSPreparedGeometry* pg1,
1447 const GEOSGeometry* g2);
1448
1450extern char GEOS_DLL GEOSPreparedIntersects_r(
1451 GEOSContextHandle_t handle,
1452 const GEOSPreparedGeometry* pg1,
1453 const GEOSGeometry* g2);
1454
1456extern char GEOS_DLL GEOSPreparedIntersectsXY_r(
1457 GEOSContextHandle_t handle,
1458 const GEOSPreparedGeometry* pg1,
1459 double x,
1460 double y);
1461
1463extern char GEOS_DLL GEOSPreparedOverlaps_r(
1464 GEOSContextHandle_t handle,
1465 const GEOSPreparedGeometry* pg1,
1466 const GEOSGeometry* g2);
1467
1469extern char GEOS_DLL GEOSPreparedTouches_r(
1470 GEOSContextHandle_t handle,
1471 const GEOSPreparedGeometry* pg1,
1472 const GEOSGeometry* g2);
1473
1475extern char GEOS_DLL GEOSPreparedWithin_r(
1476 GEOSContextHandle_t handle,
1477 const GEOSPreparedGeometry* pg1,
1478 const GEOSGeometry* g2);
1479
1481extern char GEOS_DLL * GEOSPreparedRelate_r(
1482 GEOSContextHandle_t handle,
1483 const GEOSPreparedGeometry* pg1,
1484 const GEOSGeometry* g2);
1485
1487extern char GEOS_DLL GEOSPreparedRelatePattern_r(
1488 GEOSContextHandle_t handle,
1489 const GEOSPreparedGeometry* pg1,
1490 const GEOSGeometry* g2,
1491 const char* im);
1492
1495 GEOSContextHandle_t handle,
1496 const GEOSPreparedGeometry* pg1,
1497 const GEOSGeometry* g2);
1498
1500extern int GEOS_DLL GEOSPreparedDistance_r(
1501 GEOSContextHandle_t handle,
1502 const GEOSPreparedGeometry* pg1,
1503 const GEOSGeometry* g2, double *dist);
1504
1506extern char GEOS_DLL GEOSPreparedDistanceWithin_r(
1507 GEOSContextHandle_t handle,
1508 const GEOSPreparedGeometry* pg1,
1509 const GEOSGeometry* g2, double dist);
1510
1511/* ========== STRtree ========== */
1512
1515 GEOSContextHandle_t handle,
1516 size_t nodeCapacity);
1517
1519extern int GEOS_DLL GEOSSTRtree_build_r(
1520 GEOSContextHandle_t handle,
1521 GEOSSTRtree *tree);
1522
1524extern void GEOS_DLL GEOSSTRtree_insert_r(
1525 GEOSContextHandle_t handle,
1526 GEOSSTRtree *tree,
1527 const GEOSGeometry *g,
1528 void *item);
1529
1531extern void GEOS_DLL GEOSSTRtree_query_r(
1532 GEOSContextHandle_t handle,
1533 GEOSSTRtree *tree,
1534 const GEOSGeometry *g,
1535 GEOSQueryCallback callback,
1536 void *userdata);
1537
1540 GEOSContextHandle_t handle,
1541 GEOSSTRtree *tree,
1542 const GEOSGeometry* geom);
1543
1545extern const void GEOS_DLL *GEOSSTRtree_nearest_generic_r(
1546 GEOSContextHandle_t handle,
1547 GEOSSTRtree *tree,
1548 const void* item,
1549 const GEOSGeometry* itemEnvelope,
1550 GEOSDistanceCallback distancefn,
1551 void* userdata);
1552
1554extern void GEOS_DLL GEOSSTRtree_iterate_r(
1555 GEOSContextHandle_t handle,
1556 GEOSSTRtree *tree,
1557 GEOSQueryCallback callback,
1558 void *userdata);
1559
1561extern char GEOS_DLL GEOSSTRtree_remove_r(
1562 GEOSContextHandle_t handle,
1563 GEOSSTRtree *tree,
1564 const GEOSGeometry *g,
1565 void *item);
1566
1568extern void GEOS_DLL GEOSSTRtree_destroy_r(
1569 GEOSContextHandle_t handle,
1570 GEOSSTRtree *tree);
1571
1572
1573/* ========= Unary predicate ========= */
1574
1576extern char GEOS_DLL GEOSisEmpty_r(
1577 GEOSContextHandle_t handle,
1578 const GEOSGeometry* g);
1579
1581extern char GEOS_DLL GEOSisSimple_r(
1582 GEOSContextHandle_t handle,
1583 const GEOSGeometry* g);
1584
1586extern char GEOS_DLL GEOSisRing_r(
1587 GEOSContextHandle_t handle,
1588 const GEOSGeometry* g);
1589
1591extern char GEOS_DLL GEOSHasZ_r(
1592 GEOSContextHandle_t handle,
1593 const GEOSGeometry* g);
1594
1596extern char GEOS_DLL GEOSHasM_r(
1597 GEOSContextHandle_t handle,
1598 const GEOSGeometry* g);
1599
1601extern char GEOS_DLL GEOSisClosed_r(
1602 GEOSContextHandle_t handle,
1603 const GEOSGeometry *g);
1604
1605/* ========== Dimensionally Extended 9 Intersection Model ========== */
1606
1623
1625extern char GEOS_DLL GEOSRelatePattern_r(
1626 GEOSContextHandle_t handle,
1627 const GEOSGeometry* g1,
1628 const GEOSGeometry* g2,
1629 const char *imPattern);
1630
1632extern char GEOS_DLL *GEOSRelate_r(
1633 GEOSContextHandle_t handle,
1634 const GEOSGeometry* g1,
1635 const GEOSGeometry* g2);
1636
1638extern char GEOS_DLL GEOSRelatePatternMatch_r(
1639 GEOSContextHandle_t handle,
1640 const char *intMatrix,
1641 const char *imPattern);
1642
1644extern char GEOS_DLL *GEOSRelateBoundaryNodeRule_r(
1645 GEOSContextHandle_t handle,
1646 const GEOSGeometry* g1,
1647 const GEOSGeometry* g2,
1648 int bnr);
1649
1650/* ========= Validity checking ========= */
1651
1658
1660extern char GEOS_DLL GEOSisValid_r(
1661 GEOSContextHandle_t handle,
1662 const GEOSGeometry* g);
1663
1665extern char GEOS_DLL *GEOSisValidReason_r(
1666 GEOSContextHandle_t handle,
1667 const GEOSGeometry* g);
1668
1670extern char GEOS_DLL GEOSisSimpleDetail_r(
1671 GEOSContextHandle_t handle,
1672 const GEOSGeometry* g,
1673 int findAllLocations,
1674 GEOSGeometry** location);
1675
1677extern char GEOS_DLL GEOSisValidDetail_r(
1678 GEOSContextHandle_t handle,
1679 const GEOSGeometry* g,
1680 int flags,
1681 char** reason,
1682 GEOSGeometry** location);
1683
1684/* ========== Make Valid ========== */
1685
1702
1705 GEOSContextHandle_t extHandle);
1706
1709 GEOSContextHandle_t handle,
1710 GEOSMakeValidParams* parms);
1711
1714 GEOSContextHandle_t handle,
1716 int style);
1717
1720 GEOSContextHandle_t handle,
1722 enum GEOSMakeValidMethods method);
1723
1726 GEOSContextHandle_t handle,
1727 const GEOSGeometry* g);
1728
1731 GEOSContextHandle_t handle,
1732 const GEOSGeometry* g,
1733 const GEOSMakeValidParams* makeValidParams);
1734
1737 GEOSContextHandle_t handle,
1738 const GEOSGeometry* g,
1739 double tolerance);
1740
1741/* ========== Geometry info ========== */
1742
1744/* Return NULL on exception, result must be freed by caller. */
1745extern char GEOS_DLL *GEOSGeomType_r(
1746 GEOSContextHandle_t handle,
1747 const GEOSGeometry* g);
1748
1750extern int GEOS_DLL GEOSGeomTypeId_r(
1751 GEOSContextHandle_t handle,
1752 const GEOSGeometry* g);
1753
1755extern int GEOS_DLL GEOSGetSRID_r(
1756 GEOSContextHandle_t handle,
1757 const GEOSGeometry* g);
1758
1760extern void GEOS_DLL GEOSSetSRID_r(
1761 GEOSContextHandle_t handle,
1762 GEOSGeometry* g, int SRID);
1763
1765extern void GEOS_DLL *GEOSGeom_getUserData_r(
1766 GEOSContextHandle_t handle,
1767 const GEOSGeometry* g);
1768
1770extern void GEOS_DLL GEOSGeom_setUserData_r(
1771 GEOSContextHandle_t handle,
1772 GEOSGeometry* g,
1773 void* userData);
1774
1776extern int GEOS_DLL GEOSGetNumGeometries_r(
1777 GEOSContextHandle_t handle,
1778 const GEOSGeometry* g);
1779
1781extern const GEOSGeometry GEOS_DLL *GEOSGetGeometryN_r(
1782 GEOSContextHandle_t handle,
1783 const GEOSGeometry* g, int n);
1784
1786extern int GEOS_DLL GEOSNormalize_r(
1787 GEOSContextHandle_t handle,
1788 GEOSGeometry* g);
1789
1791extern int GEOS_DLL GEOSOrientPolygons_r(
1792 GEOSContextHandle_t handle,
1793 GEOSGeometry* g,
1794 int exteriorCW);
1795
1808
1811 GEOSContextHandle_t handle,
1812 const GEOSGeometry *g,
1813 double gridSize,
1814 int flags);
1815
1817extern double GEOS_DLL GEOSGeom_getPrecision_r(
1818 GEOSContextHandle_t handle,
1819 const GEOSGeometry *g);
1820
1822extern int GEOS_DLL GEOSGetNumInteriorRings_r(
1823 GEOSContextHandle_t handle,
1824 const GEOSGeometry* g);
1825
1827extern int GEOS_DLL GEOSGeomGetNumPoints_r(
1828 GEOSContextHandle_t handle,
1829 const GEOSGeometry* g);
1830
1832extern int GEOS_DLL GEOSGeomGetX_r(
1833 GEOSContextHandle_t handle,
1834 const GEOSGeometry *g,
1835 double *x);
1836
1838extern int GEOS_DLL GEOSGeomGetY_r(
1839 GEOSContextHandle_t handle,
1840 const GEOSGeometry *g,
1841 double *y);
1842
1844extern int GEOS_DLL GEOSGeomGetZ_r(
1845 GEOSContextHandle_t handle,
1846 const GEOSGeometry *g,
1847 double *z);
1848
1850extern int GEOS_DLL GEOSGeomGetM_r(
1851 GEOSContextHandle_t handle,
1852 const GEOSGeometry *g,
1853 double *m);
1854
1857 GEOSContextHandle_t handle,
1858 const GEOSGeometry* g, int n);
1859
1862 GEOSContextHandle_t handle,
1863 const GEOSGeometry* g);
1864
1866extern int GEOS_DLL GEOSGetNumCoordinates_r(
1867 GEOSContextHandle_t handle,
1868 const GEOSGeometry* g);
1869
1872 GEOSContextHandle_t handle,
1873 const GEOSGeometry* g);
1874
1876extern int GEOS_DLL GEOSGeom_getDimensions_r(
1877 GEOSContextHandle_t handle,
1878 const GEOSGeometry* g);
1879
1882 GEOSContextHandle_t handle,
1883 const GEOSGeometry* g);
1884
1886extern int GEOS_DLL GEOSGeom_getXMin_r(
1887 GEOSContextHandle_t handle,
1888 const GEOSGeometry* g,
1889 double* value);
1890
1892extern int GEOS_DLL GEOSGeom_getYMin_r(
1893 GEOSContextHandle_t handle,
1894 const GEOSGeometry* g,
1895 double* value);
1896
1898extern int GEOS_DLL GEOSGeom_getXMax_r(
1899 GEOSContextHandle_t handle,
1900 const GEOSGeometry* g,
1901 double* value);
1902
1904extern int GEOS_DLL GEOSGeom_getYMax_r(
1905 GEOSContextHandle_t handle,
1906 const GEOSGeometry* g,
1907 double* value);
1908
1910extern int GEOS_DLL GEOSGeom_getExtent_r(
1911 GEOSContextHandle_t handle,
1912 const GEOSGeometry* g,
1913 double* xmin,
1914 double* ymin,
1915 double* xmax,
1916 double* ymax);
1917
1920 GEOSContextHandle_t handle,
1921 const GEOSGeometry *g,
1922 int n);
1923
1926 GEOSContextHandle_t handle,
1927 const GEOSGeometry *g);
1928
1931 GEOSContextHandle_t handle,
1932 const GEOSGeometry *g);
1933
1934/* ========= Misc functions ========= */
1935
1937extern int GEOS_DLL GEOSArea_r(
1938 GEOSContextHandle_t handle,
1939 const GEOSGeometry* g,
1940 double *area);
1941
1943extern int GEOS_DLL GEOSLength_r(
1944 GEOSContextHandle_t handle,
1945 const GEOSGeometry* g,
1946 double *length);
1947
1949extern int GEOS_DLL GEOSDistance_r(
1950 GEOSContextHandle_t handle,
1951 const GEOSGeometry* g1,
1952 const GEOSGeometry* g2,
1953 double *dist);
1954
1956extern char GEOS_DLL GEOSDistanceWithin_r(
1957 GEOSContextHandle_t handle,
1958 const GEOSGeometry* g1,
1959 const GEOSGeometry* g2,
1960 double dist);
1961
1963extern int GEOS_DLL GEOSDistanceIndexed_r(
1964 GEOSContextHandle_t handle,
1965 const GEOSGeometry* g1,
1966 const GEOSGeometry* g2,
1967 double *dist);
1968
1970extern int GEOS_DLL GEOSHausdorffDistance_r(
1971 GEOSContextHandle_t handle,
1972 const GEOSGeometry *g1,
1973 const GEOSGeometry *g2,
1974 double *dist);
1975
1978 GEOSContextHandle_t handle,
1979 const GEOSGeometry *g1,
1980 const GEOSGeometry *g2,
1981 double *dist,
1982 double *p1x, double *p1y,
1983 double *p2x, double *p2y);
1984
1987 GEOSContextHandle_t handle,
1988 const GEOSGeometry *g1,
1989 const GEOSGeometry *g2,
1990 double densifyFrac, double *dist);
1991
1994 GEOSContextHandle_t handle,
1995 const GEOSGeometry *g1,
1996 const GEOSGeometry *g2,
1997 double densifyFrac, double* dist,
1998 double *p1x, double *p1y,
1999 double *p2x, double *p2y);
2000
2002extern int GEOS_DLL GEOSFrechetDistance_r(
2003 GEOSContextHandle_t handle,
2004 const GEOSGeometry *g1,
2005 const GEOSGeometry *g2,
2006 double *dist);
2007
2010 GEOSContextHandle_t handle,
2011 const GEOSGeometry *g1,
2012 const GEOSGeometry *g2,
2013 double densifyFrac,
2014 double *dist);
2015
2016
2018extern int GEOS_DLL GEOSHilbertCode_r(
2019 GEOSContextHandle_t handle,
2020 const GEOSGeometry *geom,
2021 const GEOSGeometry* extent,
2022 unsigned int level,
2023 unsigned int *code
2024);
2025
2027extern int GEOS_DLL GEOSGeomGetLength_r(
2028 GEOSContextHandle_t handle,
2029 const GEOSGeometry *g,
2030 double *length);
2031
2034 GEOSContextHandle_t handle,
2035 const GEOSGeometry* g1,
2036 const GEOSGeometry* g2);
2037
2040 GEOSContextHandle_t handle,
2041 const GEOSGeometry* g,
2042 GEOSTransformXYCallback callback,
2043 void* userdata);
2044
2047 GEOSContextHandle_t handle,
2048 const GEOSGeometry* g,
2049 GEOSTransformXYZCallback callback,
2050 void* userdata);
2051
2054 GEOSContextHandle_t handle,
2055 const GEOSGeometry* g,
2056 double eps,
2057 unsigned minPoints);
2058
2061 GEOSContextHandle_t handle,
2062 const GEOSGeometry* g,
2063 double d);
2064
2067 GEOSContextHandle_t handle,
2068 const GEOSGeometry* g);
2069
2072 GEOSContextHandle_t handle,
2073 const GEOSGeometry* g,
2074 double d);
2075
2078 GEOSContextHandle_t handle,
2079 const GEOSGeometry* g);
2080
2083
2085extern size_t GEOS_DLL GEOSClusterInfo_getClusterSize_r(GEOSContextHandle_t, const GEOSClusterInfo* clusters, size_t i);
2086
2089
2091extern const size_t GEOS_DLL* GEOSClusterInfo_getInputsForClusterN_r(GEOSContextHandle_t, const GEOSClusterInfo* clusters, size_t i);
2092
2095
2096/* ========= Algorithms ========= */
2097
2099extern int GEOS_DLL GEOSOrientationIndex_r(
2100 GEOSContextHandle_t handle,
2101 double Ax, double Ay,
2102 double Bx, double By,
2103 double Px, double Py);
2104
2105
2106/* ========== Reader and Writer APIs ========== */
2107
2108#ifndef GEOSWKTReader
2109
2115typedef struct GEOSWKTReader_t GEOSWKTReader;
2116
2122typedef struct GEOSWKTWriter_t GEOSWKTWriter;
2123
2129typedef struct GEOSWKBReader_t GEOSWKBReader;
2130
2136typedef struct GEOSWKBWriter_t GEOSWKBWriter;
2137
2143typedef struct GEOSGeoJSONReader_t GEOSGeoJSONReader;
2144
2150typedef struct GEOSGeoJSONWriter_t GEOSGeoJSONWriter;
2151
2152#endif
2153
2154/* ========== WKT Reader ========== */
2155
2158 GEOSContextHandle_t handle);
2159
2162 GEOSWKTReader* reader);
2163
2166 GEOSContextHandle_t handle,
2167 GEOSWKTReader* reader,
2168 const char *wkt);
2169
2172 GEOSContextHandle_t handle,
2173 GEOSWKTReader *reader,
2174 char doFix);
2175
2176
2177/* ========== WKT Writer ========== */
2178
2181 GEOSContextHandle_t handle);
2182
2184extern void GEOS_DLL GEOSWKTWriter_destroy_r(
2185 GEOSContextHandle_t handle,
2186 GEOSWKTWriter* writer);
2187
2189extern char GEOS_DLL *GEOSWKTWriter_write_r(
2190 GEOSContextHandle_t handle,
2191 GEOSWKTWriter* writer,
2192 const GEOSGeometry* g);
2193
2195extern void GEOS_DLL GEOSWKTWriter_setTrim_r(
2196 GEOSContextHandle_t handle,
2197 GEOSWKTWriter *writer,
2198 char trim);
2199
2202 GEOSContextHandle_t handle,
2203 GEOSWKTWriter *writer,
2204 int precision);
2205
2208 GEOSContextHandle_t handle,
2209 GEOSWKTWriter *writer,
2210 int dim);
2211
2214 GEOSContextHandle_t handle,
2215 GEOSWKTWriter *writer);
2216
2218extern void GEOS_DLL GEOSWKTWriter_setOld3D_r(
2219 GEOSContextHandle_t handle,
2220 GEOSWKTWriter *writer,
2221 int useOld3D);
2222
2232extern int GEOS_DLL GEOS_printDouble(
2233 double d,
2234 unsigned int precision,
2235 char *result
2236);
2237
2238/* ========== WKB Reader ========== */
2239
2242 GEOSContextHandle_t handle);
2243
2245extern void GEOS_DLL GEOSWKBReader_destroy_r(
2246 GEOSContextHandle_t handle,
2247 GEOSWKBReader* reader);
2248
2251 GEOSContextHandle_t handle,
2252 GEOSWKBReader *reader,
2253 char doFix);
2254
2257 GEOSContextHandle_t handle,
2258 GEOSWKBReader* reader,
2259 const unsigned char *wkb,
2260 size_t size);
2261
2264 GEOSContextHandle_t handle,
2265 GEOSWKBReader* reader,
2266 const unsigned char *hex,
2267 size_t size);
2268
2269
2270/* ========== WKB Writer ========== */
2271
2274 GEOSContextHandle_t handle);
2275
2277extern void GEOS_DLL GEOSWKBWriter_destroy_r(
2278 GEOSContextHandle_t handle,
2279 GEOSWKBWriter* writer);
2280
2282extern unsigned char GEOS_DLL *GEOSWKBWriter_write_r(
2283 GEOSContextHandle_t handle,
2284 GEOSWKBWriter* writer,
2285 const GEOSGeometry* g,
2286 size_t *size);
2287
2289extern unsigned char GEOS_DLL *GEOSWKBWriter_writeHEX_r(
2290 GEOSContextHandle_t handle,
2291 GEOSWKBWriter* writer,
2292 const GEOSGeometry* g,
2293 size_t *size);
2294
2297 GEOSContextHandle_t handle,
2298 const GEOSWKBWriter* writer);
2299
2302 GEOSContextHandle_t handle,
2303 GEOSWKBWriter* writer, int newDimension);
2304
2307 GEOSContextHandle_t handle,
2308 const GEOSWKBWriter* writer);
2309
2311extern void GEOS_DLL GEOSWKBWriter_setByteOrder_r(
2312 GEOSContextHandle_t handle,
2313 GEOSWKBWriter* writer,
2314 int byteOrder);
2315
2317extern int GEOS_DLL GEOSWKBWriter_getFlavor_r(
2318 GEOSContextHandle_t handle,
2319 const GEOSWKBWriter* writer);
2320
2322extern void GEOS_DLL GEOSWKBWriter_setFlavor_r(
2323 GEOSContextHandle_t handle,
2324 GEOSWKBWriter* writer,
2325 int flavor);
2326
2329 GEOSContextHandle_t handle,
2330 const GEOSWKBWriter* writer);
2331
2334 GEOSContextHandle_t handle,
2335 GEOSWKBWriter* writer, const char writeSRID);
2336
2337/* ========== GeoJSON Reader ========== */
2338
2341 GEOSContextHandle_t handle);
2342
2345 GEOSGeoJSONReader* reader);
2346
2349 GEOSContextHandle_t handle,
2350 GEOSGeoJSONReader* reader,
2351 const char *geojson);
2352
2353/* ========== GeoJSON Writer ========== */
2354
2357 GEOSContextHandle_t handle);
2358
2361 GEOSGeoJSONWriter* writer);
2362
2365 GEOSContextHandle_t handle,
2366 GEOSGeoJSONWriter* writer,
2367 const GEOSGeometry* g,
2368 int indent);
2369
2372 GEOSContextHandle_t handle,
2373 GEOSGeoJSONWriter *writer,
2374 int dim);
2375
2378 GEOSContextHandle_t handle,
2379 GEOSGeoJSONWriter *writer);
2380
2382extern void GEOS_DLL GEOSFree_r(
2383 GEOSContextHandle_t handle,
2384 void *buffer);
2385
2393extern const char GEOS_DLL *GEOSversion(void);
2394
2395/*
2396* External code to GEOS can define GEOS_USE_ONLY_R_API
2397* to strip the non-reentrant API functions from this header,
2398* leaving only the "_r" compatible variants.
2399*/
2400#ifndef GEOS_USE_ONLY_R_API
2401
2402/* ========== Initialization, cleanup ================================= */
2408
2421extern void GEOS_DLL initGEOS(
2422 GEOSMessageHandler notice_function,
2423 GEOSMessageHandler error_function);
2424
2430extern void GEOS_DLL finishGEOS(void);
2431
2441extern void GEOS_DLL GEOSFree(void *buffer);
2442
2444
2445/* ========= Coordinate Sequence functions ========= */
2451
2459extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_create(unsigned int size, unsigned int dims);
2460
2469extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_createWithDimensions(unsigned int size, int hasZ, int hasM);
2470
2481extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_copyFromBuffer(const double* buf, unsigned int size, int hasZ, int hasM);
2482
2494extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_copyFromArrays(const double* x, const double* y, const double* z, const double* m, unsigned int size);
2495
2506extern int GEOS_DLL GEOSCoordSeq_copyToBuffer(const GEOSCoordSequence* s, double* buf, int hasZ, int hasM);
2507
2519extern int GEOS_DLL GEOSCoordSeq_copyToArrays(const GEOSCoordSequence* s, double* x, double* y, double* z, double* m);
2520
2528
2535
2543extern char GEOS_DLL GEOSCoordSeq_hasZ(GEOSCoordSequence* s);
2544
2552extern char GEOS_DLL GEOSCoordSeq_hasM(GEOSCoordSequence* s);
2553
2563 unsigned int idx, double val);
2573 unsigned int idx, double val);
2583 unsigned int idx, double val);
2584
2594 unsigned int idx, double val);
2595
2607 unsigned int idx, double x, double y);
2620 unsigned int idx, double x, double y, double z);
2631 unsigned int idx, unsigned int dim, double val);
2632
2641extern int GEOS_DLL GEOSCoordSeq_getX(const GEOSCoordSequence* s,
2642 unsigned int idx, double *val);
2643
2652extern int GEOS_DLL GEOSCoordSeq_getY(const GEOSCoordSequence* s,
2653 unsigned int idx, double *val);
2654
2663extern int GEOS_DLL GEOSCoordSeq_getZ(const GEOSCoordSequence* s,
2664 unsigned int idx, double *val);
2665
2674extern int GEOS_DLL GEOSCoordSeq_getM(const GEOSCoordSequence* s,
2675 unsigned int idx, double *val);
2676
2687extern int GEOS_DLL GEOSCoordSeq_getXY(const GEOSCoordSequence* s,
2688 unsigned int idx, double *x, double *y);
2700extern int GEOS_DLL GEOSCoordSeq_getXYZ(const GEOSCoordSequence* s,
2701 unsigned int idx, double *x, double *y, double *z);
2711extern int GEOS_DLL GEOSCoordSeq_getOrdinate(const GEOSCoordSequence* s,
2712 unsigned int idx, unsigned int dim, double *val);
2713
2721extern int GEOS_DLL GEOSCoordSeq_getSize(
2722 const GEOSCoordSequence* s,
2723 unsigned int *size);
2724
2732extern int GEOS_DLL GEOSCoordSeq_getDimensions(
2733 const GEOSCoordSequence* s,
2734 unsigned int *dims);
2735
2745extern int GEOS_DLL GEOSCoordSeq_isCCW(
2746 const GEOSCoordSequence* s,
2747 char* is_ccw);
2748
2750
2751/* ========= Geometry Constructors ========= */
2757
2766
2776extern GEOSGeometry GEOS_DLL *GEOSGeom_createPointFromXY(double x, double y);
2777
2786
2795
2804
2813
2822
2837 GEOSGeometry* shell,
2838 GEOSGeometry** holes,
2839 unsigned int nholes);
2840
2849
2857
2867 unsigned int ncurves);
2868
2876
2891 GEOSGeometry* shell,
2892 GEOSGeometry** holes,
2893 unsigned int nholes);
2894
2902
2917 int type,
2918 GEOSGeometry** geoms,
2919 unsigned int ngeoms);
2920
2938 GEOSGeometry * collection,
2939 unsigned int * ngeoms);
2940
2950
2962 double xmin, double ymin,
2963 double xmax, double ymax);
2964
2972extern GEOSGeometry GEOS_DLL *GEOSGeom_clone(const GEOSGeometry* g);
2973
2979extern void GEOS_DLL GEOSGeom_destroy(GEOSGeometry* g);
2980
2982
2983/* ========== Geometry info ========== */
2988
2998extern char GEOS_DLL *GEOSGeomType(const GEOSGeometry* g);
2999
3006extern int GEOS_DLL GEOSGeomTypeId(const GEOSGeometry* g);
3007
3014extern int GEOS_DLL GEOSGetSRID(const GEOSGeometry* g);
3015
3026extern void GEOS_DLL *GEOSGeom_getUserData(const GEOSGeometry* g);
3027
3040extern int GEOS_DLL GEOSGetNumGeometries(const GEOSGeometry* g);
3041
3057extern const GEOSGeometry GEOS_DLL *GEOSGetGeometryN(
3058 const GEOSGeometry* g,
3059 int n);
3060
3070extern double GEOS_DLL GEOSGeom_getPrecision(const GEOSGeometry *g);
3071
3079extern int GEOS_DLL GEOSGetNumInteriorRings(const GEOSGeometry* g);
3080
3091extern int GEOS_DLL GEOSGeomGetNumPoints(const GEOSGeometry* g);
3092
3101extern int GEOS_DLL GEOSGeomGetX(const GEOSGeometry *g, double *x);
3102
3111extern int GEOS_DLL GEOSGeomGetY(const GEOSGeometry *g, double *y);
3112
3122extern int GEOS_DLL GEOSGeomGetZ(const GEOSGeometry *g, double *z);
3123
3133extern int GEOS_DLL GEOSGeomGetM(const GEOSGeometry *g, double *m);
3134
3144extern const GEOSGeometry GEOS_DLL *GEOSGetInteriorRingN(
3145 const GEOSGeometry* g,
3146 int n);
3147
3156extern const GEOSGeometry GEOS_DLL *GEOSGetExteriorRing(
3157 const GEOSGeometry* g);
3158
3166extern int GEOS_DLL GEOSGetNumCoordinates(
3167 const GEOSGeometry* g);
3168
3179 const GEOSGeometry* g);
3180
3193extern int GEOS_DLL GEOSGeom_getDimensions(
3194 const GEOSGeometry* g);
3195
3209 const GEOSGeometry* g);
3210
3224extern int GEOS_DLL GEOSGeom_getXMin(const GEOSGeometry* g, double* value);
3225
3239extern int GEOS_DLL GEOSGeom_getYMin(const GEOSGeometry* g, double* value);
3240
3254extern int GEOS_DLL GEOSGeom_getXMax(const GEOSGeometry* g, double* value);
3255
3269extern int GEOS_DLL GEOSGeom_getYMax(const GEOSGeometry* g, double* value);
3270
3288extern int GEOS_DLL GEOSGeom_getExtent(
3289 const GEOSGeometry* g,
3290 double* xmin,
3291 double* ymin,
3292 double* xmax,
3293 double* ymax);
3294
3308extern GEOSGeometry GEOS_DLL *GEOSGeomGetPointN(const GEOSGeometry *g, int n);
3309
3323
3337
3346extern char GEOS_DLL GEOSisEmpty(const GEOSGeometry* g);
3347
3357extern char GEOS_DLL GEOSisRing(const GEOSGeometry* g);
3358
3365extern char GEOS_DLL GEOSHasZ(const GEOSGeometry* g);
3366
3374extern char GEOS_DLL GEOSHasM(const GEOSGeometry* g);
3375
3390extern char GEOS_DLL GEOSisClosed(const GEOSGeometry *g);
3391
3393
3394/* ==================================================================================== */
3399
3406extern void GEOS_DLL GEOSSetSRID(GEOSGeometry* g, int SRID);
3407
3415extern void GEOS_DLL GEOSGeom_setUserData(GEOSGeometry* g, void* userData);
3416
3440extern int GEOS_DLL GEOSNormalize(GEOSGeometry* g);
3441
3453extern int GEOS_DLL GEOSOrientPolygons(GEOSGeometry* g,
3454 int exteriorCW);
3455
3457
3458/* ========== Validity checking ============================================================ */
3464
3473extern char GEOS_DLL GEOSisSimple(const GEOSGeometry* g);
3474
3489extern char GEOS_DLL GEOSisSimpleDetail(
3490 const GEOSGeometry* g,
3491 int findAllLocations,
3492 GEOSGeometry** locations);
3493
3509extern char GEOS_DLL GEOSisValid(const GEOSGeometry* g);
3510
3520extern char GEOS_DLL *GEOSisValidReason(const GEOSGeometry *g);
3521
3536extern char GEOS_DLL GEOSisValidDetail(
3537 const GEOSGeometry* g,
3538 int flags,
3539 char** reason,
3540 GEOSGeometry** location);
3541
3550 const GEOSGeometry* g);
3551
3566 const GEOSGeometry* g,
3567 const GEOSMakeValidParams *makeValidParams);
3568
3578
3587
3598 enum GEOSMakeValidMethods method);
3599
3612 int keepCollapsed);
3613
3633extern int GEOS_DLL GEOSMinimumClearance(const GEOSGeometry* g, double* d);
3634
3647
3669 const GEOSGeometry* g,
3670 double tolerance);
3671
3673
3674/* ========= Metric functions ================================================== */
3679
3692extern int GEOS_DLL GEOSArea(
3693 const GEOSGeometry* g,
3694 double *area);
3695
3707extern int GEOS_DLL GEOSLength(
3708 const GEOSGeometry* g,
3709 double *length);
3710
3725extern int GEOS_DLL GEOSGeomGetLength(
3726 const GEOSGeometry *g,
3727 double *length);
3728
3730
3731/* ========== Distance functions ================================================ */
3737
3749extern int GEOS_DLL GEOSDistance(
3750 const GEOSGeometry* g1,
3751 const GEOSGeometry* g2,
3752 double *dist);
3753
3766extern char GEOS_DLL GEOSDistanceWithin(
3767 const GEOSGeometry* g1,
3768 const GEOSGeometry* g2,
3769 double dist);
3770
3784extern int GEOS_DLL GEOSDistanceIndexed(
3785 const GEOSGeometry* g1,
3786 const GEOSGeometry* g2,
3787 double *dist);
3788
3802 const GEOSGeometry* g1,
3803 const GEOSGeometry* g2);
3804
3816extern int GEOS_DLL GEOSHausdorffDistance(
3817 const GEOSGeometry *g1,
3818 const GEOSGeometry *g2,
3819 double *dist);
3820
3821
3837 const GEOSGeometry *g1,
3838 const GEOSGeometry *g2,
3839 double *dist,
3840 double *p1x, double *p1y,
3841 double *p2x, double *p2y);
3842
3843
3844
3860 const GEOSGeometry *g1,
3861 const GEOSGeometry *g2,
3862 double densifyFrac,
3863 double *dist);
3864
3885 const GEOSGeometry *g1,
3886 const GEOSGeometry *g2,
3887 double densifyFrac,
3888 double *dist,
3889 double* p1x, double* p1y,
3890 double* p2x, double* p2y);
3891
3905extern int GEOS_DLL GEOSFrechetDistance(
3906 const GEOSGeometry *g1,
3907 const GEOSGeometry *g2,
3908 double *dist);
3909
3926extern int GEOS_DLL GEOSFrechetDistanceDensify(
3927 const GEOSGeometry *g1,
3928 const GEOSGeometry *g2,
3929 double densifyFrac,
3930 double *dist);
3931
3933
3934/* ========== Linear referencing functions */
3940
3950extern double GEOS_DLL GEOSProject(const GEOSGeometry* line,
3951 const GEOSGeometry* point);
3952
3967extern GEOSGeometry GEOS_DLL *GEOSInterpolate(const GEOSGeometry* line,
3968 double d);
3969
3980extern double GEOS_DLL GEOSProjectNormalized(const GEOSGeometry* line,
3981 const GEOSGeometry* point);
3982
3999 const GEOSGeometry *line,
4000 double proportion);
4001
4003
4004/* ========== Overlay functions ========== */
4010
4021extern GEOSGeometry GEOS_DLL *GEOSIntersection(const GEOSGeometry* g1, const GEOSGeometry* g2);
4022
4037extern GEOSGeometry GEOS_DLL *GEOSIntersectionPrec(const GEOSGeometry* g1, const GEOSGeometry* g2, double gridSize);
4038
4050 const GEOSGeometry* ga,
4051 const GEOSGeometry* gb);
4052
4069 const GEOSGeometry* ga,
4070 const GEOSGeometry* gb,
4071 double gridSize);
4072
4085 const GEOSGeometry* ga,
4086 const GEOSGeometry* gb);
4087
4105 const GEOSGeometry* ga,
4106 const GEOSGeometry* gb,
4107 double gridSize);
4108
4119extern GEOSGeometry GEOS_DLL *GEOSUnion(
4120 const GEOSGeometry* ga,
4121 const GEOSGeometry* gb);
4122
4139 const GEOSGeometry* ga,
4140 const GEOSGeometry* gb,
4141 double gridSize);
4142
4154extern GEOSGeometry GEOS_DLL *GEOSUnaryUnion(const GEOSGeometry* g);
4155
4172 const GEOSGeometry* g,
4173 double gridSize);
4174
4186
4203 const GEOSGeometry* g,
4204 double xmin, double ymin,
4205 double xmax, double ymax);
4206
4231 const GEOSGeometry* g,
4232 double xmin, double ymin,
4233 double xmax, double ymax,
4234 unsigned nx, unsigned ny,
4235 int includeExterior);
4236
4254 const GEOSGeometry* g,
4255 double xmin, double ymin,
4256 double xmax, double ymax,
4257 unsigned nx, unsigned ny,
4258 float* buf);
4259
4279 const GEOSGeometry* g1,
4280 const GEOSGeometry* g2);
4282
4283/* ========== Clustering functions ========== */
4290static const size_t GEOS_CLUSTER_NONE = (size_t) -1;
4291
4293
4303extern GEOSClusterInfo GEOS_DLL* GEOSClusterDBSCAN(const GEOSGeometry* g, double eps, unsigned minPoints);
4304
4314extern GEOSClusterInfo GEOS_DLL* GEOSClusterGeometryDistance(const GEOSGeometry* g, double d);
4315
4325
4335extern GEOSClusterInfo GEOS_DLL* GEOSClusterEnvelopeDistance(const GEOSGeometry* g, double d);
4336
4346
4355extern size_t GEOS_DLL GEOSClusterInfo_getNumClusters(const GEOSClusterInfo* clusters);
4356
4366extern size_t GEOS_DLL GEOSClusterInfo_getClusterSize(const GEOSClusterInfo* clusters, size_t i );
4367
4377extern size_t GEOS_DLL* GEOSClusterInfo_getClustersForInputs(const GEOSClusterInfo* clusters);
4378
4387extern const size_t GEOS_DLL* GEOSClusterInfo_getInputsForClusterN(const GEOSClusterInfo* clusters, size_t i);
4388
4396extern void GEOS_DLL GEOSClusterInfo_destroy(GEOSClusterInfo* clusters);
4397
4399
4400/* ========== Buffer related functions ========== */
4405
4419extern GEOSGeometry GEOS_DLL *GEOSBuffer(const GEOSGeometry* g,
4420 double width, int quadsegs);
4421
4431
4438extern void GEOS_DLL GEOSBufferParams_destroy(GEOSBufferParams* parms);
4439
4449 int style);
4450
4460 int joinStyle);
4461
4475 double mitreLimit);
4476
4489 int quadSegs);
4490
4503 int singleSided);
4504
4516 const GEOSGeometry* g,
4517 const GEOSBufferParams* p,
4518 double width);
4519
4536 const GEOSGeometry* g,
4537 double width,
4538 int quadsegs,
4539 int endCapStyle,
4540 int joinStyle,
4541 double mitreLimit);
4542
4567 double width, int quadsegs, int joinStyle, double mitreLimit);
4568
4570
4571
4572/* ====================================================================== */
4578
4591
4592
4616extern int GEOS_DLL GEOSCoverageIsValid(
4617 const GEOSGeometry* input,
4618 double gapWidth,
4619 GEOSGeometry** invalidEdges);
4620
4647 const GEOSGeometry* input,
4648 double tolerance,
4649 int preserveBoundary);
4650
4660extern GEOSGeometry GEOS_DLL *GEOSCoverageEdges(const GEOSGeometry *input, int edgetype);
4661
4669extern GEOSCoverageCleanParams GEOS_DLL *
4671
4678extern void GEOS_DLL
4680 GEOSCoverageCleanParams* params);
4681
4702extern int GEOS_DLL
4705 double snappingDistance);
4706
4725extern int GEOS_DLL
4728 double gapMaximumWidth);
4729
4730/*
4731* Sets the overlap merge strategy to use, using one from \ref GEOSOverlapMerge.
4732* Overlaps are merged with an adjacent polygon chosen according to a specified merge strategy.
4733* The supported strategies are:
4734*
4735* * **Longest Border**: (default) merge with the polygon with longest shared border (GEOS_MERGE_LONGEST_BORDER.)
4736* * **Maximum/Minimum Area**: merge with the polygon with largest or smallest area (GEOS_MERGE_MAX_AREA, GEOS_MERGE_MIN_AREA.)
4737* * **Minimum Index**: merge with the polygon with the lowest index in the input array (GEOS_MERGE_MIN_INDEX.)
4738*
4739* This allows sorting the input according to some criteria to provide a priority
4740* for merging gaps.
4741*
4742* The default is GEOS_MERGE_LONGEST_BORDER.
4743*
4744* \see geos::coverage::CoverageCleaner::setGapMaximumWidth
4745* \param params The GEOSCoverageCleanParams to operate on
4746* \param overlapMergeStrategy One of \ref GEOSOverlapMerge strategies
4747* \return 0 on exception, 1 on success.
4748*
4749* \since 3.14
4750*/
4751extern int GEOS_DLL
4752GEOSCoverageCleanParams_setOverlapMergeStrategy(
4754 int overlapMergeStrategy);
4755
4777extern GEOSGeometry GEOS_DLL *
4779 const GEOSGeometry* input,
4780 const GEOSCoverageCleanParams* params
4781);
4782
4784extern GEOSGeometry GEOS_DLL *
4786 const GEOSGeometry* input);
4787
4788
4789
4790
4792
4793
4794/* ========== Construction Operations ========== */
4799
4813extern GEOSGeometry GEOS_DLL *GEOSEnvelope(const GEOSGeometry* g);
4814
4832extern GEOSGeometry GEOS_DLL *GEOSBoundary(const GEOSGeometry* g);
4833
4847extern GEOSGeometry GEOS_DLL *GEOSConvexHull(const GEOSGeometry* g);
4848
4883 const GEOSGeometry* g,
4884 double ratio,
4885 unsigned int allowHoles);
4886
4920 const GEOSGeometry* g,
4921 double length,
4922 unsigned int allowHoles);
4923
4963 const GEOSGeometry* g,
4964 double lengthRatio,
4965 unsigned int isTight,
4966 unsigned int isHolesAllowed);
4967
4988 const GEOSGeometry* g,
4989 unsigned int isOuter,
4990 double vertexNumFraction);
4991
4992
5002
5025 const GEOSGeometry* g,
5026 unsigned int isOuter,
5027 unsigned int parameterMode,
5028 double parameter);
5029
5044
5070 const GEOSGeometry* g,
5071 double tolerance);
5072
5107 const GEOSGeometry* obstacles,
5108 const GEOSGeometry* boundary,
5109 double tolerance);
5110
5124extern GEOSGeometry GEOS_DLL *GEOSMinimumWidth(const GEOSGeometry* g);
5125
5126
5137
5147extern GEOSGeometry GEOS_DLL *GEOSGetCentroid(const GEOSGeometry* g);
5148
5162 const GEOSGeometry* g,
5163 double* radius,
5164 GEOSGeometry** center);
5165
5183 const GEOSGeometry *g,
5184 double tolerance,
5185 int onlyEdges);
5186
5202 const GEOSGeometry *g);
5203
5214
5237 const GEOSGeometry *g,
5238 const GEOSGeometry *env,
5239 double tolerance,
5240 int flags);
5241
5243
5244/* ============================================================== */
5249
5266extern GEOSGeometry GEOS_DLL *GEOSNode(const GEOSGeometry* g);
5267
5268
5284extern GEOSGeometry GEOS_DLL *GEOSSplit(const GEOSGeometry* g, const GEOSGeometry* edge);
5285
5332 const GEOSGeometry * const geoms[],
5333 unsigned int ngeoms);
5334
5353 const GEOSGeometry * const geoms[],
5354 unsigned int ngeoms);
5355
5373 const GEOSGeometry * const geoms[],
5374 unsigned int ngeoms);
5375
5394 const GEOSGeometry* input,
5395 GEOSGeometry** cuts,
5396 GEOSGeometry** dangles,
5397 GEOSGeometry** invalid);
5398
5410extern GEOSGeometry GEOS_DLL *GEOSBuildArea(const GEOSGeometry* g);
5411
5413
5414/* ============================================================== */
5419
5434extern GEOSGeometry GEOS_DLL *GEOSDensify(
5435 const GEOSGeometry* g,
5436 double tolerance);
5437
5453extern GEOSGeometry GEOS_DLL *GEOSLineMerge(const GEOSGeometry* g);
5454
5471extern size_t GEOS_DLL *GEOSMinimumSpanningTree(const GEOSGeometry * const geoms[], unsigned int ngeoms);
5472
5490
5507 const GEOSGeometry* g,
5508 double start_fraction,
5509 double end_fraction);
5510
5525extern GEOSGeometry GEOS_DLL *GEOSReverse(const GEOSGeometry* g);
5526
5543 const GEOSGeometry* g,
5544 double tolerance);
5545
5565 const GEOSGeometry* g,
5566 double tolerance);
5567
5585 const GEOSGeometry* g);
5586
5602extern int GEOS_DLL GEOSHilbertCode(
5603 const GEOSGeometry *geom,
5604 const GEOSGeometry* extent,
5605 unsigned int level,
5606 unsigned int *code
5607);
5608
5627 const GEOSGeometry* g,
5628 GEOSTransformXYCallback callback,
5629 void* userdata);
5630
5649 const GEOSGeometry* g,
5650 GEOSTransformXYZCallback callback,
5651 void* userdata);
5652
5674extern GEOSGeometry GEOS_DLL *GEOSSnap(
5675 const GEOSGeometry* input,
5676 const GEOSGeometry* snap_target,
5677 double tolerance);
5678
5712 const GEOSGeometry *g,
5713 double gridSize,
5714 int flags);
5715
5717
5718/* ============================================================== */
5723
5732extern char GEOS_DLL GEOSDisjoint(const GEOSGeometry* g1, const GEOSGeometry* g2);
5733
5743extern char GEOS_DLL GEOSTouches(const GEOSGeometry* g1, const GEOSGeometry* g2);
5744
5753extern char GEOS_DLL GEOSIntersects(const GEOSGeometry* g1, const GEOSGeometry* g2);
5754
5764extern char GEOS_DLL GEOSCrosses(const GEOSGeometry* g1, const GEOSGeometry* g2);
5765
5775extern char GEOS_DLL GEOSWithin(const GEOSGeometry* g1, const GEOSGeometry* g2);
5776
5786extern char GEOS_DLL GEOSContains(const GEOSGeometry* g1, const GEOSGeometry* g2);
5787
5797extern char GEOS_DLL GEOSOverlaps(const GEOSGeometry* g1, const GEOSGeometry* g2);
5798
5807extern char GEOS_DLL GEOSEquals(const GEOSGeometry* g1, const GEOSGeometry* g2);
5808
5819extern char GEOS_DLL GEOSCovers(const GEOSGeometry* g1, const GEOSGeometry* g2);
5820
5831extern char GEOS_DLL GEOSCoveredBy(const GEOSGeometry* g1, const GEOSGeometry* g2);
5832
5853extern char GEOS_DLL GEOSEqualsExact(
5854 const GEOSGeometry* g1,
5855 const GEOSGeometry* g2,
5856 double tolerance);
5857
5872extern char GEOS_DLL GEOSEqualsIdentical(
5873 const GEOSGeometry* g1,
5874 const GEOSGeometry* g2);
5875
5891extern char GEOS_DLL GEOSRelatePattern(
5892 const GEOSGeometry* g1,
5893 const GEOSGeometry* g2,
5894 const char *imPattern);
5895
5906extern char GEOS_DLL *GEOSRelate(
5907 const GEOSGeometry* g1,
5908 const GEOSGeometry* g2);
5909
5919extern char GEOS_DLL GEOSRelatePatternMatch(
5920 const char *intMatrix,
5921 const char *imPattern);
5922
5936extern char GEOS_DLL *GEOSRelateBoundaryNodeRule(
5937 const GEOSGeometry* g1,
5938 const GEOSGeometry* g2,
5939 int bnr);
5940
5942
5943/* ========== Prepared Geometry Binary predicates ========== */
5944
5956
5970extern const GEOSPreparedGeometry GEOS_DLL *GEOSPrepare(const GEOSGeometry* g);
5971
5980extern void GEOS_DLL GEOSPreparedGeom_destroy(const GEOSPreparedGeometry* g);
5981
5992extern char GEOS_DLL GEOSPreparedContains(
5993 const GEOSPreparedGeometry* pg1,
5994 const GEOSGeometry* g2);
5995
6007extern char GEOS_DLL GEOSPreparedContainsXY(
6008 const GEOSPreparedGeometry* pg1,
6009 double x,
6010 double y);
6011
6022extern char GEOS_DLL GEOSPreparedContainsProperly(
6023 const GEOSPreparedGeometry* pg1,
6024 const GEOSGeometry* g2);
6025
6036extern char GEOS_DLL GEOSPreparedCoveredBy(
6037 const GEOSPreparedGeometry* pg1,
6038 const GEOSGeometry* g2);
6039
6050extern char GEOS_DLL GEOSPreparedCovers(
6051 const GEOSPreparedGeometry* pg1,
6052 const GEOSGeometry* g2);
6053
6064extern char GEOS_DLL GEOSPreparedCrosses(
6065 const GEOSPreparedGeometry* pg1,
6066 const GEOSGeometry* g2);
6067
6078extern char GEOS_DLL GEOSPreparedDisjoint(
6079 const GEOSPreparedGeometry* pg1,
6080 const GEOSGeometry* g2);
6081
6092extern char GEOS_DLL GEOSPreparedIntersects(
6093 const GEOSPreparedGeometry* pg1,
6094 const GEOSGeometry* g2);
6095
6107extern char GEOS_DLL GEOSPreparedIntersectsXY(
6108 const GEOSPreparedGeometry* pg1,
6109 double x,
6110 double y);
6111
6122extern char GEOS_DLL GEOSPreparedOverlaps(
6123 const GEOSPreparedGeometry* pg1,
6124 const GEOSGeometry* g2);
6125
6136extern char GEOS_DLL GEOSPreparedTouches(
6137 const GEOSPreparedGeometry* pg1,
6138 const GEOSGeometry* g2);
6139
6150extern char GEOS_DLL GEOSPreparedWithin(
6151 const GEOSPreparedGeometry* pg1,
6152 const GEOSGeometry* g2);
6153
6167extern char GEOS_DLL * GEOSPreparedRelate(
6168 const GEOSPreparedGeometry* pg1,
6169 const GEOSGeometry* g2);
6170
6187extern char GEOS_DLL GEOSPreparedRelatePattern(
6188 const GEOSPreparedGeometry* pg1,
6189 const GEOSGeometry* g2,
6190 const char* imPattern);
6191
6205 const GEOSPreparedGeometry* pg1,
6206 const GEOSGeometry* g2);
6207
6221extern int GEOS_DLL GEOSPreparedDistance(
6222 const GEOSPreparedGeometry* pg1,
6223 const GEOSGeometry* g2,
6224 double *dist);
6225
6240extern char GEOS_DLL GEOSPreparedDistanceWithin(
6241 const GEOSPreparedGeometry* pg1,
6242 const GEOSGeometry* g2,
6243 double dist);
6244
6246
6247/* ========== STRtree functions ========== */
6253
6266extern GEOSSTRtree GEOS_DLL *GEOSSTRtree_create(size_t nodeCapacity);
6267
6280extern int GEOS_DLL GEOSSTRtree_build(GEOSSTRtree *tree);
6281
6294extern void GEOS_DLL GEOSSTRtree_insert(
6295 GEOSSTRtree *tree,
6296 const GEOSGeometry *g,
6297 void *item);
6298
6313extern void GEOS_DLL GEOSSTRtree_query(
6314 GEOSSTRtree *tree,
6315 const GEOSGeometry *g,
6316 GEOSQueryCallback callback,
6317 void *userdata);
6318
6333extern const GEOSGeometry GEOS_DLL *GEOSSTRtree_nearest(
6334 GEOSSTRtree *tree,
6335 const GEOSGeometry* geom);
6336
6357extern const void GEOS_DLL *GEOSSTRtree_nearest_generic(
6358 GEOSSTRtree *tree,
6359 const void* item,
6360 const GEOSGeometry* itemEnvelope,
6361 GEOSDistanceCallback distancefn,
6362 void* userdata);
6363
6374extern void GEOS_DLL GEOSSTRtree_iterate(
6375 GEOSSTRtree *tree,
6376 GEOSQueryCallback callback,
6377 void *userdata);
6378
6393extern char GEOS_DLL GEOSSTRtree_remove(
6394 GEOSSTRtree *tree,
6395 const GEOSGeometry *g,
6396 void *item);
6397
6408extern void GEOS_DLL GEOSSTRtree_destroy(GEOSSTRtree *tree);
6409
6411
6412/* ========== Algorithms ====================================================== */
6417
6436extern int GEOS_DLL GEOSSegmentIntersection(
6437 double ax0, double ay0,
6438 double ax1, double ay1,
6439 double bx0, double by0,
6440 double bx1, double by1,
6441 double* cx, double* cy);
6442
6458extern int GEOS_DLL GEOSOrientationIndex(
6459 double Ax, double Ay,
6460 double Bx, double By,
6461 double Px, double Py);
6462
6464
6465/* ========= Reader and Writer APIs ========= */
6466
6471/* ========= WKT Reader ========= */
6472
6479
6485extern void GEOS_DLL GEOSWKTReader_destroy(GEOSWKTReader* reader);
6486
6496 GEOSWKTReader* reader,
6497 const char *wkt);
6498
6508 GEOSWKTReader *reader,
6509 char doFix);
6510
6511/* ========= WKT Writer ========= */
6512
6519
6525extern void GEOS_DLL GEOSWKTWriter_destroy(
6526 GEOSWKTWriter* writer);
6527
6537extern char GEOS_DLL *GEOSWKTWriter_write(
6538 GEOSWKTWriter* writer,
6539 const GEOSGeometry* g);
6540
6555extern void GEOS_DLL GEOSWKTWriter_setTrim(
6556 GEOSWKTWriter *writer,
6557 char trim);
6558
6568 GEOSWKTWriter *writer,
6569 int precision);
6570
6580 GEOSWKTWriter *writer,
6581 int dim);
6582
6591
6602extern void GEOS_DLL GEOSWKTWriter_setOld3D(
6603 GEOSWKTWriter *writer,
6604 int useOld3D);
6606
6607/* ============================================================================== */
6612
6613/* ========== WKB Reader ========== */
6620
6626extern void GEOS_DLL GEOSWKBReader_destroy(
6627 GEOSWKBReader* reader);
6628
6638 GEOSWKBReader *reader,
6639 char doFix);
6640
6650 GEOSWKBReader* reader,
6651 const unsigned char *wkb,
6652 size_t size);
6653
6663 GEOSWKBReader* reader,
6664 const unsigned char *hex,
6665 size_t size);
6666
6667/* ========== WKB Writer ========== */
6668
6675
6681extern void GEOS_DLL GEOSWKBWriter_destroy(GEOSWKBWriter* writer);
6682
6692extern unsigned char GEOS_DLL *GEOSWKBWriter_write(
6693 GEOSWKBWriter* writer,
6694 const GEOSGeometry* g,
6695 size_t *size);
6696
6706extern unsigned char GEOS_DLL *GEOSWKBWriter_writeHEX(
6707 GEOSWKBWriter* writer,
6708 const GEOSGeometry* g,
6709 size_t *size);
6710
6720 const GEOSWKBWriter* writer);
6721
6730 GEOSWKBWriter* writer,
6731 int newDimension);
6732
6742extern int GEOS_DLL GEOSWKBWriter_getByteOrder(
6743 const GEOSWKBWriter* writer);
6744
6752extern void GEOS_DLL GEOSWKBWriter_setByteOrder(
6753 GEOSWKBWriter* writer,
6754 int byteOrder);
6755
6770extern int GEOS_DLL GEOSWKBWriter_getFlavor(
6771 const GEOSWKBWriter* writer);
6772
6781extern void GEOS_DLL GEOSWKBWriter_setFlavor(
6782 GEOSWKBWriter* writer,
6783 int flavor);
6784
6790extern char GEOS_DLL GEOSWKBWriter_getIncludeSRID(
6791 const GEOSWKBWriter* writer);
6792
6800extern void GEOS_DLL GEOSWKBWriter_setIncludeSRID(
6801 GEOSWKBWriter* writer,
6802 const char writeSRID);
6803
6805
6806/* ============================================================================= */
6811/* ========= GeoJSON Reader ========= */
6812
6820
6827extern void GEOS_DLL GEOSGeoJSONReader_destroy(GEOSGeoJSONReader* reader);
6828
6840 GEOSGeoJSONReader* reader,
6841 const char *geojson);
6842
6843/* ========= GeoJSON Writer ========= */
6844
6852
6859extern void GEOS_DLL GEOSGeoJSONWriter_destroy(GEOSGeoJSONWriter* writer);
6860
6872 GEOSGeoJSONWriter* writer,
6873 const GEOSGeometry* g,
6874 int indent);
6875
6885 GEOSGeoJSONWriter *writer,
6886 int dim);
6887
6896
6898
6899#endif /* #ifndef GEOS_USE_ONLY_R_API */
6900
6901/* ====================================================================== */
6902/* DEPRECATIONS */
6903/* ====================================================================== */
6904
6910
6915 const GEOSGeometry* g,
6916 double width, int quadsegs,
6917 int joinStyle, double mitreLimit,
6918 int leftSide);
6919
6924 GEOSContextHandle_t handle,
6925 const GEOSGeometry* g,
6926 double width, int quadsegs,
6927 int joinStyle, double mitreLimit,
6928 int leftSide);
6929
6935 GEOSMessageHandler notice_function,
6936 GEOSMessageHandler error_function);
6937
6941extern void GEOS_DLL finishGEOS_r(GEOSContextHandle_t handle);
6942
6947 GEOSContextHandle_t handle,
6948 const char *wkt);
6949
6953extern char GEOS_DLL *GEOSGeomToWKT_r(
6954 GEOSContextHandle_t handle,
6955 const GEOSGeometry* g);
6956
6960extern int GEOS_DLL GEOS_getWKBOutputDims_r(
6961 GEOSContextHandle_t handle);
6962
6966extern int GEOS_DLL GEOS_setWKBOutputDims_r(
6967 GEOSContextHandle_t handle,
6968 int newDims);
6969
6973extern int GEOS_DLL GEOS_getWKBByteOrder_r(
6974 GEOSContextHandle_t handle);
6975
6979extern int GEOS_DLL GEOS_setWKBByteOrder_r(
6980 GEOSContextHandle_t handle,
6981 int byteOrder);
6982
6987 GEOSContextHandle_t handle,
6988 const unsigned char *wkb,
6989 size_t size);
6990
6994extern unsigned char GEOS_DLL *GEOSGeomToWKB_buf_r(
6995 GEOSContextHandle_t handle,
6996 const GEOSGeometry* g,
6997 size_t *size);
6998
7003 GEOSContextHandle_t handle,
7004 const unsigned char *hex,
7005 size_t size);
7006
7010extern unsigned char GEOS_DLL *GEOSGeomToHEX_buf_r(
7011 GEOSContextHandle_t handle,
7012 const GEOSGeometry* g,
7013 size_t *size);
7014
7018extern GEOSGeometry GEOS_DLL *GEOSGeomFromWKT(const char *wkt);
7019
7023extern char GEOS_DLL *GEOSGeomToWKT(const GEOSGeometry* g);
7024
7028extern int GEOS_DLL GEOS_getWKBOutputDims(void);
7029
7033extern int GEOS_DLL GEOS_setWKBOutputDims(int newDims);
7034
7038extern int GEOS_DLL GEOS_getWKBByteOrder(void);
7039
7043extern int GEOS_DLL GEOS_setWKBByteOrder(int byteOrder);
7044
7048extern GEOSGeometry GEOS_DLL *GEOSGeomFromWKB_buf(const unsigned char *wkb, size_t size);
7049
7053extern unsigned char GEOS_DLL *GEOSGeomToWKB_buf(const GEOSGeometry* g, size_t *size);
7054
7058extern GEOSGeometry GEOS_DLL *GEOSGeomFromHEX_buf(const unsigned char *hex, size_t size);
7059
7063extern unsigned char GEOS_DLL *GEOSGeomToHEX_buf(const GEOSGeometry* g, size_t *size);
7064
7069
7074 GEOSContextHandle_t handle,
7075 const GEOSGeometry* g);
7076
7078
7079/* ====================================================================== */
7080/* END DEPRECATIONS */
7081/* ====================================================================== */
7082
7083
7084#ifdef __cplusplus
7085} // extern "C"
7086#endif
7087
7088#endif /* #ifndef GEOS_C_H_INCLUDED */
int GEOS_setWKBOutputDims_r(GEOSContextHandle_t handle, int newDims)
GEOSGeometry * GEOSMaximumInscribedCircle_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double tolerance)
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 * GEOSIntersectionPrec_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double gridSize)
const GEOSCoordSequence * GEOSGeom_getCoordSeq(const GEOSGeometry *g)
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_createEmptyPoint(void)
GEOSGeometry * GEOSReverse_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
int GEOS_getWKBOutputDims_r(GEOSContextHandle_t handle)
GEOSGeometry * GEOSGeom_createEmptyCompoundCurve_r(GEOSContextHandle_t handle)
GEOSGeometry * GEOSSplit(const GEOSGeometry *g, const GEOSGeometry *edge)
int GEOSGeomGetM(const GEOSGeometry *g, double *m)
GEOSGeometry * GEOSPolygonHullSimplify(const GEOSGeometry *g, unsigned int isOuter, double vertexNumFraction)
char GEOSisRing_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
int GEOSSTRtree_build_r(GEOSContextHandle_t handle, GEOSSTRtree *tree)
GEOSGeometry * GEOSGetCentroid(const GEOSGeometry *g)
void GEOSBufferParams_destroy_r(GEOSContextHandle_t handle, GEOSBufferParams *parms)
GEOSGeometry * GEOSCoverageCleanWithParams(const GEOSGeometry *input, const GEOSCoverageCleanParams *params)
GEOSGeometry * GEOSMinimumRotatedRectangle_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
size_t * GEOSMinimumSpanningTree(const GEOSGeometry *const geoms[], unsigned int ngeoms)
GEOSCoordSequence * GEOSCoordSeq_create(unsigned int size, unsigned int dims)
char GEOSPreparedDistanceWithin(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2, double dist)
GEOSGeometry * GEOSWKBReader_read_r(GEOSContextHandle_t handle, GEOSWKBReader *reader, const unsigned char *wkb, size_t size)
GEOSClusterInfo * GEOSClusterEnvelopeIntersects(const GEOSGeometry *g)
GEOSClusterEnvelopeIntersects.
char * GEOSGeomToWKT_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSBufferWithParams_r(GEOSContextHandle_t handle, const GEOSGeometry *g, const GEOSBufferParams *p, double width)
int GEOSBufferParams_setQuadrantSegments_r(GEOSContextHandle_t handle, GEOSBufferParams *p, int quadSegs)
GEOSGeometry * GEOSConcaveHull_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double ratio, unsigned int allowHoles)
GEOSGeometry * GEOSSubdivideByGrid(const GEOSGeometry *g, double xmin, double ymin, double xmax, double ymax, unsigned nx, unsigned ny, int includeExterior)
void GEOSSTRtree_iterate(GEOSSTRtree *tree, GEOSQueryCallback callback, void *userdata)
const GEOSGeometry * GEOSGetExteriorRing_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSCoordSequence * GEOSPreparedNearestPoints(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
void(*) typedef void(* GEOSMessageHandler_r)(const char *message, void *userdata)
Definition geos_c.h:118
GEOSGeometry * GEOSDelaunayTriangulation_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double tolerance, int onlyEdges)
int GEOSGeoJSONWriter_getOutputDimension_r(GEOSContextHandle_t handle, GEOSGeoJSONWriter *writer)
GEOSGeometry ** GEOSGeom_releaseCollection(GEOSGeometry *collection, unsigned int *ngeoms)
void * GEOSGeom_getUserData_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
struct GEOSGeoJSONReader_t GEOSGeoJSONReader
Definition geos_c.h:2143
int GEOSCoverageCleanParams_setOverlapMergeStrategy_r(GEOSContextHandle_t extHandle, GEOSCoverageCleanParams *params, int overlapMergeStrategy)
char GEOSRelatePattern_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, const char *imPattern)
int GEOS_getWKBByteOrder(void)
void GEOSWKBReader_destroy(GEOSWKBReader *reader)
char GEOSPreparedContainsProperly(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
void GEOSCoverageCleanParams_destroy(GEOSCoverageCleanParams *params)
void GEOSSTRtree_iterate_r(GEOSContextHandle_t handle, GEOSSTRtree *tree, GEOSQueryCallback callback, void *userdata)
GEOSGeometry * GEOSSplit_r(GEOSContextHandle_t handle, const GEOSGeometry *g, const GEOSGeometry *edge)
int GEOS_printDouble(double d, unsigned int precision, char *result)
GEOSGeoJSONWriter * GEOSGeoJSONWriter_create_r(GEOSContextHandle_t handle)
int GEOSDistanceIndexed(const GEOSGeometry *g1, const GEOSGeometry *g2, double *dist)
int GEOSGeom_getDimensions_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSClusterInfo * GEOSClusterEnvelopeDistance(const GEOSGeometry *g, double d)
GEOSClusterEnvelopeDistance.
int GEOSCoordSeq_getZ(const GEOSCoordSequence *s, unsigned int idx, double *val)
int GEOSHausdorffDistanceDensifyWithPoints_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double densifyFrac, double *dist, double *p1x, double *p1y, double *p2x, double *p2y)
const GEOSGeometry * GEOSSTRtree_nearest_r(GEOSContextHandle_t handle, GEOSSTRtree *tree, const GEOSGeometry *geom)
void GEOSWKTWriter_setOld3D_r(GEOSContextHandle_t handle, GEOSWKTWriter *writer, int useOld3D)
GEOSGeometry * GEOSGeom_createRectangle_r(GEOSContextHandle_t handle, double xmin, double ymin, double xmax, double ymax)
GEOSGeoJSONWriter * GEOSGeoJSONWriter_create(void)
int(* GEOSDistanceCallback)(const void *item1, const void *item2, double *distance, void *userdata)
Definition geos_c.h:305
GEOSGeometry * GEOSPolygonize_valid(const GEOSGeometry *const geoms[], unsigned int ngeoms)
int GEOSGridIntersectionFractions_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double xmin, double ymin, double xmax, double ymax, unsigned nx, unsigned ny, float *buf)
GEOSWKTReader * GEOSWKTReader_create(void)
struct GEOSWKBReader_t GEOSWKBReader
Definition geos_c.h:2129
char GEOSHasM(const GEOSGeometry *g)
GEOSGeometry * GEOSConcaveHullByLength_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double ratio, unsigned int allowHoles)
void GEOSGeom_destroy(GEOSGeometry *g)
int GEOS_setWKBByteOrder_r(GEOSContextHandle_t handle, int byteOrder)
GEOSGeometry * GEOSClipByRect(const GEOSGeometry *g, double xmin, double ymin, double xmax, double ymax)
GEOSGeometry * GEOSCoverageSimplifyVW_r(GEOSContextHandle_t extHandle, const GEOSGeometry *input, double tolerance, int preserveBoundary)
void(* GEOSMessageHandler)(GEOS_PRINTF_FORMAT const char *fmt,...) GEOS_PRINTF_FORMAT_ATTR(1
Definition geos_c.h:105
int GEOSDistance_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double *dist)
int GEOSGeomGetM_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *m)
char GEOSTouches(const GEOSGeometry *g1, const GEOSGeometry *g2)
struct GEOSCoordSeq_t GEOSCoordSequence
Definition geos_c.h:155
GEOSGeometry * GEOSGeomGetStartPoint_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
char GEOSRelatePatternMatch_r(GEOSContextHandle_t handle, const char *intMatrix, const char *imPattern)
void GEOSSTRtree_destroy(GEOSSTRtree *tree)
GEOSCoverageCleanParams * GEOSCoverageCleanParams_create_r(GEOSContextHandle_t extHandle)
GEOSGeometry * GEOSGeom_createCircularString_r(GEOSContextHandle_t handle, GEOSCoordSequence *s)
void GEOSBufferParams_destroy(GEOSBufferParams *parms)
const size_t * GEOSClusterInfo_getInputsForClusterN_r(GEOSContextHandle_t, const GEOSClusterInfo *clusters, size_t i)
int GEOSCoordSeq_setXY_r(GEOSContextHandle_t handle, GEOSCoordSequence *s, unsigned int idx, double x, double y)
GEOSGeomTypes
Definition geos_c.h:211
@ GEOS_MULTILINESTRING
Definition geos_c.h:223
@ GEOS_GEOMETRYCOLLECTION
Definition geos_c.h:227
@ GEOS_POINT
Definition geos_c.h:213
@ GEOS_MULTIPOLYGON
Definition geos_c.h:225
@ GEOS_LINEARRING
Definition geos_c.h:217
@ GEOS_POLYGON
Definition geos_c.h:219
@ GEOS_MULTIPOINT
Definition geos_c.h:221
@ GEOS_LINESTRING
Definition geos_c.h:215
GEOSGeometry * GEOSIntersectionPrec(const GEOSGeometry *g1, const GEOSGeometry *g2, double gridSize)
int GEOSGetNumInteriorRings(const GEOSGeometry *g)
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 * GEOSGeom_setPrecision_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double gridSize, int flags)
char GEOSEqualsExact(const GEOSGeometry *g1, const GEOSGeometry *g2, double tolerance)
GEOSGeometry * GEOSDisjointSubsetUnion_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSGeom_createEmptyCircularString(void)
GEOSMessageHandler_r GEOSContext_setNoticeMessageHandler_r(GEOSContextHandle_t extHandle, GEOSMessageHandler_r nf, void *userData)
int GEOSCoordSeq_getOrdinate(const GEOSCoordSequence *s, unsigned int idx, unsigned int dim, double *val)
void GEOSWKBReader_destroy_r(GEOSContextHandle_t handle, GEOSWKBReader *reader)
GEOSGeometry * GEOSCoverageEdges(const GEOSGeometry *input, int edgetype)
GEOSGeometry * GEOSBoundary(const GEOSGeometry *g)
GEOSGeometry * GEOSUnaryUnion_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
int GEOSDistanceIndexed_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double *dist)
char GEOSCoordSeq_hasM(GEOSCoordSequence *s)
void GEOSWKTReader_destroy(GEOSWKTReader *reader)
GEOSGeometry * GEOSMinimumWidth(const GEOSGeometry *g)
char * GEOSWKTWriter_write(GEOSWKTWriter *writer, const GEOSGeometry *g)
GEOSGeometry * GEOSTopologyPreserveSimplify(const GEOSGeometry *g, double tolerance)
void(* GEOSQueryCallback)(void *item, void *userdata)
Definition geos_c.h:286
int GEOSCoordSeq_getSize_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s, unsigned int *size)
GEOSGeometry * GEOSGeomFromWKT(const char *wkt)
GEOSGeometry * GEOSWKBReader_read(GEOSWKBReader *reader, const unsigned char *wkb, size_t size)
GEOSGeometry * GEOSCoverageSimplifyVW(const GEOSGeometry *input, double tolerance, int preserveBoundary)
char GEOSContains_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
double GEOSProject_r(GEOSContextHandle_t handle, const GEOSGeometry *line, const GEOSGeometry *point)
void GEOSGeom_destroy_r(GEOSContextHandle_t handle, GEOSGeometry *g)
int GEOSHausdorffDistanceDensifyWithPoints(const GEOSGeometry *g1, const GEOSGeometry *g2, double densifyFrac, double *dist, double *p1x, double *p1y, double *p2x, double *p2y)
GEOSGeometry * GEOSTopologyPreserveSimplify_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double tolerance)
GEOSGeometry * GEOSSingleSidedBuffer_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double width, int quadsegs, int joinStyle, double mitreLimit, int leftSide)
GEOSContextHandle_t GEOS_init_r(void)
struct GEOSGeom_t GEOSGeometry
Definition geos_c.h:140
char GEOSPreparedContainsXY_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, double x, double y)
GEOSGeometry * GEOSGeom_createRectangle(double xmin, double ymin, double xmax, double ymax)
GEOSGeometry * GEOSGeom_setPrecision(const GEOSGeometry *g, double gridSize, int flags)
const void * GEOSSTRtree_nearest_generic_r(GEOSContextHandle_t handle, GEOSSTRtree *tree, const void *item, const GEOSGeometry *itemEnvelope, GEOSDistanceCallback distancefn, void *userdata)
int GEOSCoordSeq_getM_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s, unsigned int idx, double *val)
int GEOSGeomTypeId(const GEOSGeometry *g)
int GEOSSTRtree_build(GEOSSTRtree *tree)
GEOSGeometry * GEOSPolygonize_full_r(GEOSContextHandle_t handle, const GEOSGeometry *input, GEOSGeometry **cuts, GEOSGeometry **dangles, GEOSGeometry **invalidRings)
char GEOSCoveredBy_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
int GEOSGetNumCoordinates_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 * GEOSGeom_createEmptyCollection_r(GEOSContextHandle_t handle, int type)
GEOSGeometry * GEOSGeom_createEmptyCircularString_r(GEOSContextHandle_t handle)
void GEOSWKBWriter_setOutputDimension(GEOSWKBWriter *writer, int newDimension)
GEOSGeometry * GEOSEnvelope(const GEOSGeometry *g)
GEOSGeometry * GEOSGeom_createPoint_r(GEOSContextHandle_t handle, GEOSCoordSequence *s)
GEOSGeometry * GEOSGeom_createEmptyCurvePolygon(void)
GEOSWKBFlavors
Definition geos_c.h:257
@ GEOS_WKB_ISO
Definition geos_c.h:261
@ GEOS_WKB_EXTENDED
Definition geos_c.h:259
GEOSGeometry * GEOSDensify(const GEOSGeometry *g, double tolerance)
GEOSGeometry * GEOSConstrainedDelaunayTriangulation_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
void GEOSWKBReader_setFixStructure_r(GEOSContextHandle_t handle, GEOSWKBReader *reader, char doFix)
void GEOSFree_r(GEOSContextHandle_t handle, void *buffer)
GEOSGeometry * GEOSGeom_extractUniquePoints(const GEOSGeometry *g)
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)
char GEOSCoordSeq_hasZ_r(GEOSContextHandle_t handle, GEOSCoordSequence *s)
int GEOS_getWKBOutputDims(void)
GEOSGeometry * GEOSGeom_createPolygon_r(GEOSContextHandle_t handle, GEOSGeometry *shell, GEOSGeometry **holes, unsigned int nholes)
GEOSGeometry * GEOSGeomGetPointN(const GEOSGeometry *g, int n)
const char * GEOSversion(void)
const GEOSGeometry * GEOSGetExteriorRing(const GEOSGeometry *g)
int GEOSMakeValidParams_setMethod(GEOSMakeValidParams *p, enum GEOSMakeValidMethods method)
void initGEOS(GEOSMessageHandler notice_function, GEOSMessageHandler error_function)
GEOSGeometry * GEOSNode(const GEOSGeometry *g)
int GEOSOrientPolygons_r(GEOSContextHandle_t handle, GEOSGeometry *g, int exteriorCW)
int GEOSCoverageCleanParams_setGapMaximumWidth(GEOSCoverageCleanParams *params, double gapMaximumWidth)
GEOSGeometry * GEOSOffsetCurve_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double width, int quadsegs, int joinStyle, double mitreLimit)
GEOSSTRtree * GEOSSTRtree_create(size_t nodeCapacity)
GEOSGeometry * GEOSBoundary_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
int GEOSFrechetDistanceDensify_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double densifyFrac, double *dist)
char GEOSPreparedRelatePattern_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2, const char *im)
char GEOSPreparedIntersects_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
GEOSGeometry * GEOSGeom_createLinearRing_r(GEOSContextHandle_t handle, GEOSCoordSequence *s)
char GEOSCrosses_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
char GEOSEquals(const GEOSGeometry *g1, const GEOSGeometry *g2)
int GEOSGeom_getYMin(const GEOSGeometry *g, double *value)
int GEOSGeomGetX(const GEOSGeometry *g, double *x)
GEOSOverlapMerge
Definition geos_c.h:268
@ GEOS_MERGE_MIN_AREA
Definition geos_c.h:274
@ GEOS_MERGE_MIN_INDEX
Definition geos_c.h:276
@ GEOS_MERGE_LONGEST_BORDER
Definition geos_c.h:270
@ GEOS_MERGE_MAX_AREA
Definition geos_c.h:272
char GEOSisSimpleDetail(const GEOSGeometry *g, int findAllLocations, GEOSGeometry **locations)
char GEOSPreparedDistanceWithin_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2, double dist)
void GEOSSTRtree_query(GEOSSTRtree *tree, const GEOSGeometry *g, GEOSQueryCallback callback, void *userdata)
GEOSGeometry * GEOSOffsetCurve(const GEOSGeometry *g, double width, int quadsegs, int joinStyle, double mitreLimit)
GEOSGeometry * GEOSCoverageUnion_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
void GEOS_interruptCancel(void)
void GEOSMakeValidParams_destroy(GEOSMakeValidParams *parms)
int GEOSGeomGetY(const GEOSGeometry *g, double *y)
GEOSGeometry * GEOSLineMergeDirected_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
size_t * GEOSClusterInfo_getClustersForInputs_r(GEOSContextHandle_t, const GEOSClusterInfo *clusters)
int GEOSFrechetDistance(const GEOSGeometry *g1, const GEOSGeometry *g2, double *dist)
GEOSCoverageCleanParams * GEOSCoverageCleanParams_create(void)
void GEOSWKTReader_setFixStructure_r(GEOSContextHandle_t handle, GEOSWKTReader *reader, char doFix)
GEOSWKTWriter * GEOSWKTWriter_create_r(GEOSContextHandle_t handle)
GEOSGeometry * GEOSGeomGetPointN_r(GEOSContextHandle_t handle, const GEOSGeometry *g, int n)
void GEOSClusterInfo_destroy_r(GEOSContextHandle_t, GEOSClusterInfo *info)
GEOSGeometry * GEOSDifference(const GEOSGeometry *ga, const GEOSGeometry *gb)
GEOSGeometry * GEOSCoverageEdges_r(GEOSContextHandle_t handle, const GEOSGeometry *input, int edgetype)
GEOSGeometry * GEOSGeom_createLineString_r(GEOSContextHandle_t handle, GEOSCoordSequence *s)
GEOSGeometry * GEOSPolygonizer_getCutEdges_r(GEOSContextHandle_t handle, const GEOSGeometry *const geoms[], unsigned int ngeoms)
int GEOSMinimumClearance(const GEOSGeometry *g, double *d)
size_t GEOSClusterInfo_getNumClusters_r(GEOSContextHandle_t, const GEOSClusterInfo *clusters)
GEOSGeometry * GEOSDelaunayTriangulation(const GEOSGeometry *g, double tolerance, int onlyEdges)
GEOSGeometry * GEOSGeom_createCurvePolygon_r(GEOSContextHandle_t handle, GEOSGeometry *shell, GEOSGeometry **holes, unsigned int nholes)
char GEOSSTRtree_remove(GEOSSTRtree *tree, const GEOSGeometry *g, void *item)
GEOSGeometry * GEOSBufferWithParams(const GEOSGeometry *g, const GEOSBufferParams *p, double width)
GEOSMessageHandler GEOSContext_setNoticeHandler_r(GEOSContextHandle_t extHandle, GEOSMessageHandler nf)
int GEOSCoordSeq_getXYZ(const GEOSCoordSequence *s, unsigned int idx, double *x, double *y, double *z)
char GEOSisValidDetail_r(GEOSContextHandle_t handle, const GEOSGeometry *g, int flags, char **reason, GEOSGeometry **location)
GEOSMakeValidParams * GEOSMakeValidParams_create(void)
GEOSGeometry * GEOSGeom_createEmptyLineString_r(GEOSContextHandle_t handle)
char * GEOSGeomType_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSMinimumClearanceLine(const GEOSGeometry *g)
void GEOSGeoJSONWriter_setOutputDimension(GEOSGeoJSONWriter *writer, int dim)
char * GEOSRelateBoundaryNodeRule_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, int bnr)
int GEOSHausdorffDistanceWithPoints_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double *dist, double *p1x, double *p1y, double *p2x, double *p2y)
char GEOSDisjoint(const GEOSGeometry *g1, const GEOSGeometry *g2)
int GEOSCoordSeq_setX(GEOSCoordSequence *s, unsigned int idx, double val)
int GEOSCoverageIsValid(const GEOSGeometry *input, double gapWidth, GEOSGeometry **invalidEdges)
int GEOSPreparedDistance(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2, double *dist)
GEOSGeometry * GEOSUnion_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
GEOSMakeValidParams * GEOSMakeValidParams_create_r(GEOSContextHandle_t extHandle)
GEOSGeometry * GEOSCoverageCleanWithParams_r(GEOSContextHandle_t extHandle, const GEOSGeometry *input, const GEOSCoverageCleanParams *params)
char GEOSPreparedContains(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
GEOSGeometry * GEOSPolygonHullSimplifyMode_r(GEOSContextHandle_t handle, const GEOSGeometry *g, unsigned int isOuter, unsigned int parameterMode, double parameter)
int GEOSCoordSeq_getXYZ_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s, unsigned int idx, double *x, double *y, double *z)
GEOSGeometry * GEOSGeomGetEndPoint_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
void GEOSWKBWriter_setFlavor(GEOSWKBWriter *writer, int flavor)
GEOSContextHandle_t initGEOS_r(GEOSMessageHandler notice_function, GEOSMessageHandler error_function)
GEOSCoordSequence * GEOSCoordSeq_createWithDimensions_r(GEOSContextHandle_t handle, unsigned int size, int hasZ, int hasM)
GEOSBufCapStyles
Definition geos_c.h:711
@ GEOSBUF_CAP_SQUARE
Definition geos_c.h:720
@ GEOSBUF_CAP_FLAT
Definition geos_c.h:717
@ GEOSBUF_CAP_ROUND
Definition geos_c.h:714
GEOSGeometry * GEOSConvexHull(const GEOSGeometry *g)
GEOSVoronoiFlags
Definition geos_c.h:5206
@ GEOS_VORONOI_PRESERVE_ORDER
Definition geos_c.h:5212
@ GEOS_VORONOI_ONLY_EDGES
Definition geos_c.h:5208
GEOSGeometry * GEOSCoverageUnion(const GEOSGeometry *g)
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)
unsigned char * GEOSWKBWriter_write_r(GEOSContextHandle_t handle, GEOSWKBWriter *writer, const GEOSGeometry *g, size_t *size)
GEOSGeometry * GEOSSymDifference_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
void GEOSPreparedGeom_destroy(const GEOSPreparedGeometry *g)
GEOSGeometry * GEOSNode_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
int GEOSBufferParams_setJoinStyle(GEOSBufferParams *p, int joinStyle)
void GEOSCoordSeq_destroy(GEOSCoordSequence *s)
GEOSGeometry * GEOSGeomFromWKT_r(GEOSContextHandle_t handle, const char *wkt)
GEOSGeoJSONReader * GEOSGeoJSONReader_create(void)
int GEOSCoordSeq_setOrdinate(GEOSCoordSequence *s, unsigned int idx, unsigned int dim, double val)
char GEOSPreparedIntersectsXY(const GEOSPreparedGeometry *pg1, double x, double y)
int GEOSBufferParams_setMitreLimit_r(GEOSContextHandle_t handle, GEOSBufferParams *p, double mitreLimit)
char GEOSContains(const GEOSGeometry *g1, const GEOSGeometry *g2)
void GEOSCoverageCleanParams_destroy_r(GEOSContextHandle_t extHandle, GEOSCoverageCleanParams *params)
GEOSGeometry * GEOSGeom_transformXYZ_r(GEOSContextHandle_t handle, const GEOSGeometry *g, GEOSTransformXYZCallback callback, void *userdata)
char GEOSPreparedIntersectsXY_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, double x, double y)
GEOSGeometry * GEOSBufferWithStyle(const GEOSGeometry *g, double width, int quadsegs, int endCapStyle, int joinStyle, double mitreLimit)
GEOSGeometry * GEOSGeom_transformXY_r(GEOSContextHandle_t handle, const GEOSGeometry *g, GEOSTransformXYCallback callback, void *userdata)
GEOSGeometry * GEOSBuildArea(const GEOSGeometry *g)
GEOSClusterInfo * GEOSClusterEnvelopeDistance_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double d)
GEOSValidFlags
Definition geos_c.h:1654
@ GEOSVALID_ALLOW_SELFTOUCHING_RING_FORMING_HOLE
Definition geos_c.h:1656
int GEOSGeoJSONWriter_getOutputDimension(GEOSGeoJSONWriter *writer)
void GEOSWKBWriter_setByteOrder_r(GEOSContextHandle_t handle, GEOSWKBWriter *writer, int byteOrder)
GEOSGeometry * GEOSGeom_transformXYZ(const GEOSGeometry *g, GEOSTransformXYZCallback callback, void *userdata)
GEOSBufferParams * GEOSBufferParams_create(void)
GEOSClusterInfo * GEOSClusterGeometryIntersects_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
struct GEOSWKBWriter_t GEOSWKBWriter
Definition geos_c.h:2136
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 * GEOSConcaveHullOfPolygons(const GEOSGeometry *g, double lengthRatio, unsigned int isTight, unsigned int isHolesAllowed)
int GEOSGeomTypeId_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSWKTReader * GEOSWKTReader_create_r(GEOSContextHandle_t handle)
GEOSGeometry * GEOSGeom_createCompoundCurve_r(GEOSContextHandle_t handle, GEOSGeometry **curves, unsigned int ncurves)
struct GEOSWKTWriter_t GEOSWKTWriter
Definition geos_c.h:2122
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)
size_t * GEOSMinimumSpanningTree_r(GEOSContextHandle_t handle, const GEOSGeometry *const geoms[], unsigned int ngeoms)
char GEOSPreparedCovers(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
GEOSMessageHandler_r GEOSContext_setErrorMessageHandler_r(GEOSContextHandle_t extHandle, GEOSMessageHandler_r ef, void *userData)
GEOSGeometry ** GEOSGeom_releaseCollection_r(GEOSContextHandle_t handle, GEOSGeometry *collection, unsigned int *ngeoms)
GEOSGeometry * GEOSGeoJSONReader_readGeometry(GEOSGeoJSONReader *reader, const char *geojson)
GEOSGeometry * GEOSEnvelope_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
char GEOSEqualsIdentical(const GEOSGeometry *g1, const GEOSGeometry *g2)
GEOSGeometry * GEOSGeomFromHEX_buf(const unsigned char *hex, size_t size)
unsigned char * GEOSWKBWriter_writeHEX(GEOSWKBWriter *writer, const GEOSGeometry *g, size_t *size)
GEOSGeometry * GEOSInterpolate_r(GEOSContextHandle_t handle, const GEOSGeometry *line, double d)
GEOSGeometry * GEOSSharedPaths_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
int GEOSGeom_getExtent_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *xmin, double *ymin, double *xmax, double *ymax)
GEOSGeometry * GEOSWKTReader_read_r(GEOSContextHandle_t handle, GEOSWKTReader *reader, const char *wkt)
char GEOSPreparedRelatePattern(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2, const char *imPattern)
int GEOS_setWKBByteOrder(int byteOrder)
int GEOSCoverageIsValid_r(GEOSContextHandle_t extHandle, const GEOSGeometry *input, double gapWidth, GEOSGeometry **output)
int GEOSCoverageCleanParams_setGapMaximumWidth_r(GEOSContextHandle_t extHandle, GEOSCoverageCleanParams *params, double gapMaximumWidth)
void GEOSWKBReader_setFixStructure(GEOSWKBReader *reader, char doFix)
GEOSGeometry * GEOSInterpolate(const GEOSGeometry *line, double d)
char GEOSPreparedContains_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
GEOSGeometry * GEOSInterpolateNormalized_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double d)
int GEOSCoordSeq_getY_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s, unsigned int idx, double *val)
GEOSGeometry * GEOSGeomGetEndPoint(const GEOSGeometry *g)
GEOSGeometry * GEOSSnap_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double tolerance)
GEOSGeometry * GEOSPolygonize_full(const GEOSGeometry *input, GEOSGeometry **cuts, GEOSGeometry **dangles, GEOSGeometry **invalid)
char * GEOSRelateBoundaryNodeRule(const GEOSGeometry *g1, const GEOSGeometry *g2, int bnr)
double GEOSGeom_getPrecision(const GEOSGeometry *g)
GEOSGeometry * GEOSLargestEmptyCircle(const GEOSGeometry *obstacles, const GEOSGeometry *boundary, double tolerance)
char GEOSIntersects(const GEOSGeometry *g1, const GEOSGeometry *g2)
int GEOSCoordSeq_getDimensions(const GEOSCoordSequence *s, unsigned int *dims)
char GEOSPreparedCoveredBy(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
char GEOSCovers(const GEOSGeometry *g1, const GEOSGeometry *g2)
GEOSInterruptCallback * GEOS_interruptRegisterCallback(GEOSInterruptCallback *cb)
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)
int GEOSCoordSeq_getXY(const GEOSCoordSequence *s, unsigned int idx, double *x, double *y)
GEOSGeometry * GEOSSimplify_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double tolerance)
GEOSGeometry * GEOSIntersection_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
int GEOSOrientPolygons(GEOSGeometry *g, int exteriorCW)
char GEOSOverlaps(const GEOSGeometry *g1, const GEOSGeometry *g2)
char GEOSHasM_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
void GEOSWKTWriter_setTrim_r(GEOSContextHandle_t handle, GEOSWKTWriter *writer, char trim)
GEOSGeometry * GEOSLineMergeDirected(const GEOSGeometry *g)
GEOSGeometry * GEOSMakeValidWithParams(const GEOSGeometry *g, const GEOSMakeValidParams *makeValidParams)
GEOSGeometry * GEOSGeomFromWKB_buf_r(GEOSContextHandle_t handle, const unsigned char *wkb, size_t size)
GEOSGeometry * GEOSPointOnSurface(const GEOSGeometry *g)
GEOSGeometry * GEOSUnaryUnionPrec(const GEOSGeometry *g, double gridSize)
void GEOSWKTWriter_setTrim(GEOSWKTWriter *writer, char trim)
GEOSGeometry * GEOSBuffer_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double width, int quadsegs)
GEOSGeometry * GEOSMinimumWidth_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSWKBReader_readHEX_r(GEOSContextHandle_t handle, GEOSWKBReader *reader, const unsigned char *hex, size_t size)
GEOSWKBByteOrders
Definition geos_c.h:241
@ GEOS_WKB_NDR
Definition geos_c.h:245
@ GEOS_WKB_XDR
Definition geos_c.h:243
GEOSGeometry * GEOSVoronoiDiagram_r(GEOSContextHandle_t extHandle, const GEOSGeometry *g, const GEOSGeometry *env, double tolerance, int flags)
void GEOSWKBWriter_setIncludeSRID_r(GEOSContextHandle_t handle, GEOSWKBWriter *writer, const char writeSRID)
GEOSClusterInfo * GEOSClusterDBSCAN_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double eps, unsigned minPoints)
GEOSGeometry * GEOSConstrainedDelaunayTriangulation(const GEOSGeometry *g)
int GEOSCoordSeq_copyToArrays(const GEOSCoordSequence *s, double *x, double *y, double *z, double *m)
GEOSGeometry * GEOSMinimumBoundingCircle(const GEOSGeometry *g, double *radius, GEOSGeometry **center)
GEOSGeometry * GEOSSymDifference(const GEOSGeometry *ga, const GEOSGeometry *gb)
char GEOSDistanceWithin_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double dist)
GEOSGeometry * GEOSMakeValidWithParams_r(GEOSContextHandle_t handle, const GEOSGeometry *g, const GEOSMakeValidParams *makeValidParams)
struct GEOSWKTReader_t GEOSWKTReader
Definition geos_c.h:2115
GEOSCoordSequence * GEOSNearestPoints_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
GEOSGeometry * GEOSPolygonize(const GEOSGeometry *const geoms[], unsigned int ngeoms)
char GEOSPreparedCoveredBy_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
GEOSGeometry * GEOSDisjointSubsetUnion(const GEOSGeometry *g)
GEOSGeometry * GEOSGeom_createPointFromXY(double x, double y)
GEOSGeometry * GEOSRemoveRepeatedPoints(const GEOSGeometry *g, double tolerance)
GEOSGeometry * GEOSVoronoiDiagram(const GEOSGeometry *g, const GEOSGeometry *env, double tolerance, int flags)
GEOSGeometry * GEOSGeom_createPolygon(GEOSGeometry *shell, GEOSGeometry **holes, unsigned int nholes)
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 * GEOSGeomType(const GEOSGeometry *g)
char GEOSPreparedDisjoint(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
GEOSGeometry * GEOSGeom_createEmptyPoint_r(GEOSContextHandle_t handle)
GEOSRelateBoundaryNodeRules
Definition geos_c.h:1611
@ GEOSRELATE_BNR_OGC
Definition geos_c.h:1615
@ GEOSRELATE_BNR_MULTIVALENT_ENDPOINT
Definition geos_c.h:1619
@ GEOSRELATE_BNR_ENDPOINT
Definition geos_c.h:1617
@ GEOSRELATE_BNR_MOD2
Definition geos_c.h:1613
@ GEOSRELATE_BNR_MONOVALENT_ENDPOINT
Definition geos_c.h:1621
const size_t * GEOSClusterInfo_getInputsForClusterN(const GEOSClusterInfo *clusters, size_t i)
GEOSClusterInfo_getInputsForClusterN.
GEOSGeometry * GEOSSymDifferencePrec_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double gridSize)
char * GEOSGeoJSONWriter_writeGeometry_r(GEOSContextHandle_t handle, GEOSGeoJSONWriter *writer, const GEOSGeometry *g, int indent)
int GEOSBufferParams_setSingleSided_r(GEOSContextHandle_t handle, GEOSBufferParams *p, int singleSided)
char GEOSCrosses(const GEOSGeometry *g1, const GEOSGeometry *g2)
GEOSGeometry * GEOSGeomGetStartPoint(const GEOSGeometry *g)
int() GEOSContextInterruptCallback(void *)
Definition geos_c.h:369
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)
GEOSGeometry * GEOSGeoJSONReader_readGeometry_r(GEOSContextHandle_t handle, GEOSGeoJSONReader *reader, const char *geojson)
char * GEOSGeoJSONWriter_writeGeometry(GEOSGeoJSONWriter *writer, const GEOSGeometry *g, int indent)
GEOSGeometry * GEOSGeom_createLineString(GEOSCoordSequence *s)
unsigned char * GEOSWKBWriter_write(GEOSWKBWriter *writer, const GEOSGeometry *g, size_t *size)
GEOSGeometry * GEOSMakeValid_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSLineSubstring_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double start_fraction, double end_fdraction)
GEOSGeometry * GEOSReverse(const GEOSGeometry *g)
int GEOSWKBWriter_getFlavor(const GEOSWKBWriter *writer)
char GEOSIntersects_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
char * GEOSRelate(const GEOSGeometry *g1, const GEOSGeometry *g2)
int GEOSCoordSeq_getSize(const GEOSCoordSequence *s, unsigned int *size)
GEOSPolygonHullParameterModes
Definition geos_c.h:4996
@ GEOSHULL_PARAM_AREA_RATIO
Definition geos_c.h:5000
@ GEOSHULL_PARAM_VERTEX_RATIO
Definition geos_c.h:4998
int GEOSOrientationIndex(double Ax, double Ay, double Bx, double By, double Px, double Py)
GEOSGeometry * GEOSGeomFromWKB_buf(const unsigned char *wkb, size_t size)
void GEOSWKTWriter_setOutputDimension_r(GEOSContextHandle_t handle, GEOSWKTWriter *writer, int dim)
GEOSGeometry * GEOSClipByRect_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double xmin, double ymin, double xmax, double ymax)
int GEOSGetNumInteriorRings_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
int GEOSGeomGetZ(const GEOSGeometry *g, double *z)
GEOSGeometry * GEOSDensify_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double tolerance)
int GEOSWKBWriter_getFlavor_r(GEOSContextHandle_t handle, const GEOSWKBWriter *writer)
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)
GEOSGeometry * GEOSMakeValid(const GEOSGeometry *g)
void GEOSCoordSeq_destroy_r(GEOSContextHandle_t handle, GEOSCoordSequence *s)
GEOSGeometry * GEOSPolygonizer_getCutEdges(const GEOSGeometry *const geoms[], unsigned int ngeoms)
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)
GEOSSTRtree * GEOSSTRtree_create_r(GEOSContextHandle_t handle, size_t nodeCapacity)
int GEOSMakeValidParams_setKeepCollapsed(GEOSMakeValidParams *p, int keepCollapsed)
GEOSGeometry * GEOSUnionPrec(const GEOSGeometry *ga, const GEOSGeometry *gb, double gridSize)
int GEOSHausdorffDistanceDensify(const GEOSGeometry *g1, const GEOSGeometry *g2, double densifyFrac, double *dist)
GEOSGeometry * GEOSMinimumRotatedRectangle(const GEOSGeometry *g)
GEOSGeometry * GEOSGeom_createEmptyPolygon_r(GEOSContextHandle_t handle)
GEOSBufJoinStyles
Definition geos_c.h:727
@ GEOSBUF_JOIN_MITRE
Definition geos_c.h:737
@ GEOSBUF_JOIN_ROUND
Definition geos_c.h:732
@ GEOSBUF_JOIN_BEVEL
Definition geos_c.h:742
GEOSGeometry * GEOSGeom_createEmptyCollection(int type)
GEOSGeometry * GEOSIntersection(const GEOSGeometry *g1, const GEOSGeometry *g2)
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)
int GEOSCoverageCleanParams_setSnappingDistance_r(GEOSContextHandle_t extHandle, GEOSCoverageCleanParams *params, double snappingDistance)
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)
int GEOSLength_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *length)
const GEOSGeometry * GEOSSTRtree_nearest(GEOSSTRtree *tree, const GEOSGeometry *geom)
GEOSClusterInfo * GEOSClusterGeometryIntersects(const GEOSGeometry *g)
GEOSClusterGeometryIntersects.
unsigned char * GEOSGeomToHEX_buf(const GEOSGeometry *g, size_t *size)
GEOSCoordSequence * GEOSCoordSeq_copyFromBuffer_r(GEOSContextHandle_t handle, const double *buf, unsigned int size, int hasZ, int hasM)
GEOSWKBReader * GEOSWKBReader_create_r(GEOSContextHandle_t handle)
char GEOSisSimpleDetail_r(GEOSContextHandle_t handle, const GEOSGeometry *g, int findAllLocations, GEOSGeometry **location)
char GEOSDisjoint_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
char GEOSPreparedContainsProperly_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
GEOSCoordSequence * GEOSPreparedNearestPoints_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
GEOSGeometry * GEOSGeomFromHEX_buf_r(GEOSContextHandle_t handle, const unsigned char *hex, size_t size)
GEOSClusterInfo * GEOSClusterGeometryDistance_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double d)
GEOSCoordSequence * GEOSCoordSeq_clone(const GEOSCoordSequence *s)
int GEOSGeom_getCoordinateDimension_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSSubdivideByGrid_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double xmin, double ymin, double xmax, double ymax, unsigned nx, unsigned ny, int includeExterior)
int GEOSNormalize(GEOSGeometry *g)
unsigned char * GEOSGeomToWKB_buf(const GEOSGeometry *g, size_t *size)
int GEOSGetNumGeometries_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
char GEOSEqualsExact_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double tolerance)
GEOSGeometry * GEOSMinimumBoundingCircle_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *radius, GEOSGeometry **center)
int GEOSWKTWriter_getOutputDimension(GEOSWKTWriter *writer)
char GEOSTouches_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
GEOSGeometry * GEOSWKTReader_read(GEOSWKTReader *reader, const char *wkt)
GEOSGeometry * GEOSUnaryUnionPrec_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double gridSize)
int GEOSCoordSeq_getM(const GEOSCoordSequence *s, unsigned int idx, double *val)
int GEOSArea_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *area)
double GEOSGeom_getPrecision_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
void GEOSWKTWriter_setOutputDimension(GEOSWKTWriter *writer, int dim)
GEOSCoordSequence * GEOSCoordSeq_copyFromArrays(const double *x, const double *y, const double *z, const double *m, unsigned int size)
GEOSWKBReader * GEOSWKBReader_create(void)
int GEOSCoordSeq_getY(const GEOSCoordSequence *s, unsigned int idx, double *val)
void GEOS_interruptThread(void)
int GEOSCoordSeq_setZ(GEOSCoordSequence *s, unsigned int idx, double val)
int GEOSBufferParams_setMitreLimit(GEOSBufferParams *p, double mitreLimit)
int(* GEOSTransformXYCallback)(double *x, double *y, void *userdata)
Definition geos_c.h:324
void GEOSWKTWriter_setOld3D(GEOSWKTWriter *writer, int useOld3D)
int GEOSGeom_getExtent(const GEOSGeometry *g, double *xmin, double *ymin, double *xmax, double *ymax)
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)
GEOSCoordSequence * GEOSCoordSeq_createWithDimensions(unsigned int size, int hasZ, int hasM)
int GEOSCoverageCleanParams_setSnappingDistance(GEOSCoverageCleanParams *params, double snappingDistance)
int GEOSDistance(const GEOSGeometry *g1, const GEOSGeometry *g2, double *dist)
GEOSGeometry * GEOSGeom_createEmptyPolygon(void)
void finishGEOS_r(GEOSContextHandle_t handle)
char GEOSisClosed(const GEOSGeometry *g)
GEOSGeometry * GEOSPolygonHullSimplifyMode(const GEOSGeometry *g, unsigned int isOuter, unsigned int parameterMode, double parameter)
int GEOSGeom_getCoordinateDimension(const GEOSGeometry *g)
size_t GEOSClusterInfo_getClusterSize(const GEOSClusterInfo *clusters, size_t i)
GEOSClusterInfo_getSize.
struct GEOSClusterInfo_t GEOSClusterInfo
Definition geos_c.h:189
int GEOSFrechetDistance_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double *dist)
char GEOSRelatePattern(const GEOSGeometry *g1, const GEOSGeometry *g2, const char *imPattern)
GEOSGeometry * GEOSBufferWithStyle_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double width, int quadsegs, int endCapStyle, int joinStyle, double mitreLimit)
char * GEOSRelate_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
GEOSGeometry * GEOSConvexHull_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
struct GEOSGeoJSONWriter_t GEOSGeoJSONWriter
Definition geos_c.h:2150
unsigned char * GEOSGeomToWKB_buf_r(GEOSContextHandle_t handle, const GEOSGeometry *g, size_t *size)
GEOSGeometry * GEOSSingleSidedBuffer(const GEOSGeometry *g, double width, int quadsegs, int joinStyle, double mitreLimit, int leftSide)
GEOSGeometry * GEOSUnionCascaded(const GEOSGeometry *g)
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)
size_t * GEOSClusterInfo_getClustersForInputs(const GEOSClusterInfo *clusters)
GEOSClusterInfo_getClustersForInputs.
GEOSGeometry * GEOSCoverageClean_r(GEOSContextHandle_t extHandle, const GEOSGeometry *input)
int GEOSWKTWriter_getOutputDimension_r(GEOSContextHandle_t handle, GEOSWKTWriter *writer)
double GEOSProjectNormalized(const GEOSGeometry *line, const GEOSGeometry *point)
int GEOSGeom_getYMin_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *value)
GEOSGeometry * GEOSGeom_clone_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
const GEOSPreparedGeometry * GEOSPrepare_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSMinimumClearanceLine_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
void GEOSGeom_setUserData(GEOSGeometry *g, void *userData)
GEOSGeometry * GEOSGeom_createCollection(int type, GEOSGeometry **geoms, unsigned int ngeoms)
void GEOSGeoJSONReader_destroy(GEOSGeoJSONReader *reader)
GEOSGeometry * GEOSGeom_createEmptyCompoundCurve(void)
GEOSGeometry * GEOSGetCentroid_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSCoordSequence * GEOSCoordSeq_copyFromBuffer(const double *buf, unsigned int size, int hasZ, int hasM)
int GEOSGridIntersectionFractions(const GEOSGeometry *g, double xmin, double ymin, double xmax, double ymax, unsigned nx, unsigned ny, float *buf)
int GEOSGeomGetNumPoints(const GEOSGeometry *g)
void GEOSGeoJSONWriter_destroy(GEOSGeoJSONWriter *writer)
GEOSGeometry * GEOSGeom_transformXY(const GEOSGeometry *g, GEOSTransformXYCallback callback, void *userdata)
size_t GEOSClusterInfo_getNumClusters(const GEOSClusterInfo *clusters)
GEOSClusterInfo_getNumClusters.
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)
char * GEOSisValidReason_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSPolygonize_valid_r(GEOSContextHandle_t handle, const GEOSGeometry *const geoms[], unsigned int ngems)
GEOSGeometry * GEOSGeom_createCurvePolygon(GEOSGeometry *shell, GEOSGeometry **holes, unsigned int nholes)
GEOSGeometry * GEOSLineSubstring(const GEOSGeometry *g, double start_fraction, double end_fraction)
char GEOSPreparedIntersects(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
char GEOSWithin_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
GEOSClusterInfo * GEOSClusterDBSCAN(const GEOSGeometry *g, double eps, unsigned minPoints)
GEOSClusterDBSCAN.
GEOSGeometry * GEOSConcaveHullOfPolygons_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double lengthRatio, unsigned int isTight, unsigned int isHolesAllowed)
int GEOS_setWKBOutputDims(int newDims)
const GEOSCoordSequence * GEOSGeom_getCoordSeq_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSPointOnSurface_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
int GEOSFrechetDistanceDensify(const GEOSGeometry *g1, const GEOSGeometry *g2, double densifyFrac, double *dist)
struct GEOSBufParams_t GEOSBufferParams
Definition geos_c.h:169
char GEOSPreparedCovers_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
GEOSGeometry * GEOSDifference_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
char GEOSCoordSeq_hasM_r(GEOSContextHandle_t handle, GEOSCoordSequence *s)
GEOSGeometry * GEOSLargestEmptyCircle_r(GEOSContextHandle_t handle, const GEOSGeometry *g, const GEOSGeometry *boundary, double tolerance)
int GEOSOrientationIndex_r(GEOSContextHandle_t handle, double Ax, double Ay, double Bx, double By, double Px, double Py)
GEOSGeometry * GEOSPolygonHullSimplify_r(GEOSContextHandle_t handle, const GEOSGeometry *g, unsigned int isOuter, double vertexNumFraction)
GEOSPrecisionRules
Definition geos_c.h:1800
@ GEOS_PREC_NO_TOPO
Definition geos_c.h:1804
@ GEOS_PREC_KEEP_COLLAPSED
Definition geos_c.h:1806
@ GEOS_PREC_VALID_OUTPUT
Definition geos_c.h:1802
int GEOSGetNumGeometries(const GEOSGeometry *g)
int GEOSCoordSeq_setM(GEOSCoordSequence *s, unsigned int idx, double val)
void * GEOSGeom_getUserData(const GEOSGeometry *g)
char GEOSCoordSeq_hasZ(GEOSCoordSequence *s)
int GEOSGetNumCoordinates(const GEOSGeometry *g)
struct GEOSMakeValidParams_t GEOSMakeValidParams
Definition geos_c.h:183
char GEOSRelatePatternMatch(const char *intMatrix, const char *imPattern)
void GEOS_finish_r(GEOSContextHandle_t handle)
GEOSMakeValidMethods
Definition geos_c.h:1691
@ GEOS_MAKE_VALID_LINEWORK
Definition geos_c.h:1695
@ GEOS_MAKE_VALID_STRUCTURE
Definition geos_c.h:1700
GEOSGeometry * GEOSWKBReader_readHEX(GEOSWKBReader *reader, const unsigned char *hex, size_t size)
int GEOSGeom_getYMax_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *value)
GEOSGeometry * GEOSGeom_createEmptyLineString(void)
const GEOSGeometry * GEOSGetInteriorRingN_r(GEOSContextHandle_t handle, const GEOSGeometry *g, int n)
GEOSGeometry * GEOSInterpolateNormalized(const GEOSGeometry *line, double proportion)
GEOSGeometry * GEOSGeom_clone(const GEOSGeometry *g)
void GEOSGeoJSONWriter_destroy_r(GEOSContextHandle_t handle, GEOSGeoJSONWriter *writer)
int GEOSBufferParams_setSingleSided(GEOSBufferParams *p, int singleSided)
const GEOSGeometry * GEOSGetInteriorRingN(const GEOSGeometry *g, int n)
int GEOSGeomGetZ_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *z)
GEOSGeometry * GEOSUnionPrec_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double gridSize)
GEOSGeometry * GEOSGeom_createPointFromXY_r(GEOSContextHandle_t handle, double x, double y)
char GEOSEqualsIdentical_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
GEOSClusterInfo * GEOSClusterGeometryDistance(const GEOSGeometry *g, double d)
GEOSClusterGeometryDistance.
GEOSClusterInfo * GEOSClusterEnvelopeIntersects_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
void GEOSWKTWriter_destroy_r(GEOSContextHandle_t handle, GEOSWKTWriter *writer)
const GEOSPreparedGeometry * GEOSPrepare(const GEOSGeometry *g)
int GEOSWKBWriter_getByteOrder(const GEOSWKBWriter *writer)
char GEOSPreparedOverlaps(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
char GEOSHasZ_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
int GEOSCoordSeq_setM_r(GEOSContextHandle_t handle, GEOSCoordSequence *s, unsigned int idx, double val)
GEOSGeometry * GEOSUnion(const GEOSGeometry *ga, const GEOSGeometry *gb)
void GEOSGeoJSONReader_destroy_r(GEOSContextHandle_t handle, GEOSGeoJSONReader *reader)
GEOSGeometry * GEOSSimplify(const GEOSGeometry *g, double tolerance)
void GEOSSTRtree_insert(GEOSSTRtree *tree, const GEOSGeometry *g, void *item)
char GEOSisSimple_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSWKBWriter * GEOSWKBWriter_create_r(GEOSContextHandle_t handle)
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 GEOSHausdorffDistanceWithPoints(const GEOSGeometry *g1, const GEOSGeometry *g2, double *dist, double *p1x, double *p1y, double *p2x, double *p2y)
int GEOSGeomGetX_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *x)
unsigned char * GEOSGeomToHEX_buf_r(GEOSContextHandle_t handle, const GEOSGeometry *g, size_t *size)
char GEOSPreparedWithin(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
char GEOSHasZ(const GEOSGeometry *g)
int GEOSWKBWriter_getOutputDimension_r(GEOSContextHandle_t handle, const GEOSWKBWriter *writer)
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)
GEOSGeometry * GEOSConcaveHull(const GEOSGeometry *g, double ratio, unsigned int allowHoles)
int GEOSCoordSeq_getZ_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s, unsigned int idx, double *val)
int GEOSBufferParams_setEndCapStyle(GEOSBufferParams *p, int style)
GEOSGeometry * GEOSUnionCascaded_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
int GEOSGetSRID(const GEOSGeometry *g)
GEOSGeometry * GEOSBuffer(const GEOSGeometry *g, double width, int quadsegs)
unsigned char * GEOSWKBWriter_writeHEX_r(GEOSContextHandle_t handle, GEOSWKBWriter *writer, const GEOSGeometry *g, size_t *size)
void GEOSWKTWriter_setRoundingPrecision(GEOSWKTWriter *writer, int precision)
char GEOSisClosed_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
char * GEOSisValidReason(const GEOSGeometry *g)
void GEOSGeoJSONWriter_setOutputDimension_r(GEOSContextHandle_t handle, GEOSGeoJSONWriter *writer, int dim)
int GEOSBufferParams_setJoinStyle_r(GEOSContextHandle_t handle, GEOSBufferParams *p, int joinStyle)
char GEOSisRing(const GEOSGeometry *g)
int GEOSCoordSeq_getXY_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s, unsigned int idx, double *x, double *y)
char GEOSPreparedContainsXY(const GEOSPreparedGeometry *pg1, double x, double y)
const GEOSGeometry * GEOSGetGeometryN_r(GEOSContextHandle_t handle, const GEOSGeometry *g, int n)
int GEOSCoordSeq_getX_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s, unsigned int idx, double *val)
int GEOSPreparedDistance_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2, double *dist)
GEOSWKTWriter * GEOSWKTWriter_create(void)
char * GEOSPreparedRelate_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
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)
char GEOSCoveredBy(const GEOSGeometry *g1, const GEOSGeometry *g2)
int GEOSGeom_getDimensions(const GEOSGeometry *g)
char GEOSPreparedDisjoint_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
int GEOSHausdorffDistance_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double *dist)
GEOSGeometry * GEOSGeom_createCircularString(GEOSCoordSequence *s)
void GEOSWKBWriter_setIncludeSRID(GEOSWKBWriter *writer, const char writeSRID)
GEOSGeometry * GEOSBuildArea_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
char GEOSisEmpty(const GEOSGeometry *g)
const GEOSGeometry * GEOSGetGeometryN(const GEOSGeometry *g, int n)
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)
GEOSGeometry * GEOSConcaveHullByLength(const GEOSGeometry *g, double length, unsigned int allowHoles)
GEOSContextInterruptCallback * GEOSContext_setInterruptCallback_r(GEOSContextHandle_t extHandle, GEOSContextInterruptCallback *cb, void *userData)
GEOSGeometry * GEOSGeom_createCollection_r(GEOSContextHandle_t handle, int type, GEOSGeometry **geoms, unsigned int ngeoms)
GEOSGeometry * GEOSMaximumInscribedCircle(const GEOSGeometry *g, double tolerance)
GEOSGeoJSONReader * GEOSGeoJSONReader_create_r(GEOSContextHandle_t handle)
void() GEOSInterruptCallback(void)
Definition geos_c.h:359
GEOSGeometry * GEOSGeom_createPoint(GEOSCoordSequence *s)
int GEOS_getWKBByteOrder_r(GEOSContextHandle_t handle)
char GEOSPreparedTouches(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
char GEOSWKBWriter_getIncludeSRID(const GEOSWKBWriter *writer)
GEOSGeometry * GEOSCoverageClean(const GEOSGeometry *input)
GEOSGeometry * GEOSSnap(const GEOSGeometry *input, const GEOSGeometry *snap_target, double tolerance)
GEOSWKBWriter * GEOSWKBWriter_create(void)
struct GEOSSTRtree_t GEOSSTRtree
Definition geos_c.h:162
GEOSCoordSequence * GEOSCoordSeq_create_r(GEOSContextHandle_t handle, unsigned int size, unsigned int dims)
GEOSCoordSequence * GEOSNearestPoints(const GEOSGeometry *g1, const GEOSGeometry *g2)
GEOSGeometry * GEOSSymDifferencePrec(const GEOSGeometry *ga, const GEOSGeometry *gb, double gridSize)
int GEOSGeom_getXMax(const GEOSGeometry *g, double *value)
GEOSGeometry * GEOSRemoveRepeatedPoints_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double tolerance)
GEOSGeometry * GEOSGeom_extractUniquePoints_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
void GEOSFree(void *buffer)
GEOSBufferParams * GEOSBufferParams_create_r(GEOSContextHandle_t handle)
int GEOSCoordSeq_getX(const GEOSCoordSequence *s, unsigned int idx, double *val)
char * GEOSPreparedRelate(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
GEOSGeometry * GEOSDifferencePrec_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double gridSize)
char * GEOSGeomToWKT(const GEOSGeometry *g)
GEOSGeometry * GEOSSharedPaths(const GEOSGeometry *g1, const GEOSGeometry *g2)
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 * GEOSGeom_createCompoundCurve(GEOSGeometry **curves, unsigned int ncurves)
int GEOSGeomGetY_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *y)
int GEOSCoordSeq_isCCW_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s, char *is_ccw)
char GEOSisValid_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
void GEOSSTRtree_insert_r(GEOSContextHandle_t handle, GEOSSTRtree *tree, const GEOSGeometry *g, void *item)
GEOSCoordSequence * GEOSCoordSeq_copyFromArrays_r(GEOSContextHandle_t handle, const double *x, const double *y, const double *z, const double *m, unsigned int size)
int GEOSCoordSeq_setX_r(GEOSContextHandle_t handle, GEOSCoordSequence *s, unsigned int idx, double val)
GEOSGeometry * GEOSLineMerge_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
char GEOSisValidDetail(const GEOSGeometry *g, int flags, char **reason, GEOSGeometry **location)
GEOSGeometry * GEOSPolygonize_r(GEOSContextHandle_t handle, const GEOSGeometry *const geoms[], unsigned int ngeoms)
GEOSGeometry * GEOSLineMerge(const GEOSGeometry *g)
GEOSGeometry * GEOSGeom_createEmptyCurvePolygon_r(GEOSContextHandle_t handle)
size_t GEOSClusterInfo_getClusterSize_r(GEOSContextHandle_t, const GEOSClusterInfo *clusters, size_t i)
GEOSGeometry * GEOSGeom_createLinearRing(GEOSCoordSequence *s)
struct GEOSCoverageCleanParams_t GEOSCoverageCleanParams
Definition geos_c.h:176
void GEOSClusterInfo_destroy(GEOSClusterInfo *clusters)
GEOSClusterInfo_destroy.
void GEOSWKTWriter_setRoundingPrecision_r(GEOSContextHandle_t handle, GEOSWKTWriter *writer, int precision)
const void * GEOSSTRtree_nearest_generic(GEOSSTRtree *tree, const void *item, const GEOSGeometry *itemEnvelope, GEOSDistanceCallback distancefn, void *userdata)
int GEOSGeom_getYMax(const GEOSGeometry *g, double *value)
int GEOSHausdorffDistanceDensify_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double densifyFrac, double *dist)
double GEOSProject(const GEOSGeometry *line, const GEOSGeometry *point)
int(* GEOSTransformXYZCallback)(double *x, double *y, double *z, void *userdata)
Definition geos_c.h:343
char * GEOSWKTWriter_write_r(GEOSContextHandle_t handle, GEOSWKTWriter *writer, const GEOSGeometry *g)
GEOSCoordSequence * GEOSCoordSeq_clone_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s)
GEOSGeometry * GEOSDifferencePrec(const GEOSGeometry *ga, const GEOSGeometry *gb, double gridSize)
GEOSGeometry * GEOSUnaryUnion(const GEOSGeometry *g)
struct GEOSPrepGeom_t GEOSPreparedGeometry
Definition geos_c.h:147