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 GEOSCoverageCleanParams GEOS_DLL *
944 GEOSContextHandle_t extHandle);
945
947extern void GEOS_DLL
949 GEOSContextHandle_t extHandle,
951
953extern int GEOS_DLL
955 GEOSContextHandle_t extHandle,
957 double snappingDistance);
958
960extern int GEOS_DLL
962 GEOSContextHandle_t extHandle,
964 double gapMaximumWidth);
965
967extern int GEOS_DLL
969 GEOSContextHandle_t extHandle,
971 int overlapMergeStrategy);
972
974extern GEOSGeometry GEOS_DLL *
976 GEOSContextHandle_t extHandle,
977 const GEOSGeometry* input,
978 const GEOSCoverageCleanParams* params);
979
981extern GEOSGeometry GEOS_DLL *
983 GEOSContextHandle_t extHandle,
984 const GEOSGeometry* input);
985
986/* ========= Topology Operations ========= */
987
990 GEOSContextHandle_t handle,
991 const GEOSGeometry* g);
992
995 GEOSContextHandle_t handle,
996 const GEOSGeometry* g1,
997 const GEOSGeometry* g2);
998
1001 GEOSContextHandle_t handle,
1002 const GEOSGeometry* g1,
1003 const GEOSGeometry* g2,
1004 double gridSize);
1005
1008 GEOSContextHandle_t handle,
1009 const GEOSGeometry* g);
1010
1013 GEOSContextHandle_t handle,
1014 const GEOSGeometry* g,
1015 double ratio,
1016 unsigned int allowHoles);
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 unsigned int isOuter,
1030 double vertexNumFraction);
1031
1034 GEOSContextHandle_t handle,
1035 const GEOSGeometry* g,
1036 unsigned int isOuter,
1037 unsigned int parameterMode,
1038 double parameter);
1039
1042 GEOSContextHandle_t handle,
1043 const GEOSGeometry* g,
1044 double lengthRatio,
1045 unsigned int isTight,
1046 unsigned int isHolesAllowed);
1047
1050 GEOSContextHandle_t handle,
1051 const GEOSGeometry* g);
1052
1055 GEOSContextHandle_t handle,
1056 const GEOSGeometry* g,
1057 double tolerance);
1058
1061 GEOSContextHandle_t handle,
1062 const GEOSGeometry* g,
1063 const GEOSGeometry* boundary,
1064 double tolerance);
1065
1068 GEOSContextHandle_t handle,
1069 const GEOSGeometry* g);
1070
1073 GEOSContextHandle_t handle,
1074 const GEOSGeometry* g);
1075
1077extern int GEOS_DLL GEOSMinimumClearance_r(
1078 GEOSContextHandle_t handle,
1079 const GEOSGeometry* g,
1080 double* distance);
1081
1084 GEOSContextHandle_t handle,
1085 const GEOSGeometry* g1,
1086 const GEOSGeometry* g2);
1087
1090 GEOSContextHandle_t handle,
1091 const GEOSGeometry* g1,
1092 const GEOSGeometry* g2,
1093 double gridSize);
1094
1097 GEOSContextHandle_t handle,
1098 const GEOSGeometry* g1,
1099 const GEOSGeometry* g2);
1100
1103 GEOSContextHandle_t handle,
1104 const GEOSGeometry* g1,
1105 const GEOSGeometry* g2,
1106 double gridSize);
1107
1110 GEOSContextHandle_t handle,
1111 const GEOSGeometry* g);
1112
1114extern GEOSGeometry GEOS_DLL *GEOSUnion_r(
1115 GEOSContextHandle_t handle,
1116 const GEOSGeometry* g1,
1117 const GEOSGeometry* g2);
1118
1121 GEOSContextHandle_t handle,
1122 const GEOSGeometry* g1,
1123 const GEOSGeometry* g2,
1124 double gridSize);
1125
1128 GEOSContextHandle_t handle,
1129 const GEOSGeometry* g);
1130
1133 GEOSContextHandle_t handle,
1134 const GEOSGeometry* g,
1135 double gridSize);
1136
1139 GEOSContextHandle_t handle,
1140 const GEOSGeometry* g);
1141
1144 GEOSContextHandle_t handle,
1145 const GEOSGeometry* g);
1146
1149 GEOSContextHandle_t handle,
1150 const GEOSGeometry* g);
1151
1154 GEOSContextHandle_t handle,
1155 const GEOSGeometry* g,
1156 double* radius,
1157 GEOSGeometry** center);
1158
1160extern GEOSGeometry GEOS_DLL *GEOSNode_r(
1161 GEOSContextHandle_t handle,
1162 const GEOSGeometry* g);
1163
1166 GEOSContextHandle_t handle,
1167 const GEOSGeometry* g,
1168 double xmin, double ymin,
1169 double xmax, double ymax);
1170
1173 GEOSContextHandle_t handle,
1174 const GEOSGeometry* g,
1175 double xmin, double ymin,
1176 double xmax, double ymax,
1177 unsigned nx, unsigned ny,
1178 float* buf);
1179
1182 GEOSContextHandle_t handle,
1183 const GEOSGeometry *const geoms[],
1184 unsigned int ngeoms);
1185
1188 GEOSContextHandle_t handle,
1189 const GEOSGeometry *const geoms[],
1190 unsigned int ngems);
1191
1194 GEOSContextHandle_t handle,
1195 const GEOSGeometry * const geoms[],
1196 unsigned int ngeoms);
1197
1200 GEOSContextHandle_t handle,
1201 const GEOSGeometry* input,
1202 GEOSGeometry** cuts,
1203 GEOSGeometry** dangles,
1204 GEOSGeometry** invalidRings);
1205
1208 GEOSContextHandle_t handle,
1209 const GEOSGeometry* g);
1210
1213 GEOSContextHandle_t handle,
1214 const GEOSGeometry* g);
1215
1218 GEOSContextHandle_t handle,
1219 const GEOSGeometry* g);
1220
1223 GEOSContextHandle_t handle,
1224 const GEOSGeometry* g,
1225 double start_fraction,
1226 double end_fdraction);
1227
1230 GEOSContextHandle_t handle,
1231 const GEOSGeometry* g);
1232
1235 GEOSContextHandle_t handle,
1236 const GEOSGeometry* g,
1237 double tolerance);
1238
1241 GEOSContextHandle_t handle,
1242 const GEOSGeometry* g, double tolerance);
1243
1246 GEOSContextHandle_t handle,
1247 const GEOSGeometry* g);
1248
1251 GEOSContextHandle_t handle,
1252 const GEOSGeometry* g1,
1253 const GEOSGeometry* g2);
1254
1256extern GEOSGeometry GEOS_DLL *GEOSSnap_r(
1257 GEOSContextHandle_t handle,
1258 const GEOSGeometry* g1,
1259 const GEOSGeometry* g2,
1260 double tolerance);
1261
1264 GEOSContextHandle_t handle,
1265 const GEOSGeometry *g,
1266 double tolerance,
1267 int onlyEdges);
1268
1271 GEOSContextHandle_t handle,
1272 const GEOSGeometry *g);
1273
1276 GEOSContextHandle_t extHandle,
1277 const GEOSGeometry *g,
1278 const GEOSGeometry *env,
1279 double tolerance,
1280 int flags);
1281
1283extern int GEOS_DLL GEOSSegmentIntersection_r(
1284 GEOSContextHandle_t extHandle,
1285 double ax0, double ay0,
1286 double ax1, double ay1,
1287 double bx0, double by0,
1288 double bx1, double by1,
1289 double* cx, double* cy);
1290
1291/* ========= Binary predicates ========= */
1292
1294extern char GEOS_DLL GEOSDisjoint_r(
1295 GEOSContextHandle_t handle,
1296 const GEOSGeometry* g1,
1297 const GEOSGeometry* g2);
1298
1300extern char GEOS_DLL GEOSTouches_r(
1301 GEOSContextHandle_t handle,
1302 const GEOSGeometry* g1,
1303 const GEOSGeometry* g2);
1304
1306extern char GEOS_DLL GEOSIntersects_r(
1307 GEOSContextHandle_t handle,
1308 const GEOSGeometry* g1,
1309 const GEOSGeometry* g2);
1310
1312extern char GEOS_DLL GEOSCrosses_r(
1313 GEOSContextHandle_t handle,
1314 const GEOSGeometry* g1,
1315 const GEOSGeometry* g2);
1316
1318extern char GEOS_DLL GEOSWithin_r(
1319 GEOSContextHandle_t handle,
1320 const GEOSGeometry* g1,
1321 const GEOSGeometry* g2);
1322
1324extern char GEOS_DLL GEOSContains_r(
1325 GEOSContextHandle_t handle,
1326 const GEOSGeometry* g1,
1327 const GEOSGeometry* g2);
1328
1330extern char GEOS_DLL GEOSOverlaps_r(
1331 GEOSContextHandle_t handle,
1332 const GEOSGeometry* g1,
1333 const GEOSGeometry* g2);
1334
1336extern char GEOS_DLL GEOSEquals_r(
1337 GEOSContextHandle_t handle,
1338 const GEOSGeometry* g1,
1339 const GEOSGeometry* g2);
1340
1342extern char GEOS_DLL GEOSEqualsExact_r(
1343 GEOSContextHandle_t handle,
1344 const GEOSGeometry* g1,
1345 const GEOSGeometry* g2,
1346 double tolerance);
1347
1349extern char GEOS_DLL GEOSEqualsIdentical_r(
1350 GEOSContextHandle_t handle,
1351 const GEOSGeometry* g1,
1352 const GEOSGeometry* g2);
1353
1355extern char GEOS_DLL GEOSCovers_r(
1356 GEOSContextHandle_t handle,
1357 const GEOSGeometry* g1,
1358 const GEOSGeometry* g2);
1359
1361extern char GEOS_DLL GEOSCoveredBy_r(
1362 GEOSContextHandle_t handle,
1363 const GEOSGeometry* g1,
1364 const GEOSGeometry* g2);
1365
1366/* ========= Prepared Geometry Binary Predicates ========== */
1367
1370 GEOSContextHandle_t handle,
1371 const GEOSGeometry* g);
1372
1374extern void GEOS_DLL GEOSPreparedGeom_destroy_r(
1375 GEOSContextHandle_t handle,
1376 const GEOSPreparedGeometry* g);
1377
1379extern char GEOS_DLL GEOSPreparedContains_r(
1380 GEOSContextHandle_t handle,
1381 const GEOSPreparedGeometry* pg1,
1382 const GEOSGeometry* g2);
1383
1385extern char GEOS_DLL GEOSPreparedContainsXY_r(
1386 GEOSContextHandle_t handle,
1387 const GEOSPreparedGeometry* pg1,
1388 double x,
1389 double y);
1390
1393 GEOSContextHandle_t handle,
1394 const GEOSPreparedGeometry* pg1,
1395 const GEOSGeometry* g2);
1396
1398extern char GEOS_DLL GEOSPreparedCoveredBy_r(
1399 GEOSContextHandle_t handle,
1400 const GEOSPreparedGeometry* pg1,
1401 const GEOSGeometry* g2);
1402
1404extern char GEOS_DLL GEOSPreparedCovers_r(
1405 GEOSContextHandle_t handle,
1406 const GEOSPreparedGeometry* pg1,
1407 const GEOSGeometry* g2);
1408
1410extern char GEOS_DLL GEOSPreparedCrosses_r(
1411 GEOSContextHandle_t handle,
1412 const GEOSPreparedGeometry* pg1,
1413 const GEOSGeometry* g2);
1414
1416extern char GEOS_DLL GEOSPreparedDisjoint_r(
1417 GEOSContextHandle_t handle,
1418 const GEOSPreparedGeometry* pg1,
1419 const GEOSGeometry* g2);
1420
1422extern char GEOS_DLL GEOSPreparedIntersects_r(
1423 GEOSContextHandle_t handle,
1424 const GEOSPreparedGeometry* pg1,
1425 const GEOSGeometry* g2);
1426
1428extern char GEOS_DLL GEOSPreparedIntersectsXY_r(
1429 GEOSContextHandle_t handle,
1430 const GEOSPreparedGeometry* pg1,
1431 double x,
1432 double y);
1433
1435extern char GEOS_DLL GEOSPreparedOverlaps_r(
1436 GEOSContextHandle_t handle,
1437 const GEOSPreparedGeometry* pg1,
1438 const GEOSGeometry* g2);
1439
1441extern char GEOS_DLL GEOSPreparedTouches_r(
1442 GEOSContextHandle_t handle,
1443 const GEOSPreparedGeometry* pg1,
1444 const GEOSGeometry* g2);
1445
1447extern char GEOS_DLL GEOSPreparedWithin_r(
1448 GEOSContextHandle_t handle,
1449 const GEOSPreparedGeometry* pg1,
1450 const GEOSGeometry* g2);
1451
1453extern char GEOS_DLL * GEOSPreparedRelate_r(
1454 GEOSContextHandle_t handle,
1455 const GEOSPreparedGeometry* pg1,
1456 const GEOSGeometry* g2);
1457
1459extern char GEOS_DLL GEOSPreparedRelatePattern_r(
1460 GEOSContextHandle_t handle,
1461 const GEOSPreparedGeometry* pg1,
1462 const GEOSGeometry* g2,
1463 const char* im);
1464
1467 GEOSContextHandle_t handle,
1468 const GEOSPreparedGeometry* pg1,
1469 const GEOSGeometry* g2);
1470
1472extern int GEOS_DLL GEOSPreparedDistance_r(
1473 GEOSContextHandle_t handle,
1474 const GEOSPreparedGeometry* pg1,
1475 const GEOSGeometry* g2, double *dist);
1476
1478extern char GEOS_DLL GEOSPreparedDistanceWithin_r(
1479 GEOSContextHandle_t handle,
1480 const GEOSPreparedGeometry* pg1,
1481 const GEOSGeometry* g2, double dist);
1482
1483/* ========== STRtree ========== */
1484
1487 GEOSContextHandle_t handle,
1488 size_t nodeCapacity);
1489
1491extern int GEOS_DLL GEOSSTRtree_build_r(
1492 GEOSContextHandle_t handle,
1493 GEOSSTRtree *tree);
1494
1496extern void GEOS_DLL GEOSSTRtree_insert_r(
1497 GEOSContextHandle_t handle,
1498 GEOSSTRtree *tree,
1499 const GEOSGeometry *g,
1500 void *item);
1501
1503extern void GEOS_DLL GEOSSTRtree_query_r(
1504 GEOSContextHandle_t handle,
1505 GEOSSTRtree *tree,
1506 const GEOSGeometry *g,
1507 GEOSQueryCallback callback,
1508 void *userdata);
1509
1512 GEOSContextHandle_t handle,
1513 GEOSSTRtree *tree,
1514 const GEOSGeometry* geom);
1515
1517extern const void GEOS_DLL *GEOSSTRtree_nearest_generic_r(
1518 GEOSContextHandle_t handle,
1519 GEOSSTRtree *tree,
1520 const void* item,
1521 const GEOSGeometry* itemEnvelope,
1522 GEOSDistanceCallback distancefn,
1523 void* userdata);
1524
1526extern void GEOS_DLL GEOSSTRtree_iterate_r(
1527 GEOSContextHandle_t handle,
1528 GEOSSTRtree *tree,
1529 GEOSQueryCallback callback,
1530 void *userdata);
1531
1533extern char GEOS_DLL GEOSSTRtree_remove_r(
1534 GEOSContextHandle_t handle,
1535 GEOSSTRtree *tree,
1536 const GEOSGeometry *g,
1537 void *item);
1538
1540extern void GEOS_DLL GEOSSTRtree_destroy_r(
1541 GEOSContextHandle_t handle,
1542 GEOSSTRtree *tree);
1543
1544
1545/* ========= Unary predicate ========= */
1546
1548extern char GEOS_DLL GEOSisEmpty_r(
1549 GEOSContextHandle_t handle,
1550 const GEOSGeometry* g);
1551
1553extern char GEOS_DLL GEOSisSimple_r(
1554 GEOSContextHandle_t handle,
1555 const GEOSGeometry* g);
1556
1558extern char GEOS_DLL GEOSisRing_r(
1559 GEOSContextHandle_t handle,
1560 const GEOSGeometry* g);
1561
1563extern char GEOS_DLL GEOSHasZ_r(
1564 GEOSContextHandle_t handle,
1565 const GEOSGeometry* g);
1566
1568extern char GEOS_DLL GEOSHasM_r(
1569 GEOSContextHandle_t handle,
1570 const GEOSGeometry* g);
1571
1573extern char GEOS_DLL GEOSisClosed_r(
1574 GEOSContextHandle_t handle,
1575 const GEOSGeometry *g);
1576
1577/* ========== Dimensionally Extended 9 Intersection Model ========== */
1578
1595
1597extern char GEOS_DLL GEOSRelatePattern_r(
1598 GEOSContextHandle_t handle,
1599 const GEOSGeometry* g1,
1600 const GEOSGeometry* g2,
1601 const char *imPattern);
1602
1604extern char GEOS_DLL *GEOSRelate_r(
1605 GEOSContextHandle_t handle,
1606 const GEOSGeometry* g1,
1607 const GEOSGeometry* g2);
1608
1610extern char GEOS_DLL GEOSRelatePatternMatch_r(
1611 GEOSContextHandle_t handle,
1612 const char *intMatrix,
1613 const char *imPattern);
1614
1616extern char GEOS_DLL *GEOSRelateBoundaryNodeRule_r(
1617 GEOSContextHandle_t handle,
1618 const GEOSGeometry* g1,
1619 const GEOSGeometry* g2,
1620 int bnr);
1621
1622/* ========= Validity checking ========= */
1623
1630
1632extern char GEOS_DLL GEOSisValid_r(
1633 GEOSContextHandle_t handle,
1634 const GEOSGeometry* g);
1635
1637extern char GEOS_DLL *GEOSisValidReason_r(
1638 GEOSContextHandle_t handle,
1639 const GEOSGeometry* g);
1640
1642extern char GEOS_DLL GEOSisSimpleDetail_r(
1643 GEOSContextHandle_t handle,
1644 const GEOSGeometry* g,
1645 int findAllLocations,
1646 GEOSGeometry** location);
1647
1649extern char GEOS_DLL GEOSisValidDetail_r(
1650 GEOSContextHandle_t handle,
1651 const GEOSGeometry* g,
1652 int flags,
1653 char** reason,
1654 GEOSGeometry** location);
1655
1656/* ========== Make Valid ========== */
1657
1674
1677 GEOSContextHandle_t extHandle);
1678
1681 GEOSContextHandle_t handle,
1682 GEOSMakeValidParams* parms);
1683
1686 GEOSContextHandle_t handle,
1688 int style);
1689
1692 GEOSContextHandle_t handle,
1694 enum GEOSMakeValidMethods method);
1695
1698 GEOSContextHandle_t handle,
1699 const GEOSGeometry* g);
1700
1703 GEOSContextHandle_t handle,
1704 const GEOSGeometry* g,
1705 const GEOSMakeValidParams* makeValidParams);
1706
1709 GEOSContextHandle_t handle,
1710 const GEOSGeometry* g,
1711 double tolerance);
1712
1713/* ========== Geometry info ========== */
1714
1716/* Return NULL on exception, result must be freed by caller. */
1717extern char GEOS_DLL *GEOSGeomType_r(
1718 GEOSContextHandle_t handle,
1719 const GEOSGeometry* g);
1720
1722extern int GEOS_DLL GEOSGeomTypeId_r(
1723 GEOSContextHandle_t handle,
1724 const GEOSGeometry* g);
1725
1727extern int GEOS_DLL GEOSGetSRID_r(
1728 GEOSContextHandle_t handle,
1729 const GEOSGeometry* g);
1730
1732extern void GEOS_DLL GEOSSetSRID_r(
1733 GEOSContextHandle_t handle,
1734 GEOSGeometry* g, int SRID);
1735
1737extern void GEOS_DLL *GEOSGeom_getUserData_r(
1738 GEOSContextHandle_t handle,
1739 const GEOSGeometry* g);
1740
1742extern void GEOS_DLL GEOSGeom_setUserData_r(
1743 GEOSContextHandle_t handle,
1744 GEOSGeometry* g,
1745 void* userData);
1746
1748extern int GEOS_DLL GEOSGetNumGeometries_r(
1749 GEOSContextHandle_t handle,
1750 const GEOSGeometry* g);
1751
1753extern const GEOSGeometry GEOS_DLL *GEOSGetGeometryN_r(
1754 GEOSContextHandle_t handle,
1755 const GEOSGeometry* g, int n);
1756
1758extern int GEOS_DLL GEOSNormalize_r(
1759 GEOSContextHandle_t handle,
1760 GEOSGeometry* g);
1761
1763extern int GEOS_DLL GEOSOrientPolygons_r(
1764 GEOSContextHandle_t handle,
1765 GEOSGeometry* g,
1766 int exteriorCW);
1767
1780
1783 GEOSContextHandle_t handle,
1784 const GEOSGeometry *g,
1785 double gridSize,
1786 int flags);
1787
1789extern double GEOS_DLL GEOSGeom_getPrecision_r(
1790 GEOSContextHandle_t handle,
1791 const GEOSGeometry *g);
1792
1794extern int GEOS_DLL GEOSGetNumInteriorRings_r(
1795 GEOSContextHandle_t handle,
1796 const GEOSGeometry* g);
1797
1799extern int GEOS_DLL GEOSGeomGetNumPoints_r(
1800 GEOSContextHandle_t handle,
1801 const GEOSGeometry* g);
1802
1804extern int GEOS_DLL GEOSGeomGetX_r(
1805 GEOSContextHandle_t handle,
1806 const GEOSGeometry *g,
1807 double *x);
1808
1810extern int GEOS_DLL GEOSGeomGetY_r(
1811 GEOSContextHandle_t handle,
1812 const GEOSGeometry *g,
1813 double *y);
1814
1816extern int GEOS_DLL GEOSGeomGetZ_r(
1817 GEOSContextHandle_t handle,
1818 const GEOSGeometry *g,
1819 double *z);
1820
1822extern int GEOS_DLL GEOSGeomGetM_r(
1823 GEOSContextHandle_t handle,
1824 const GEOSGeometry *g,
1825 double *m);
1826
1829 GEOSContextHandle_t handle,
1830 const GEOSGeometry* g, int n);
1831
1834 GEOSContextHandle_t handle,
1835 const GEOSGeometry* g);
1836
1838extern int GEOS_DLL GEOSGetNumCoordinates_r(
1839 GEOSContextHandle_t handle,
1840 const GEOSGeometry* g);
1841
1844 GEOSContextHandle_t handle,
1845 const GEOSGeometry* g);
1846
1848extern int GEOS_DLL GEOSGeom_getDimensions_r(
1849 GEOSContextHandle_t handle,
1850 const GEOSGeometry* g);
1851
1854 GEOSContextHandle_t handle,
1855 const GEOSGeometry* g);
1856
1858extern int GEOS_DLL GEOSGeom_getXMin_r(
1859 GEOSContextHandle_t handle,
1860 const GEOSGeometry* g,
1861 double* value);
1862
1864extern int GEOS_DLL GEOSGeom_getYMin_r(
1865 GEOSContextHandle_t handle,
1866 const GEOSGeometry* g,
1867 double* value);
1868
1870extern int GEOS_DLL GEOSGeom_getXMax_r(
1871 GEOSContextHandle_t handle,
1872 const GEOSGeometry* g,
1873 double* value);
1874
1876extern int GEOS_DLL GEOSGeom_getYMax_r(
1877 GEOSContextHandle_t handle,
1878 const GEOSGeometry* g,
1879 double* value);
1880
1882extern int GEOS_DLL GEOSGeom_getExtent_r(
1883 GEOSContextHandle_t handle,
1884 const GEOSGeometry* g,
1885 double* xmin,
1886 double* ymin,
1887 double* xmax,
1888 double* ymax);
1889
1892 GEOSContextHandle_t handle,
1893 const GEOSGeometry *g,
1894 int n);
1895
1898 GEOSContextHandle_t handle,
1899 const GEOSGeometry *g);
1900
1903 GEOSContextHandle_t handle,
1904 const GEOSGeometry *g);
1905
1906/* ========= Misc functions ========= */
1907
1909extern int GEOS_DLL GEOSArea_r(
1910 GEOSContextHandle_t handle,
1911 const GEOSGeometry* g,
1912 double *area);
1913
1915extern int GEOS_DLL GEOSLength_r(
1916 GEOSContextHandle_t handle,
1917 const GEOSGeometry* g,
1918 double *length);
1919
1921extern int GEOS_DLL GEOSDistance_r(
1922 GEOSContextHandle_t handle,
1923 const GEOSGeometry* g1,
1924 const GEOSGeometry* g2,
1925 double *dist);
1926
1928extern char GEOS_DLL GEOSDistanceWithin_r(
1929 GEOSContextHandle_t handle,
1930 const GEOSGeometry* g1,
1931 const GEOSGeometry* g2,
1932 double dist);
1933
1935extern int GEOS_DLL GEOSDistanceIndexed_r(
1936 GEOSContextHandle_t handle,
1937 const GEOSGeometry* g1,
1938 const GEOSGeometry* g2,
1939 double *dist);
1940
1942extern int GEOS_DLL GEOSHausdorffDistance_r(
1943 GEOSContextHandle_t handle,
1944 const GEOSGeometry *g1,
1945 const GEOSGeometry *g2,
1946 double *dist);
1947
1950 GEOSContextHandle_t handle,
1951 const GEOSGeometry *g1,
1952 const GEOSGeometry *g2,
1953 double densifyFrac, double *dist);
1954
1956extern int GEOS_DLL GEOSFrechetDistance_r(
1957 GEOSContextHandle_t handle,
1958 const GEOSGeometry *g1,
1959 const GEOSGeometry *g2,
1960 double *dist);
1961
1964 GEOSContextHandle_t handle,
1965 const GEOSGeometry *g1,
1966 const GEOSGeometry *g2,
1967 double densifyFrac,
1968 double *dist);
1969
1970
1972extern int GEOS_DLL GEOSHilbertCode_r(
1973 GEOSContextHandle_t handle,
1974 const GEOSGeometry *geom,
1975 const GEOSGeometry* extent,
1976 unsigned int level,
1977 unsigned int *code
1978);
1979
1981extern int GEOS_DLL GEOSGeomGetLength_r(
1982 GEOSContextHandle_t handle,
1983 const GEOSGeometry *g,
1984 double *length);
1985
1988 GEOSContextHandle_t handle,
1989 const GEOSGeometry* g1,
1990 const GEOSGeometry* g2);
1991
1994 GEOSContextHandle_t handle,
1995 const GEOSGeometry* g,
1996 GEOSTransformXYCallback callback,
1997 void* userdata);
1998
2001 GEOSContextHandle_t handle,
2002 const GEOSGeometry* g,
2003 GEOSTransformXYZCallback callback,
2004 void* userdata);
2005
2008 GEOSContextHandle_t handle,
2009 const GEOSGeometry* g,
2010 double eps,
2011 unsigned minPoints);
2012
2015 GEOSContextHandle_t handle,
2016 const GEOSGeometry* g,
2017 double d);
2018
2021 GEOSContextHandle_t handle,
2022 const GEOSGeometry* g);
2023
2026 GEOSContextHandle_t handle,
2027 const GEOSGeometry* g,
2028 double d);
2029
2032 GEOSContextHandle_t handle,
2033 const GEOSGeometry* g);
2034
2037
2039extern size_t GEOS_DLL GEOSClusterInfo_getClusterSize_r(GEOSContextHandle_t, const GEOSClusterInfo* clusters, size_t i);
2040
2043
2045extern const size_t GEOS_DLL* GEOSClusterInfo_getInputsForClusterN_r(GEOSContextHandle_t, const GEOSClusterInfo* clusters, size_t i);
2046
2049
2050/* ========= Algorithms ========= */
2051
2053extern int GEOS_DLL GEOSOrientationIndex_r(
2054 GEOSContextHandle_t handle,
2055 double Ax, double Ay,
2056 double Bx, double By,
2057 double Px, double Py);
2058
2059
2060/* ========== Reader and Writer APIs ========== */
2061
2062#ifndef GEOSWKTReader
2063
2069typedef struct GEOSWKTReader_t GEOSWKTReader;
2070
2076typedef struct GEOSWKTWriter_t GEOSWKTWriter;
2077
2083typedef struct GEOSWKBReader_t GEOSWKBReader;
2084
2090typedef struct GEOSWKBWriter_t GEOSWKBWriter;
2091
2097typedef struct GEOSGeoJSONReader_t GEOSGeoJSONReader;
2098
2104typedef struct GEOSGeoJSONWriter_t GEOSGeoJSONWriter;
2105
2106#endif
2107
2108/* ========== WKT Reader ========== */
2109
2112 GEOSContextHandle_t handle);
2113
2116 GEOSWKTReader* reader);
2117
2120 GEOSContextHandle_t handle,
2121 GEOSWKTReader* reader,
2122 const char *wkt);
2123
2126 GEOSContextHandle_t handle,
2127 GEOSWKTReader *reader,
2128 char doFix);
2129
2130
2131/* ========== WKT Writer ========== */
2132
2135 GEOSContextHandle_t handle);
2136
2138extern void GEOS_DLL GEOSWKTWriter_destroy_r(
2139 GEOSContextHandle_t handle,
2140 GEOSWKTWriter* writer);
2141
2143extern char GEOS_DLL *GEOSWKTWriter_write_r(
2144 GEOSContextHandle_t handle,
2145 GEOSWKTWriter* writer,
2146 const GEOSGeometry* g);
2147
2149extern void GEOS_DLL GEOSWKTWriter_setTrim_r(
2150 GEOSContextHandle_t handle,
2151 GEOSWKTWriter *writer,
2152 char trim);
2153
2156 GEOSContextHandle_t handle,
2157 GEOSWKTWriter *writer,
2158 int precision);
2159
2162 GEOSContextHandle_t handle,
2163 GEOSWKTWriter *writer,
2164 int dim);
2165
2168 GEOSContextHandle_t handle,
2169 GEOSWKTWriter *writer);
2170
2172extern void GEOS_DLL GEOSWKTWriter_setOld3D_r(
2173 GEOSContextHandle_t handle,
2174 GEOSWKTWriter *writer,
2175 int useOld3D);
2176
2186extern int GEOS_DLL GEOS_printDouble(
2187 double d,
2188 unsigned int precision,
2189 char *result
2190);
2191
2192/* ========== WKB Reader ========== */
2193
2196 GEOSContextHandle_t handle);
2197
2199extern void GEOS_DLL GEOSWKBReader_destroy_r(
2200 GEOSContextHandle_t handle,
2201 GEOSWKBReader* reader);
2202
2205 GEOSContextHandle_t handle,
2206 GEOSWKBReader *reader,
2207 char doFix);
2208
2211 GEOSContextHandle_t handle,
2212 GEOSWKBReader* reader,
2213 const unsigned char *wkb,
2214 size_t size);
2215
2218 GEOSContextHandle_t handle,
2219 GEOSWKBReader* reader,
2220 const unsigned char *hex,
2221 size_t size);
2222
2223
2224/* ========== WKB Writer ========== */
2225
2228 GEOSContextHandle_t handle);
2229
2231extern void GEOS_DLL GEOSWKBWriter_destroy_r(
2232 GEOSContextHandle_t handle,
2233 GEOSWKBWriter* writer);
2234
2236extern unsigned char GEOS_DLL *GEOSWKBWriter_write_r(
2237 GEOSContextHandle_t handle,
2238 GEOSWKBWriter* writer,
2239 const GEOSGeometry* g,
2240 size_t *size);
2241
2243extern unsigned char GEOS_DLL *GEOSWKBWriter_writeHEX_r(
2244 GEOSContextHandle_t handle,
2245 GEOSWKBWriter* writer,
2246 const GEOSGeometry* g,
2247 size_t *size);
2248
2251 GEOSContextHandle_t handle,
2252 const GEOSWKBWriter* writer);
2253
2256 GEOSContextHandle_t handle,
2257 GEOSWKBWriter* writer, int newDimension);
2258
2261 GEOSContextHandle_t handle,
2262 const GEOSWKBWriter* writer);
2263
2265extern void GEOS_DLL GEOSWKBWriter_setByteOrder_r(
2266 GEOSContextHandle_t handle,
2267 GEOSWKBWriter* writer,
2268 int byteOrder);
2269
2271extern int GEOS_DLL GEOSWKBWriter_getFlavor_r(
2272 GEOSContextHandle_t handle,
2273 const GEOSWKBWriter* writer);
2274
2276extern void GEOS_DLL GEOSWKBWriter_setFlavor_r(
2277 GEOSContextHandle_t handle,
2278 GEOSWKBWriter* writer,
2279 int flavor);
2280
2283 GEOSContextHandle_t handle,
2284 const GEOSWKBWriter* writer);
2285
2288 GEOSContextHandle_t handle,
2289 GEOSWKBWriter* writer, const char writeSRID);
2290
2291/* ========== GeoJSON Reader ========== */
2292
2295 GEOSContextHandle_t handle);
2296
2299 GEOSGeoJSONReader* reader);
2300
2303 GEOSContextHandle_t handle,
2304 GEOSGeoJSONReader* reader,
2305 const char *geojson);
2306
2307/* ========== GeoJSON Writer ========== */
2308
2311 GEOSContextHandle_t handle);
2312
2315 GEOSGeoJSONWriter* writer);
2316
2319 GEOSContextHandle_t handle,
2320 GEOSGeoJSONWriter* writer,
2321 const GEOSGeometry* g,
2322 int indent);
2323
2326 GEOSContextHandle_t handle,
2327 GEOSGeoJSONWriter *writer,
2328 int dim);
2329
2332 GEOSContextHandle_t handle,
2333 GEOSGeoJSONWriter *writer);
2334
2336extern void GEOS_DLL GEOSFree_r(
2337 GEOSContextHandle_t handle,
2338 void *buffer);
2339
2347extern const char GEOS_DLL *GEOSversion(void);
2348
2349/*
2350* External code to GEOS can define GEOS_USE_ONLY_R_API
2351* to strip the non-reentrant API functions from this header,
2352* leaving only the "_r" compatible variants.
2353*/
2354#ifndef GEOS_USE_ONLY_R_API
2355
2356/* ========== Initialization, cleanup ================================= */
2362
2375extern void GEOS_DLL initGEOS(
2376 GEOSMessageHandler notice_function,
2377 GEOSMessageHandler error_function);
2378
2384extern void GEOS_DLL finishGEOS(void);
2385
2395extern void GEOS_DLL GEOSFree(void *buffer);
2396
2398
2399/* ========= Coordinate Sequence functions ========= */
2405
2413extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_create(unsigned int size, unsigned int dims);
2414
2423extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_createWithDimensions(unsigned int size, int hasZ, int hasM);
2424
2435extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_copyFromBuffer(const double* buf, unsigned int size, int hasZ, int hasM);
2436
2448extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_copyFromArrays(const double* x, const double* y, const double* z, const double* m, unsigned int size);
2449
2460extern int GEOS_DLL GEOSCoordSeq_copyToBuffer(const GEOSCoordSequence* s, double* buf, int hasZ, int hasM);
2461
2473extern int GEOS_DLL GEOSCoordSeq_copyToArrays(const GEOSCoordSequence* s, double* x, double* y, double* z, double* m);
2474
2482
2489
2497extern char GEOS_DLL GEOSCoordSeq_hasZ(GEOSCoordSequence* s);
2498
2506extern char GEOS_DLL GEOSCoordSeq_hasM(GEOSCoordSequence* s);
2507
2517 unsigned int idx, double val);
2527 unsigned int idx, double val);
2537 unsigned int idx, double val);
2538
2548 unsigned int idx, double val);
2549
2561 unsigned int idx, double x, double y);
2574 unsigned int idx, double x, double y, double z);
2585 unsigned int idx, unsigned int dim, double val);
2586
2595extern int GEOS_DLL GEOSCoordSeq_getX(const GEOSCoordSequence* s,
2596 unsigned int idx, double *val);
2597
2606extern int GEOS_DLL GEOSCoordSeq_getY(const GEOSCoordSequence* s,
2607 unsigned int idx, double *val);
2608
2617extern int GEOS_DLL GEOSCoordSeq_getZ(const GEOSCoordSequence* s,
2618 unsigned int idx, double *val);
2619
2628extern int GEOS_DLL GEOSCoordSeq_getM(const GEOSCoordSequence* s,
2629 unsigned int idx, double *val);
2630
2641extern int GEOS_DLL GEOSCoordSeq_getXY(const GEOSCoordSequence* s,
2642 unsigned int idx, double *x, double *y);
2654extern int GEOS_DLL GEOSCoordSeq_getXYZ(const GEOSCoordSequence* s,
2655 unsigned int idx, double *x, double *y, double *z);
2665extern int GEOS_DLL GEOSCoordSeq_getOrdinate(const GEOSCoordSequence* s,
2666 unsigned int idx, unsigned int dim, double *val);
2667
2675extern int GEOS_DLL GEOSCoordSeq_getSize(
2676 const GEOSCoordSequence* s,
2677 unsigned int *size);
2678
2686extern int GEOS_DLL GEOSCoordSeq_getDimensions(
2687 const GEOSCoordSequence* s,
2688 unsigned int *dims);
2689
2699extern int GEOS_DLL GEOSCoordSeq_isCCW(
2700 const GEOSCoordSequence* s,
2701 char* is_ccw);
2702
2704
2705/* ========= Geometry Constructors ========= */
2711
2720
2730extern GEOSGeometry GEOS_DLL *GEOSGeom_createPointFromXY(double x, double y);
2731
2740
2749
2758
2767
2776
2791 GEOSGeometry* shell,
2792 GEOSGeometry** holes,
2793 unsigned int nholes);
2794
2803
2811
2821 unsigned int ncurves);
2822
2830
2845 GEOSGeometry* shell,
2846 GEOSGeometry** holes,
2847 unsigned int nholes);
2848
2856
2871 int type,
2872 GEOSGeometry** geoms,
2873 unsigned int ngeoms);
2874
2892 GEOSGeometry * collection,
2893 unsigned int * ngeoms);
2894
2904
2916 double xmin, double ymin,
2917 double xmax, double ymax);
2918
2926extern GEOSGeometry GEOS_DLL *GEOSGeom_clone(const GEOSGeometry* g);
2927
2933extern void GEOS_DLL GEOSGeom_destroy(GEOSGeometry* g);
2934
2936
2937/* ========== Geometry info ========== */
2942
2952extern char GEOS_DLL *GEOSGeomType(const GEOSGeometry* g);
2953
2960extern int GEOS_DLL GEOSGeomTypeId(const GEOSGeometry* g);
2961
2968extern int GEOS_DLL GEOSGetSRID(const GEOSGeometry* g);
2969
2980extern void GEOS_DLL *GEOSGeom_getUserData(const GEOSGeometry* g);
2981
2994extern int GEOS_DLL GEOSGetNumGeometries(const GEOSGeometry* g);
2995
3011extern const GEOSGeometry GEOS_DLL *GEOSGetGeometryN(
3012 const GEOSGeometry* g,
3013 int n);
3014
3024extern double GEOS_DLL GEOSGeom_getPrecision(const GEOSGeometry *g);
3025
3033extern int GEOS_DLL GEOSGetNumInteriorRings(const GEOSGeometry* g);
3034
3042extern int GEOS_DLL GEOSGeomGetNumPoints(const GEOSGeometry* g);
3043
3052extern int GEOS_DLL GEOSGeomGetX(const GEOSGeometry *g, double *x);
3053
3062extern int GEOS_DLL GEOSGeomGetY(const GEOSGeometry *g, double *y);
3063
3073extern int GEOS_DLL GEOSGeomGetZ(const GEOSGeometry *g, double *z);
3074
3084extern int GEOS_DLL GEOSGeomGetM(const GEOSGeometry *g, double *m);
3085
3095extern const GEOSGeometry GEOS_DLL *GEOSGetInteriorRingN(
3096 const GEOSGeometry* g,
3097 int n);
3098
3107extern const GEOSGeometry GEOS_DLL *GEOSGetExteriorRing(
3108 const GEOSGeometry* g);
3109
3117extern int GEOS_DLL GEOSGetNumCoordinates(
3118 const GEOSGeometry* g);
3119
3130 const GEOSGeometry* g);
3131
3144extern int GEOS_DLL GEOSGeom_getDimensions(
3145 const GEOSGeometry* g);
3146
3159 const GEOSGeometry* g);
3160
3169extern int GEOS_DLL GEOSGeom_getXMin(const GEOSGeometry* g, double* value);
3170
3179extern int GEOS_DLL GEOSGeom_getYMin(const GEOSGeometry* g, double* value);
3180
3189extern int GEOS_DLL GEOSGeom_getXMax(const GEOSGeometry* g, double* value);
3190
3199extern int GEOS_DLL GEOSGeom_getYMax(const GEOSGeometry* g, double* value);
3200
3214extern int GEOS_DLL GEOSGeom_getExtent(
3215 const GEOSGeometry* g,
3216 double* xmin,
3217 double* ymin,
3218 double* xmax,
3219 double* ymax);
3220
3230extern GEOSGeometry GEOS_DLL *GEOSGeomGetPointN(const GEOSGeometry *g, int n);
3231
3241
3251
3252
3261extern char GEOS_DLL GEOSisEmpty(const GEOSGeometry* g);
3262
3271extern char GEOS_DLL GEOSisRing(const GEOSGeometry* g);
3272
3279extern char GEOS_DLL GEOSHasZ(const GEOSGeometry* g);
3280
3288extern char GEOS_DLL GEOSHasM(const GEOSGeometry* g);
3289
3298extern char GEOS_DLL GEOSisClosed(const GEOSGeometry *g);
3299
3301
3302/* ==================================================================================== */
3307
3314extern void GEOS_DLL GEOSSetSRID(GEOSGeometry* g, int SRID);
3315
3323extern void GEOS_DLL GEOSGeom_setUserData(GEOSGeometry* g, void* userData);
3324
3344extern int GEOS_DLL GEOSNormalize(GEOSGeometry* g);
3345
3356extern int GEOS_DLL GEOSOrientPolygons(GEOSGeometry* g,
3357 int exteriorCW);
3358
3360
3361/* ========== Validity checking ============================================================ */
3367
3375extern char GEOS_DLL GEOSisSimple(const GEOSGeometry* g);
3376
3391extern char GEOS_DLL GEOSisSimpleDetail(
3392 const GEOSGeometry* g,
3393 int findAllLocations,
3394 GEOSGeometry** locations);
3395
3409extern char GEOS_DLL GEOSisValid(const GEOSGeometry* g);
3410
3420extern char GEOS_DLL *GEOSisValidReason(const GEOSGeometry *g);
3421
3436extern char GEOS_DLL GEOSisValidDetail(
3437 const GEOSGeometry* g,
3438 int flags,
3439 char** reason,
3440 GEOSGeometry** location);
3441
3450 const GEOSGeometry* g);
3451
3466 const GEOSGeometry* g,
3467 const GEOSMakeValidParams *makeValidParams);
3468
3478
3487
3498 enum GEOSMakeValidMethods method);
3499
3512 int keepCollapsed);
3513
3533extern int GEOS_DLL GEOSMinimumClearance(const GEOSGeometry* g, double* d);
3534
3547
3566 const GEOSGeometry* g,
3567 double tolerance);
3568
3570
3571/* ========= Metric functions ================================================== */
3576
3584extern int GEOS_DLL GEOSArea(
3585 const GEOSGeometry* g,
3586 double *area);
3587
3595extern int GEOS_DLL GEOSLength(
3596 const GEOSGeometry* g,
3597 double *length);
3598
3608extern int GEOS_DLL GEOSGeomGetLength(
3609 const GEOSGeometry *g,
3610 double *length);
3611
3613
3614/* ========== Distance functions ================================================ */
3620
3629extern int GEOS_DLL GEOSDistance(
3630 const GEOSGeometry* g1,
3631 const GEOSGeometry* g2,
3632 double *dist);
3633
3644extern char GEOS_DLL GEOSDistanceWithin(
3645 const GEOSGeometry* g1,
3646 const GEOSGeometry* g2,
3647 double dist);
3648
3662extern int GEOS_DLL GEOSDistanceIndexed(
3663 const GEOSGeometry* g1,
3664 const GEOSGeometry* g2,
3665 double *dist);
3666
3679 const GEOSGeometry* g1,
3680 const GEOSGeometry* g2);
3681
3693extern int GEOS_DLL GEOSHausdorffDistance(
3694 const GEOSGeometry *g1,
3695 const GEOSGeometry *g2,
3696 double *dist);
3697
3713 const GEOSGeometry *g1,
3714 const GEOSGeometry *g2,
3715 double densifyFrac,
3716 double *dist);
3717
3731extern int GEOS_DLL GEOSFrechetDistance(
3732 const GEOSGeometry *g1,
3733 const GEOSGeometry *g2,
3734 double *dist);
3735
3752extern int GEOS_DLL GEOSFrechetDistanceDensify(
3753 const GEOSGeometry *g1,
3754 const GEOSGeometry *g2,
3755 double densifyFrac,
3756 double *dist);
3757
3759
3760/* ========== Linear referencing functions */
3766
3776extern double GEOS_DLL GEOSProject(const GEOSGeometry* line,
3777 const GEOSGeometry* point);
3778
3790extern GEOSGeometry GEOS_DLL *GEOSInterpolate(const GEOSGeometry* line,
3791 double d);
3792
3803extern double GEOS_DLL GEOSProjectNormalized(const GEOSGeometry* line,
3804 const GEOSGeometry* point);
3805
3816 const GEOSGeometry *line,
3817 double proportion);
3818
3820
3821/* ========== Overlay functions ========== */
3827
3838extern GEOSGeometry GEOS_DLL *GEOSIntersection(const GEOSGeometry* g1, const GEOSGeometry* g2);
3839
3854extern GEOSGeometry GEOS_DLL *GEOSIntersectionPrec(const GEOSGeometry* g1, const GEOSGeometry* g2, double gridSize);
3855
3867 const GEOSGeometry* ga,
3868 const GEOSGeometry* gb);
3869
3886 const GEOSGeometry* ga,
3887 const GEOSGeometry* gb,
3888 double gridSize);
3889
3902 const GEOSGeometry* ga,
3903 const GEOSGeometry* gb);
3904
3922 const GEOSGeometry* ga,
3923 const GEOSGeometry* gb,
3924 double gridSize);
3925
3936extern GEOSGeometry GEOS_DLL *GEOSUnion(
3937 const GEOSGeometry* ga,
3938 const GEOSGeometry* gb);
3939
3956 const GEOSGeometry* ga,
3957 const GEOSGeometry* gb,
3958 double gridSize);
3959
3971extern GEOSGeometry GEOS_DLL *GEOSUnaryUnion(const GEOSGeometry* g);
3972
3989 const GEOSGeometry* g,
3990 double gridSize);
3991
4003
4020 const GEOSGeometry* g,
4021 double xmin, double ymin,
4022 double xmax, double ymax);
4023
4041 const GEOSGeometry* g,
4042 double xmin, double ymin,
4043 double xmax, double ymax,
4044 unsigned nx, unsigned ny,
4045 float* buf);
4046
4066 const GEOSGeometry* g1,
4067 const GEOSGeometry* g2);
4069
4070/* ========== Clustering functions ========== */
4078static const size_t GEOS_CLUSTER_NONE = (size_t) -1;
4079
4081
4091extern GEOSClusterInfo GEOS_DLL* GEOSClusterDBSCAN(const GEOSGeometry* g, double eps, unsigned minPoints);
4092
4102extern GEOSClusterInfo GEOS_DLL* GEOSClusterGeometryDistance(const GEOSGeometry* g, double d);
4103
4113
4123extern GEOSClusterInfo GEOS_DLL* GEOSClusterEnvelopeDistance(const GEOSGeometry* g, double d);
4124
4134
4143extern size_t GEOS_DLL GEOSClusterInfo_getNumClusters(const GEOSClusterInfo* clusters);
4144
4154extern size_t GEOS_DLL GEOSClusterInfo_getClusterSize(const GEOSClusterInfo* clusters, size_t i );
4155
4165extern size_t GEOS_DLL* GEOSClusterInfo_getClustersForInputs(const GEOSClusterInfo* clusters);
4166
4175extern const size_t GEOS_DLL* GEOSClusterInfo_getInputsForClusterN(const GEOSClusterInfo* clusters, size_t i);
4176
4184extern void GEOS_DLL GEOSClusterInfo_destroy(GEOSClusterInfo* clusters);
4185
4187
4188/* ========== Buffer related functions ========== */
4193
4205extern GEOSGeometry GEOS_DLL *GEOSBuffer(const GEOSGeometry* g,
4206 double width, int quadsegs);
4207
4217
4224extern void GEOS_DLL GEOSBufferParams_destroy(GEOSBufferParams* parms);
4225
4235 int style);
4236
4246 int joinStyle);
4247
4261 double mitreLimit);
4262
4275 int quadSegs);
4276
4289 int singleSided);
4290
4302 const GEOSGeometry* g,
4303 const GEOSBufferParams* p,
4304 double width);
4305
4320 const GEOSGeometry* g,
4321 double width,
4322 int quadsegs,
4323 int endCapStyle,
4324 int joinStyle,
4325 double mitreLimit);
4326
4350 double width, int quadsegs, int joinStyle, double mitreLimit);
4351
4353
4354
4355/* ====================================================================== */
4361
4374
4375
4399extern int GEOS_DLL GEOSCoverageIsValid(
4400 const GEOSGeometry* input,
4401 double gapWidth,
4402 GEOSGeometry** invalidEdges);
4403
4430 const GEOSGeometry* input,
4431 double tolerance,
4432 int preserveBoundary);
4433
4442extern GEOSCoverageCleanParams GEOS_DLL *
4444
4451extern void GEOS_DLL
4453 GEOSCoverageCleanParams* params);
4454
4475extern int GEOS_DLL
4478 double snappingDistance);
4479
4498extern int GEOS_DLL
4501 double gapMaximumWidth);
4502
4503/*
4504* Sets the overlap merge strategy to use, using one from \ref GEOSOverlapMerge.
4505* Overlaps are merged with an adjacent polygon chosen according to a specified merge strategy.
4506* The supported strategies are:
4507*
4508* * **Longest Border**: (default) merge with the polygon with longest shared border (GEOS_MERGE_LONGEST_BORDER.)
4509* * **Maximum/Minimum Area**: merge with the polygon with largest or smallest area (GEOS_MERGE_MAX_AREA, GEOS_MERGE_MIN_AREA.)
4510* * **Minimum Index**: merge with the polygon with the lowest index in the input array (GEOS_MERGE_MIN_INDEX.)
4511*
4512* This allows sorting the input according to some criteria to provide a priority
4513* for merging gaps.
4514*
4515* The default is GEOS_MERGE_LONGEST_BORDER.
4516*
4517* \see geos::coverage::CoverageCleaner::setGapMaximumWidth
4518* \param params The GEOSCoverageCleanParams to operate on
4519* \param overlapMergeStrategy One of \ref GEOSOverlapMerge strategies
4520* \return 0 on exception, 1 on success.
4521*
4522* \since 3.14
4523*/
4524extern int GEOS_DLL
4525GEOSCoverageCleanParams_setOverlapMergeStrategy(
4527 int overlapMergeStrategy);
4528
4550extern GEOSGeometry GEOS_DLL *
4552 const GEOSGeometry* input,
4553 const GEOSCoverageCleanParams* params
4554);
4555
4557extern GEOSGeometry GEOS_DLL *
4559 const GEOSGeometry* input);
4560
4561
4562
4563
4565
4566
4567/* ========== Construction Operations ========== */
4572
4581extern GEOSGeometry GEOS_DLL *GEOSEnvelope(const GEOSGeometry* g);
4582
4596extern GEOSGeometry GEOS_DLL *GEOSBoundary(const GEOSGeometry* g);
4597
4607extern GEOSGeometry GEOS_DLL *GEOSConvexHull(const GEOSGeometry* g);
4608
4640 const GEOSGeometry* g,
4641 double ratio,
4642 unsigned int allowHoles);
4643
4674 const GEOSGeometry* g,
4675 double length,
4676 unsigned int allowHoles);
4677
4717 const GEOSGeometry* g,
4718 double lengthRatio,
4719 unsigned int isTight,
4720 unsigned int isHolesAllowed);
4721
4742 const GEOSGeometry* g,
4743 unsigned int isOuter,
4744 double vertexNumFraction);
4745
4746
4756
4779 const GEOSGeometry* g,
4780 unsigned int isOuter,
4781 unsigned int parameterMode,
4782 double parameter);
4783
4798
4824 const GEOSGeometry* g,
4825 double tolerance);
4826
4861 const GEOSGeometry* obstacles,
4862 const GEOSGeometry* boundary,
4863 double tolerance);
4864
4878extern GEOSGeometry GEOS_DLL *GEOSMinimumWidth(const GEOSGeometry* g);
4879
4880
4891
4901extern GEOSGeometry GEOS_DLL *GEOSGetCentroid(const GEOSGeometry* g);
4902
4916 const GEOSGeometry* g,
4917 double* radius,
4918 GEOSGeometry** center);
4919
4934 const GEOSGeometry *g,
4935 double tolerance,
4936 int onlyEdges);
4937
4950 const GEOSGeometry *g);
4951
4962
4984 const GEOSGeometry *g,
4985 const GEOSGeometry *env,
4986 double tolerance,
4987 int flags);
4988
4990
4991/* ============================================================== */
4996
5007extern GEOSGeometry GEOS_DLL *GEOSNode(const GEOSGeometry* g);
5008
5052 const GEOSGeometry * const geoms[],
5053 unsigned int ngeoms);
5054
5070 const GEOSGeometry * const geoms[],
5071 unsigned int ngeoms);
5072
5087 const GEOSGeometry * const geoms[],
5088 unsigned int ngeoms);
5089
5105 const GEOSGeometry* input,
5106 GEOSGeometry** cuts,
5107 GEOSGeometry** dangles,
5108 GEOSGeometry** invalid);
5109
5121extern GEOSGeometry GEOS_DLL *GEOSBuildArea(const GEOSGeometry* g);
5122
5124
5125/* ============================================================== */
5130
5144extern GEOSGeometry GEOS_DLL *GEOSDensify(
5145 const GEOSGeometry* g,
5146 double tolerance);
5147
5159extern GEOSGeometry GEOS_DLL *GEOSLineMerge(const GEOSGeometry* g);
5160
5175
5188 const GEOSGeometry* g,
5189 double start_fraction,
5190 double end_fraction);
5191
5202extern GEOSGeometry GEOS_DLL *GEOSReverse(const GEOSGeometry* g);
5203
5219 const GEOSGeometry* g,
5220 double tolerance);
5221
5239 const GEOSGeometry* g,
5240 double tolerance);
5241
5253 const GEOSGeometry* g);
5254
5270extern int GEOS_DLL GEOSHilbertCode(
5271 const GEOSGeometry *geom,
5272 const GEOSGeometry* extent,
5273 unsigned int level,
5274 unsigned int *code
5275);
5276
5292 const GEOSGeometry* g,
5293 GEOSTransformXYCallback callback,
5294 void* userdata);
5295
5311 const GEOSGeometry* g,
5312 GEOSTransformXYZCallback callback,
5313 void* userdata);
5314
5336extern GEOSGeometry GEOS_DLL *GEOSSnap(
5337 const GEOSGeometry* input,
5338 const GEOSGeometry* snap_target,
5339 double tolerance);
5340
5371 const GEOSGeometry *g,
5372 double gridSize,
5373 int flags);
5374
5376
5377/* ============================================================== */
5382
5391extern char GEOS_DLL GEOSDisjoint(const GEOSGeometry* g1, const GEOSGeometry* g2);
5392
5402extern char GEOS_DLL GEOSTouches(const GEOSGeometry* g1, const GEOSGeometry* g2);
5403
5412extern char GEOS_DLL GEOSIntersects(const GEOSGeometry* g1, const GEOSGeometry* g2);
5413
5423extern char GEOS_DLL GEOSCrosses(const GEOSGeometry* g1, const GEOSGeometry* g2);
5424
5434extern char GEOS_DLL GEOSWithin(const GEOSGeometry* g1, const GEOSGeometry* g2);
5435
5445extern char GEOS_DLL GEOSContains(const GEOSGeometry* g1, const GEOSGeometry* g2);
5446
5456extern char GEOS_DLL GEOSOverlaps(const GEOSGeometry* g1, const GEOSGeometry* g2);
5457
5466extern char GEOS_DLL GEOSEquals(const GEOSGeometry* g1, const GEOSGeometry* g2);
5467
5478extern char GEOS_DLL GEOSCovers(const GEOSGeometry* g1, const GEOSGeometry* g2);
5479
5490extern char GEOS_DLL GEOSCoveredBy(const GEOSGeometry* g1, const GEOSGeometry* g2);
5491
5509extern char GEOS_DLL GEOSEqualsExact(
5510 const GEOSGeometry* g1,
5511 const GEOSGeometry* g2,
5512 double tolerance);
5513
5526extern char GEOS_DLL GEOSEqualsIdentical(
5527 const GEOSGeometry* g1,
5528 const GEOSGeometry* g2);
5529
5545extern char GEOS_DLL GEOSRelatePattern(
5546 const GEOSGeometry* g1,
5547 const GEOSGeometry* g2,
5548 const char *imPattern);
5549
5560extern char GEOS_DLL *GEOSRelate(
5561 const GEOSGeometry* g1,
5562 const GEOSGeometry* g2);
5563
5573extern char GEOS_DLL GEOSRelatePatternMatch(
5574 const char *intMatrix,
5575 const char *imPattern);
5576
5590extern char GEOS_DLL *GEOSRelateBoundaryNodeRule(
5591 const GEOSGeometry* g1,
5592 const GEOSGeometry* g2,
5593 int bnr);
5594
5596
5597/* ========== Prepared Geometry Binary predicates ========== */
5598
5610
5624extern const GEOSPreparedGeometry GEOS_DLL *GEOSPrepare(const GEOSGeometry* g);
5625
5634extern void GEOS_DLL GEOSPreparedGeom_destroy(const GEOSPreparedGeometry* g);
5635
5646extern char GEOS_DLL GEOSPreparedContains(
5647 const GEOSPreparedGeometry* pg1,
5648 const GEOSGeometry* g2);
5649
5661extern char GEOS_DLL GEOSPreparedContainsXY(
5662 const GEOSPreparedGeometry* pg1,
5663 double x,
5664 double y);
5665
5676extern char GEOS_DLL GEOSPreparedContainsProperly(
5677 const GEOSPreparedGeometry* pg1,
5678 const GEOSGeometry* g2);
5679
5690extern char GEOS_DLL GEOSPreparedCoveredBy(
5691 const GEOSPreparedGeometry* pg1,
5692 const GEOSGeometry* g2);
5693
5704extern char GEOS_DLL GEOSPreparedCovers(
5705 const GEOSPreparedGeometry* pg1,
5706 const GEOSGeometry* g2);
5707
5718extern char GEOS_DLL GEOSPreparedCrosses(
5719 const GEOSPreparedGeometry* pg1,
5720 const GEOSGeometry* g2);
5721
5732extern char GEOS_DLL GEOSPreparedDisjoint(
5733 const GEOSPreparedGeometry* pg1,
5734 const GEOSGeometry* g2);
5735
5746extern char GEOS_DLL GEOSPreparedIntersects(
5747 const GEOSPreparedGeometry* pg1,
5748 const GEOSGeometry* g2);
5749
5761extern char GEOS_DLL GEOSPreparedIntersectsXY(
5762 const GEOSPreparedGeometry* pg1,
5763 double x,
5764 double y);
5765
5776extern char GEOS_DLL GEOSPreparedOverlaps(
5777 const GEOSPreparedGeometry* pg1,
5778 const GEOSGeometry* g2);
5779
5790extern char GEOS_DLL GEOSPreparedTouches(
5791 const GEOSPreparedGeometry* pg1,
5792 const GEOSGeometry* g2);
5793
5804extern char GEOS_DLL GEOSPreparedWithin(
5805 const GEOSPreparedGeometry* pg1,
5806 const GEOSGeometry* g2);
5807
5821extern char GEOS_DLL * GEOSPreparedRelate(
5822 const GEOSPreparedGeometry* pg1,
5823 const GEOSGeometry* g2);
5824
5841extern char GEOS_DLL GEOSPreparedRelatePattern(
5842 const GEOSPreparedGeometry* pg1,
5843 const GEOSGeometry* g2,
5844 const char* imPattern);
5845
5859 const GEOSPreparedGeometry* pg1,
5860 const GEOSGeometry* g2);
5861
5875extern int GEOS_DLL GEOSPreparedDistance(
5876 const GEOSPreparedGeometry* pg1,
5877 const GEOSGeometry* g2,
5878 double *dist);
5879
5894extern char GEOS_DLL GEOSPreparedDistanceWithin(
5895 const GEOSPreparedGeometry* pg1,
5896 const GEOSGeometry* g2,
5897 double dist);
5898
5900
5901/* ========== STRtree functions ========== */
5907
5920extern GEOSSTRtree GEOS_DLL *GEOSSTRtree_create(size_t nodeCapacity);
5921
5934extern int GEOS_DLL GEOSSTRtree_build(GEOSSTRtree *tree);
5935
5948extern void GEOS_DLL GEOSSTRtree_insert(
5949 GEOSSTRtree *tree,
5950 const GEOSGeometry *g,
5951 void *item);
5952
5967extern void GEOS_DLL GEOSSTRtree_query(
5968 GEOSSTRtree *tree,
5969 const GEOSGeometry *g,
5970 GEOSQueryCallback callback,
5971 void *userdata);
5972
5987extern const GEOSGeometry GEOS_DLL *GEOSSTRtree_nearest(
5988 GEOSSTRtree *tree,
5989 const GEOSGeometry* geom);
5990
6011extern const void GEOS_DLL *GEOSSTRtree_nearest_generic(
6012 GEOSSTRtree *tree,
6013 const void* item,
6014 const GEOSGeometry* itemEnvelope,
6015 GEOSDistanceCallback distancefn,
6016 void* userdata);
6017
6028extern void GEOS_DLL GEOSSTRtree_iterate(
6029 GEOSSTRtree *tree,
6030 GEOSQueryCallback callback,
6031 void *userdata);
6032
6047extern char GEOS_DLL GEOSSTRtree_remove(
6048 GEOSSTRtree *tree,
6049 const GEOSGeometry *g,
6050 void *item);
6051
6062extern void GEOS_DLL GEOSSTRtree_destroy(GEOSSTRtree *tree);
6063
6065
6066/* ========== Algorithms ====================================================== */
6071
6090extern int GEOS_DLL GEOSSegmentIntersection(
6091 double ax0, double ay0,
6092 double ax1, double ay1,
6093 double bx0, double by0,
6094 double bx1, double by1,
6095 double* cx, double* cy);
6096
6112extern int GEOS_DLL GEOSOrientationIndex(
6113 double Ax, double Ay,
6114 double Bx, double By,
6115 double Px, double Py);
6116
6118
6119/* ========= Reader and Writer APIs ========= */
6120
6125/* ========= WKT Reader ========= */
6126
6133
6139extern void GEOS_DLL GEOSWKTReader_destroy(GEOSWKTReader* reader);
6140
6150 GEOSWKTReader* reader,
6151 const char *wkt);
6152
6162 GEOSWKTReader *reader,
6163 char doFix);
6164
6165/* ========= WKT Writer ========= */
6166
6173
6179extern void GEOS_DLL GEOSWKTWriter_destroy(
6180 GEOSWKTWriter* writer);
6181
6191extern char GEOS_DLL *GEOSWKTWriter_write(
6192 GEOSWKTWriter* writer,
6193 const GEOSGeometry* g);
6194
6209extern void GEOS_DLL GEOSWKTWriter_setTrim(
6210 GEOSWKTWriter *writer,
6211 char trim);
6212
6222 GEOSWKTWriter *writer,
6223 int precision);
6224
6234 GEOSWKTWriter *writer,
6235 int dim);
6236
6245
6256extern void GEOS_DLL GEOSWKTWriter_setOld3D(
6257 GEOSWKTWriter *writer,
6258 int useOld3D);
6260
6261/* ============================================================================== */
6266
6267/* ========== WKB Reader ========== */
6274
6280extern void GEOS_DLL GEOSWKBReader_destroy(
6281 GEOSWKBReader* reader);
6282
6292 GEOSWKBReader *reader,
6293 char doFix);
6294
6304 GEOSWKBReader* reader,
6305 const unsigned char *wkb,
6306 size_t size);
6307
6317 GEOSWKBReader* reader,
6318 const unsigned char *hex,
6319 size_t size);
6320
6321/* ========== WKB Writer ========== */
6322
6329
6335extern void GEOS_DLL GEOSWKBWriter_destroy(GEOSWKBWriter* writer);
6336
6346extern unsigned char GEOS_DLL *GEOSWKBWriter_write(
6347 GEOSWKBWriter* writer,
6348 const GEOSGeometry* g,
6349 size_t *size);
6350
6360extern unsigned char GEOS_DLL *GEOSWKBWriter_writeHEX(
6361 GEOSWKBWriter* writer,
6362 const GEOSGeometry* g,
6363 size_t *size);
6364
6374 const GEOSWKBWriter* writer);
6375
6384 GEOSWKBWriter* writer,
6385 int newDimension);
6386
6396extern int GEOS_DLL GEOSWKBWriter_getByteOrder(
6397 const GEOSWKBWriter* writer);
6398
6406extern void GEOS_DLL GEOSWKBWriter_setByteOrder(
6407 GEOSWKBWriter* writer,
6408 int byteOrder);
6409
6424extern int GEOS_DLL GEOSWKBWriter_getFlavor(
6425 const GEOSWKBWriter* writer);
6426
6435extern void GEOS_DLL GEOSWKBWriter_setFlavor(
6436 GEOSWKBWriter* writer,
6437 int flavor);
6438
6444extern char GEOS_DLL GEOSWKBWriter_getIncludeSRID(
6445 const GEOSWKBWriter* writer);
6446
6454extern void GEOS_DLL GEOSWKBWriter_setIncludeSRID(
6455 GEOSWKBWriter* writer,
6456 const char writeSRID);
6457
6459
6460/* ============================================================================= */
6465/* ========= GeoJSON Reader ========= */
6466
6474
6481extern void GEOS_DLL GEOSGeoJSONReader_destroy(GEOSGeoJSONReader* reader);
6482
6494 GEOSGeoJSONReader* reader,
6495 const char *geojson);
6496
6497/* ========= GeoJSON Writer ========= */
6498
6506
6513extern void GEOS_DLL GEOSGeoJSONWriter_destroy(GEOSGeoJSONWriter* writer);
6514
6526 GEOSGeoJSONWriter* writer,
6527 const GEOSGeometry* g,
6528 int indent);
6529
6539 GEOSGeoJSONWriter *writer,
6540 int dim);
6541
6550
6552
6553#endif /* #ifndef GEOS_USE_ONLY_R_API */
6554
6555/* ====================================================================== */
6556/* DEPRECATIONS */
6557/* ====================================================================== */
6558
6564
6569 const GEOSGeometry* g,
6570 double width, int quadsegs,
6571 int joinStyle, double mitreLimit,
6572 int leftSide);
6573
6578 GEOSContextHandle_t handle,
6579 const GEOSGeometry* g,
6580 double width, int quadsegs,
6581 int joinStyle, double mitreLimit,
6582 int leftSide);
6583
6589 GEOSMessageHandler notice_function,
6590 GEOSMessageHandler error_function);
6591
6595extern void GEOS_DLL finishGEOS_r(GEOSContextHandle_t handle);
6596
6601 GEOSContextHandle_t handle,
6602 const char *wkt);
6603
6607extern char GEOS_DLL *GEOSGeomToWKT_r(
6608 GEOSContextHandle_t handle,
6609 const GEOSGeometry* g);
6610
6614extern int GEOS_DLL GEOS_getWKBOutputDims_r(
6615 GEOSContextHandle_t handle);
6616
6620extern int GEOS_DLL GEOS_setWKBOutputDims_r(
6621 GEOSContextHandle_t handle,
6622 int newDims);
6623
6627extern int GEOS_DLL GEOS_getWKBByteOrder_r(
6628 GEOSContextHandle_t handle);
6629
6633extern int GEOS_DLL GEOS_setWKBByteOrder_r(
6634 GEOSContextHandle_t handle,
6635 int byteOrder);
6636
6641 GEOSContextHandle_t handle,
6642 const unsigned char *wkb,
6643 size_t size);
6644
6648extern unsigned char GEOS_DLL *GEOSGeomToWKB_buf_r(
6649 GEOSContextHandle_t handle,
6650 const GEOSGeometry* g,
6651 size_t *size);
6652
6657 GEOSContextHandle_t handle,
6658 const unsigned char *hex,
6659 size_t size);
6660
6664extern unsigned char GEOS_DLL *GEOSGeomToHEX_buf_r(
6665 GEOSContextHandle_t handle,
6666 const GEOSGeometry* g,
6667 size_t *size);
6668
6672extern GEOSGeometry GEOS_DLL *GEOSGeomFromWKT(const char *wkt);
6673
6677extern char GEOS_DLL *GEOSGeomToWKT(const GEOSGeometry* g);
6678
6682extern int GEOS_DLL GEOS_getWKBOutputDims(void);
6683
6687extern int GEOS_DLL GEOS_setWKBOutputDims(int newDims);
6688
6692extern int GEOS_DLL GEOS_getWKBByteOrder(void);
6693
6697extern int GEOS_DLL GEOS_setWKBByteOrder(int byteOrder);
6698
6702extern GEOSGeometry GEOS_DLL *GEOSGeomFromWKB_buf(const unsigned char *wkb, size_t size);
6703
6707extern unsigned char GEOS_DLL *GEOSGeomToWKB_buf(const GEOSGeometry* g, size_t *size);
6708
6712extern GEOSGeometry GEOS_DLL *GEOSGeomFromHEX_buf(const unsigned char *hex, size_t size);
6713
6717extern unsigned char GEOS_DLL *GEOSGeomToHEX_buf(const GEOSGeometry* g, size_t *size);
6718
6723
6728 GEOSContextHandle_t handle,
6729 const GEOSGeometry* g);
6730
6732
6733/* ====================================================================== */
6734/* END DEPRECATIONS */
6735/* ====================================================================== */
6736
6737
6738#ifdef __cplusplus
6739} // extern "C"
6740#endif
6741
6742#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)
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)
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)
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:2097
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)
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)
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:2083
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)
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 * 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)
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)
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)
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 * 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)
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:4954
@ GEOS_VORONOI_PRESERVE_ORDER
Definition geos_c.h:4960
@ GEOS_VORONOI_ONLY_EDGES
Definition geos_c.h:4956
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:1626
@ GEOSVALID_ALLOW_SELFTOUCHING_RING_FORMING_HOLE
Definition geos_c.h:1628
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:2090
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:2076
char GEOSPreparedWithin_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
int GEOSSegmentIntersection(double ax0, double ay0, double ax1, double ay1, double bx0, double by0, double bx1, double by1, double *cx, double *cy)
int GEOSCoordSeq_setY(GEOSCoordSequence *s, unsigned int idx, double val)
void GEOSMakeValidParams_destroy_r(GEOSContextHandle_t handle, GEOSMakeValidParams *parms)
char GEOSPreparedCovers(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
GEOSMessageHandler_r GEOSContext_setErrorMessageHandler_r(GEOSContextHandle_t extHandle, GEOSMessageHandler_r ef, void *userData)
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:2069
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:1583
@ GEOSRELATE_BNR_OGC
Definition geos_c.h:1587
@ GEOSRELATE_BNR_MULTIVALENT_ENDPOINT
Definition geos_c.h:1591
@ GEOSRELATE_BNR_ENDPOINT
Definition geos_c.h:1589
@ GEOSRELATE_BNR_MOD2
Definition geos_c.h:1585
@ GEOSRELATE_BNR_MONOVALENT_ENDPOINT
Definition geos_c.h:1593
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:4750
@ GEOSHULL_PARAM_AREA_RATIO
Definition geos_c.h:4754
@ GEOSHULL_PARAM_VERTEX_RATIO
Definition geos_c.h:4752
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)
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:2104
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)
GEOSGeometry * GEOSGeom_createEmptyCircularString()
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 * 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)
GEOSGeometry * GEOSGeom_createEmptyCurvePolygon()
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:1772
@ GEOS_PREC_NO_TOPO
Definition geos_c.h:1776
@ GEOS_PREC_KEEP_COLLAPSED
Definition geos_c.h:1778
@ GEOS_PREC_VALID_OUTPUT
Definition geos_c.h:1774
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:1663
@ GEOS_MAKE_VALID_LINEWORK
Definition geos_c.h:1667
@ GEOS_MAKE_VALID_STRUCTURE
Definition geos_c.h:1672
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_createEmptyCompoundCurve()
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 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)
GEOSCoverageCleanParams * GEOSCoverageCleanParams_create()
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