GEOS 3.16.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 16
65#endif
66#ifndef GEOS_VERSION_PATCH
67#define GEOS_VERSION_PATCH 0dev
68#endif
69#ifndef GEOS_VERSION
70#define GEOS_VERSION "3.16.0dev"
71#endif
72#ifndef GEOS_REVISION
73#define GEOS_REVISION "ee23efd"
74#endif
75#ifndef GEOS_JTS_PORT
76#define GEOS_JTS_PORT "1.20.0"
77#endif
78
79#define GEOS_CAPI_VERSION_MAJOR 1
80#define GEOS_CAPI_VERSION_MINOR 22
81#define GEOS_CAPI_VERSION_PATCH 0
82#define GEOS_CAPI_VERSION "3.16.0dev-CAPI-1.22.0"
83
84#define GEOS_CAPI_FIRST_INTERFACE GEOS_CAPI_VERSION_MAJOR
85#define GEOS_CAPI_LAST_INTERFACE (GEOS_CAPI_VERSION_MAJOR+GEOS_CAPI_VERSION_MINOR)
86
89#include <geos/export.h>
90
91
98typedef struct GEOSContextHandle_HS *GEOSContextHandle_t;
99
108typedef void (*GEOSMessageHandler)(GEOS_PRINTF_FORMAT const char *fmt, ...)
109 GEOS_PRINTF_FORMAT_ATTR(1, 2);
110
121typedef void (*GEOSMessageHandler_r)(const char *message, void *userdata);
122
123
134typedef void (GEOSProgressCallback)(double progressRatio,
135 const char* message, void* userdata);
136
137
138/*
139* When we're included by geos_c.cpp, these types are #defined to the
140* C++ definitions via preprocessor. We don't touch them to allow the
141* compiler to cross-check the declarations. However, for all "normal"
142* C-API users, we need to define these types as "opaque" struct pointers, as
143* those clients don't have access to the original C++ headers, by design.
144*/
145#ifndef GEOSGeometry
146
158typedef struct GEOSGeom_t GEOSGeometry;
159
165typedef struct GEOSPrepGeom_t GEOSPreparedGeometry;
166
173typedef struct GEOSCoordSeq_t GEOSCoordSequence;
174
180typedef struct GEOSSTRtree_t GEOSSTRtree;
181
187typedef struct GEOSBufParams_t GEOSBufferParams;
188
194typedef struct GEOSCoverageCleanParams_t GEOSCoverageCleanParams;
195
201typedef struct GEOSMakeValidParams_t GEOSMakeValidParams;
202
207typedef struct GEOSClusterInfo_t GEOSClusterInfo;
208
214typedef struct GEOSCurveToLineParams_t GEOSCurveToLineParams;
215
221typedef struct GEOSLineToCurveParams_t GEOSLineToCurveParams;
222
223#endif
224
227/*
228* These are compatibility definitions for source compatibility
229* with GEOS 2.X clients relying on that type.
230*/
231typedef GEOSGeometry* GEOSGeom;
232typedef GEOSCoordSequence* GEOSCoordSeq;
233
260 GEOS_CIRCULARSTRING,
261 GEOS_COMPOUNDCURVE,
262 GEOS_CURVEPOLYGON,
263 GEOS_MULTICURVE,
264 GEOS_MULTISURFACE,
265};
266
279
295
310
318typedef void (*GEOSQueryCallback)(void *item, void *userdata);
319
337typedef int (*GEOSDistanceCallback)(
338 const void* item1,
339 const void* item2,
340 double* distance,
341 void* userdata);
342
343
357 double* x,
358 double* y,
359 void* userdata);
360
361
376 double* x,
377 double* y,
378 double* z,
379 void* userdata);
380
381
382/* ========== Interruption ========== */
391typedef void (GEOSInterruptCallback)(void);
392
401typedef int (GEOSContextInterruptCallback)(void*);
402
415
429 GEOSContextHandle_t extHandle,
431 void* userData);
432
439extern void GEOS_DLL GEOS_interruptRequest(void);
440
445extern void GEOS_DLL GEOS_interruptCancel(void);
446
447/* ========== Progress monitoring ========== */
448
460 GEOSContextHandle_t extHandle,
462 void* userData);
463
464/* ========== Initialization and Cleanup ========== */
465
474extern GEOSContextHandle_t GEOS_DLL GEOS_init_r(void);
475
483extern void GEOS_DLL GEOS_finish_r(GEOSContextHandle_t handle);
484
494 GEOSContextHandle_t extHandle,
496
508 GEOSContextHandle_t extHandle,
510
521 GEOSContextHandle_t extHandle,
523 void *userData);
524
537 GEOSContextHandle_t extHandle,
539 void *userData);
540
554 GEOSContextHandle_t extHandle,
555 const GEOSCurveToLineParams* params);
556
570 GEOSContextHandle_t extHandle,
571 const GEOSLineToCurveParams* params);
572
573/* ========== Coordinate Sequence functions ========== */
574
577 GEOSContextHandle_t handle,
578 unsigned int size,
579 unsigned int dims);
580
583 GEOSContextHandle_t handle,
584 unsigned int size,
585 int hasZ,
586 int hasM);
587
590 GEOSContextHandle_t handle,
591 const double* buf,
592 unsigned int size,
593 int hasZ,
594 int hasM);
595
598 GEOSContextHandle_t handle,
599 const double* x,
600 const double* y,
601 const double* z,
602 const double* m,
603 unsigned int size);
604
606extern int GEOS_DLL GEOSCoordSeq_copyToBuffer_r(
607 GEOSContextHandle_t handle,
608 const GEOSCoordSequence* s,
609 double* buf,
610 int hasZ,
611 int hasM);
612
614extern int GEOS_DLL GEOSCoordSeq_copyToArrays_r(
615 GEOSContextHandle_t handle,
616 const GEOSCoordSequence* s,
617 double* x,
618 double* y,
619 double* z,
620 double* m);
621
624 GEOSContextHandle_t handle,
625 const GEOSCoordSequence* s);
626
628extern void GEOS_DLL GEOSCoordSeq_destroy_r(
629 GEOSContextHandle_t handle,
631
633extern char GEOS_DLL GEOSCoordSeq_hasZ_r(
634 GEOSContextHandle_t handle,
636
638extern char GEOS_DLL GEOSCoordSeq_hasM_r(
639 GEOSContextHandle_t handle,
641
643extern int GEOS_DLL GEOSCoordSeq_setX_r(
644 GEOSContextHandle_t handle,
645 GEOSCoordSequence* s, unsigned int idx,
646 double val);
647
649extern int GEOS_DLL GEOSCoordSeq_setY_r(
650 GEOSContextHandle_t handle,
651 GEOSCoordSequence* s, unsigned int idx,
652 double val);
653
655extern int GEOS_DLL GEOSCoordSeq_setZ_r(
656 GEOSContextHandle_t handle,
657 GEOSCoordSequence* s, unsigned int idx,
658 double val);
659
661extern int GEOS_DLL GEOSCoordSeq_setM_r(
662 GEOSContextHandle_t handle,
663 GEOSCoordSequence* s, unsigned int idx,
664 double val);
665
667extern int GEOS_DLL GEOSCoordSeq_setXY_r(
668 GEOSContextHandle_t handle,
669 GEOSCoordSequence* s, unsigned int idx,
670 double x, double y);
671
673extern int GEOS_DLL GEOSCoordSeq_setXYZ_r(
674 GEOSContextHandle_t handle,
675 GEOSCoordSequence* s, unsigned int idx,
676 double x, double y, double z);
677
679extern int GEOS_DLL GEOSCoordSeq_setOrdinate_r(
680 GEOSContextHandle_t handle,
682 unsigned int idx,
683 unsigned int dim, double val);
684
686extern int GEOS_DLL GEOSCoordSeq_getX_r(
687 GEOSContextHandle_t handle,
688 const GEOSCoordSequence* s,
689 unsigned int idx, double *val);
690
692extern int GEOS_DLL GEOSCoordSeq_getY_r(
693 GEOSContextHandle_t handle,
694 const GEOSCoordSequence* s,
695 unsigned int idx, double *val);
696
698extern int GEOS_DLL GEOSCoordSeq_getZ_r(
699 GEOSContextHandle_t handle,
700 const GEOSCoordSequence* s,
701 unsigned int idx, double *val);
702
704extern int GEOS_DLL GEOSCoordSeq_getM_r(
705 GEOSContextHandle_t handle,
706 const GEOSCoordSequence* s,
707 unsigned int idx, double *val);
708
710extern int GEOS_DLL GEOSCoordSeq_getXY_r(
711 GEOSContextHandle_t handle,
712 const GEOSCoordSequence* s,
713 unsigned int idx,
714 double *x, double *y);
715
717extern int GEOS_DLL GEOSCoordSeq_getXYZ_r(
718 GEOSContextHandle_t handle,
719 const GEOSCoordSequence* s,
720 unsigned int idx,
721 double *x, double *y, double *z);
722
724extern int GEOS_DLL GEOSCoordSeq_getOrdinate_r(
725 GEOSContextHandle_t handle,
726 const GEOSCoordSequence* s,
727 unsigned int idx,
728 unsigned int dim, double *val);
729
731extern int GEOS_DLL GEOSCoordSeq_getSize_r(
732 GEOSContextHandle_t handle,
733 const GEOSCoordSequence* s,
734 unsigned int *size);
735
738 GEOSContextHandle_t handle,
739 const GEOSCoordSequence* s,
740 unsigned int *dims);
741
743extern int GEOS_DLL GEOSCoordSeq_isCCW_r(
744 GEOSContextHandle_t handle,
745 const GEOSCoordSequence* s,
746 char* is_ccw);
747
748/* ========= Linear referencing functions ========= */
749
751extern double GEOS_DLL GEOSProject_r(
752 GEOSContextHandle_t handle,
753 const GEOSGeometry *line,
754 const GEOSGeometry *point);
755
758 GEOSContextHandle_t handle,
759 const GEOSGeometry *line,
760 double d);
761
763extern double GEOS_DLL GEOSProjectNormalized_r(
764 GEOSContextHandle_t handle,
765 const GEOSGeometry *g,
766 const GEOSGeometry *p);
767
770 GEOSContextHandle_t handle,
771 const GEOSGeometry *g,
772 double d);
773
774/* ========== Buffer related functions ========== */
775
777extern GEOSGeometry GEOS_DLL *GEOSBuffer_r(
778 GEOSContextHandle_t handle,
779 const GEOSGeometry* g,
780 double width, int quadsegs);
781
797
819
822 GEOSContextHandle_t handle);
823
825extern void GEOS_DLL GEOSBufferParams_destroy_r(
826 GEOSContextHandle_t handle,
827 GEOSBufferParams* parms);
828
831 GEOSContextHandle_t handle,
833 int style);
834
837 GEOSContextHandle_t handle,
839 int joinStyle);
840
843 GEOSContextHandle_t handle,
845 double mitreLimit);
846
849 GEOSContextHandle_t handle,
851 int quadSegs);
852
855 GEOSContextHandle_t handle,
857 int singleSided);
858
861 GEOSContextHandle_t handle,
862 const GEOSGeometry* g,
863 const GEOSBufferParams* p,
864 double width);
865
868 GEOSContextHandle_t handle,
869 const GEOSGeometry* g,
870 double width, int quadsegs, int endCapStyle,
871 int joinStyle, double mitreLimit);
872
875 GEOSContextHandle_t handle,
876 const GEOSGeometry* g,
877 double tolerance);
878
881 GEOSContextHandle_t handle,
882 const GEOSGeometry* g, double width, int quadsegs,
883 int joinStyle, double mitreLimit);
884
885
886/* ========= Geometry Constructors ========= */
887
890 GEOSContextHandle_t handle,
892
895 GEOSContextHandle_t handle,
896 double x, double y);
897
900 GEOSContextHandle_t handle);
901
904 GEOSContextHandle_t handle,
906
909 GEOSContextHandle_t handle,
911
914 GEOSContextHandle_t handle);
915
918 GEOSContextHandle_t handle);
919
922 GEOSContextHandle_t handle,
923 GEOSGeometry* shell,
924 GEOSGeometry** holes,
925 unsigned int nholes);
926
929 GEOSContextHandle_t handle,
930 int type,
931 GEOSGeometry* *geoms,
932 unsigned int ngeoms);
933
936 GEOSContextHandle_t handle,
937 GEOSGeometry * collection,
938 unsigned int * ngeoms);
939
942 GEOSContextHandle_t handle, int type);
943
946 GEOSContextHandle_t handle,
947 double xmin, double ymin,
948 double xmax, double ymax);
949
952 GEOSContextHandle_t handle,
953 const GEOSGeometry* g);
954
957 GEOSContextHandle_t handle,
959
962 GEOSContextHandle_t handle);
963
966 GEOSContextHandle_t handle,
967 GEOSGeometry** curves,
968 unsigned int ncurves);
969
972 GEOSContextHandle_t handle);
973
976 GEOSContextHandle_t handle,
977 GEOSGeometry* shell,
978 GEOSGeometry** holes,
979 unsigned int nholes);
980
983 GEOSContextHandle_t handle);
984
985/* ========= Memory management ========= */
986
988extern void GEOS_DLL GEOSGeom_destroy_r(
989 GEOSContextHandle_t handle,
990 GEOSGeometry* g);
991
992/* ========= Coverages ========= */
993
995extern GEOSGeometry GEOS_DLL *
997 GEOSContextHandle_t handle,
998 const GEOSGeometry* g);
999
1001extern int GEOS_DLL
1003 GEOSContextHandle_t extHandle,
1004 const GEOSGeometry* input,
1005 double gapWidth,
1006 GEOSGeometry** output);
1007
1009extern GEOSGeometry GEOS_DLL *
1011 GEOSContextHandle_t extHandle,
1012 const GEOSGeometry* input,
1013 double tolerance,
1014 int preserveBoundary);
1015
1017extern GEOSGeometry GEOS_DLL *
1019 GEOSContextHandle_t handle,
1020 const GEOSGeometry* input,
1021 int edgetype);
1022
1024extern GEOSCoverageCleanParams GEOS_DLL *
1026 GEOSContextHandle_t extHandle);
1027
1029extern void GEOS_DLL
1031 GEOSContextHandle_t extHandle,
1032 GEOSCoverageCleanParams* params);
1033
1035extern int GEOS_DLL
1037 GEOSContextHandle_t extHandle,
1039 double snappingDistance);
1040
1042extern int GEOS_DLL
1044 GEOSContextHandle_t extHandle,
1046 double gapMaximumWidth);
1047
1049extern int GEOS_DLL
1051 GEOSContextHandle_t extHandle,
1053 int overlapMergeStrategy);
1054
1056extern GEOSGeometry GEOS_DLL *
1058 GEOSContextHandle_t extHandle,
1059 const GEOSGeometry* input,
1060 const GEOSCoverageCleanParams* params);
1061
1063extern GEOSGeometry GEOS_DLL *
1065 GEOSContextHandle_t extHandle,
1066 const GEOSGeometry* input);
1067
1068/* ========= Topology Operations ========= */
1069
1072 GEOSContextHandle_t handle,
1073 const GEOSGeometry* g);
1074
1077 GEOSContextHandle_t handle,
1078 const GEOSGeometry* g1,
1079 const GEOSGeometry* g2);
1080
1083 GEOSContextHandle_t handle,
1084 const GEOSGeometry* g1,
1085 const GEOSGeometry* g2,
1086 double gridSize);
1087
1090 GEOSContextHandle_t handle,
1091 const GEOSGeometry* g);
1092
1095 GEOSContextHandle_t handle,
1096 const GEOSGeometry* g,
1097 double ratio,
1098 unsigned int allowHoles);
1099
1102 GEOSContextHandle_t handle,
1103 const GEOSGeometry* g,
1104 double ratio,
1105 unsigned int allowHoles);
1106
1109 GEOSContextHandle_t handle,
1110 const GEOSGeometry* g,
1111 unsigned int isOuter,
1112 double vertexNumFraction);
1113
1123
1126 GEOSContextHandle_t handle,
1127 const GEOSGeometry* g,
1128 unsigned int isOuter,
1129 unsigned int parameterMode,
1130 double parameter);
1131
1134 GEOSContextHandle_t handle,
1135 const GEOSGeometry* g,
1136 double lengthRatio,
1137 unsigned int isTight,
1138 unsigned int isHolesAllowed);
1139
1142 GEOSContextHandle_t handle,
1143 const GEOSGeometry* g);
1144
1147 GEOSContextHandle_t handle,
1148 const GEOSGeometry* g,
1149 double tolerance);
1150
1153 GEOSContextHandle_t handle,
1154 const GEOSGeometry* g,
1155 const GEOSGeometry* boundary,
1156 double tolerance);
1157
1160 GEOSContextHandle_t handle,
1161 const GEOSGeometry* g);
1162
1165 GEOSContextHandle_t handle,
1166 const GEOSGeometry* g);
1167
1169extern int GEOS_DLL GEOSMinimumClearance_r(
1170 GEOSContextHandle_t handle,
1171 const GEOSGeometry* g,
1172 double* distance);
1173
1176 GEOSContextHandle_t handle,
1177 const GEOSGeometry* g1,
1178 const GEOSGeometry* g2);
1179
1182 GEOSContextHandle_t handle,
1183 const GEOSGeometry* g1,
1184 const GEOSGeometry* g2,
1185 double gridSize);
1186
1189 GEOSContextHandle_t handle,
1190 const GEOSGeometry* g1,
1191 const GEOSGeometry* g2);
1192
1195 GEOSContextHandle_t handle,
1196 const GEOSGeometry* g1,
1197 const GEOSGeometry* g2,
1198 double gridSize);
1199
1202 GEOSContextHandle_t handle,
1203 const GEOSGeometry* g);
1204
1206extern GEOSGeometry GEOS_DLL *GEOSUnion_r(
1207 GEOSContextHandle_t handle,
1208 const GEOSGeometry* g1,
1209 const GEOSGeometry* g2);
1210
1213 GEOSContextHandle_t handle,
1214 const GEOSGeometry* g1,
1215 const GEOSGeometry* g2,
1216 double gridSize);
1217
1220 GEOSContextHandle_t handle,
1221 const GEOSGeometry* g);
1222
1225 GEOSContextHandle_t handle,
1226 const GEOSGeometry* g,
1227 double gridSize);
1228
1231 GEOSContextHandle_t handle,
1232 const GEOSGeometry* g);
1233
1236 GEOSContextHandle_t handle,
1237 const GEOSGeometry* g);
1238
1241 GEOSContextHandle_t handle,
1242 const GEOSGeometry* g);
1243
1246 GEOSContextHandle_t handle,
1247 const GEOSGeometry* g,
1248 double* radius,
1249 GEOSGeometry** center);
1250
1252extern GEOSGeometry GEOS_DLL *GEOSNode_r(
1253 GEOSContextHandle_t handle,
1254 const GEOSGeometry* g);
1255
1257extern GEOSGeometry GEOS_DLL *GEOSSplit_r(
1258 GEOSContextHandle_t handle,
1259 const GEOSGeometry* g,
1260 const GEOSGeometry* edge);
1261
1264 GEOSContextHandle_t handle,
1265 const GEOSGeometry* g,
1266 double xmin, double ymin,
1267 double xmax, double ymax);
1268
1271 GEOSContextHandle_t handle,
1272 const GEOSGeometry* g,
1273 double xmin, double ymin,
1274 double xmax, double ymax,
1275 unsigned nx, unsigned ny,
1276 int includeExterior);
1277
1280 GEOSContextHandle_t handle,
1281 const GEOSGeometry* g,
1282 double xmin, double ymin,
1283 double xmax, double ymax,
1284 unsigned nx, unsigned ny,
1285 float* buf);
1286
1289 GEOSContextHandle_t handle,
1290 const GEOSGeometry *const geoms[],
1291 unsigned int ngeoms);
1292
1295 GEOSContextHandle_t handle,
1296 const GEOSGeometry *const geoms[],
1297 unsigned int ngems);
1298
1301 GEOSContextHandle_t handle,
1302 const GEOSGeometry * const geoms[],
1303 unsigned int ngeoms);
1304
1307 GEOSContextHandle_t handle,
1308 const GEOSGeometry* input,
1309 GEOSGeometry** cuts,
1310 GEOSGeometry** dangles,
1311 GEOSGeometry** invalidRings);
1312
1315 GEOSContextHandle_t handle,
1316 const GEOSGeometry* g);
1317
1320 GEOSContextHandle_t handle,
1321 const GEOSGeometry* g);
1322
1324extern size_t GEOS_DLL *GEOSMinimumSpanningTree_r(
1325 GEOSContextHandle_t handle,
1326 const GEOSGeometry * const geoms[],
1327 unsigned int ngeoms);
1328
1331 GEOSContextHandle_t handle,
1332 const GEOSGeometry* g);
1333
1336 GEOSContextHandle_t handle,
1337 const GEOSGeometry* g,
1338 double start_fraction,
1339 double end_fdraction);
1340
1343 GEOSContextHandle_t handle,
1344 const GEOSGeometry* g);
1345
1348 GEOSContextHandle_t handle,
1349 const GEOSGeometry* g,
1350 double tolerance);
1351
1354 GEOSContextHandle_t handle,
1355 const GEOSGeometry* g, double tolerance);
1356
1359 GEOSContextHandle_t handle,
1360 const GEOSGeometry* g);
1361
1364 GEOSContextHandle_t handle,
1365 const GEOSGeometry* g1,
1366 const GEOSGeometry* g2);
1367
1369extern GEOSGeometry GEOS_DLL *GEOSSnap_r(
1370 GEOSContextHandle_t handle,
1371 const GEOSGeometry* g1,
1372 const GEOSGeometry* g2,
1373 double tolerance);
1374
1377 GEOSContextHandle_t handle,
1378 const GEOSGeometry *g,
1379 double tolerance,
1380 int onlyEdges);
1381
1384 GEOSContextHandle_t handle,
1385 const GEOSGeometry *g);
1386
1397
1400 GEOSContextHandle_t extHandle,
1401 const GEOSGeometry *g,
1402 const GEOSGeometry *env,
1403 double tolerance,
1404 int flags);
1405
1407extern int GEOS_DLL GEOSSegmentIntersection_r(
1408 GEOSContextHandle_t extHandle,
1409 double ax0, double ay0,
1410 double ax1, double ay1,
1411 double bx0, double by0,
1412 double bx1, double by1,
1413 double* cx, double* cy);
1414
1415/* ========= Binary predicates ========= */
1416
1418extern char GEOS_DLL GEOSDisjoint_r(
1419 GEOSContextHandle_t handle,
1420 const GEOSGeometry* g1,
1421 const GEOSGeometry* g2);
1422
1424extern char GEOS_DLL GEOSTouches_r(
1425 GEOSContextHandle_t handle,
1426 const GEOSGeometry* g1,
1427 const GEOSGeometry* g2);
1428
1430extern char GEOS_DLL GEOSIntersects_r(
1431 GEOSContextHandle_t handle,
1432 const GEOSGeometry* g1,
1433 const GEOSGeometry* g2);
1434
1436extern char GEOS_DLL GEOSCrosses_r(
1437 GEOSContextHandle_t handle,
1438 const GEOSGeometry* g1,
1439 const GEOSGeometry* g2);
1440
1442extern char GEOS_DLL GEOSWithin_r(
1443 GEOSContextHandle_t handle,
1444 const GEOSGeometry* g1,
1445 const GEOSGeometry* g2);
1446
1448extern char GEOS_DLL GEOSContains_r(
1449 GEOSContextHandle_t handle,
1450 const GEOSGeometry* g1,
1451 const GEOSGeometry* g2);
1452
1454extern char GEOS_DLL GEOSOverlaps_r(
1455 GEOSContextHandle_t handle,
1456 const GEOSGeometry* g1,
1457 const GEOSGeometry* g2);
1458
1460extern char GEOS_DLL GEOSEquals_r(
1461 GEOSContextHandle_t handle,
1462 const GEOSGeometry* g1,
1463 const GEOSGeometry* g2);
1464
1466extern char GEOS_DLL GEOSEqualsExact_r(
1467 GEOSContextHandle_t handle,
1468 const GEOSGeometry* g1,
1469 const GEOSGeometry* g2,
1470 double tolerance);
1471
1473extern char GEOS_DLL GEOSEqualsIdentical_r(
1474 GEOSContextHandle_t handle,
1475 const GEOSGeometry* g1,
1476 const GEOSGeometry* g2);
1477
1479extern char GEOS_DLL GEOSCovers_r(
1480 GEOSContextHandle_t handle,
1481 const GEOSGeometry* g1,
1482 const GEOSGeometry* g2);
1483
1485extern char GEOS_DLL GEOSCoveredBy_r(
1486 GEOSContextHandle_t handle,
1487 const GEOSGeometry* g1,
1488 const GEOSGeometry* g2);
1489
1490/* ========= Prepared Geometry Binary Predicates ========== */
1491
1494 GEOSContextHandle_t handle,
1495 const GEOSGeometry* g);
1496
1498extern void GEOS_DLL GEOSPreparedGeom_destroy_r(
1499 GEOSContextHandle_t handle,
1500 const GEOSPreparedGeometry* g);
1501
1503extern char GEOS_DLL GEOSPreparedContains_r(
1504 GEOSContextHandle_t handle,
1505 const GEOSPreparedGeometry* pg1,
1506 const GEOSGeometry* g2);
1507
1509extern char GEOS_DLL GEOSPreparedContainsXY_r(
1510 GEOSContextHandle_t handle,
1511 const GEOSPreparedGeometry* pg1,
1512 double x,
1513 double y);
1514
1517 GEOSContextHandle_t handle,
1518 const GEOSPreparedGeometry* pg1,
1519 const GEOSGeometry* g2);
1520
1522extern char GEOS_DLL GEOSPreparedCoveredBy_r(
1523 GEOSContextHandle_t handle,
1524 const GEOSPreparedGeometry* pg1,
1525 const GEOSGeometry* g2);
1526
1528extern char GEOS_DLL GEOSPreparedCovers_r(
1529 GEOSContextHandle_t handle,
1530 const GEOSPreparedGeometry* pg1,
1531 const GEOSGeometry* g2);
1532
1534extern char GEOS_DLL GEOSPreparedCrosses_r(
1535 GEOSContextHandle_t handle,
1536 const GEOSPreparedGeometry* pg1,
1537 const GEOSGeometry* g2);
1538
1540extern char GEOS_DLL GEOSPreparedDisjoint_r(
1541 GEOSContextHandle_t handle,
1542 const GEOSPreparedGeometry* pg1,
1543 const GEOSGeometry* g2);
1544
1546extern char GEOS_DLL GEOSPreparedIntersects_r(
1547 GEOSContextHandle_t handle,
1548 const GEOSPreparedGeometry* pg1,
1549 const GEOSGeometry* g2);
1550
1552extern char GEOS_DLL GEOSPreparedIntersectsXY_r(
1553 GEOSContextHandle_t handle,
1554 const GEOSPreparedGeometry* pg1,
1555 double x,
1556 double y);
1557
1559extern char GEOS_DLL GEOSPreparedOverlaps_r(
1560 GEOSContextHandle_t handle,
1561 const GEOSPreparedGeometry* pg1,
1562 const GEOSGeometry* g2);
1563
1565extern char GEOS_DLL GEOSPreparedTouches_r(
1566 GEOSContextHandle_t handle,
1567 const GEOSPreparedGeometry* pg1,
1568 const GEOSGeometry* g2);
1569
1571extern char GEOS_DLL GEOSPreparedWithin_r(
1572 GEOSContextHandle_t handle,
1573 const GEOSPreparedGeometry* pg1,
1574 const GEOSGeometry* g2);
1575
1577extern char GEOS_DLL * GEOSPreparedRelate_r(
1578 GEOSContextHandle_t handle,
1579 const GEOSPreparedGeometry* pg1,
1580 const GEOSGeometry* g2);
1581
1583extern char GEOS_DLL GEOSPreparedRelatePattern_r(
1584 GEOSContextHandle_t handle,
1585 const GEOSPreparedGeometry* pg1,
1586 const GEOSGeometry* g2,
1587 const char* im);
1588
1591 GEOSContextHandle_t handle,
1592 const GEOSPreparedGeometry* pg1,
1593 const GEOSGeometry* g2);
1594
1596extern int GEOS_DLL GEOSPreparedDistance_r(
1597 GEOSContextHandle_t handle,
1598 const GEOSPreparedGeometry* pg1,
1599 const GEOSGeometry* g2, double *dist);
1600
1602extern char GEOS_DLL GEOSPreparedDistanceWithin_r(
1603 GEOSContextHandle_t handle,
1604 const GEOSPreparedGeometry* pg1,
1605 const GEOSGeometry* g2, double dist);
1606
1607/* ========== STRtree ========== */
1608
1611 GEOSContextHandle_t handle,
1612 size_t nodeCapacity);
1613
1615extern int GEOS_DLL GEOSSTRtree_build_r(
1616 GEOSContextHandle_t handle,
1617 GEOSSTRtree *tree);
1618
1620extern void GEOS_DLL GEOSSTRtree_insert_r(
1621 GEOSContextHandle_t handle,
1622 GEOSSTRtree *tree,
1623 const GEOSGeometry *g,
1624 void *item);
1625
1627extern void GEOS_DLL GEOSSTRtree_query_r(
1628 GEOSContextHandle_t handle,
1629 GEOSSTRtree *tree,
1630 const GEOSGeometry *g,
1631 GEOSQueryCallback callback,
1632 void *userdata);
1633
1636 GEOSContextHandle_t handle,
1637 GEOSSTRtree *tree,
1638 const GEOSGeometry* geom);
1639
1641extern const void GEOS_DLL *GEOSSTRtree_nearest_generic_r(
1642 GEOSContextHandle_t handle,
1643 GEOSSTRtree *tree,
1644 const void* item,
1645 const GEOSGeometry* itemEnvelope,
1646 GEOSDistanceCallback distancefn,
1647 void* userdata);
1648
1650extern void GEOS_DLL GEOSSTRtree_iterate_r(
1651 GEOSContextHandle_t handle,
1652 GEOSSTRtree *tree,
1653 GEOSQueryCallback callback,
1654 void *userdata);
1655
1657extern char GEOS_DLL GEOSSTRtree_remove_r(
1658 GEOSContextHandle_t handle,
1659 GEOSSTRtree *tree,
1660 const GEOSGeometry *g,
1661 void *item);
1662
1664extern void GEOS_DLL GEOSSTRtree_destroy_r(
1665 GEOSContextHandle_t handle,
1666 GEOSSTRtree *tree);
1667
1668
1669/* ========= Unary predicate ========= */
1670
1672extern char GEOS_DLL GEOSisEmpty_r(
1673 GEOSContextHandle_t handle,
1674 const GEOSGeometry* g);
1675
1677extern char GEOS_DLL GEOSisSimple_r(
1678 GEOSContextHandle_t handle,
1679 const GEOSGeometry* g);
1680
1682extern char GEOS_DLL GEOSisRing_r(
1683 GEOSContextHandle_t handle,
1684 const GEOSGeometry* g);
1685
1687extern char GEOS_DLL GEOSHasZ_r(
1688 GEOSContextHandle_t handle,
1689 const GEOSGeometry* g);
1690
1692extern char GEOS_DLL GEOSHasM_r(
1693 GEOSContextHandle_t handle,
1694 const GEOSGeometry* g);
1695
1697extern char GEOS_DLL GEOSisClosed_r(
1698 GEOSContextHandle_t handle,
1699 const GEOSGeometry *g);
1700
1701/* ========== Dimensionally Extended 9 Intersection Model ========== */
1702
1719
1721extern char GEOS_DLL GEOSRelatePattern_r(
1722 GEOSContextHandle_t handle,
1723 const GEOSGeometry* g1,
1724 const GEOSGeometry* g2,
1725 const char *imPattern);
1726
1728extern char GEOS_DLL *GEOSRelate_r(
1729 GEOSContextHandle_t handle,
1730 const GEOSGeometry* g1,
1731 const GEOSGeometry* g2);
1732
1734extern char GEOS_DLL GEOSRelatePatternMatch_r(
1735 GEOSContextHandle_t handle,
1736 const char *intMatrix,
1737 const char *imPattern);
1738
1740extern char GEOS_DLL *GEOSRelateBoundaryNodeRule_r(
1741 GEOSContextHandle_t handle,
1742 const GEOSGeometry* g1,
1743 const GEOSGeometry* g2,
1744 int bnr);
1745
1746/* ========= Validity checking ========= */
1747
1754
1756extern char GEOS_DLL GEOSisValid_r(
1757 GEOSContextHandle_t handle,
1758 const GEOSGeometry* g);
1759
1761extern char GEOS_DLL *GEOSisValidReason_r(
1762 GEOSContextHandle_t handle,
1763 const GEOSGeometry* g);
1764
1766extern char GEOS_DLL GEOSisSimpleDetail_r(
1767 GEOSContextHandle_t handle,
1768 const GEOSGeometry* g,
1769 int findAllLocations,
1770 GEOSGeometry** location);
1771
1773extern char GEOS_DLL GEOSisValidDetail_r(
1774 GEOSContextHandle_t handle,
1775 const GEOSGeometry* g,
1776 int flags,
1777 char** reason,
1778 GEOSGeometry** location);
1779
1780/* ========== Make Valid ========== */
1781
1798
1801 GEOSContextHandle_t extHandle);
1802
1805 GEOSContextHandle_t handle,
1806 GEOSMakeValidParams* parms);
1807
1810 GEOSContextHandle_t handle,
1812 int style);
1813
1816 GEOSContextHandle_t handle,
1818 enum GEOSMakeValidMethods method);
1819
1822 GEOSContextHandle_t handle,
1823 const GEOSGeometry* g);
1824
1827 GEOSContextHandle_t handle,
1828 const GEOSGeometry* g,
1829 const GEOSMakeValidParams* makeValidParams);
1830
1833 GEOSContextHandle_t handle,
1834 const GEOSGeometry* g,
1835 double tolerance);
1836
1837/* ========== Geometry info ========== */
1838
1840/* Return NULL on exception, result must be freed by caller. */
1841extern char GEOS_DLL *GEOSGeomType_r(
1842 GEOSContextHandle_t handle,
1843 const GEOSGeometry* g);
1844
1846extern int GEOS_DLL GEOSGeomTypeId_r(
1847 GEOSContextHandle_t handle,
1848 const GEOSGeometry* g);
1849
1851extern int GEOS_DLL GEOSGetSRID_r(
1852 GEOSContextHandle_t handle,
1853 const GEOSGeometry* g);
1854
1856extern void GEOS_DLL GEOSSetSRID_r(
1857 GEOSContextHandle_t handle,
1858 GEOSGeometry* g, int SRID);
1859
1861extern void GEOS_DLL *GEOSGeom_getUserData_r(
1862 GEOSContextHandle_t handle,
1863 const GEOSGeometry* g);
1864
1866extern void GEOS_DLL GEOSGeom_setUserData_r(
1867 GEOSContextHandle_t handle,
1868 GEOSGeometry* g,
1869 void* userData);
1870
1872extern int GEOS_DLL GEOSGetNumGeometries_r(
1873 GEOSContextHandle_t handle,
1874 const GEOSGeometry* g);
1875
1877extern const GEOSGeometry GEOS_DLL *GEOSGetGeometryN_r(
1878 GEOSContextHandle_t handle,
1879 const GEOSGeometry* g, int n);
1880
1882extern int GEOS_DLL GEOSGetNumCurves_r(
1883 GEOSContextHandle_t handle,
1884 const GEOSGeometry* g);
1885
1887extern const GEOSGeometry GEOS_DLL *GEOSGetCurveN_r(
1888 GEOSContextHandle_t handle,
1889 const GEOSGeometry* g, int n);
1890
1892extern int GEOS_DLL GEOSNormalize_r(
1893 GEOSContextHandle_t handle,
1894 GEOSGeometry* g);
1895
1897extern int GEOS_DLL GEOSOrientPolygons_r(
1898 GEOSContextHandle_t handle,
1899 GEOSGeometry* g,
1900 int exteriorCW);
1901
1914
1917 GEOSContextHandle_t handle,
1918 const GEOSGeometry *g,
1919 double gridSize,
1920 int flags);
1921
1923extern double GEOS_DLL GEOSGeom_getPrecision_r(
1924 GEOSContextHandle_t handle,
1925 const GEOSGeometry *g);
1926
1929 GEOSContextHandle_t handle,
1930 const GEOSGeometry* g,
1931 const GEOSCurveToLineParams* params);
1932
1935 GEOSContextHandle_t extHandle,
1936 GEOSCurveToLineParams* params,
1937 double tolerance);
1938
1941 GEOSContextHandle_t extHandle,
1942 GEOSCurveToLineParams* params,
1943 double tolerance);
1944
1947 GEOSContextHandle_t handle,
1948 const GEOSGeometry* g,
1949 const GEOSLineToCurveParams* params);
1950
1953 GEOSContextHandle_t extHandle,
1954 GEOSLineToCurveParams* params,
1955 double tolerance);
1956
1959 GEOSContextHandle_t extHandle,
1960 GEOSLineToCurveParams* params,
1961 double tolerance);
1962
1965 GEOSContextHandle_t extHandle,
1966 GEOSLineToCurveParams* params,
1967 double tolerance);
1968
1970extern int GEOS_DLL GEOSGetNumInteriorRings_r(
1971 GEOSContextHandle_t handle,
1972 const GEOSGeometry* g);
1973
1975extern int GEOS_DLL GEOSGeomGetNumPoints_r(
1976 GEOSContextHandle_t handle,
1977 const GEOSGeometry* g);
1978
1980extern int GEOS_DLL GEOSGeomGetX_r(
1981 GEOSContextHandle_t handle,
1982 const GEOSGeometry *g,
1983 double *x);
1984
1986extern int GEOS_DLL GEOSGeomGetY_r(
1987 GEOSContextHandle_t handle,
1988 const GEOSGeometry *g,
1989 double *y);
1990
1992extern int GEOS_DLL GEOSGeomGetZ_r(
1993 GEOSContextHandle_t handle,
1994 const GEOSGeometry *g,
1995 double *z);
1996
1998extern int GEOS_DLL GEOSGeomGetM_r(
1999 GEOSContextHandle_t handle,
2000 const GEOSGeometry *g,
2001 double *m);
2002
2005 GEOSContextHandle_t handle,
2006 const GEOSGeometry* g, int n);
2007
2010 GEOSContextHandle_t handle,
2011 const GEOSGeometry* g);
2012
2014extern int GEOS_DLL GEOSGetNumCoordinates_r(
2015 GEOSContextHandle_t handle,
2016 const GEOSGeometry* g);
2017
2020 GEOSContextHandle_t handle,
2021 const GEOSGeometry* g);
2022
2024extern int GEOS_DLL GEOSGeom_getDimensions_r(
2025 GEOSContextHandle_t handle,
2026 const GEOSGeometry* g);
2027
2030 GEOSContextHandle_t handle,
2031 const GEOSGeometry* g);
2032
2034extern int GEOS_DLL GEOSGeom_getXMin_r(
2035 GEOSContextHandle_t handle,
2036 const GEOSGeometry* g,
2037 double* value);
2038
2040extern int GEOS_DLL GEOSGeom_getYMin_r(
2041 GEOSContextHandle_t handle,
2042 const GEOSGeometry* g,
2043 double* value);
2044
2046extern int GEOS_DLL GEOSGeom_getXMax_r(
2047 GEOSContextHandle_t handle,
2048 const GEOSGeometry* g,
2049 double* value);
2050
2052extern int GEOS_DLL GEOSGeom_getYMax_r(
2053 GEOSContextHandle_t handle,
2054 const GEOSGeometry* g,
2055 double* value);
2056
2058extern int GEOS_DLL GEOSGeom_getExtent_r(
2059 GEOSContextHandle_t handle,
2060 const GEOSGeometry* g,
2061 double* xmin,
2062 double* ymin,
2063 double* xmax,
2064 double* ymax);
2065
2068 GEOSContextHandle_t handle,
2069 const GEOSGeometry *g,
2070 int n);
2071
2074 GEOSContextHandle_t handle,
2075 const GEOSGeometry *g);
2076
2079 GEOSContextHandle_t handle,
2080 const GEOSGeometry *g);
2081
2082/* ========= Misc functions ========= */
2083
2085extern int GEOS_DLL GEOSArea_r(
2086 GEOSContextHandle_t handle,
2087 const GEOSGeometry* g,
2088 double *area);
2089
2091extern int GEOS_DLL GEOSLength_r(
2092 GEOSContextHandle_t handle,
2093 const GEOSGeometry* g,
2094 double *length);
2095
2097extern int GEOS_DLL GEOSDistance_r(
2098 GEOSContextHandle_t handle,
2099 const GEOSGeometry* g1,
2100 const GEOSGeometry* g2,
2101 double *dist);
2102
2104extern char GEOS_DLL GEOSDistanceWithin_r(
2105 GEOSContextHandle_t handle,
2106 const GEOSGeometry* g1,
2107 const GEOSGeometry* g2,
2108 double dist);
2109
2111extern int GEOS_DLL GEOSDistanceIndexed_r(
2112 GEOSContextHandle_t handle,
2113 const GEOSGeometry* g1,
2114 const GEOSGeometry* g2,
2115 double *dist);
2116
2118extern int GEOS_DLL GEOSHausdorffDistance_r(
2119 GEOSContextHandle_t handle,
2120 const GEOSGeometry *g1,
2121 const GEOSGeometry *g2,
2122 double *dist);
2123
2126 GEOSContextHandle_t handle,
2127 const GEOSGeometry *g1,
2128 const GEOSGeometry *g2,
2129 double *dist,
2130 double *p1x, double *p1y,
2131 double *p2x, double *p2y);
2132
2135 GEOSContextHandle_t handle,
2136 const GEOSGeometry *g1,
2137 const GEOSGeometry *g2,
2138 double densifyFrac, double *dist);
2139
2142 GEOSContextHandle_t handle,
2143 const GEOSGeometry *g1,
2144 const GEOSGeometry *g2,
2145 double densifyFrac, double* dist,
2146 double *p1x, double *p1y,
2147 double *p2x, double *p2y);
2148
2150extern int GEOS_DLL GEOSFrechetDistance_r(
2151 GEOSContextHandle_t handle,
2152 const GEOSGeometry *g1,
2153 const GEOSGeometry *g2,
2154 double *dist);
2155
2158 GEOSContextHandle_t handle,
2159 const GEOSGeometry *g1,
2160 const GEOSGeometry *g2,
2161 double densifyFrac,
2162 double *dist);
2163
2164
2166extern int GEOS_DLL GEOSHilbertCode_r(
2167 GEOSContextHandle_t handle,
2168 const GEOSGeometry *geom,
2169 const GEOSGeometry* extent,
2170 unsigned int level,
2171 unsigned int *code
2172);
2173
2175extern int GEOS_DLL GEOSGeomGetLength_r(
2176 GEOSContextHandle_t handle,
2177 const GEOSGeometry *g,
2178 double *length);
2179
2182 GEOSContextHandle_t handle,
2183 const GEOSGeometry* g1,
2184 const GEOSGeometry* g2);
2185
2188 GEOSContextHandle_t handle,
2189 const GEOSGeometry* g,
2190 GEOSTransformXYCallback callback,
2191 void* userdata);
2192
2195 GEOSContextHandle_t handle,
2196 const GEOSGeometry* g,
2197 GEOSTransformXYZCallback callback,
2198 void* userdata);
2199
2202 GEOSContextHandle_t handle,
2203 const GEOSGeometry* g,
2204 double eps,
2205 unsigned minPoints);
2206
2209 GEOSContextHandle_t handle,
2210 const GEOSGeometry* g,
2211 double d);
2212
2215 GEOSContextHandle_t handle,
2216 const GEOSGeometry* g);
2217
2220 GEOSContextHandle_t handle,
2221 const GEOSGeometry* g,
2222 double d);
2223
2226 GEOSContextHandle_t handle,
2227 const GEOSGeometry* g);
2228
2231
2233extern size_t GEOS_DLL GEOSClusterInfo_getClusterSize_r(GEOSContextHandle_t, const GEOSClusterInfo* clusters, size_t i);
2234
2237
2239extern const size_t GEOS_DLL* GEOSClusterInfo_getInputsForClusterN_r(GEOSContextHandle_t, const GEOSClusterInfo* clusters, size_t i);
2240
2243
2244/* ========= Algorithms ========= */
2245
2247extern int GEOS_DLL GEOSOrientationIndex_r(
2248 GEOSContextHandle_t handle,
2249 double Ax, double Ay,
2250 double Bx, double By,
2251 double Px, double Py);
2252
2253
2254/* ========== Reader and Writer APIs ========== */
2255
2256#ifndef GEOSWKTReader
2257
2263typedef struct GEOSWKTReader_t GEOSWKTReader;
2264
2270typedef struct GEOSWKTWriter_t GEOSWKTWriter;
2271
2277typedef struct GEOSWKBReader_t GEOSWKBReader;
2278
2284typedef struct GEOSWKBWriter_t GEOSWKBWriter;
2285
2291typedef struct GEOSGeoJSONReader_t GEOSGeoJSONReader;
2292
2298typedef struct GEOSGeoJSONWriter_t GEOSGeoJSONWriter;
2299
2300#endif
2301
2302/* ========== WKT Reader ========== */
2303
2306 GEOSContextHandle_t handle);
2307
2310 GEOSWKTReader* reader);
2311
2314 GEOSContextHandle_t handle,
2315 GEOSWKTReader* reader,
2316 const char *wkt);
2317
2320 GEOSContextHandle_t handle,
2321 GEOSWKTReader *reader,
2322 char doFix);
2323
2324
2325/* ========== WKT Writer ========== */
2326
2329 GEOSContextHandle_t handle);
2330
2332extern void GEOS_DLL GEOSWKTWriter_destroy_r(
2333 GEOSContextHandle_t handle,
2334 GEOSWKTWriter* writer);
2335
2337extern char GEOS_DLL *GEOSWKTWriter_write_r(
2338 GEOSContextHandle_t handle,
2339 GEOSWKTWriter* writer,
2340 const GEOSGeometry* g);
2341
2343extern void GEOS_DLL GEOSWKTWriter_setTrim_r(
2344 GEOSContextHandle_t handle,
2345 GEOSWKTWriter *writer,
2346 char trim);
2347
2350 GEOSContextHandle_t handle,
2351 GEOSWKTWriter *writer,
2352 int precision);
2353
2356 GEOSContextHandle_t handle,
2357 GEOSWKTWriter *writer,
2358 int dim);
2359
2362 GEOSContextHandle_t handle,
2363 GEOSWKTWriter *writer);
2364
2366extern void GEOS_DLL GEOSWKTWriter_setOld3D_r(
2367 GEOSContextHandle_t handle,
2368 GEOSWKTWriter *writer,
2369 int useOld3D);
2370
2380extern int GEOS_DLL GEOS_printDouble(
2381 double d,
2382 unsigned int precision,
2383 char *result
2384);
2385
2386/* ========== WKB Reader ========== */
2387
2390 GEOSContextHandle_t handle);
2391
2393extern void GEOS_DLL GEOSWKBReader_destroy_r(
2394 GEOSContextHandle_t handle,
2395 GEOSWKBReader* reader);
2396
2399 GEOSContextHandle_t handle,
2400 GEOSWKBReader *reader,
2401 char doFix);
2402
2405 GEOSContextHandle_t handle,
2406 GEOSWKBReader* reader,
2407 const unsigned char *wkb,
2408 size_t size);
2409
2412 GEOSContextHandle_t handle,
2413 GEOSWKBReader* reader,
2414 const unsigned char *hex,
2415 size_t size);
2416
2417
2418/* ========== WKB Writer ========== */
2419
2422 GEOSContextHandle_t handle);
2423
2425extern void GEOS_DLL GEOSWKBWriter_destroy_r(
2426 GEOSContextHandle_t handle,
2427 GEOSWKBWriter* writer);
2428
2430extern unsigned char GEOS_DLL *GEOSWKBWriter_write_r(
2431 GEOSContextHandle_t handle,
2432 GEOSWKBWriter* writer,
2433 const GEOSGeometry* g,
2434 size_t *size);
2435
2437extern unsigned char GEOS_DLL *GEOSWKBWriter_writeHEX_r(
2438 GEOSContextHandle_t handle,
2439 GEOSWKBWriter* writer,
2440 const GEOSGeometry* g,
2441 size_t *size);
2442
2445 GEOSContextHandle_t handle,
2446 const GEOSWKBWriter* writer);
2447
2450 GEOSContextHandle_t handle,
2451 GEOSWKBWriter* writer, int newDimension);
2452
2455 GEOSContextHandle_t handle,
2456 const GEOSWKBWriter* writer);
2457
2459extern void GEOS_DLL GEOSWKBWriter_setByteOrder_r(
2460 GEOSContextHandle_t handle,
2461 GEOSWKBWriter* writer,
2462 int byteOrder);
2463
2465extern int GEOS_DLL GEOSWKBWriter_getFlavor_r(
2466 GEOSContextHandle_t handle,
2467 const GEOSWKBWriter* writer);
2468
2470extern void GEOS_DLL GEOSWKBWriter_setFlavor_r(
2471 GEOSContextHandle_t handle,
2472 GEOSWKBWriter* writer,
2473 int flavor);
2474
2477 GEOSContextHandle_t handle,
2478 const GEOSWKBWriter* writer);
2479
2482 GEOSContextHandle_t handle,
2483 GEOSWKBWriter* writer, const char writeSRID);
2484
2485/* ========== GeoJSON Reader ========== */
2486
2489 GEOSContextHandle_t handle);
2490
2493 GEOSGeoJSONReader* reader);
2494
2497 GEOSContextHandle_t handle,
2498 GEOSGeoJSONReader* reader,
2499 const char *geojson);
2500
2501/* ========== GeoJSON Writer ========== */
2502
2505 GEOSContextHandle_t handle);
2506
2509 GEOSGeoJSONWriter* writer);
2510
2513 GEOSContextHandle_t handle,
2514 GEOSGeoJSONWriter* writer,
2515 const GEOSGeometry* g,
2516 int indent);
2517
2520 GEOSContextHandle_t handle,
2521 GEOSGeoJSONWriter *writer,
2522 int dim);
2523
2526 GEOSContextHandle_t handle,
2527 GEOSGeoJSONWriter *writer);
2528
2530extern void GEOS_DLL GEOSFree_r(
2531 GEOSContextHandle_t handle,
2532 void *buffer);
2533
2541extern const char GEOS_DLL *GEOSversion(void);
2542
2550extern const char GEOS_DLL *GEOSrevision(void);
2551
2552/*
2553* External code to GEOS can define GEOS_USE_ONLY_R_API
2554* to strip the non-reentrant API functions from this header,
2555* leaving only the "_r" compatible variants.
2556*/
2557#ifndef GEOS_USE_ONLY_R_API
2558
2559/* ========== Initialization, cleanup ================================= */
2565
2578extern void GEOS_DLL initGEOS(
2579 GEOSMessageHandler notice_function,
2580 GEOSMessageHandler error_function);
2581
2587extern void GEOS_DLL finishGEOS(void);
2588
2598extern void GEOS_DLL GEOSFree(void *buffer);
2599
2601
2602/* ========= Coordinate Sequence functions ========= */
2608
2616extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_create(unsigned int size, unsigned int dims);
2617
2626extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_createWithDimensions(unsigned int size, int hasZ, int hasM);
2627
2638extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_copyFromBuffer(const double* buf, unsigned int size, int hasZ, int hasM);
2639
2651extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_copyFromArrays(const double* x, const double* y, const double* z, const double* m, unsigned int size);
2652
2663extern int GEOS_DLL GEOSCoordSeq_copyToBuffer(const GEOSCoordSequence* s, double* buf, int hasZ, int hasM);
2664
2676extern int GEOS_DLL GEOSCoordSeq_copyToArrays(const GEOSCoordSequence* s, double* x, double* y, double* z, double* m);
2677
2685
2692
2700extern char GEOS_DLL GEOSCoordSeq_hasZ(GEOSCoordSequence* s);
2701
2709extern char GEOS_DLL GEOSCoordSeq_hasM(GEOSCoordSequence* s);
2710
2720 unsigned int idx, double val);
2730 unsigned int idx, double val);
2740 unsigned int idx, double val);
2741
2751 unsigned int idx, double val);
2752
2764 unsigned int idx, double x, double y);
2777 unsigned int idx, double x, double y, double z);
2788 unsigned int idx, unsigned int dim, double val);
2789
2798extern int GEOS_DLL GEOSCoordSeq_getX(const GEOSCoordSequence* s,
2799 unsigned int idx, double *val);
2800
2809extern int GEOS_DLL GEOSCoordSeq_getY(const GEOSCoordSequence* s,
2810 unsigned int idx, double *val);
2811
2820extern int GEOS_DLL GEOSCoordSeq_getZ(const GEOSCoordSequence* s,
2821 unsigned int idx, double *val);
2822
2831extern int GEOS_DLL GEOSCoordSeq_getM(const GEOSCoordSequence* s,
2832 unsigned int idx, double *val);
2833
2844extern int GEOS_DLL GEOSCoordSeq_getXY(const GEOSCoordSequence* s,
2845 unsigned int idx, double *x, double *y);
2857extern int GEOS_DLL GEOSCoordSeq_getXYZ(const GEOSCoordSequence* s,
2858 unsigned int idx, double *x, double *y, double *z);
2868extern int GEOS_DLL GEOSCoordSeq_getOrdinate(const GEOSCoordSequence* s,
2869 unsigned int idx, unsigned int dim, double *val);
2870
2878extern int GEOS_DLL GEOSCoordSeq_getSize(
2879 const GEOSCoordSequence* s,
2880 unsigned int *size);
2881
2889extern int GEOS_DLL GEOSCoordSeq_getDimensions(
2890 const GEOSCoordSequence* s,
2891 unsigned int *dims);
2892
2902extern int GEOS_DLL GEOSCoordSeq_isCCW(
2903 const GEOSCoordSequence* s,
2904 char* is_ccw);
2905
2907
2908/* ========= Geometry Constructors ========= */
2914
2923
2933extern GEOSGeometry GEOS_DLL *GEOSGeom_createPointFromXY(double x, double y);
2934
2943
2952
2961
2970
2979
2994 GEOSGeometry* shell,
2995 GEOSGeometry** holes,
2996 unsigned int nholes);
2997
3006
3014
3024 unsigned int ncurves);
3025
3033
3048 GEOSGeometry* shell,
3049 GEOSGeometry** holes,
3050 unsigned int nholes);
3051
3059
3074 int type,
3075 GEOSGeometry** geoms,
3076 unsigned int ngeoms);
3077
3095 GEOSGeometry * collection,
3096 unsigned int * ngeoms);
3097
3107
3119 double xmin, double ymin,
3120 double xmax, double ymax);
3121
3129extern GEOSGeometry GEOS_DLL *GEOSGeom_clone(const GEOSGeometry* g);
3130
3136extern void GEOS_DLL GEOSGeom_destroy(GEOSGeometry* g);
3137
3139
3140/* ========== Geometry info ========== */
3145
3155extern char GEOS_DLL *GEOSGeomType(const GEOSGeometry* g);
3156
3163extern int GEOS_DLL GEOSGeomTypeId(const GEOSGeometry* g);
3164
3171extern int GEOS_DLL GEOSGetSRID(const GEOSGeometry* g);
3172
3183extern void GEOS_DLL *GEOSGeom_getUserData(const GEOSGeometry* g);
3184
3197extern int GEOS_DLL GEOSGetNumGeometries(const GEOSGeometry* g);
3198
3214extern const GEOSGeometry GEOS_DLL *GEOSGetGeometryN(
3215 const GEOSGeometry* g,
3216 int n);
3217
3226extern int GEOS_DLL GEOSGetNumCurves(const GEOSGeometry* g);
3227
3241extern const GEOSGeometry GEOS_DLL *GEOSGetCurveN(
3242 const GEOSGeometry* g,
3243 int n);
3244
3254extern double GEOS_DLL GEOSGeom_getPrecision(const GEOSGeometry *g);
3255
3263extern int GEOS_DLL GEOSGetNumInteriorRings(const GEOSGeometry* g);
3264
3275extern int GEOS_DLL GEOSGeomGetNumPoints(const GEOSGeometry* g);
3276
3285extern int GEOS_DLL GEOSGeomGetX(const GEOSGeometry *g, double *x);
3286
3295extern int GEOS_DLL GEOSGeomGetY(const GEOSGeometry *g, double *y);
3296
3306extern int GEOS_DLL GEOSGeomGetZ(const GEOSGeometry *g, double *z);
3307
3317extern int GEOS_DLL GEOSGeomGetM(const GEOSGeometry *g, double *m);
3318
3328extern const GEOSGeometry GEOS_DLL *GEOSGetInteriorRingN(
3329 const GEOSGeometry* g,
3330 int n);
3331
3340extern const GEOSGeometry GEOS_DLL *GEOSGetExteriorRing(
3341 const GEOSGeometry* g);
3342
3350extern int GEOS_DLL GEOSGetNumCoordinates(
3351 const GEOSGeometry* g);
3352
3363 const GEOSGeometry* g);
3364
3377extern int GEOS_DLL GEOSGeom_getDimensions(
3378 const GEOSGeometry* g);
3379
3393 const GEOSGeometry* g);
3394
3408extern int GEOS_DLL GEOSGeom_getXMin(const GEOSGeometry* g, double* value);
3409
3423extern int GEOS_DLL GEOSGeom_getYMin(const GEOSGeometry* g, double* value);
3424
3438extern int GEOS_DLL GEOSGeom_getXMax(const GEOSGeometry* g, double* value);
3439
3453extern int GEOS_DLL GEOSGeom_getYMax(const GEOSGeometry* g, double* value);
3454
3472extern int GEOS_DLL GEOSGeom_getExtent(
3473 const GEOSGeometry* g,
3474 double* xmin,
3475 double* ymin,
3476 double* xmax,
3477 double* ymax);
3478
3492extern GEOSGeometry GEOS_DLL *GEOSGeomGetPointN(const GEOSGeometry *g, int n);
3493
3507
3521
3530extern char GEOS_DLL GEOSisEmpty(const GEOSGeometry* g);
3531
3541extern char GEOS_DLL GEOSisRing(const GEOSGeometry* g);
3542
3549extern char GEOS_DLL GEOSHasZ(const GEOSGeometry* g);
3550
3558extern char GEOS_DLL GEOSHasM(const GEOSGeometry* g);
3559
3574extern char GEOS_DLL GEOSisClosed(const GEOSGeometry *g);
3575
3577
3578/* ==================================================================================== */
3583
3590extern void GEOS_DLL GEOSSetSRID(GEOSGeometry* g, int SRID);
3591
3599extern void GEOS_DLL GEOSGeom_setUserData(GEOSGeometry* g, void* userData);
3600
3624extern int GEOS_DLL GEOSNormalize(GEOSGeometry* g);
3625
3637extern int GEOS_DLL GEOSOrientPolygons(GEOSGeometry* g,
3638 int exteriorCW);
3639
3641
3642/* ========== Validity checking ============================================================ */
3648
3663extern char GEOS_DLL GEOSisSimple(const GEOSGeometry* g);
3664
3684extern char GEOS_DLL GEOSisSimpleDetail(
3685 const GEOSGeometry* g,
3686 int findAllLocations,
3687 GEOSGeometry** locations);
3688
3709extern char GEOS_DLL GEOSisValid(const GEOSGeometry* g);
3710
3726extern char GEOS_DLL *GEOSisValidReason(const GEOSGeometry *g);
3727
3748extern char GEOS_DLL GEOSisValidDetail(
3749 const GEOSGeometry* g,
3750 int flags,
3751 char** reason,
3752 GEOSGeometry** location);
3753
3772 const GEOSGeometry* g);
3773
3798 const GEOSGeometry* g,
3799 const GEOSMakeValidParams *makeValidParams);
3800
3810
3819
3830 enum GEOSMakeValidMethods method);
3831
3844 int keepCollapsed);
3845
3870extern int GEOS_DLL GEOSMinimumClearance(const GEOSGeometry* g, double* d);
3871
3889
3911 const GEOSGeometry* g,
3912 double tolerance);
3913
3915
3916/* ========= Metric functions ================================================== */
3921
3934extern int GEOS_DLL GEOSArea(
3935 const GEOSGeometry* g,
3936 double *area);
3937
3949extern int GEOS_DLL GEOSLength(
3950 const GEOSGeometry* g,
3951 double *length);
3952
3967extern int GEOS_DLL GEOSGeomGetLength(
3968 const GEOSGeometry *g,
3969 double *length);
3970
3972
3973/* ========== Distance functions ================================================ */
3979
3996extern int GEOS_DLL GEOSDistance(
3997 const GEOSGeometry* g1,
3998 const GEOSGeometry* g2,
3999 double *dist);
4000
4018extern char GEOS_DLL GEOSDistanceWithin(
4019 const GEOSGeometry* g1,
4020 const GEOSGeometry* g2,
4021 double dist);
4022
4042extern int GEOS_DLL GEOSDistanceIndexed(
4043 const GEOSGeometry* g1,
4044 const GEOSGeometry* g2,
4045 double *dist);
4046
4065 const GEOSGeometry* g1,
4066 const GEOSGeometry* g2);
4067
4085extern int GEOS_DLL GEOSHausdorffDistance(
4086 const GEOSGeometry *g1,
4087 const GEOSGeometry *g2,
4088 double *dist);
4089
4090
4112 const GEOSGeometry *g1,
4113 const GEOSGeometry *g2,
4114 double *dist,
4115 double *p1x, double *p1y,
4116 double *p2x, double *p2y);
4117
4118
4119
4141 const GEOSGeometry *g1,
4142 const GEOSGeometry *g2,
4143 double densifyFrac,
4144 double *dist);
4145
4172 const GEOSGeometry *g1,
4173 const GEOSGeometry *g2,
4174 double densifyFrac,
4175 double *dist,
4176 double* p1x, double* p1y,
4177 double* p2x, double* p2y);
4178
4198extern int GEOS_DLL GEOSFrechetDistance(
4199 const GEOSGeometry *g1,
4200 const GEOSGeometry *g2,
4201 double *dist);
4202
4225extern int GEOS_DLL GEOSFrechetDistanceDensify(
4226 const GEOSGeometry *g1,
4227 const GEOSGeometry *g2,
4228 double densifyFrac,
4229 double *dist);
4230
4232
4233/* ========== Linear referencing functions */
4239
4255extern double GEOS_DLL GEOSProject(const GEOSGeometry* line,
4256 const GEOSGeometry* point);
4257
4277extern GEOSGeometry GEOS_DLL *GEOSInterpolate(const GEOSGeometry* line,
4278 double d);
4279
4296extern double GEOS_DLL GEOSProjectNormalized(const GEOSGeometry* line,
4297 const GEOSGeometry* point);
4298
4320 const GEOSGeometry *line,
4321 double proportion);
4322
4324
4325/* ========== Overlay functions ========== */
4331
4352extern GEOSGeometry GEOS_DLL *GEOSIntersection(const GEOSGeometry* g1, const GEOSGeometry* g2);
4353
4368extern GEOSGeometry GEOS_DLL *GEOSIntersectionPrec(const GEOSGeometry* g1, const GEOSGeometry* g2, double gridSize);
4369
4391 const GEOSGeometry* ga,
4392 const GEOSGeometry* gb);
4393
4410 const GEOSGeometry* ga,
4411 const GEOSGeometry* gb,
4412 double gridSize);
4413
4436 const GEOSGeometry* ga,
4437 const GEOSGeometry* gb);
4438
4456 const GEOSGeometry* ga,
4457 const GEOSGeometry* gb,
4458 double gridSize);
4459
4480extern GEOSGeometry GEOS_DLL *GEOSUnion(
4481 const GEOSGeometry* ga,
4482 const GEOSGeometry* gb);
4483
4500 const GEOSGeometry* ga,
4501 const GEOSGeometry* gb,
4502 double gridSize);
4503
4525extern GEOSGeometry GEOS_DLL *GEOSUnaryUnion(const GEOSGeometry* g);
4526
4543 const GEOSGeometry* g,
4544 double gridSize);
4545
4567
4594 const GEOSGeometry* g,
4595 double xmin, double ymin,
4596 double xmax, double ymax);
4597
4632 const GEOSGeometry* g,
4633 double xmin, double ymin,
4634 double xmax, double ymax,
4635 unsigned nx, unsigned ny,
4636 int includeExterior);
4637
4661 const GEOSGeometry* g,
4662 double xmin, double ymin,
4663 double xmax, double ymax,
4664 unsigned nx, unsigned ny,
4665 float* buf);
4666
4691 const GEOSGeometry* g1,
4692 const GEOSGeometry* g2);
4694
4695/* ========== Clustering functions ========== */
4702static const size_t GEOS_CLUSTER_NONE = (size_t) -1;
4703
4705
4720extern GEOSClusterInfo GEOS_DLL* GEOSClusterDBSCAN(const GEOSGeometry* g, double eps, unsigned minPoints);
4721
4736extern GEOSClusterInfo GEOS_DLL* GEOSClusterGeometryDistance(const GEOSGeometry* g, double d);
4737
4752
4764extern GEOSClusterInfo GEOS_DLL* GEOSClusterEnvelopeDistance(const GEOSGeometry* g, double d);
4765
4777
4786extern size_t GEOS_DLL GEOSClusterInfo_getNumClusters(const GEOSClusterInfo* clusters);
4787
4797extern size_t GEOS_DLL GEOSClusterInfo_getClusterSize(const GEOSClusterInfo* clusters, size_t i );
4798
4808extern size_t GEOS_DLL* GEOSClusterInfo_getClustersForInputs(const GEOSClusterInfo* clusters);
4809
4818extern const size_t GEOS_DLL* GEOSClusterInfo_getInputsForClusterN(const GEOSClusterInfo* clusters, size_t i);
4819
4827extern void GEOS_DLL GEOSClusterInfo_destroy(GEOSClusterInfo* clusters);
4828
4830
4831/* ========== Buffer related functions ========== */
4836
4855extern GEOSGeometry GEOS_DLL *GEOSBuffer(const GEOSGeometry* g,
4856 double width, int quadsegs);
4857
4867
4874extern void GEOS_DLL GEOSBufferParams_destroy(GEOSBufferParams* parms);
4875
4885 int style);
4886
4896 int joinStyle);
4897
4911 double mitreLimit);
4912
4925 int quadSegs);
4926
4939 int singleSided);
4940
4958 const GEOSGeometry* g,
4959 const GEOSBufferParams* p,
4960 double width);
4961
4983 const GEOSGeometry* g,
4984 double width,
4985 int quadsegs,
4986 int endCapStyle,
4987 int joinStyle,
4988 double mitreLimit);
4989
5019 double width, int quadsegs, int joinStyle, double mitreLimit);
5020
5022
5023
5024/* ====================================================================== */
5030
5053
5054
5083extern int GEOS_DLL GEOSCoverageIsValid(
5084 const GEOSGeometry* input,
5085 double gapWidth,
5086 GEOSGeometry** invalidEdges);
5087
5123 const GEOSGeometry* input,
5124 double tolerance,
5125 int preserveBoundary);
5126
5136extern GEOSGeometry GEOS_DLL *GEOSCoverageEdges(const GEOSGeometry *input, int edgetype);
5137
5145extern GEOSCoverageCleanParams GEOS_DLL *
5147
5154extern void GEOS_DLL
5156 GEOSCoverageCleanParams* params);
5157
5182extern int GEOS_DLL
5185 double snappingDistance);
5186
5208extern int GEOS_DLL
5211 double gapMaximumWidth);
5212
5236extern int GEOS_DLL
5239 int overlapMergeStrategy);
5240
5273extern GEOSGeometry GEOS_DLL *
5275 const GEOSGeometry* input,
5276 const GEOSCoverageCleanParams* params
5277);
5278
5280extern GEOSGeometry GEOS_DLL *
5282 const GEOSGeometry* input);
5283
5284
5285
5286
5288
5289
5290/* ========== Construction Operations ========== */
5295
5309extern GEOSGeometry GEOS_DLL *GEOSEnvelope(const GEOSGeometry* g);
5310
5328extern GEOSGeometry GEOS_DLL *GEOSBoundary(const GEOSGeometry* g);
5329
5348extern GEOSGeometry GEOS_DLL *GEOSConvexHull(const GEOSGeometry* g);
5349
5389 const GEOSGeometry* g,
5390 double ratio,
5391 unsigned int allowHoles);
5392
5431 const GEOSGeometry* g,
5432 double length,
5433 unsigned int allowHoles);
5434
5479 const GEOSGeometry* g,
5480 double lengthRatio,
5481 unsigned int isTight,
5482 unsigned int isHolesAllowed);
5483
5513 const GEOSGeometry* g,
5514 unsigned int isOuter,
5515 double vertexNumFraction);
5516
5517
5549 const GEOSGeometry* g,
5550 unsigned int isOuter,
5551 unsigned int parameterMode,
5552 double parameter);
5553
5574
5606 const GEOSGeometry* g,
5607 double tolerance);
5608
5648 const GEOSGeometry* obstacles,
5649 const GEOSGeometry* boundary,
5650 double tolerance);
5651
5671extern GEOSGeometry GEOS_DLL *GEOSMinimumWidth(const GEOSGeometry* g);
5672
5673
5690
5706extern GEOSGeometry GEOS_DLL *GEOSGetCentroid(const GEOSGeometry* g);
5707
5727 const GEOSGeometry* g,
5728 double* radius,
5729 GEOSGeometry** center);
5730
5751 const GEOSGeometry *g,
5752 double tolerance,
5753 int onlyEdges);
5754
5775 const GEOSGeometry *g);
5776
5802 const GEOSGeometry *g,
5803 const GEOSGeometry *env,
5804 double tolerance,
5805 int flags);
5806
5808
5809/* ============================================================== */
5814
5831extern GEOSGeometry GEOS_DLL *GEOSNode(const GEOSGeometry* g);
5832
5833
5849extern GEOSGeometry GEOS_DLL *GEOSSplit(const GEOSGeometry* g, const GEOSGeometry* edge);
5850
5897 const GEOSGeometry * const geoms[],
5898 unsigned int ngeoms);
5899
5918 const GEOSGeometry * const geoms[],
5919 unsigned int ngeoms);
5920
5938 const GEOSGeometry * const geoms[],
5939 unsigned int ngeoms);
5940
5959 const GEOSGeometry* input,
5960 GEOSGeometry** cuts,
5961 GEOSGeometry** dangles,
5962 GEOSGeometry** invalid);
5963
5975extern GEOSGeometry GEOS_DLL *GEOSBuildArea(const GEOSGeometry* g);
5976
5978
5979/* ============================================================== */
5984
6004extern GEOSGeometry GEOS_DLL *GEOSDensify(
6005 const GEOSGeometry* g,
6006 double tolerance);
6007
6025extern GEOSGeometry GEOS_DLL *GEOSLineMerge(const GEOSGeometry* g);
6026
6043extern size_t GEOS_DLL *GEOSMinimumSpanningTree(const GEOSGeometry * const geoms[], unsigned int ngeoms);
6044
6064
6081 const GEOSGeometry* g,
6082 double start_fraction,
6083 double end_fraction);
6084
6099extern GEOSGeometry GEOS_DLL *GEOSReverse(const GEOSGeometry* g);
6100
6117 const GEOSGeometry* g,
6118 double tolerance);
6119
6139 const GEOSGeometry* g,
6140 double tolerance);
6141
6159 const GEOSGeometry* g);
6160
6179extern int GEOS_DLL GEOSHilbertCode(
6180 const GEOSGeometry *geom,
6181 const GEOSGeometry* extent,
6182 unsigned int level,
6183 unsigned int *code
6184);
6185
6204 const GEOSGeometry* g,
6205 GEOSTransformXYCallback callback,
6206 void* userdata);
6207
6226 const GEOSGeometry* g,
6227 GEOSTransformXYZCallback callback,
6228 void* userdata);
6229
6251extern GEOSGeometry GEOS_DLL *GEOSSnap(
6252 const GEOSGeometry* input,
6253 const GEOSGeometry* snap_target,
6254 double tolerance);
6255
6289 const GEOSGeometry *g,
6290 double gridSize,
6291 int flags);
6292
6294
6295/* ============================================================== */
6296
6301
6313 const GEOSGeometry* g,
6314 const GEOSCurveToLineParams* params);
6315
6316extern GEOSCurveToLineParams GEOS_DLL *GEOSCurveToLineParams_create();
6317
6318extern void GEOS_DLL GEOSCurveToLineParams_destroy(GEOSCurveToLineParams* params);
6319
6329 GEOSCurveToLineParams* params,
6330 double tolerance);
6331
6341 GEOSCurveToLineParams* params,
6342 double tolerance);
6343
6355 const GEOSGeometry* g,
6356 const GEOSLineToCurveParams* params);
6357
6358extern GEOSLineToCurveParams GEOS_DLL *GEOSLineToCurveParams_create();
6359
6360extern void GEOS_DLL GEOSLineToCurveParams_destroy(GEOSLineToCurveParams* params);
6361
6374 GEOSLineToCurveParams* params,
6375 double tolerance);
6376
6390 GEOSLineToCurveParams* params,
6391 double tolerance);
6392
6408 GEOSLineToCurveParams* params,
6409 double tolerance);
6410
6412
6413/* ============================================================== */
6418
6427extern char GEOS_DLL GEOSDisjoint(const GEOSGeometry* g1, const GEOSGeometry* g2);
6428
6438extern char GEOS_DLL GEOSTouches(const GEOSGeometry* g1, const GEOSGeometry* g2);
6439
6448extern char GEOS_DLL GEOSIntersects(const GEOSGeometry* g1, const GEOSGeometry* g2);
6449
6459extern char GEOS_DLL GEOSCrosses(const GEOSGeometry* g1, const GEOSGeometry* g2);
6460
6470extern char GEOS_DLL GEOSWithin(const GEOSGeometry* g1, const GEOSGeometry* g2);
6471
6481extern char GEOS_DLL GEOSContains(const GEOSGeometry* g1, const GEOSGeometry* g2);
6482
6492extern char GEOS_DLL GEOSOverlaps(const GEOSGeometry* g1, const GEOSGeometry* g2);
6493
6502extern char GEOS_DLL GEOSEquals(const GEOSGeometry* g1, const GEOSGeometry* g2);
6503
6514extern char GEOS_DLL GEOSCovers(const GEOSGeometry* g1, const GEOSGeometry* g2);
6515
6526extern char GEOS_DLL GEOSCoveredBy(const GEOSGeometry* g1, const GEOSGeometry* g2);
6527
6548extern char GEOS_DLL GEOSEqualsExact(
6549 const GEOSGeometry* g1,
6550 const GEOSGeometry* g2,
6551 double tolerance);
6552
6567extern char GEOS_DLL GEOSEqualsIdentical(
6568 const GEOSGeometry* g1,
6569 const GEOSGeometry* g2);
6570
6586extern char GEOS_DLL GEOSRelatePattern(
6587 const GEOSGeometry* g1,
6588 const GEOSGeometry* g2,
6589 const char *imPattern);
6590
6601extern char GEOS_DLL *GEOSRelate(
6602 const GEOSGeometry* g1,
6603 const GEOSGeometry* g2);
6604
6614extern char GEOS_DLL GEOSRelatePatternMatch(
6615 const char *intMatrix,
6616 const char *imPattern);
6617
6631extern char GEOS_DLL *GEOSRelateBoundaryNodeRule(
6632 const GEOSGeometry* g1,
6633 const GEOSGeometry* g2,
6634 int bnr);
6635
6637
6638/* ========== Prepared Geometry Binary predicates ========== */
6639
6651
6665extern const GEOSPreparedGeometry GEOS_DLL *GEOSPrepare(const GEOSGeometry* g);
6666
6675extern void GEOS_DLL GEOSPreparedGeom_destroy(const GEOSPreparedGeometry* g);
6676
6687extern char GEOS_DLL GEOSPreparedContains(
6688 const GEOSPreparedGeometry* pg1,
6689 const GEOSGeometry* g2);
6690
6702extern char GEOS_DLL GEOSPreparedContainsXY(
6703 const GEOSPreparedGeometry* pg1,
6704 double x,
6705 double y);
6706
6717extern char GEOS_DLL GEOSPreparedContainsProperly(
6718 const GEOSPreparedGeometry* pg1,
6719 const GEOSGeometry* g2);
6720
6731extern char GEOS_DLL GEOSPreparedCoveredBy(
6732 const GEOSPreparedGeometry* pg1,
6733 const GEOSGeometry* g2);
6734
6745extern char GEOS_DLL GEOSPreparedCovers(
6746 const GEOSPreparedGeometry* pg1,
6747 const GEOSGeometry* g2);
6748
6759extern char GEOS_DLL GEOSPreparedCrosses(
6760 const GEOSPreparedGeometry* pg1,
6761 const GEOSGeometry* g2);
6762
6773extern char GEOS_DLL GEOSPreparedDisjoint(
6774 const GEOSPreparedGeometry* pg1,
6775 const GEOSGeometry* g2);
6776
6787extern char GEOS_DLL GEOSPreparedIntersects(
6788 const GEOSPreparedGeometry* pg1,
6789 const GEOSGeometry* g2);
6790
6802extern char GEOS_DLL GEOSPreparedIntersectsXY(
6803 const GEOSPreparedGeometry* pg1,
6804 double x,
6805 double y);
6806
6817extern char GEOS_DLL GEOSPreparedOverlaps(
6818 const GEOSPreparedGeometry* pg1,
6819 const GEOSGeometry* g2);
6820
6831extern char GEOS_DLL GEOSPreparedTouches(
6832 const GEOSPreparedGeometry* pg1,
6833 const GEOSGeometry* g2);
6834
6845extern char GEOS_DLL GEOSPreparedWithin(
6846 const GEOSPreparedGeometry* pg1,
6847 const GEOSGeometry* g2);
6848
6862extern char GEOS_DLL * GEOSPreparedRelate(
6863 const GEOSPreparedGeometry* pg1,
6864 const GEOSGeometry* g2);
6865
6882extern char GEOS_DLL GEOSPreparedRelatePattern(
6883 const GEOSPreparedGeometry* pg1,
6884 const GEOSGeometry* g2,
6885 const char* imPattern);
6886
6900 const GEOSPreparedGeometry* pg1,
6901 const GEOSGeometry* g2);
6902
6916extern int GEOS_DLL GEOSPreparedDistance(
6917 const GEOSPreparedGeometry* pg1,
6918 const GEOSGeometry* g2,
6919 double *dist);
6920
6935extern char GEOS_DLL GEOSPreparedDistanceWithin(
6936 const GEOSPreparedGeometry* pg1,
6937 const GEOSGeometry* g2,
6938 double dist);
6939
6941
6942/* ========== STRtree functions ========== */
6948
6961extern GEOSSTRtree GEOS_DLL *GEOSSTRtree_create(size_t nodeCapacity);
6962
6975extern int GEOS_DLL GEOSSTRtree_build(GEOSSTRtree *tree);
6976
6989extern void GEOS_DLL GEOSSTRtree_insert(
6990 GEOSSTRtree *tree,
6991 const GEOSGeometry *g,
6992 void *item);
6993
7008extern void GEOS_DLL GEOSSTRtree_query(
7009 GEOSSTRtree *tree,
7010 const GEOSGeometry *g,
7011 GEOSQueryCallback callback,
7012 void *userdata);
7013
7028extern const GEOSGeometry GEOS_DLL *GEOSSTRtree_nearest(
7029 GEOSSTRtree *tree,
7030 const GEOSGeometry* geom);
7031
7052extern const void GEOS_DLL *GEOSSTRtree_nearest_generic(
7053 GEOSSTRtree *tree,
7054 const void* item,
7055 const GEOSGeometry* itemEnvelope,
7056 GEOSDistanceCallback distancefn,
7057 void* userdata);
7058
7069extern void GEOS_DLL GEOSSTRtree_iterate(
7070 GEOSSTRtree *tree,
7071 GEOSQueryCallback callback,
7072 void *userdata);
7073
7088extern char GEOS_DLL GEOSSTRtree_remove(
7089 GEOSSTRtree *tree,
7090 const GEOSGeometry *g,
7091 void *item);
7092
7103extern void GEOS_DLL GEOSSTRtree_destroy(GEOSSTRtree *tree);
7104
7106
7107/* ========== Algorithms ====================================================== */
7112
7131extern int GEOS_DLL GEOSSegmentIntersection(
7132 double ax0, double ay0,
7133 double ax1, double ay1,
7134 double bx0, double by0,
7135 double bx1, double by1,
7136 double* cx, double* cy);
7137
7153extern int GEOS_DLL GEOSOrientationIndex(
7154 double Ax, double Ay,
7155 double Bx, double By,
7156 double Px, double Py);
7157
7159
7160/* ========= Reader and Writer APIs ========= */
7161
7166/* ========= WKT Reader ========= */
7167
7174
7180extern void GEOS_DLL GEOSWKTReader_destroy(GEOSWKTReader* reader);
7181
7191 GEOSWKTReader* reader,
7192 const char *wkt);
7193
7203 GEOSWKTReader *reader,
7204 char doFix);
7205
7206/* ========= WKT Writer ========= */
7207
7214
7220extern void GEOS_DLL GEOSWKTWriter_destroy(
7221 GEOSWKTWriter* writer);
7222
7232extern char GEOS_DLL *GEOSWKTWriter_write(
7233 GEOSWKTWriter* writer,
7234 const GEOSGeometry* g);
7235
7250extern void GEOS_DLL GEOSWKTWriter_setTrim(
7251 GEOSWKTWriter *writer,
7252 char trim);
7253
7263 GEOSWKTWriter *writer,
7264 int precision);
7265
7275 GEOSWKTWriter *writer,
7276 int dim);
7277
7286
7297extern void GEOS_DLL GEOSWKTWriter_setOld3D(
7298 GEOSWKTWriter *writer,
7299 int useOld3D);
7301
7302/* ============================================================================== */
7307
7308/* ========== WKB Reader ========== */
7315
7321extern void GEOS_DLL GEOSWKBReader_destroy(
7322 GEOSWKBReader* reader);
7323
7333 GEOSWKBReader *reader,
7334 char doFix);
7335
7345 GEOSWKBReader* reader,
7346 const unsigned char *wkb,
7347 size_t size);
7348
7358 GEOSWKBReader* reader,
7359 const unsigned char *hex,
7360 size_t size);
7361
7362/* ========== WKB Writer ========== */
7363
7370
7376extern void GEOS_DLL GEOSWKBWriter_destroy(GEOSWKBWriter* writer);
7377
7387extern unsigned char GEOS_DLL *GEOSWKBWriter_write(
7388 GEOSWKBWriter* writer,
7389 const GEOSGeometry* g,
7390 size_t *size);
7391
7401extern unsigned char GEOS_DLL *GEOSWKBWriter_writeHEX(
7402 GEOSWKBWriter* writer,
7403 const GEOSGeometry* g,
7404 size_t *size);
7405
7415 const GEOSWKBWriter* writer);
7416
7425 GEOSWKBWriter* writer,
7426 int newDimension);
7427
7437extern int GEOS_DLL GEOSWKBWriter_getByteOrder(
7438 const GEOSWKBWriter* writer);
7439
7447extern void GEOS_DLL GEOSWKBWriter_setByteOrder(
7448 GEOSWKBWriter* writer,
7449 int byteOrder);
7450
7465extern int GEOS_DLL GEOSWKBWriter_getFlavor(
7466 const GEOSWKBWriter* writer);
7467
7476extern void GEOS_DLL GEOSWKBWriter_setFlavor(
7477 GEOSWKBWriter* writer,
7478 int flavor);
7479
7485extern char GEOS_DLL GEOSWKBWriter_getIncludeSRID(
7486 const GEOSWKBWriter* writer);
7487
7495extern void GEOS_DLL GEOSWKBWriter_setIncludeSRID(
7496 GEOSWKBWriter* writer,
7497 const char writeSRID);
7498
7500
7501/* ============================================================================= */
7506/* ========= GeoJSON Reader ========= */
7507
7515
7522extern void GEOS_DLL GEOSGeoJSONReader_destroy(GEOSGeoJSONReader* reader);
7523
7535 GEOSGeoJSONReader* reader,
7536 const char *geojson);
7537
7538/* ========= GeoJSON Writer ========= */
7539
7547
7554extern void GEOS_DLL GEOSGeoJSONWriter_destroy(GEOSGeoJSONWriter* writer);
7555
7567 GEOSGeoJSONWriter* writer,
7568 const GEOSGeometry* g,
7569 int indent);
7570
7580 GEOSGeoJSONWriter *writer,
7581 int dim);
7582
7591
7593
7594#endif /* #ifndef GEOS_USE_ONLY_R_API */
7595
7596/* ====================================================================== */
7597/* DEPRECATIONS */
7598/* ====================================================================== */
7599
7605
7610 const GEOSGeometry* g,
7611 double width, int quadsegs,
7612 int joinStyle, double mitreLimit,
7613 int leftSide);
7614
7619 GEOSContextHandle_t handle,
7620 const GEOSGeometry* g,
7621 double width, int quadsegs,
7622 int joinStyle, double mitreLimit,
7623 int leftSide);
7624
7630 GEOSMessageHandler notice_function,
7631 GEOSMessageHandler error_function);
7632
7636extern void GEOS_DLL finishGEOS_r(GEOSContextHandle_t handle);
7637
7642 GEOSContextHandle_t handle,
7643 const char *wkt);
7644
7648extern char GEOS_DLL *GEOSGeomToWKT_r(
7649 GEOSContextHandle_t handle,
7650 const GEOSGeometry* g);
7651
7655extern int GEOS_DLL GEOS_getWKBOutputDims_r(
7656 GEOSContextHandle_t handle);
7657
7661extern int GEOS_DLL GEOS_setWKBOutputDims_r(
7662 GEOSContextHandle_t handle,
7663 int newDims);
7664
7668extern int GEOS_DLL GEOS_getWKBByteOrder_r(
7669 GEOSContextHandle_t handle);
7670
7674extern int GEOS_DLL GEOS_setWKBByteOrder_r(
7675 GEOSContextHandle_t handle,
7676 int byteOrder);
7677
7682 GEOSContextHandle_t handle,
7683 const unsigned char *wkb,
7684 size_t size);
7685
7689extern unsigned char GEOS_DLL *GEOSGeomToWKB_buf_r(
7690 GEOSContextHandle_t handle,
7691 const GEOSGeometry* g,
7692 size_t *size);
7693
7698 GEOSContextHandle_t handle,
7699 const unsigned char *hex,
7700 size_t size);
7701
7705extern unsigned char GEOS_DLL *GEOSGeomToHEX_buf_r(
7706 GEOSContextHandle_t handle,
7707 const GEOSGeometry* g,
7708 size_t *size);
7709
7713extern GEOSGeometry GEOS_DLL *GEOSGeomFromWKT(const char *wkt);
7714
7718extern char GEOS_DLL *GEOSGeomToWKT(const GEOSGeometry* g);
7719
7723extern int GEOS_DLL GEOS_getWKBOutputDims(void);
7724
7728extern int GEOS_DLL GEOS_setWKBOutputDims(int newDims);
7729
7733extern int GEOS_DLL GEOS_getWKBByteOrder(void);
7734
7738extern int GEOS_DLL GEOS_setWKBByteOrder(int byteOrder);
7739
7743extern GEOSGeometry GEOS_DLL *GEOSGeomFromWKB_buf(const unsigned char *wkb, size_t size);
7744
7748extern unsigned char GEOS_DLL *GEOSGeomToWKB_buf(const GEOSGeometry* g, size_t *size);
7749
7753extern GEOSGeometry GEOS_DLL *GEOSGeomFromHEX_buf(const unsigned char *hex, size_t size);
7754
7758extern unsigned char GEOS_DLL *GEOSGeomToHEX_buf(const GEOSGeometry* g, size_t *size);
7759
7764
7769 GEOSContextHandle_t handle,
7770 const GEOSGeometry* g);
7771
7773
7774/* ====================================================================== */
7775/* END DEPRECATIONS */
7776/* ====================================================================== */
7777
7778
7779#ifdef __cplusplus
7780} // extern "C"
7781#endif
7782
7783#endif /* #ifndef GEOS_C_H_INCLUDED */
int GEOS_setWKBOutputDims_r(GEOSContextHandle_t handle, int newDims)
GEOSGeometry * GEOSMaximumInscribedCircle_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double tolerance)
int GEOSBufferParams_setEndCapStyle_r(GEOSContextHandle_t handle, GEOSBufferParams *p, int style)
char GEOSisEmpty_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
char GEOSisSimple(const GEOSGeometry *g)
void GEOSWKBWriter_setByteOrder(GEOSWKBWriter *writer, int byteOrder)
GEOSGeometry * GEOSIntersectionPrec_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double gridSize)
const GEOSCoordSequence * GEOSGeom_getCoordSeq(const GEOSGeometry *g)
int GEOSCoordSeq_setZ_r(GEOSContextHandle_t handle, GEOSCoordSequence *s, unsigned int idx, double val)
void GEOSGeom_setUserData_r(GEOSContextHandle_t handle, GEOSGeometry *g, void *userData)
GEOSGeometry * GEOSGeom_createEmptyPoint(void)
GEOSGeometry * GEOSReverse_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
int GEOS_getWKBOutputDims_r(GEOSContextHandle_t handle)
GEOSGeometry * GEOSGeom_createEmptyCompoundCurve_r(GEOSContextHandle_t handle)
GEOSGeometry * GEOSSplit(const GEOSGeometry *g, const GEOSGeometry *edge)
int GEOSGeomGetM(const GEOSGeometry *g, double *m)
GEOSGeometry * GEOSPolygonHullSimplify(const GEOSGeometry *g, unsigned int isOuter, double vertexNumFraction)
char GEOSisRing_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
int GEOSSTRtree_build_r(GEOSContextHandle_t handle, GEOSSTRtree *tree)
GEOSGeometry * GEOSGetCentroid(const GEOSGeometry *g)
void GEOSBufferParams_destroy_r(GEOSContextHandle_t handle, GEOSBufferParams *parms)
GEOSGeometry * GEOSCoverageCleanWithParams(const GEOSGeometry *input, const GEOSCoverageCleanParams *params)
GEOSGeometry * GEOSMinimumRotatedRectangle_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
size_t * GEOSMinimumSpanningTree(const GEOSGeometry *const geoms[], unsigned int ngeoms)
GEOSCoordSequence * GEOSCoordSeq_create(unsigned int size, unsigned int dims)
int GEOSLineToCurveParams_setMaxAngleDifferenceDegrees_r(GEOSContextHandle_t extHandle, GEOSLineToCurveParams *params, double tolerance)
char GEOSPreparedDistanceWithin(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2, double dist)
const GEOSGeometry * GEOSGetCurveN_r(GEOSContextHandle_t handle, const GEOSGeometry *g, int n)
GEOSGeometry * GEOSWKBReader_read_r(GEOSContextHandle_t handle, GEOSWKBReader *reader, const unsigned char *wkb, size_t size)
GEOSClusterInfo * GEOSClusterEnvelopeIntersects(const GEOSGeometry *g)
GEOSClusterEnvelopeIntersects.
char * GEOSGeomToWKT_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSBufferWithParams_r(GEOSContextHandle_t handle, const GEOSGeometry *g, const GEOSBufferParams *p, double width)
int GEOSBufferParams_setQuadrantSegments_r(GEOSContextHandle_t handle, GEOSBufferParams *p, int quadSegs)
GEOSGeometry * GEOSConcaveHull_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double ratio, unsigned int allowHoles)
GEOSGeometry * GEOSSubdivideByGrid(const GEOSGeometry *g, double xmin, double ymin, double xmax, double ymax, unsigned nx, unsigned ny, int includeExterior)
void GEOSSTRtree_iterate(GEOSSTRtree *tree, GEOSQueryCallback callback, void *userdata)
const GEOSGeometry * GEOSGetExteriorRing_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSCoordSequence * GEOSPreparedNearestPoints(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
void(*) typedef void(* GEOSMessageHandler_r)(const char *message, void *userdata)
Definition geos_c.h:121
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:2291
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)
int GEOSLineToCurveParams_setMaxStepDegrees(GEOSLineToCurveParams *params, double tolerance)
void GEOSWKBReader_destroy(GEOSWKBReader *reader)
struct GEOSLineToCurveParams_t GEOSLineToCurveParams
Definition geos_c.h:221
char GEOSPreparedContainsProperly(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
void GEOSCoverageCleanParams_destroy(GEOSCoverageCleanParams *params)
void GEOSSTRtree_iterate_r(GEOSContextHandle_t handle, GEOSSTRtree *tree, GEOSQueryCallback callback, void *userdata)
GEOSGeometry * GEOSSplit_r(GEOSContextHandle_t handle, const GEOSGeometry *g, const GEOSGeometry *edge)
void GEOSContext_setLineToCurveParams_r(GEOSContextHandle_t extHandle, const GEOSLineToCurveParams *params)
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)
void() GEOSProgressCallback(double progressRatio, const char *message, void *userdata)
Definition geos_c.h:134
int GEOSGeom_getDimensions_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSClusterInfo * GEOSClusterEnvelopeDistance(const GEOSGeometry *g, double d)
GEOSClusterEnvelopeDistance.
int GEOSCoordSeq_getZ(const GEOSCoordSequence *s, unsigned int idx, double *val)
int GEOSHausdorffDistanceDensifyWithPoints_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double densifyFrac, double *dist, double *p1x, double *p1y, double *p2x, double *p2y)
const GEOSGeometry * GEOSSTRtree_nearest_r(GEOSContextHandle_t handle, GEOSSTRtree *tree, const GEOSGeometry *geom)
void GEOSWKTWriter_setOld3D_r(GEOSContextHandle_t handle, GEOSWKTWriter *writer, int useOld3D)
GEOSGeometry * GEOSGeom_createRectangle_r(GEOSContextHandle_t handle, double xmin, double ymin, double xmax, double ymax)
GEOSGeoJSONWriter * GEOSGeoJSONWriter_create(void)
int(* GEOSDistanceCallback)(const void *item1, const void *item2, double *distance, void *userdata)
Definition geos_c.h:337
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:2277
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:108
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)
int GEOSLineToCurveParams_setMaxAngleDifferenceDegrees(GEOSLineToCurveParams *params, double tolerance)
struct GEOSCoordSeq_t GEOSCoordSequence
Definition geos_c.h:173
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:243
@ GEOS_MULTILINESTRING
Definition geos_c.h:255
@ GEOS_GEOMETRYCOLLECTION
Definition geos_c.h:259
@ GEOS_POINT
Definition geos_c.h:245
@ GEOS_MULTIPOLYGON
Definition geos_c.h:257
@ GEOS_LINEARRING
Definition geos_c.h:249
@ GEOS_POLYGON
Definition geos_c.h:251
@ GEOS_MULTIPOINT
Definition geos_c.h:253
@ GEOS_LINESTRING
Definition geos_c.h:247
GEOSGeometry * GEOSIntersectionPrec(const GEOSGeometry *g1, const GEOSGeometry *g2, double gridSize)
int GEOSGetNumInteriorRings(const GEOSGeometry *g)
void GEOSContext_setCurveToLineParams_r(GEOSContextHandle_t extHandle, const GEOSCurveToLineParams *params)
char GEOSSTRtree_remove_r(GEOSContextHandle_t handle, GEOSSTRtree *tree, const GEOSGeometry *g, void *item)
void GEOSSTRtree_query_r(GEOSContextHandle_t handle, GEOSSTRtree *tree, const GEOSGeometry *g, GEOSQueryCallback callback, void *userdata)
GEOSGeometry * GEOSGeom_setPrecision_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double gridSize, int flags)
char GEOSEqualsExact(const GEOSGeometry *g1, const GEOSGeometry *g2, double tolerance)
GEOSGeometry * GEOSDisjointSubsetUnion_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSGeom_createEmptyCircularString(void)
int GEOSCurveToLineParams_setMaxStepDegrees(GEOSCurveToLineParams *params, double tolerance)
GEOSMessageHandler_r GEOSContext_setNoticeMessageHandler_r(GEOSContextHandle_t extHandle, GEOSMessageHandler_r nf, void *userData)
int GEOSCoordSeq_getOrdinate(const GEOSCoordSequence *s, unsigned int idx, unsigned int dim, double *val)
void GEOSWKBReader_destroy_r(GEOSContextHandle_t handle, GEOSWKBReader *reader)
GEOSGeometry * GEOSCoverageEdges(const GEOSGeometry *input, int edgetype)
GEOSGeometry * GEOSBoundary(const GEOSGeometry *g)
GEOSGeometry * GEOSUnaryUnion_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
int GEOSDistanceIndexed_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double *dist)
char GEOSCoordSeq_hasM(GEOSCoordSequence *s)
void GEOSWKTReader_destroy(GEOSWKTReader *reader)
GEOSGeometry * GEOSMinimumWidth(const GEOSGeometry *g)
char * GEOSWKTWriter_write(GEOSWKTWriter *writer, const GEOSGeometry *g)
GEOSGeometry * GEOSTopologyPreserveSimplify(const GEOSGeometry *g, double tolerance)
void(* GEOSQueryCallback)(void *item, void *userdata)
Definition geos_c.h:318
int GEOSCoordSeq_getSize_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s, unsigned int *size)
GEOSGeometry * GEOSGeomFromWKT(const char *wkt)
GEOSGeometry * GEOSWKBReader_read(GEOSWKBReader *reader, const unsigned char *wkb, size_t size)
GEOSGeometry * GEOSCoverageSimplifyVW(const GEOSGeometry *input, double tolerance, int preserveBoundary)
char GEOSContains_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
double GEOSProject_r(GEOSContextHandle_t handle, const GEOSGeometry *line, const GEOSGeometry *point)
void GEOSGeom_destroy_r(GEOSContextHandle_t handle, GEOSGeometry *g)
int GEOSHausdorffDistanceDensifyWithPoints(const GEOSGeometry *g1, const GEOSGeometry *g2, double densifyFrac, double *dist, double *p1x, double *p1y, double *p2x, double *p2y)
GEOSGeometry * GEOSTopologyPreserveSimplify_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double tolerance)
GEOSGeometry * GEOSSingleSidedBuffer_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double width, int quadsegs, int joinStyle, double mitreLimit, int leftSide)
GEOSContextHandle_t GEOS_init_r(void)
struct GEOSGeom_t GEOSGeometry
Definition geos_c.h:158
char GEOSPreparedContainsXY_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, double x, double y)
GEOSGeometry * GEOSGeom_createRectangle(double xmin, double ymin, double xmax, double ymax)
GEOSGeometry * GEOSGeom_setPrecision(const GEOSGeometry *g, double gridSize, int flags)
const void * GEOSSTRtree_nearest_generic_r(GEOSContextHandle_t handle, GEOSSTRtree *tree, const void *item, const GEOSGeometry *itemEnvelope, GEOSDistanceCallback distancefn, void *userdata)
int GEOSCoordSeq_getM_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s, unsigned int idx, double *val)
int GEOSGeomTypeId(const GEOSGeometry *g)
int GEOSSTRtree_build(GEOSSTRtree *tree)
GEOSGeometry * GEOSPolygonize_full_r(GEOSContextHandle_t handle, const GEOSGeometry *input, GEOSGeometry **cuts, GEOSGeometry **dangles, GEOSGeometry **invalidRings)
char GEOSCoveredBy_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
int GEOSGetNumCoordinates_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
void GEOSWKTWriter_destroy(GEOSWKTWriter *writer)
int GEOSCoordSeq_getDimensions_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s, unsigned int *dims)
GEOSGeometry * GEOSGeom_createEmptyCollection_r(GEOSContextHandle_t handle, int type)
GEOSGeometry * GEOSGeom_createEmptyCircularString_r(GEOSContextHandle_t handle)
void GEOSWKBWriter_setOutputDimension(GEOSWKBWriter *writer, int newDimension)
GEOSGeometry * GEOSEnvelope(const GEOSGeometry *g)
GEOSGeometry * GEOSGeom_createPoint_r(GEOSContextHandle_t handle, GEOSCoordSequence *s)
GEOSGeometry * GEOSGeom_createEmptyCurvePolygon(void)
GEOSWKBFlavors
Definition geos_c.h:289
@ GEOS_WKB_ISO
Definition geos_c.h:293
@ GEOS_WKB_EXTENDED
Definition geos_c.h:291
GEOSGeometry * GEOSDensify(const GEOSGeometry *g, double tolerance)
GEOSProgressCallback * GEOSContext_setProgressCallback_r(GEOSContextHandle_t extHandle, GEOSProgressCallback *cb, void *userData)
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)
struct GEOSCurveToLineParams_t GEOSCurveToLineParams
Definition geos_c.h:214
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:300
@ GEOS_MERGE_MIN_AREA
Definition geos_c.h:306
@ GEOS_MERGE_MIN_INDEX
Definition geos_c.h:308
@ GEOS_MERGE_LONGEST_BORDER
Definition geos_c.h:302
@ GEOS_MERGE_MAX_AREA
Definition geos_c.h:304
char GEOSisSimpleDetail(const GEOSGeometry *g, int findAllLocations, GEOSGeometry **locations)
char GEOSPreparedDistanceWithin_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2, double dist)
void GEOSSTRtree_query(GEOSSTRtree *tree, const GEOSGeometry *g, GEOSQueryCallback callback, void *userdata)
GEOSGeometry * GEOSOffsetCurve(const GEOSGeometry *g, double width, int quadsegs, int joinStyle, double mitreLimit)
GEOSGeometry * GEOSCoverageUnion_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
void GEOS_interruptCancel(void)
void GEOSMakeValidParams_destroy(GEOSMakeValidParams *parms)
int GEOSGeomGetY(const GEOSGeometry *g, double *y)
GEOSGeometry * GEOSLineMergeDirected_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
size_t * GEOSClusterInfo_getClustersForInputs_r(GEOSContextHandle_t, const GEOSClusterInfo *clusters)
int GEOSFrechetDistance(const GEOSGeometry *g1, const GEOSGeometry *g2, double *dist)
GEOSCoverageCleanParams * GEOSCoverageCleanParams_create(void)
void GEOSWKTReader_setFixStructure_r(GEOSContextHandle_t handle, GEOSWKTReader *reader, char doFix)
GEOSWKTWriter * GEOSWKTWriter_create_r(GEOSContextHandle_t handle)
GEOSGeometry * GEOSGeomGetPointN_r(GEOSContextHandle_t handle, const GEOSGeometry *g, int n)
void GEOSClusterInfo_destroy_r(GEOSContextHandle_t, GEOSClusterInfo *info)
GEOSGeometry * GEOSDifference(const GEOSGeometry *ga, const GEOSGeometry *gb)
GEOSGeometry * GEOSCoverageEdges_r(GEOSContextHandle_t handle, const GEOSGeometry *input, int edgetype)
GEOSGeometry * GEOSGeom_createLineString_r(GEOSContextHandle_t handle, GEOSCoordSequence *s)
GEOSGeometry * GEOSPolygonizer_getCutEdges_r(GEOSContextHandle_t handle, const GEOSGeometry *const geoms[], unsigned int ngeoms)
int GEOSMinimumClearance(const GEOSGeometry *g, double *d)
size_t GEOSClusterInfo_getNumClusters_r(GEOSContextHandle_t, const GEOSClusterInfo *clusters)
GEOSGeometry * GEOSDelaunayTriangulation(const GEOSGeometry *g, double tolerance, int onlyEdges)
GEOSGeometry * GEOSGeom_createCurvePolygon_r(GEOSContextHandle_t handle, GEOSGeometry *shell, GEOSGeometry **holes, unsigned int nholes)
char GEOSSTRtree_remove(GEOSSTRtree *tree, const GEOSGeometry *g, void *item)
GEOSGeometry * GEOSBufferWithParams(const GEOSGeometry *g, const GEOSBufferParams *p, double width)
GEOSMessageHandler GEOSContext_setNoticeHandler_r(GEOSContextHandle_t extHandle, GEOSMessageHandler nf)
int GEOSCoordSeq_getXYZ(const GEOSCoordSequence *s, unsigned int idx, double *x, double *y, double *z)
char GEOSisValidDetail_r(GEOSContextHandle_t handle, const GEOSGeometry *g, int flags, char **reason, GEOSGeometry **location)
GEOSMakeValidParams * GEOSMakeValidParams_create(void)
GEOSGeometry * GEOSGeom_createEmptyLineString_r(GEOSContextHandle_t handle)
char * GEOSGeomType_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSMinimumClearanceLine(const GEOSGeometry *g)
void GEOSGeoJSONWriter_setOutputDimension(GEOSGeoJSONWriter *writer, int dim)
char * GEOSRelateBoundaryNodeRule_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, int bnr)
int GEOSHausdorffDistanceWithPoints_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double *dist, double *p1x, double *p1y, double *p2x, double *p2y)
char GEOSDisjoint(const GEOSGeometry *g1, const GEOSGeometry *g2)
int GEOSCoordSeq_setX(GEOSCoordSequence *s, unsigned int idx, double val)
int GEOSCoverageIsValid(const GEOSGeometry *input, double gapWidth, GEOSGeometry **invalidEdges)
int GEOSPreparedDistance(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2, double *dist)
GEOSGeometry * GEOSUnion_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
GEOSMakeValidParams * GEOSMakeValidParams_create_r(GEOSContextHandle_t extHandle)
GEOSGeometry * GEOSCoverageCleanWithParams_r(GEOSContextHandle_t extHandle, const GEOSGeometry *input, const GEOSCoverageCleanParams *params)
char GEOSPreparedContains(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
GEOSGeometry * GEOSPolygonHullSimplifyMode_r(GEOSContextHandle_t handle, const GEOSGeometry *g, unsigned int isOuter, unsigned int parameterMode, double parameter)
int GEOSCoordSeq_getXYZ_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s, unsigned int idx, double *x, double *y, double *z)
GEOSGeometry * GEOSGeomGetEndPoint_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
void GEOSWKBWriter_setFlavor(GEOSWKBWriter *writer, int flavor)
GEOSContextHandle_t initGEOS_r(GEOSMessageHandler notice_function, GEOSMessageHandler error_function)
GEOSCoordSequence * GEOSCoordSeq_createWithDimensions_r(GEOSContextHandle_t handle, unsigned int size, int hasZ, int hasM)
GEOSBufCapStyles
Definition geos_c.h:786
@ GEOSBUF_CAP_SQUARE
Definition geos_c.h:795
@ GEOSBUF_CAP_FLAT
Definition geos_c.h:792
@ GEOSBUF_CAP_ROUND
Definition geos_c.h:789
GEOSGeometry * GEOSConvexHull(const GEOSGeometry *g)
GEOSVoronoiFlags
Definition geos_c.h:1389
@ GEOS_VORONOI_PRESERVE_ORDER
Definition geos_c.h:1395
@ GEOS_VORONOI_ONLY_EDGES
Definition geos_c.h:1391
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)
int GEOSCurveToLineParams_setMaxStepDegrees_r(GEOSContextHandle_t extHandle, GEOSCurveToLineParams *params, double tolerance)
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:1750
@ GEOSVALID_ALLOW_SELFTOUCHING_RING_FORMING_HOLE
Definition geos_c.h:1752
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:2284
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:2270
char GEOSPreparedWithin_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
int GEOSSegmentIntersection(double ax0, double ay0, double ax1, double ay1, double bx0, double by0, double bx1, double by1, double *cx, double *cy)
int GEOSCoordSeq_setY(GEOSCoordSequence *s, unsigned int idx, double val)
void GEOSMakeValidParams_destroy_r(GEOSContextHandle_t handle, GEOSMakeValidParams *parms)
size_t * GEOSMinimumSpanningTree_r(GEOSContextHandle_t handle, const GEOSGeometry *const geoms[], unsigned int ngeoms)
char GEOSPreparedCovers(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
GEOSMessageHandler_r GEOSContext_setErrorMessageHandler_r(GEOSContextHandle_t extHandle, GEOSMessageHandler_r ef, void *userData)
GEOSGeometry ** GEOSGeom_releaseCollection_r(GEOSContextHandle_t handle, GEOSGeometry *collection, unsigned int *ngeoms)
GEOSGeometry * GEOSGeoJSONReader_readGeometry(GEOSGeoJSONReader *reader, const char *geojson)
GEOSGeometry * GEOSEnvelope_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
char GEOSEqualsIdentical(const GEOSGeometry *g1, const GEOSGeometry *g2)
GEOSGeometry * GEOSGeomFromHEX_buf(const unsigned char *hex, size_t size)
unsigned char * GEOSWKBWriter_writeHEX(GEOSWKBWriter *writer, const GEOSGeometry *g, size_t *size)
GEOSGeometry * GEOSInterpolate_r(GEOSContextHandle_t handle, const GEOSGeometry *line, double d)
GEOSGeometry * GEOSSharedPaths_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
int GEOSGeom_getExtent_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *xmin, double *ymin, double *xmax, double *ymax)
GEOSGeometry * GEOSWKTReader_read_r(GEOSContextHandle_t handle, GEOSWKTReader *reader, const char *wkt)
char GEOSPreparedRelatePattern(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2, const char *imPattern)
int GEOS_setWKBByteOrder(int byteOrder)
int GEOSCoverageIsValid_r(GEOSContextHandle_t extHandle, const GEOSGeometry *input, double gapWidth, GEOSGeometry **output)
int GEOSCoverageCleanParams_setGapMaximumWidth_r(GEOSContextHandle_t extHandle, GEOSCoverageCleanParams *params, double gapMaximumWidth)
void GEOSWKBReader_setFixStructure(GEOSWKBReader *reader, char doFix)
GEOSGeometry * GEOSInterpolate(const GEOSGeometry *line, double d)
char GEOSPreparedContains_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
GEOSGeometry * GEOSInterpolateNormalized_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double d)
int GEOSCoordSeq_getY_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s, unsigned int idx, double *val)
GEOSGeometry * GEOSGeomGetEndPoint(const GEOSGeometry *g)
GEOSGeometry * GEOSSnap_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double tolerance)
GEOSGeometry * GEOSPolygonize_full(const GEOSGeometry *input, GEOSGeometry **cuts, GEOSGeometry **dangles, GEOSGeometry **invalid)
char * GEOSRelateBoundaryNodeRule(const GEOSGeometry *g1, const GEOSGeometry *g2, int bnr)
double GEOSGeom_getPrecision(const GEOSGeometry *g)
GEOSGeometry * GEOSLargestEmptyCircle(const GEOSGeometry *obstacles, const GEOSGeometry *boundary, double tolerance)
char GEOSIntersects(const GEOSGeometry *g1, const GEOSGeometry *g2)
int GEOSCoordSeq_getDimensions(const GEOSCoordSequence *s, unsigned int *dims)
char GEOSPreparedCoveredBy(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
char GEOSCovers(const GEOSGeometry *g1, const GEOSGeometry *g2)
GEOSInterruptCallback * GEOS_interruptRegisterCallback(GEOSInterruptCallback *cb)
int GEOSGeom_getXMin_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *value)
int GEOSCoordSeq_getOrdinate_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s, unsigned int idx, unsigned int dim, double *val)
int GEOSCoordSeq_getXY(const GEOSCoordSequence *s, unsigned int idx, double *x, double *y)
GEOSGeometry * GEOSSimplify_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double tolerance)
GEOSGeometry * GEOSIntersection_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
int GEOSOrientPolygons(GEOSGeometry *g, int exteriorCW)
char GEOSOverlaps(const GEOSGeometry *g1, const GEOSGeometry *g2)
char GEOSHasM_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
void GEOSWKTWriter_setTrim_r(GEOSContextHandle_t handle, GEOSWKTWriter *writer, char trim)
GEOSGeometry * GEOSLineMergeDirected(const GEOSGeometry *g)
GEOSGeometry * GEOSMakeValidWithParams(const GEOSGeometry *g, const GEOSMakeValidParams *makeValidParams)
GEOSGeometry * GEOSGeomFromWKB_buf_r(GEOSContextHandle_t handle, const unsigned char *wkb, size_t size)
GEOSGeometry * GEOSPointOnSurface(const GEOSGeometry *g)
GEOSGeometry * GEOSUnaryUnionPrec(const GEOSGeometry *g, double gridSize)
void GEOSWKTWriter_setTrim(GEOSWKTWriter *writer, char trim)
GEOSGeometry * GEOSBuffer_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double width, int quadsegs)
GEOSGeometry * GEOSMinimumWidth_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSWKBReader_readHEX_r(GEOSContextHandle_t handle, GEOSWKBReader *reader, const unsigned char *hex, size_t size)
GEOSWKBByteOrders
Definition geos_c.h:273
@ GEOS_WKB_NDR
Definition geos_c.h:277
@ GEOS_WKB_XDR
Definition geos_c.h:275
int GEOSGetNumCurves_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
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:2263
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)
const GEOSGeometry * GEOSGetCurveN(const GEOSGeometry *g, int n)
GEOSRelateBoundaryNodeRules
Definition geos_c.h:1707
@ GEOSRELATE_BNR_OGC
Definition geos_c.h:1711
@ GEOSRELATE_BNR_MULTIVALENT_ENDPOINT
Definition geos_c.h:1715
@ GEOSRELATE_BNR_ENDPOINT
Definition geos_c.h:1713
@ GEOSRELATE_BNR_MOD2
Definition geos_c.h:1709
@ GEOSRELATE_BNR_MONOVALENT_ENDPOINT
Definition geos_c.h:1717
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:401
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 * GEOSCurveToLine(const GEOSGeometry *g, const GEOSCurveToLineParams *params)
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:1117
@ GEOSHULL_PARAM_AREA_RATIO
Definition geos_c.h:1121
@ GEOSHULL_PARAM_VERTEX_RATIO
Definition geos_c.h:1119
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:98
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:802
@ GEOSBUF_JOIN_MITRE
Definition geos_c.h:812
@ GEOSBUF_JOIN_ROUND
Definition geos_c.h:807
@ GEOSBUF_JOIN_BEVEL
Definition geos_c.h:817
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)
int GEOSGetNumCurves(const GEOSGeometry *g)
GEOSWKBReader * GEOSWKBReader_create_r(GEOSContextHandle_t handle)
char GEOSisSimpleDetail_r(GEOSContextHandle_t handle, const GEOSGeometry *g, int findAllLocations, GEOSGeometry **location)
char GEOSDisjoint_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
char GEOSPreparedContainsProperly_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
GEOSCoordSequence * GEOSPreparedNearestPoints_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
GEOSGeometry * GEOSGeomFromHEX_buf_r(GEOSContextHandle_t handle, const unsigned char *hex, size_t size)
GEOSClusterInfo * GEOSClusterGeometryDistance_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double d)
GEOSCoordSequence * GEOSCoordSeq_clone(const GEOSCoordSequence *s)
int GEOSGeom_getCoordinateDimension_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSSubdivideByGrid_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double xmin, double ymin, double xmax, double ymax, unsigned nx, unsigned ny, int includeExterior)
int GEOSNormalize(GEOSGeometry *g)
unsigned char * GEOSGeomToWKB_buf(const GEOSGeometry *g, size_t *size)
int GEOSGetNumGeometries_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
char GEOSEqualsExact_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double tolerance)
GEOSGeometry * GEOSMinimumBoundingCircle_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *radius, GEOSGeometry **center)
int GEOSWKTWriter_getOutputDimension(GEOSWKTWriter *writer)
char GEOSTouches_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
GEOSGeometry * GEOSWKTReader_read(GEOSWKTReader *reader, const char *wkt)
GEOSGeometry * GEOSUnaryUnionPrec_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double gridSize)
int GEOSCoordSeq_getM(const GEOSCoordSequence *s, unsigned int idx, double *val)
int GEOSArea_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *area)
double GEOSGeom_getPrecision_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
void GEOSWKTWriter_setOutputDimension(GEOSWKTWriter *writer, int dim)
GEOSCoordSequence * GEOSCoordSeq_copyFromArrays(const double *x, const double *y, const double *z, const double *m, unsigned int size)
GEOSWKBReader * GEOSWKBReader_create(void)
int GEOSCoordSeq_getY(const GEOSCoordSequence *s, unsigned int idx, double *val)
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:356
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 * GEOSLineToCurve_r(GEOSContextHandle_t handle, const GEOSGeometry *g, const GEOSLineToCurveParams *params)
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:207
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:2298
unsigned char * GEOSGeomToWKB_buf_r(GEOSContextHandle_t handle, const GEOSGeometry *g, size_t *size)
GEOSGeometry * GEOSSingleSidedBuffer(const GEOSGeometry *g, double width, int quadsegs, int joinStyle, double mitreLimit, int leftSide)
GEOSGeometry * GEOSUnionCascaded(const GEOSGeometry *g)
char GEOSPreparedTouches_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
GEOSMessageHandler GEOSContext_setErrorHandler_r(GEOSContextHandle_t extHandle, GEOSMessageHandler ef)
int GEOSCoordSeq_setXYZ(GEOSCoordSequence *s, unsigned int idx, double x, double y, double z)
size_t * GEOSClusterInfo_getClustersForInputs(const GEOSClusterInfo *clusters)
GEOSClusterInfo_getClustersForInputs.
GEOSGeometry * GEOSCoverageClean_r(GEOSContextHandle_t extHandle, const GEOSGeometry *input)
int GEOSWKTWriter_getOutputDimension_r(GEOSContextHandle_t handle, GEOSWKTWriter *writer)
double GEOSProjectNormalized(const GEOSGeometry *line, const GEOSGeometry *point)
int GEOSGeom_getYMin_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *value)
GEOSGeometry * GEOSGeom_clone_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
const GEOSPreparedGeometry * GEOSPrepare_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSMinimumClearanceLine_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
void GEOSGeom_setUserData(GEOSGeometry *g, void *userData)
GEOSGeometry * GEOSGeom_createCollection(int type, GEOSGeometry **geoms, unsigned int ngeoms)
void GEOSGeoJSONReader_destroy(GEOSGeoJSONReader *reader)
GEOSGeometry * GEOSGeom_createEmptyCompoundCurve(void)
GEOSGeometry * GEOSCurveToLine_r(GEOSContextHandle_t handle, const GEOSGeometry *g, const GEOSCurveToLineParams *params)
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)
GEOSGeometry * GEOSLineToCurve(const GEOSGeometry *g, const GEOSLineToCurveParams *params)
char GEOSPreparedIntersects(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
char GEOSWithin_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
GEOSClusterInfo * GEOSClusterDBSCAN(const GEOSGeometry *g, double eps, unsigned minPoints)
GEOSClusterDBSCAN.
GEOSGeometry * GEOSConcaveHullOfPolygons_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double lengthRatio, unsigned int isTight, unsigned int isHolesAllowed)
int GEOS_setWKBOutputDims(int newDims)
const GEOSCoordSequence * GEOSGeom_getCoordSeq_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSPointOnSurface_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
int GEOSFrechetDistanceDensify(const GEOSGeometry *g1, const GEOSGeometry *g2, double densifyFrac, double *dist)
struct GEOSBufParams_t GEOSBufferParams
Definition geos_c.h:187
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:1906
@ GEOS_PREC_NO_TOPO
Definition geos_c.h:1910
@ GEOS_PREC_KEEP_COLLAPSED
Definition geos_c.h:1912
@ GEOS_PREC_VALID_OUTPUT
Definition geos_c.h:1908
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:201
char GEOSRelatePatternMatch(const char *intMatrix, const char *imPattern)
void GEOS_finish_r(GEOSContextHandle_t handle)
GEOSMakeValidMethods
Definition geos_c.h:1787
@ GEOS_MAKE_VALID_LINEWORK
Definition geos_c.h:1791
@ GEOS_MAKE_VALID_STRUCTURE
Definition geos_c.h:1796
GEOSGeometry * GEOSWKBReader_readHEX(GEOSWKBReader *reader, const unsigned char *hex, size_t size)
int GEOSGeom_getYMax_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *value)
GEOSGeometry * GEOSGeom_createEmptyLineString(void)
const GEOSGeometry * GEOSGetInteriorRingN_r(GEOSContextHandle_t handle, const GEOSGeometry *g, int n)
GEOSGeometry * GEOSInterpolateNormalized(const GEOSGeometry *line, double proportion)
GEOSGeometry * GEOSGeom_clone(const GEOSGeometry *g)
void GEOSGeoJSONWriter_destroy_r(GEOSContextHandle_t handle, GEOSGeoJSONWriter *writer)
int GEOSBufferParams_setSingleSided(GEOSBufferParams *p, int singleSided)
const GEOSGeometry * GEOSGetInteriorRingN(const GEOSGeometry *g, int n)
int GEOSGeomGetZ_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *z)
GEOSGeometry * GEOSUnionPrec_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double gridSize)
GEOSGeometry * GEOSGeom_createPointFromXY_r(GEOSContextHandle_t handle, double x, double y)
char GEOSEqualsIdentical_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
GEOSClusterInfo * GEOSClusterGeometryDistance(const GEOSGeometry *g, double d)
GEOSClusterGeometryDistance.
GEOSClusterInfo * GEOSClusterEnvelopeIntersects_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
void GEOSWKTWriter_destroy_r(GEOSContextHandle_t handle, GEOSWKTWriter *writer)
const GEOSPreparedGeometry * GEOSPrepare(const GEOSGeometry *g)
int GEOSWKBWriter_getByteOrder(const GEOSWKBWriter *writer)
char GEOSPreparedOverlaps(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
char GEOSHasZ_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
int GEOSCurveToLineParams_setMaxDeviation(GEOSCurveToLineParams *params, double tolerance)
int GEOSLineToCurveParams_setMaxStepDegrees_r(GEOSContextHandle_t extHandle, GEOSLineToCurveParams *params, double tolerance)
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)
int GEOSLineToCurveParams_setRadiusTolerance_r(GEOSContextHandle_t extHandle, GEOSLineToCurveParams *params, double tolerance)
void GEOSSTRtree_insert(GEOSSTRtree *tree, const GEOSGeometry *g, void *item)
char GEOSisSimple_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSWKBWriter * GEOSWKBWriter_create_r(GEOSContextHandle_t handle)
char GEOSDistanceWithin(const GEOSGeometry *g1, const GEOSGeometry *g2, double dist)
int GEOSCoordSeq_setXYZ_r(GEOSContextHandle_t handle, GEOSCoordSequence *s, unsigned int idx, double x, double y, double z)
int GEOSHausdorffDistanceWithPoints(const GEOSGeometry *g1, const GEOSGeometry *g2, double *dist, double *p1x, double *p1y, double *p2x, double *p2y)
int GEOSGeomGetX_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *x)
unsigned char * GEOSGeomToHEX_buf_r(GEOSContextHandle_t handle, const GEOSGeometry *g, size_t *size)
char GEOSPreparedWithin(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
char GEOSHasZ(const GEOSGeometry *g)
int GEOSLineToCurveParams_setRadiusTolerance(GEOSLineToCurveParams *params, double tolerance)
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)
int GEOSCoverageCleanParams_setOverlapMergeStrategy(GEOSCoverageCleanParams *params, int overlapMergeStrategy)
const GEOSGeometry * GEOSGetGeometryN_r(GEOSContextHandle_t handle, const GEOSGeometry *g, int n)
int GEOSCoordSeq_getX_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s, unsigned int idx, double *val)
int GEOSPreparedDistance_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2, double *dist)
GEOSWKTWriter * GEOSWKTWriter_create(void)
char * GEOSPreparedRelate_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
int GEOSSegmentIntersection_r(GEOSContextHandle_t extHandle, double ax0, double ay0, double ax1, double ay1, double bx0, double by0, double bx1, double by1, double *cx, double *cy)
char GEOSisValid(const GEOSGeometry *g)
char GEOSCoveredBy(const GEOSGeometry *g1, const GEOSGeometry *g2)
int GEOSGeom_getDimensions(const GEOSGeometry *g)
char GEOSPreparedDisjoint_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
int GEOSHausdorffDistance_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double *dist)
GEOSGeometry * GEOSGeom_createCircularString(GEOSCoordSequence *s)
void GEOSWKBWriter_setIncludeSRID(GEOSWKBWriter *writer, const char writeSRID)
GEOSGeometry * GEOSBuildArea_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
char GEOSisEmpty(const GEOSGeometry *g)
const GEOSGeometry * GEOSGetGeometryN(const GEOSGeometry *g, int n)
int GEOSMinimumClearance_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *distance)
int GEOSHilbertCode(const GEOSGeometry *geom, const GEOSGeometry *extent, unsigned int level, unsigned int *code)
GEOSGeometry * GEOSConcaveHullByLength(const GEOSGeometry *g, double length, unsigned int allowHoles)
GEOSContextInterruptCallback * GEOSContext_setInterruptCallback_r(GEOSContextHandle_t extHandle, GEOSContextInterruptCallback *cb, void *userData)
GEOSGeometry * GEOSGeom_createCollection_r(GEOSContextHandle_t handle, int type, GEOSGeometry **geoms, unsigned int ngeoms)
GEOSGeometry * GEOSMaximumInscribedCircle(const GEOSGeometry *g, double tolerance)
GEOSGeoJSONReader * GEOSGeoJSONReader_create_r(GEOSContextHandle_t handle)
void() GEOSInterruptCallback(void)
Definition geos_c.h:391
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:180
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 GEOSCurveToLineParams_setMaxDeviation_r(GEOSContextHandle_t extHandle, GEOSCurveToLineParams *params, double tolerance)
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:194
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)
const char * GEOSrevision(void)
double GEOSProject(const GEOSGeometry *line, const GEOSGeometry *point)
int(* GEOSTransformXYZCallback)(double *x, double *y, double *z, void *userdata)
Definition geos_c.h:375
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:165