GEOS 3.15.0dev
geos_c.h
Go to the documentation of this file.
1/************************************************************************
2 *
3 * C-Wrapper for GEOS library
4 *
5 * Copyright (C) 2010 2011 Sandro Santilli <strk@kbt.io>
6 * Copyright (C) 2005 Refractions Research Inc.
7 *
8 * This is free software; you can redistribute and/or modify it under
9 * the terms of the GNU Lesser General Public Licence as published
10 * by the Free Software Foundation.
11 * See the COPYING file for more information.
12 ***********************************************************************/
13
40#ifndef GEOS_C_H_INCLUDED
41#define GEOS_C_H_INCLUDED
42
43#ifndef __cplusplus
44# include <stddef.h> /* for size_t definition */
45#else
46# include <cstddef>
47using std::size_t;
48#endif
49
50#ifdef __cplusplus
51extern "C" {
52#endif
53
54/* ====================================================================== */
55/* Version */
56/* ====================================================================== */
57
60#ifndef GEOS_VERSION_MAJOR
61#define GEOS_VERSION_MAJOR 3
62#endif
63#ifndef GEOS_VERSION_MINOR
64#define GEOS_VERSION_MINOR 15
65#endif
66#ifndef GEOS_VERSION_PATCH
67#define GEOS_VERSION_PATCH 0dev
68#endif
69#ifndef GEOS_VERSION
70#define GEOS_VERSION "3.15.0dev"
71#endif
72#ifndef GEOS_JTS_PORT
73#define GEOS_JTS_PORT "1.18.0"
74#endif
75
76#define GEOS_CAPI_VERSION_MAJOR 1
77#define GEOS_CAPI_VERSION_MINOR 21
78#define GEOS_CAPI_VERSION_PATCH 0
79#define GEOS_CAPI_VERSION "3.15.0dev-CAPI-1.21.0"
80
81#define GEOS_CAPI_FIRST_INTERFACE GEOS_CAPI_VERSION_MAJOR
82#define GEOS_CAPI_LAST_INTERFACE (GEOS_CAPI_VERSION_MAJOR+GEOS_CAPI_VERSION_MINOR)
83
86#include <geos/export.h>
87
88
95typedef struct GEOSContextHandle_HS *GEOSContextHandle_t;
96
105typedef void (*GEOSMessageHandler)(GEOS_PRINTF_FORMAT const char *fmt, ...)
106 GEOS_PRINTF_FORMAT_ATTR(1, 2);
107
118typedef void (*GEOSMessageHandler_r)(const char *message, void *userdata);
119
120/*
121* When we're included by geos_c.cpp, these types are #defined to the
122* C++ definitions via preprocessor. We don't touch them to allow the
123* compiler to cross-check the declarations. However, for all "normal"
124* C-API users, we need to define these types as "opaque" struct pointers, as
125* those clients don't have access to the original C++ headers, by design.
126*/
127#ifndef GEOSGeometry
128
140typedef struct GEOSGeom_t GEOSGeometry;
141
147typedef struct GEOSPrepGeom_t GEOSPreparedGeometry;
148
155typedef struct GEOSCoordSeq_t GEOSCoordSequence;
156
162typedef struct GEOSSTRtree_t GEOSSTRtree;
163
169typedef struct GEOSBufParams_t GEOSBufferParams;
170
176typedef struct GEOSCoverageCleanParams_t GEOSCoverageCleanParams;
177
183typedef struct GEOSMakeValidParams_t GEOSMakeValidParams;
184
189typedef struct GEOSClusterInfo_t GEOSClusterInfo;
190
191#endif
192
195/*
196* These are compatibility definitions for source compatibility
197* with GEOS 2.X clients relying on that type.
198*/
199typedef GEOSGeometry* GEOSGeom;
200typedef GEOSCoordSequence* GEOSCoordSeq;
201
228 GEOS_CIRCULARSTRING,
229 GEOS_COMPOUNDCURVE,
230 GEOS_CURVEPOLYGON,
231 GEOS_MULTICURVE,
232 GEOS_MULTISURFACE,
233};
234
247
263
278
286typedef void (*GEOSQueryCallback)(void *item, void *userdata);
287
305typedef int (*GEOSDistanceCallback)(
306 const void* item1,
307 const void* item2,
308 double* distance,
309 void* userdata);
310
311
325 double* x,
326 double* y,
327 void* userdata);
328
329
344 double* x,
345 double* y,
346 double* z,
347 void* userdata);
348
349
350/* ========== Interruption ========== */
359typedef void (GEOSInterruptCallback)(void);
360
369typedef int (GEOSContextInterruptCallback)(void*);
370
383
397 GEOSContextHandle_t extHandle,
399 void* userData);
400
407extern void GEOS_DLL GEOS_interruptRequest(void);
408
413extern void GEOS_DLL GEOS_interruptThread(void);
414
419extern void GEOS_DLL GEOS_interruptCancel(void);
420
421/* ========== Initialization and Cleanup ========== */
422
431extern GEOSContextHandle_t GEOS_DLL GEOS_init_r(void);
432
440extern void GEOS_DLL GEOS_finish_r(GEOSContextHandle_t handle);
441
451 GEOSContextHandle_t extHandle,
453
465 GEOSContextHandle_t extHandle,
467
478 GEOSContextHandle_t extHandle,
480 void *userData);
481
494 GEOSContextHandle_t extHandle,
496 void *userData);
497
498/* ========== Coordinate Sequence functions ========== */
499
502 GEOSContextHandle_t handle,
503 unsigned int size,
504 unsigned int dims);
505
508 GEOSContextHandle_t handle,
509 unsigned int size,
510 int hasZ,
511 int hasM);
512
515 GEOSContextHandle_t handle,
516 const double* buf,
517 unsigned int size,
518 int hasZ,
519 int hasM);
520
523 GEOSContextHandle_t handle,
524 const double* x,
525 const double* y,
526 const double* z,
527 const double* m,
528 unsigned int size);
529
531extern int GEOS_DLL GEOSCoordSeq_copyToBuffer_r(
532 GEOSContextHandle_t handle,
533 const GEOSCoordSequence* s,
534 double* buf,
535 int hasZ,
536 int hasM);
537
539extern int GEOS_DLL GEOSCoordSeq_copyToArrays_r(
540 GEOSContextHandle_t handle,
541 const GEOSCoordSequence* s,
542 double* x,
543 double* y,
544 double* z,
545 double* m);
546
549 GEOSContextHandle_t handle,
550 const GEOSCoordSequence* s);
551
553extern void GEOS_DLL GEOSCoordSeq_destroy_r(
554 GEOSContextHandle_t handle,
556
558extern char GEOS_DLL GEOSCoordSeq_hasZ_r(
559 GEOSContextHandle_t handle,
561
563extern char GEOS_DLL GEOSCoordSeq_hasM_r(
564 GEOSContextHandle_t handle,
566
568extern int GEOS_DLL GEOSCoordSeq_setX_r(
569 GEOSContextHandle_t handle,
570 GEOSCoordSequence* s, unsigned int idx,
571 double val);
572
574extern int GEOS_DLL GEOSCoordSeq_setY_r(
575 GEOSContextHandle_t handle,
576 GEOSCoordSequence* s, unsigned int idx,
577 double val);
578
580extern int GEOS_DLL GEOSCoordSeq_setZ_r(
581 GEOSContextHandle_t handle,
582 GEOSCoordSequence* s, unsigned int idx,
583 double val);
584
586extern int GEOS_DLL GEOSCoordSeq_setM_r(
587 GEOSContextHandle_t handle,
588 GEOSCoordSequence* s, unsigned int idx,
589 double val);
590
592extern int GEOS_DLL GEOSCoordSeq_setXY_r(
593 GEOSContextHandle_t handle,
594 GEOSCoordSequence* s, unsigned int idx,
595 double x, double y);
596
598extern int GEOS_DLL GEOSCoordSeq_setXYZ_r(
599 GEOSContextHandle_t handle,
600 GEOSCoordSequence* s, unsigned int idx,
601 double x, double y, double z);
602
604extern int GEOS_DLL GEOSCoordSeq_setOrdinate_r(
605 GEOSContextHandle_t handle,
607 unsigned int idx,
608 unsigned int dim, double val);
609
611extern int GEOS_DLL GEOSCoordSeq_getX_r(
612 GEOSContextHandle_t handle,
613 const GEOSCoordSequence* s,
614 unsigned int idx, double *val);
615
617extern int GEOS_DLL GEOSCoordSeq_getY_r(
618 GEOSContextHandle_t handle,
619 const GEOSCoordSequence* s,
620 unsigned int idx, double *val);
621
623extern int GEOS_DLL GEOSCoordSeq_getZ_r(
624 GEOSContextHandle_t handle,
625 const GEOSCoordSequence* s,
626 unsigned int idx, double *val);
627
629extern int GEOS_DLL GEOSCoordSeq_getM_r(
630 GEOSContextHandle_t handle,
631 const GEOSCoordSequence* s,
632 unsigned int idx, double *val);
633
635extern int GEOS_DLL GEOSCoordSeq_getXY_r(
636 GEOSContextHandle_t handle,
637 const GEOSCoordSequence* s,
638 unsigned int idx,
639 double *x, double *y);
640
642extern int GEOS_DLL GEOSCoordSeq_getXYZ_r(
643 GEOSContextHandle_t handle,
644 const GEOSCoordSequence* s,
645 unsigned int idx,
646 double *x, double *y, double *z);
647
649extern int GEOS_DLL GEOSCoordSeq_getOrdinate_r(
650 GEOSContextHandle_t handle,
651 const GEOSCoordSequence* s,
652 unsigned int idx,
653 unsigned int dim, double *val);
654
656extern int GEOS_DLL GEOSCoordSeq_getSize_r(
657 GEOSContextHandle_t handle,
658 const GEOSCoordSequence* s,
659 unsigned int *size);
660
663 GEOSContextHandle_t handle,
664 const GEOSCoordSequence* s,
665 unsigned int *dims);
666
668extern int GEOS_DLL GEOSCoordSeq_isCCW_r(
669 GEOSContextHandle_t handle,
670 const GEOSCoordSequence* s,
671 char* is_ccw);
672
673/* ========= Linear referencing functions ========= */
674
676extern double GEOS_DLL GEOSProject_r(
677 GEOSContextHandle_t handle,
678 const GEOSGeometry *line,
679 const GEOSGeometry *point);
680
683 GEOSContextHandle_t handle,
684 const GEOSGeometry *line,
685 double d);
686
688extern double GEOS_DLL GEOSProjectNormalized_r(
689 GEOSContextHandle_t handle,
690 const GEOSGeometry *g,
691 const GEOSGeometry *p);
692
695 GEOSContextHandle_t handle,
696 const GEOSGeometry *g,
697 double d);
698
699/* ========== Buffer related functions ========== */
700
702extern GEOSGeometry GEOS_DLL *GEOSBuffer_r(
703 GEOSContextHandle_t handle,
704 const GEOSGeometry* g,
705 double width, int quadsegs);
706
722
744
747 GEOSContextHandle_t handle);
748
750extern void GEOS_DLL GEOSBufferParams_destroy_r(
751 GEOSContextHandle_t handle,
752 GEOSBufferParams* parms);
753
756 GEOSContextHandle_t handle,
758 int style);
759
762 GEOSContextHandle_t handle,
764 int joinStyle);
765
768 GEOSContextHandle_t handle,
770 double mitreLimit);
771
774 GEOSContextHandle_t handle,
776 int quadSegs);
777
780 GEOSContextHandle_t handle,
782 int singleSided);
783
786 GEOSContextHandle_t handle,
787 const GEOSGeometry* g,
788 const GEOSBufferParams* p,
789 double width);
790
793 GEOSContextHandle_t handle,
794 const GEOSGeometry* g,
795 double width, int quadsegs, int endCapStyle,
796 int joinStyle, double mitreLimit);
797
800 GEOSContextHandle_t handle,
801 const GEOSGeometry* g,
802 double tolerance);
803
806 GEOSContextHandle_t handle,
807 const GEOSGeometry* g, double width, int quadsegs,
808 int joinStyle, double mitreLimit);
809
810
811/* ========= Geometry Constructors ========= */
812
815 GEOSContextHandle_t handle,
817
820 GEOSContextHandle_t handle,
821 double x, double y);
822
825 GEOSContextHandle_t handle);
826
829 GEOSContextHandle_t handle,
831
834 GEOSContextHandle_t handle,
836
839 GEOSContextHandle_t handle);
840
843 GEOSContextHandle_t handle);
844
847 GEOSContextHandle_t handle,
848 GEOSGeometry* shell,
849 GEOSGeometry** holes,
850 unsigned int nholes);
851
854 GEOSContextHandle_t handle,
855 int type,
856 GEOSGeometry* *geoms,
857 unsigned int ngeoms);
858
861 GEOSContextHandle_t handle,
862 GEOSGeometry * collection,
863 unsigned int * ngeoms);
864
867 GEOSContextHandle_t handle, int type);
868
871 GEOSContextHandle_t handle,
872 double xmin, double ymin,
873 double xmax, double ymax);
874
877 GEOSContextHandle_t handle,
878 const GEOSGeometry* g);
879
882 GEOSContextHandle_t handle,
884
887 GEOSContextHandle_t handle);
888
891 GEOSContextHandle_t handle,
892 GEOSGeometry** curves,
893 unsigned int ncurves);
894
897 GEOSContextHandle_t handle);
898
901 GEOSContextHandle_t handle,
902 GEOSGeometry* shell,
903 GEOSGeometry** holes,
904 unsigned int nholes);
905
908 GEOSContextHandle_t handle);
909
910/* ========= Memory management ========= */
911
913extern void GEOS_DLL GEOSGeom_destroy_r(
914 GEOSContextHandle_t handle,
915 GEOSGeometry* g);
916
917/* ========= Coverages ========= */
918
920extern GEOSGeometry GEOS_DLL *
922 GEOSContextHandle_t handle,
923 const GEOSGeometry* g);
924
926extern int GEOS_DLL
928 GEOSContextHandle_t extHandle,
929 const GEOSGeometry* input,
930 double gapWidth,
931 GEOSGeometry** output);
932
934extern GEOSGeometry GEOS_DLL *
936 GEOSContextHandle_t extHandle,
937 const GEOSGeometry* input,
938 double tolerance,
939 int preserveBoundary);
940
942extern GEOSCoverageCleanParams GEOS_DLL *
944 GEOSContextHandle_t extHandle);
945
947extern void GEOS_DLL
949 GEOSContextHandle_t extHandle,
951
953extern int GEOS_DLL
955 GEOSContextHandle_t extHandle,
957 double snappingDistance);
958
960extern int GEOS_DLL
962 GEOSContextHandle_t extHandle,
964 double gapMaximumWidth);
965
967extern int GEOS_DLL
969 GEOSContextHandle_t extHandle,
971 int overlapMergeStrategy);
972
974extern GEOSGeometry GEOS_DLL *
976 GEOSContextHandle_t extHandle,
977 const GEOSGeometry* input,
978 const GEOSCoverageCleanParams* params);
979
981extern GEOSGeometry GEOS_DLL *
983 GEOSContextHandle_t extHandle,
984 const GEOSGeometry* input);
985
986/* ========= Topology Operations ========= */
987
990 GEOSContextHandle_t handle,
991 const GEOSGeometry* g);
992
995 GEOSContextHandle_t handle,
996 const GEOSGeometry* g1,
997 const GEOSGeometry* g2);
998
1001 GEOSContextHandle_t handle,
1002 const GEOSGeometry* g1,
1003 const GEOSGeometry* g2,
1004 double gridSize);
1005
1008 GEOSContextHandle_t handle,
1009 const GEOSGeometry* g);
1010
1013 GEOSContextHandle_t handle,
1014 const GEOSGeometry* g,
1015 double ratio,
1016 unsigned int allowHoles);
1017
1020 GEOSContextHandle_t handle,
1021 const GEOSGeometry* g,
1022 double ratio,
1023 unsigned int allowHoles);
1024
1027 GEOSContextHandle_t handle,
1028 const GEOSGeometry* g,
1029 unsigned int isOuter,
1030 double vertexNumFraction);
1031
1034 GEOSContextHandle_t handle,
1035 const GEOSGeometry* g,
1036 unsigned int isOuter,
1037 unsigned int parameterMode,
1038 double parameter);
1039
1042 GEOSContextHandle_t handle,
1043 const GEOSGeometry* g,
1044 double lengthRatio,
1045 unsigned int isTight,
1046 unsigned int isHolesAllowed);
1047
1050 GEOSContextHandle_t handle,
1051 const GEOSGeometry* g);
1052
1055 GEOSContextHandle_t handle,
1056 const GEOSGeometry* g,
1057 double tolerance);
1058
1061 GEOSContextHandle_t handle,
1062 const GEOSGeometry* g,
1063 const GEOSGeometry* boundary,
1064 double tolerance);
1065
1068 GEOSContextHandle_t handle,
1069 const GEOSGeometry* g);
1070
1073 GEOSContextHandle_t handle,
1074 const GEOSGeometry* g);
1075
1077extern int GEOS_DLL GEOSMinimumClearance_r(
1078 GEOSContextHandle_t handle,
1079 const GEOSGeometry* g,
1080 double* distance);
1081
1084 GEOSContextHandle_t handle,
1085 const GEOSGeometry* g1,
1086 const GEOSGeometry* g2);
1087
1090 GEOSContextHandle_t handle,
1091 const GEOSGeometry* g1,
1092 const GEOSGeometry* g2,
1093 double gridSize);
1094
1097 GEOSContextHandle_t handle,
1098 const GEOSGeometry* g1,
1099 const GEOSGeometry* g2);
1100
1103 GEOSContextHandle_t handle,
1104 const GEOSGeometry* g1,
1105 const GEOSGeometry* g2,
1106 double gridSize);
1107
1110 GEOSContextHandle_t handle,
1111 const GEOSGeometry* g);
1112
1114extern GEOSGeometry GEOS_DLL *GEOSUnion_r(
1115 GEOSContextHandle_t handle,
1116 const GEOSGeometry* g1,
1117 const GEOSGeometry* g2);
1118
1121 GEOSContextHandle_t handle,
1122 const GEOSGeometry* g1,
1123 const GEOSGeometry* g2,
1124 double gridSize);
1125
1128 GEOSContextHandle_t handle,
1129 const GEOSGeometry* g);
1130
1133 GEOSContextHandle_t handle,
1134 const GEOSGeometry* g,
1135 double gridSize);
1136
1139 GEOSContextHandle_t handle,
1140 const GEOSGeometry* g);
1141
1144 GEOSContextHandle_t handle,
1145 const GEOSGeometry* g);
1146
1149 GEOSContextHandle_t handle,
1150 const GEOSGeometry* g);
1151
1154 GEOSContextHandle_t handle,
1155 const GEOSGeometry* g,
1156 double* radius,
1157 GEOSGeometry** center);
1158
1160extern GEOSGeometry GEOS_DLL *GEOSNode_r(
1161 GEOSContextHandle_t handle,
1162 const GEOSGeometry* g);
1163
1166 GEOSContextHandle_t handle,
1167 const GEOSGeometry* g,
1168 double xmin, double ymin,
1169 double xmax, double ymax);
1170
1173 GEOSContextHandle_t handle,
1174 const GEOSGeometry* g,
1175 double xmin, double ymin,
1176 double xmax, double ymax,
1177 unsigned nx, unsigned ny,
1178 int includeExterior);
1179
1182 GEOSContextHandle_t handle,
1183 const GEOSGeometry* g,
1184 double xmin, double ymin,
1185 double xmax, double ymax,
1186 unsigned nx, unsigned ny,
1187 float* buf);
1188
1191 GEOSContextHandle_t handle,
1192 const GEOSGeometry *const geoms[],
1193 unsigned int ngeoms);
1194
1197 GEOSContextHandle_t handle,
1198 const GEOSGeometry *const geoms[],
1199 unsigned int ngems);
1200
1203 GEOSContextHandle_t handle,
1204 const GEOSGeometry * const geoms[],
1205 unsigned int ngeoms);
1206
1209 GEOSContextHandle_t handle,
1210 const GEOSGeometry* input,
1211 GEOSGeometry** cuts,
1212 GEOSGeometry** dangles,
1213 GEOSGeometry** invalidRings);
1214
1217 GEOSContextHandle_t handle,
1218 const GEOSGeometry* g);
1219
1222 GEOSContextHandle_t handle,
1223 const GEOSGeometry* g);
1224
1227 GEOSContextHandle_t handle,
1228 const GEOSGeometry* g);
1229
1232 GEOSContextHandle_t handle,
1233 const GEOSGeometry* g,
1234 double start_fraction,
1235 double end_fdraction);
1236
1239 GEOSContextHandle_t handle,
1240 const GEOSGeometry* g);
1241
1244 GEOSContextHandle_t handle,
1245 const GEOSGeometry* g,
1246 double tolerance);
1247
1250 GEOSContextHandle_t handle,
1251 const GEOSGeometry* g, double tolerance);
1252
1255 GEOSContextHandle_t handle,
1256 const GEOSGeometry* g);
1257
1260 GEOSContextHandle_t handle,
1261 const GEOSGeometry* g1,
1262 const GEOSGeometry* g2);
1263
1265extern GEOSGeometry GEOS_DLL *GEOSSnap_r(
1266 GEOSContextHandle_t handle,
1267 const GEOSGeometry* g1,
1268 const GEOSGeometry* g2,
1269 double tolerance);
1270
1273 GEOSContextHandle_t handle,
1274 const GEOSGeometry *g,
1275 double tolerance,
1276 int onlyEdges);
1277
1280 GEOSContextHandle_t handle,
1281 const GEOSGeometry *g);
1282
1285 GEOSContextHandle_t extHandle,
1286 const GEOSGeometry *g,
1287 const GEOSGeometry *env,
1288 double tolerance,
1289 int flags);
1290
1292extern int GEOS_DLL GEOSSegmentIntersection_r(
1293 GEOSContextHandle_t extHandle,
1294 double ax0, double ay0,
1295 double ax1, double ay1,
1296 double bx0, double by0,
1297 double bx1, double by1,
1298 double* cx, double* cy);
1299
1300/* ========= Binary predicates ========= */
1301
1303extern char GEOS_DLL GEOSDisjoint_r(
1304 GEOSContextHandle_t handle,
1305 const GEOSGeometry* g1,
1306 const GEOSGeometry* g2);
1307
1309extern char GEOS_DLL GEOSTouches_r(
1310 GEOSContextHandle_t handle,
1311 const GEOSGeometry* g1,
1312 const GEOSGeometry* g2);
1313
1315extern char GEOS_DLL GEOSIntersects_r(
1316 GEOSContextHandle_t handle,
1317 const GEOSGeometry* g1,
1318 const GEOSGeometry* g2);
1319
1321extern char GEOS_DLL GEOSCrosses_r(
1322 GEOSContextHandle_t handle,
1323 const GEOSGeometry* g1,
1324 const GEOSGeometry* g2);
1325
1327extern char GEOS_DLL GEOSWithin_r(
1328 GEOSContextHandle_t handle,
1329 const GEOSGeometry* g1,
1330 const GEOSGeometry* g2);
1331
1333extern char GEOS_DLL GEOSContains_r(
1334 GEOSContextHandle_t handle,
1335 const GEOSGeometry* g1,
1336 const GEOSGeometry* g2);
1337
1339extern char GEOS_DLL GEOSOverlaps_r(
1340 GEOSContextHandle_t handle,
1341 const GEOSGeometry* g1,
1342 const GEOSGeometry* g2);
1343
1345extern char GEOS_DLL GEOSEquals_r(
1346 GEOSContextHandle_t handle,
1347 const GEOSGeometry* g1,
1348 const GEOSGeometry* g2);
1349
1351extern char GEOS_DLL GEOSEqualsExact_r(
1352 GEOSContextHandle_t handle,
1353 const GEOSGeometry* g1,
1354 const GEOSGeometry* g2,
1355 double tolerance);
1356
1358extern char GEOS_DLL GEOSEqualsIdentical_r(
1359 GEOSContextHandle_t handle,
1360 const GEOSGeometry* g1,
1361 const GEOSGeometry* g2);
1362
1364extern char GEOS_DLL GEOSCovers_r(
1365 GEOSContextHandle_t handle,
1366 const GEOSGeometry* g1,
1367 const GEOSGeometry* g2);
1368
1370extern char GEOS_DLL GEOSCoveredBy_r(
1371 GEOSContextHandle_t handle,
1372 const GEOSGeometry* g1,
1373 const GEOSGeometry* g2);
1374
1375/* ========= Prepared Geometry Binary Predicates ========== */
1376
1379 GEOSContextHandle_t handle,
1380 const GEOSGeometry* g);
1381
1383extern void GEOS_DLL GEOSPreparedGeom_destroy_r(
1384 GEOSContextHandle_t handle,
1385 const GEOSPreparedGeometry* g);
1386
1388extern char GEOS_DLL GEOSPreparedContains_r(
1389 GEOSContextHandle_t handle,
1390 const GEOSPreparedGeometry* pg1,
1391 const GEOSGeometry* g2);
1392
1394extern char GEOS_DLL GEOSPreparedContainsXY_r(
1395 GEOSContextHandle_t handle,
1396 const GEOSPreparedGeometry* pg1,
1397 double x,
1398 double y);
1399
1402 GEOSContextHandle_t handle,
1403 const GEOSPreparedGeometry* pg1,
1404 const GEOSGeometry* g2);
1405
1407extern char GEOS_DLL GEOSPreparedCoveredBy_r(
1408 GEOSContextHandle_t handle,
1409 const GEOSPreparedGeometry* pg1,
1410 const GEOSGeometry* g2);
1411
1413extern char GEOS_DLL GEOSPreparedCovers_r(
1414 GEOSContextHandle_t handle,
1415 const GEOSPreparedGeometry* pg1,
1416 const GEOSGeometry* g2);
1417
1419extern char GEOS_DLL GEOSPreparedCrosses_r(
1420 GEOSContextHandle_t handle,
1421 const GEOSPreparedGeometry* pg1,
1422 const GEOSGeometry* g2);
1423
1425extern char GEOS_DLL GEOSPreparedDisjoint_r(
1426 GEOSContextHandle_t handle,
1427 const GEOSPreparedGeometry* pg1,
1428 const GEOSGeometry* g2);
1429
1431extern char GEOS_DLL GEOSPreparedIntersects_r(
1432 GEOSContextHandle_t handle,
1433 const GEOSPreparedGeometry* pg1,
1434 const GEOSGeometry* g2);
1435
1437extern char GEOS_DLL GEOSPreparedIntersectsXY_r(
1438 GEOSContextHandle_t handle,
1439 const GEOSPreparedGeometry* pg1,
1440 double x,
1441 double y);
1442
1444extern char GEOS_DLL GEOSPreparedOverlaps_r(
1445 GEOSContextHandle_t handle,
1446 const GEOSPreparedGeometry* pg1,
1447 const GEOSGeometry* g2);
1448
1450extern char GEOS_DLL GEOSPreparedTouches_r(
1451 GEOSContextHandle_t handle,
1452 const GEOSPreparedGeometry* pg1,
1453 const GEOSGeometry* g2);
1454
1456extern char GEOS_DLL GEOSPreparedWithin_r(
1457 GEOSContextHandle_t handle,
1458 const GEOSPreparedGeometry* pg1,
1459 const GEOSGeometry* g2);
1460
1462extern char GEOS_DLL * GEOSPreparedRelate_r(
1463 GEOSContextHandle_t handle,
1464 const GEOSPreparedGeometry* pg1,
1465 const GEOSGeometry* g2);
1466
1468extern char GEOS_DLL GEOSPreparedRelatePattern_r(
1469 GEOSContextHandle_t handle,
1470 const GEOSPreparedGeometry* pg1,
1471 const GEOSGeometry* g2,
1472 const char* im);
1473
1476 GEOSContextHandle_t handle,
1477 const GEOSPreparedGeometry* pg1,
1478 const GEOSGeometry* g2);
1479
1481extern int GEOS_DLL GEOSPreparedDistance_r(
1482 GEOSContextHandle_t handle,
1483 const GEOSPreparedGeometry* pg1,
1484 const GEOSGeometry* g2, double *dist);
1485
1487extern char GEOS_DLL GEOSPreparedDistanceWithin_r(
1488 GEOSContextHandle_t handle,
1489 const GEOSPreparedGeometry* pg1,
1490 const GEOSGeometry* g2, double dist);
1491
1492/* ========== STRtree ========== */
1493
1496 GEOSContextHandle_t handle,
1497 size_t nodeCapacity);
1498
1500extern int GEOS_DLL GEOSSTRtree_build_r(
1501 GEOSContextHandle_t handle,
1502 GEOSSTRtree *tree);
1503
1505extern void GEOS_DLL GEOSSTRtree_insert_r(
1506 GEOSContextHandle_t handle,
1507 GEOSSTRtree *tree,
1508 const GEOSGeometry *g,
1509 void *item);
1510
1512extern void GEOS_DLL GEOSSTRtree_query_r(
1513 GEOSContextHandle_t handle,
1514 GEOSSTRtree *tree,
1515 const GEOSGeometry *g,
1516 GEOSQueryCallback callback,
1517 void *userdata);
1518
1521 GEOSContextHandle_t handle,
1522 GEOSSTRtree *tree,
1523 const GEOSGeometry* geom);
1524
1526extern const void GEOS_DLL *GEOSSTRtree_nearest_generic_r(
1527 GEOSContextHandle_t handle,
1528 GEOSSTRtree *tree,
1529 const void* item,
1530 const GEOSGeometry* itemEnvelope,
1531 GEOSDistanceCallback distancefn,
1532 void* userdata);
1533
1535extern void GEOS_DLL GEOSSTRtree_iterate_r(
1536 GEOSContextHandle_t handle,
1537 GEOSSTRtree *tree,
1538 GEOSQueryCallback callback,
1539 void *userdata);
1540
1542extern char GEOS_DLL GEOSSTRtree_remove_r(
1543 GEOSContextHandle_t handle,
1544 GEOSSTRtree *tree,
1545 const GEOSGeometry *g,
1546 void *item);
1547
1549extern void GEOS_DLL GEOSSTRtree_destroy_r(
1550 GEOSContextHandle_t handle,
1551 GEOSSTRtree *tree);
1552
1553
1554/* ========= Unary predicate ========= */
1555
1557extern char GEOS_DLL GEOSisEmpty_r(
1558 GEOSContextHandle_t handle,
1559 const GEOSGeometry* g);
1560
1562extern char GEOS_DLL GEOSisSimple_r(
1563 GEOSContextHandle_t handle,
1564 const GEOSGeometry* g);
1565
1567extern char GEOS_DLL GEOSisRing_r(
1568 GEOSContextHandle_t handle,
1569 const GEOSGeometry* g);
1570
1572extern char GEOS_DLL GEOSHasZ_r(
1573 GEOSContextHandle_t handle,
1574 const GEOSGeometry* g);
1575
1577extern char GEOS_DLL GEOSHasM_r(
1578 GEOSContextHandle_t handle,
1579 const GEOSGeometry* g);
1580
1582extern char GEOS_DLL GEOSisClosed_r(
1583 GEOSContextHandle_t handle,
1584 const GEOSGeometry *g);
1585
1586/* ========== Dimensionally Extended 9 Intersection Model ========== */
1587
1604
1606extern char GEOS_DLL GEOSRelatePattern_r(
1607 GEOSContextHandle_t handle,
1608 const GEOSGeometry* g1,
1609 const GEOSGeometry* g2,
1610 const char *imPattern);
1611
1613extern char GEOS_DLL *GEOSRelate_r(
1614 GEOSContextHandle_t handle,
1615 const GEOSGeometry* g1,
1616 const GEOSGeometry* g2);
1617
1619extern char GEOS_DLL GEOSRelatePatternMatch_r(
1620 GEOSContextHandle_t handle,
1621 const char *intMatrix,
1622 const char *imPattern);
1623
1625extern char GEOS_DLL *GEOSRelateBoundaryNodeRule_r(
1626 GEOSContextHandle_t handle,
1627 const GEOSGeometry* g1,
1628 const GEOSGeometry* g2,
1629 int bnr);
1630
1631/* ========= Validity checking ========= */
1632
1639
1641extern char GEOS_DLL GEOSisValid_r(
1642 GEOSContextHandle_t handle,
1643 const GEOSGeometry* g);
1644
1646extern char GEOS_DLL *GEOSisValidReason_r(
1647 GEOSContextHandle_t handle,
1648 const GEOSGeometry* g);
1649
1651extern char GEOS_DLL GEOSisSimpleDetail_r(
1652 GEOSContextHandle_t handle,
1653 const GEOSGeometry* g,
1654 int findAllLocations,
1655 GEOSGeometry** location);
1656
1658extern char GEOS_DLL GEOSisValidDetail_r(
1659 GEOSContextHandle_t handle,
1660 const GEOSGeometry* g,
1661 int flags,
1662 char** reason,
1663 GEOSGeometry** location);
1664
1665/* ========== Make Valid ========== */
1666
1683
1686 GEOSContextHandle_t extHandle);
1687
1690 GEOSContextHandle_t handle,
1691 GEOSMakeValidParams* parms);
1692
1695 GEOSContextHandle_t handle,
1697 int style);
1698
1701 GEOSContextHandle_t handle,
1703 enum GEOSMakeValidMethods method);
1704
1707 GEOSContextHandle_t handle,
1708 const GEOSGeometry* g);
1709
1712 GEOSContextHandle_t handle,
1713 const GEOSGeometry* g,
1714 const GEOSMakeValidParams* makeValidParams);
1715
1718 GEOSContextHandle_t handle,
1719 const GEOSGeometry* g,
1720 double tolerance);
1721
1722/* ========== Geometry info ========== */
1723
1725/* Return NULL on exception, result must be freed by caller. */
1726extern char GEOS_DLL *GEOSGeomType_r(
1727 GEOSContextHandle_t handle,
1728 const GEOSGeometry* g);
1729
1731extern int GEOS_DLL GEOSGeomTypeId_r(
1732 GEOSContextHandle_t handle,
1733 const GEOSGeometry* g);
1734
1736extern int GEOS_DLL GEOSGetSRID_r(
1737 GEOSContextHandle_t handle,
1738 const GEOSGeometry* g);
1739
1741extern void GEOS_DLL GEOSSetSRID_r(
1742 GEOSContextHandle_t handle,
1743 GEOSGeometry* g, int SRID);
1744
1746extern void GEOS_DLL *GEOSGeom_getUserData_r(
1747 GEOSContextHandle_t handle,
1748 const GEOSGeometry* g);
1749
1751extern void GEOS_DLL GEOSGeom_setUserData_r(
1752 GEOSContextHandle_t handle,
1753 GEOSGeometry* g,
1754 void* userData);
1755
1757extern int GEOS_DLL GEOSGetNumGeometries_r(
1758 GEOSContextHandle_t handle,
1759 const GEOSGeometry* g);
1760
1762extern const GEOSGeometry GEOS_DLL *GEOSGetGeometryN_r(
1763 GEOSContextHandle_t handle,
1764 const GEOSGeometry* g, int n);
1765
1767extern int GEOS_DLL GEOSNormalize_r(
1768 GEOSContextHandle_t handle,
1769 GEOSGeometry* g);
1770
1772extern int GEOS_DLL GEOSOrientPolygons_r(
1773 GEOSContextHandle_t handle,
1774 GEOSGeometry* g,
1775 int exteriorCW);
1776
1789
1792 GEOSContextHandle_t handle,
1793 const GEOSGeometry *g,
1794 double gridSize,
1795 int flags);
1796
1798extern double GEOS_DLL GEOSGeom_getPrecision_r(
1799 GEOSContextHandle_t handle,
1800 const GEOSGeometry *g);
1801
1803extern int GEOS_DLL GEOSGetNumInteriorRings_r(
1804 GEOSContextHandle_t handle,
1805 const GEOSGeometry* g);
1806
1808extern int GEOS_DLL GEOSGeomGetNumPoints_r(
1809 GEOSContextHandle_t handle,
1810 const GEOSGeometry* g);
1811
1813extern int GEOS_DLL GEOSGeomGetX_r(
1814 GEOSContextHandle_t handle,
1815 const GEOSGeometry *g,
1816 double *x);
1817
1819extern int GEOS_DLL GEOSGeomGetY_r(
1820 GEOSContextHandle_t handle,
1821 const GEOSGeometry *g,
1822 double *y);
1823
1825extern int GEOS_DLL GEOSGeomGetZ_r(
1826 GEOSContextHandle_t handle,
1827 const GEOSGeometry *g,
1828 double *z);
1829
1831extern int GEOS_DLL GEOSGeomGetM_r(
1832 GEOSContextHandle_t handle,
1833 const GEOSGeometry *g,
1834 double *m);
1835
1838 GEOSContextHandle_t handle,
1839 const GEOSGeometry* g, int n);
1840
1843 GEOSContextHandle_t handle,
1844 const GEOSGeometry* g);
1845
1847extern int GEOS_DLL GEOSGetNumCoordinates_r(
1848 GEOSContextHandle_t handle,
1849 const GEOSGeometry* g);
1850
1853 GEOSContextHandle_t handle,
1854 const GEOSGeometry* g);
1855
1857extern int GEOS_DLL GEOSGeom_getDimensions_r(
1858 GEOSContextHandle_t handle,
1859 const GEOSGeometry* g);
1860
1863 GEOSContextHandle_t handle,
1864 const GEOSGeometry* g);
1865
1867extern int GEOS_DLL GEOSGeom_getXMin_r(
1868 GEOSContextHandle_t handle,
1869 const GEOSGeometry* g,
1870 double* value);
1871
1873extern int GEOS_DLL GEOSGeom_getYMin_r(
1874 GEOSContextHandle_t handle,
1875 const GEOSGeometry* g,
1876 double* value);
1877
1879extern int GEOS_DLL GEOSGeom_getXMax_r(
1880 GEOSContextHandle_t handle,
1881 const GEOSGeometry* g,
1882 double* value);
1883
1885extern int GEOS_DLL GEOSGeom_getYMax_r(
1886 GEOSContextHandle_t handle,
1887 const GEOSGeometry* g,
1888 double* value);
1889
1891extern int GEOS_DLL GEOSGeom_getExtent_r(
1892 GEOSContextHandle_t handle,
1893 const GEOSGeometry* g,
1894 double* xmin,
1895 double* ymin,
1896 double* xmax,
1897 double* ymax);
1898
1901 GEOSContextHandle_t handle,
1902 const GEOSGeometry *g,
1903 int n);
1904
1907 GEOSContextHandle_t handle,
1908 const GEOSGeometry *g);
1909
1912 GEOSContextHandle_t handle,
1913 const GEOSGeometry *g);
1914
1915/* ========= Misc functions ========= */
1916
1918extern int GEOS_DLL GEOSArea_r(
1919 GEOSContextHandle_t handle,
1920 const GEOSGeometry* g,
1921 double *area);
1922
1924extern int GEOS_DLL GEOSLength_r(
1925 GEOSContextHandle_t handle,
1926 const GEOSGeometry* g,
1927 double *length);
1928
1930extern int GEOS_DLL GEOSDistance_r(
1931 GEOSContextHandle_t handle,
1932 const GEOSGeometry* g1,
1933 const GEOSGeometry* g2,
1934 double *dist);
1935
1937extern char GEOS_DLL GEOSDistanceWithin_r(
1938 GEOSContextHandle_t handle,
1939 const GEOSGeometry* g1,
1940 const GEOSGeometry* g2,
1941 double dist);
1942
1944extern int GEOS_DLL GEOSDistanceIndexed_r(
1945 GEOSContextHandle_t handle,
1946 const GEOSGeometry* g1,
1947 const GEOSGeometry* g2,
1948 double *dist);
1949
1951extern int GEOS_DLL GEOSHausdorffDistance_r(
1952 GEOSContextHandle_t handle,
1953 const GEOSGeometry *g1,
1954 const GEOSGeometry *g2,
1955 double *dist);
1956
1959 GEOSContextHandle_t handle,
1960 const GEOSGeometry *g1,
1961 const GEOSGeometry *g2,
1962 double *dist,
1963 double *p1x, double *p1y,
1964 double *p2x, double *p2y);
1965
1968 GEOSContextHandle_t handle,
1969 const GEOSGeometry *g1,
1970 const GEOSGeometry *g2,
1971 double densifyFrac, double *dist);
1972
1975 GEOSContextHandle_t handle,
1976 const GEOSGeometry *g1,
1977 const GEOSGeometry *g2,
1978 double densifyFrac, double* dist,
1979 double *p1x, double *p1y,
1980 double *p2x, double *p2y);
1981
1983extern int GEOS_DLL GEOSFrechetDistance_r(
1984 GEOSContextHandle_t handle,
1985 const GEOSGeometry *g1,
1986 const GEOSGeometry *g2,
1987 double *dist);
1988
1991 GEOSContextHandle_t handle,
1992 const GEOSGeometry *g1,
1993 const GEOSGeometry *g2,
1994 double densifyFrac,
1995 double *dist);
1996
1997
1999extern int GEOS_DLL GEOSHilbertCode_r(
2000 GEOSContextHandle_t handle,
2001 const GEOSGeometry *geom,
2002 const GEOSGeometry* extent,
2003 unsigned int level,
2004 unsigned int *code
2005);
2006
2008extern int GEOS_DLL GEOSGeomGetLength_r(
2009 GEOSContextHandle_t handle,
2010 const GEOSGeometry *g,
2011 double *length);
2012
2015 GEOSContextHandle_t handle,
2016 const GEOSGeometry* g1,
2017 const GEOSGeometry* g2);
2018
2021 GEOSContextHandle_t handle,
2022 const GEOSGeometry* g,
2023 GEOSTransformXYCallback callback,
2024 void* userdata);
2025
2028 GEOSContextHandle_t handle,
2029 const GEOSGeometry* g,
2030 GEOSTransformXYZCallback callback,
2031 void* userdata);
2032
2035 GEOSContextHandle_t handle,
2036 const GEOSGeometry* g,
2037 double eps,
2038 unsigned minPoints);
2039
2042 GEOSContextHandle_t handle,
2043 const GEOSGeometry* g,
2044 double d);
2045
2048 GEOSContextHandle_t handle,
2049 const GEOSGeometry* g);
2050
2053 GEOSContextHandle_t handle,
2054 const GEOSGeometry* g,
2055 double d);
2056
2059 GEOSContextHandle_t handle,
2060 const GEOSGeometry* g);
2061
2064
2066extern size_t GEOS_DLL GEOSClusterInfo_getClusterSize_r(GEOSContextHandle_t, const GEOSClusterInfo* clusters, size_t i);
2067
2070
2072extern const size_t GEOS_DLL* GEOSClusterInfo_getInputsForClusterN_r(GEOSContextHandle_t, const GEOSClusterInfo* clusters, size_t i);
2073
2076
2077/* ========= Algorithms ========= */
2078
2080extern int GEOS_DLL GEOSOrientationIndex_r(
2081 GEOSContextHandle_t handle,
2082 double Ax, double Ay,
2083 double Bx, double By,
2084 double Px, double Py);
2085
2086
2087/* ========== Reader and Writer APIs ========== */
2088
2089#ifndef GEOSWKTReader
2090
2096typedef struct GEOSWKTReader_t GEOSWKTReader;
2097
2103typedef struct GEOSWKTWriter_t GEOSWKTWriter;
2104
2110typedef struct GEOSWKBReader_t GEOSWKBReader;
2111
2117typedef struct GEOSWKBWriter_t GEOSWKBWriter;
2118
2124typedef struct GEOSGeoJSONReader_t GEOSGeoJSONReader;
2125
2131typedef struct GEOSGeoJSONWriter_t GEOSGeoJSONWriter;
2132
2133#endif
2134
2135/* ========== WKT Reader ========== */
2136
2139 GEOSContextHandle_t handle);
2140
2143 GEOSWKTReader* reader);
2144
2147 GEOSContextHandle_t handle,
2148 GEOSWKTReader* reader,
2149 const char *wkt);
2150
2153 GEOSContextHandle_t handle,
2154 GEOSWKTReader *reader,
2155 char doFix);
2156
2157
2158/* ========== WKT Writer ========== */
2159
2162 GEOSContextHandle_t handle);
2163
2165extern void GEOS_DLL GEOSWKTWriter_destroy_r(
2166 GEOSContextHandle_t handle,
2167 GEOSWKTWriter* writer);
2168
2170extern char GEOS_DLL *GEOSWKTWriter_write_r(
2171 GEOSContextHandle_t handle,
2172 GEOSWKTWriter* writer,
2173 const GEOSGeometry* g);
2174
2176extern void GEOS_DLL GEOSWKTWriter_setTrim_r(
2177 GEOSContextHandle_t handle,
2178 GEOSWKTWriter *writer,
2179 char trim);
2180
2183 GEOSContextHandle_t handle,
2184 GEOSWKTWriter *writer,
2185 int precision);
2186
2189 GEOSContextHandle_t handle,
2190 GEOSWKTWriter *writer,
2191 int dim);
2192
2195 GEOSContextHandle_t handle,
2196 GEOSWKTWriter *writer);
2197
2199extern void GEOS_DLL GEOSWKTWriter_setOld3D_r(
2200 GEOSContextHandle_t handle,
2201 GEOSWKTWriter *writer,
2202 int useOld3D);
2203
2213extern int GEOS_DLL GEOS_printDouble(
2214 double d,
2215 unsigned int precision,
2216 char *result
2217);
2218
2219/* ========== WKB Reader ========== */
2220
2223 GEOSContextHandle_t handle);
2224
2226extern void GEOS_DLL GEOSWKBReader_destroy_r(
2227 GEOSContextHandle_t handle,
2228 GEOSWKBReader* reader);
2229
2232 GEOSContextHandle_t handle,
2233 GEOSWKBReader *reader,
2234 char doFix);
2235
2238 GEOSContextHandle_t handle,
2239 GEOSWKBReader* reader,
2240 const unsigned char *wkb,
2241 size_t size);
2242
2245 GEOSContextHandle_t handle,
2246 GEOSWKBReader* reader,
2247 const unsigned char *hex,
2248 size_t size);
2249
2250
2251/* ========== WKB Writer ========== */
2252
2255 GEOSContextHandle_t handle);
2256
2258extern void GEOS_DLL GEOSWKBWriter_destroy_r(
2259 GEOSContextHandle_t handle,
2260 GEOSWKBWriter* writer);
2261
2263extern unsigned char GEOS_DLL *GEOSWKBWriter_write_r(
2264 GEOSContextHandle_t handle,
2265 GEOSWKBWriter* writer,
2266 const GEOSGeometry* g,
2267 size_t *size);
2268
2270extern unsigned char GEOS_DLL *GEOSWKBWriter_writeHEX_r(
2271 GEOSContextHandle_t handle,
2272 GEOSWKBWriter* writer,
2273 const GEOSGeometry* g,
2274 size_t *size);
2275
2278 GEOSContextHandle_t handle,
2279 const GEOSWKBWriter* writer);
2280
2283 GEOSContextHandle_t handle,
2284 GEOSWKBWriter* writer, int newDimension);
2285
2288 GEOSContextHandle_t handle,
2289 const GEOSWKBWriter* writer);
2290
2292extern void GEOS_DLL GEOSWKBWriter_setByteOrder_r(
2293 GEOSContextHandle_t handle,
2294 GEOSWKBWriter* writer,
2295 int byteOrder);
2296
2298extern int GEOS_DLL GEOSWKBWriter_getFlavor_r(
2299 GEOSContextHandle_t handle,
2300 const GEOSWKBWriter* writer);
2301
2303extern void GEOS_DLL GEOSWKBWriter_setFlavor_r(
2304 GEOSContextHandle_t handle,
2305 GEOSWKBWriter* writer,
2306 int flavor);
2307
2310 GEOSContextHandle_t handle,
2311 const GEOSWKBWriter* writer);
2312
2315 GEOSContextHandle_t handle,
2316 GEOSWKBWriter* writer, const char writeSRID);
2317
2318/* ========== GeoJSON Reader ========== */
2319
2322 GEOSContextHandle_t handle);
2323
2326 GEOSGeoJSONReader* reader);
2327
2330 GEOSContextHandle_t handle,
2331 GEOSGeoJSONReader* reader,
2332 const char *geojson);
2333
2334/* ========== GeoJSON Writer ========== */
2335
2338 GEOSContextHandle_t handle);
2339
2342 GEOSGeoJSONWriter* writer);
2343
2346 GEOSContextHandle_t handle,
2347 GEOSGeoJSONWriter* writer,
2348 const GEOSGeometry* g,
2349 int indent);
2350
2353 GEOSContextHandle_t handle,
2354 GEOSGeoJSONWriter *writer,
2355 int dim);
2356
2359 GEOSContextHandle_t handle,
2360 GEOSGeoJSONWriter *writer);
2361
2363extern void GEOS_DLL GEOSFree_r(
2364 GEOSContextHandle_t handle,
2365 void *buffer);
2366
2374extern const char GEOS_DLL *GEOSversion(void);
2375
2376/*
2377* External code to GEOS can define GEOS_USE_ONLY_R_API
2378* to strip the non-reentrant API functions from this header,
2379* leaving only the "_r" compatible variants.
2380*/
2381#ifndef GEOS_USE_ONLY_R_API
2382
2383/* ========== Initialization, cleanup ================================= */
2389
2402extern void GEOS_DLL initGEOS(
2403 GEOSMessageHandler notice_function,
2404 GEOSMessageHandler error_function);
2405
2411extern void GEOS_DLL finishGEOS(void);
2412
2422extern void GEOS_DLL GEOSFree(void *buffer);
2423
2425
2426/* ========= Coordinate Sequence functions ========= */
2432
2440extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_create(unsigned int size, unsigned int dims);
2441
2450extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_createWithDimensions(unsigned int size, int hasZ, int hasM);
2451
2462extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_copyFromBuffer(const double* buf, unsigned int size, int hasZ, int hasM);
2463
2475extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_copyFromArrays(const double* x, const double* y, const double* z, const double* m, unsigned int size);
2476
2487extern int GEOS_DLL GEOSCoordSeq_copyToBuffer(const GEOSCoordSequence* s, double* buf, int hasZ, int hasM);
2488
2500extern int GEOS_DLL GEOSCoordSeq_copyToArrays(const GEOSCoordSequence* s, double* x, double* y, double* z, double* m);
2501
2509
2516
2524extern char GEOS_DLL GEOSCoordSeq_hasZ(GEOSCoordSequence* s);
2525
2533extern char GEOS_DLL GEOSCoordSeq_hasM(GEOSCoordSequence* s);
2534
2544 unsigned int idx, double val);
2554 unsigned int idx, double val);
2564 unsigned int idx, double val);
2565
2575 unsigned int idx, double val);
2576
2588 unsigned int idx, double x, double y);
2601 unsigned int idx, double x, double y, double z);
2612 unsigned int idx, unsigned int dim, double val);
2613
2622extern int GEOS_DLL GEOSCoordSeq_getX(const GEOSCoordSequence* s,
2623 unsigned int idx, double *val);
2624
2633extern int GEOS_DLL GEOSCoordSeq_getY(const GEOSCoordSequence* s,
2634 unsigned int idx, double *val);
2635
2644extern int GEOS_DLL GEOSCoordSeq_getZ(const GEOSCoordSequence* s,
2645 unsigned int idx, double *val);
2646
2655extern int GEOS_DLL GEOSCoordSeq_getM(const GEOSCoordSequence* s,
2656 unsigned int idx, double *val);
2657
2668extern int GEOS_DLL GEOSCoordSeq_getXY(const GEOSCoordSequence* s,
2669 unsigned int idx, double *x, double *y);
2681extern int GEOS_DLL GEOSCoordSeq_getXYZ(const GEOSCoordSequence* s,
2682 unsigned int idx, double *x, double *y, double *z);
2692extern int GEOS_DLL GEOSCoordSeq_getOrdinate(const GEOSCoordSequence* s,
2693 unsigned int idx, unsigned int dim, double *val);
2694
2702extern int GEOS_DLL GEOSCoordSeq_getSize(
2703 const GEOSCoordSequence* s,
2704 unsigned int *size);
2705
2713extern int GEOS_DLL GEOSCoordSeq_getDimensions(
2714 const GEOSCoordSequence* s,
2715 unsigned int *dims);
2716
2726extern int GEOS_DLL GEOSCoordSeq_isCCW(
2727 const GEOSCoordSequence* s,
2728 char* is_ccw);
2729
2731
2732/* ========= Geometry Constructors ========= */
2738
2747
2757extern GEOSGeometry GEOS_DLL *GEOSGeom_createPointFromXY(double x, double y);
2758
2767
2776
2785
2794
2803
2818 GEOSGeometry* shell,
2819 GEOSGeometry** holes,
2820 unsigned int nholes);
2821
2830
2838
2848 unsigned int ncurves);
2849
2857
2872 GEOSGeometry* shell,
2873 GEOSGeometry** holes,
2874 unsigned int nholes);
2875
2883
2898 int type,
2899 GEOSGeometry** geoms,
2900 unsigned int ngeoms);
2901
2919 GEOSGeometry * collection,
2920 unsigned int * ngeoms);
2921
2931
2943 double xmin, double ymin,
2944 double xmax, double ymax);
2945
2953extern GEOSGeometry GEOS_DLL *GEOSGeom_clone(const GEOSGeometry* g);
2954
2960extern void GEOS_DLL GEOSGeom_destroy(GEOSGeometry* g);
2961
2963
2964/* ========== Geometry info ========== */
2969
2979extern char GEOS_DLL *GEOSGeomType(const GEOSGeometry* g);
2980
2987extern int GEOS_DLL GEOSGeomTypeId(const GEOSGeometry* g);
2988
2995extern int GEOS_DLL GEOSGetSRID(const GEOSGeometry* g);
2996
3007extern void GEOS_DLL *GEOSGeom_getUserData(const GEOSGeometry* g);
3008
3021extern int GEOS_DLL GEOSGetNumGeometries(const GEOSGeometry* g);
3022
3038extern const GEOSGeometry GEOS_DLL *GEOSGetGeometryN(
3039 const GEOSGeometry* g,
3040 int n);
3041
3051extern double GEOS_DLL GEOSGeom_getPrecision(const GEOSGeometry *g);
3052
3060extern int GEOS_DLL GEOSGetNumInteriorRings(const GEOSGeometry* g);
3061
3069extern int GEOS_DLL GEOSGeomGetNumPoints(const GEOSGeometry* g);
3070
3079extern int GEOS_DLL GEOSGeomGetX(const GEOSGeometry *g, double *x);
3080
3089extern int GEOS_DLL GEOSGeomGetY(const GEOSGeometry *g, double *y);
3090
3100extern int GEOS_DLL GEOSGeomGetZ(const GEOSGeometry *g, double *z);
3101
3111extern int GEOS_DLL GEOSGeomGetM(const GEOSGeometry *g, double *m);
3112
3122extern const GEOSGeometry GEOS_DLL *GEOSGetInteriorRingN(
3123 const GEOSGeometry* g,
3124 int n);
3125
3134extern const GEOSGeometry GEOS_DLL *GEOSGetExteriorRing(
3135 const GEOSGeometry* g);
3136
3144extern int GEOS_DLL GEOSGetNumCoordinates(
3145 const GEOSGeometry* g);
3146
3157 const GEOSGeometry* g);
3158
3171extern int GEOS_DLL GEOSGeom_getDimensions(
3172 const GEOSGeometry* g);
3173
3186 const GEOSGeometry* g);
3187
3196extern int GEOS_DLL GEOSGeom_getXMin(const GEOSGeometry* g, double* value);
3197
3206extern int GEOS_DLL GEOSGeom_getYMin(const GEOSGeometry* g, double* value);
3207
3216extern int GEOS_DLL GEOSGeom_getXMax(const GEOSGeometry* g, double* value);
3217
3226extern int GEOS_DLL GEOSGeom_getYMax(const GEOSGeometry* g, double* value);
3227
3241extern int GEOS_DLL GEOSGeom_getExtent(
3242 const GEOSGeometry* g,
3243 double* xmin,
3244 double* ymin,
3245 double* xmax,
3246 double* ymax);
3247
3257extern GEOSGeometry GEOS_DLL *GEOSGeomGetPointN(const GEOSGeometry *g, int n);
3258
3268
3278
3279
3288extern char GEOS_DLL GEOSisEmpty(const GEOSGeometry* g);
3289
3298extern char GEOS_DLL GEOSisRing(const GEOSGeometry* g);
3299
3306extern char GEOS_DLL GEOSHasZ(const GEOSGeometry* g);
3307
3315extern char GEOS_DLL GEOSHasM(const GEOSGeometry* g);
3316
3325extern char GEOS_DLL GEOSisClosed(const GEOSGeometry *g);
3326
3328
3329/* ==================================================================================== */
3334
3341extern void GEOS_DLL GEOSSetSRID(GEOSGeometry* g, int SRID);
3342
3350extern void GEOS_DLL GEOSGeom_setUserData(GEOSGeometry* g, void* userData);
3351
3371extern int GEOS_DLL GEOSNormalize(GEOSGeometry* g);
3372
3383extern int GEOS_DLL GEOSOrientPolygons(GEOSGeometry* g,
3384 int exteriorCW);
3385
3387
3388/* ========== Validity checking ============================================================ */
3394
3402extern char GEOS_DLL GEOSisSimple(const GEOSGeometry* g);
3403
3418extern char GEOS_DLL GEOSisSimpleDetail(
3419 const GEOSGeometry* g,
3420 int findAllLocations,
3421 GEOSGeometry** locations);
3422
3436extern char GEOS_DLL GEOSisValid(const GEOSGeometry* g);
3437
3447extern char GEOS_DLL *GEOSisValidReason(const GEOSGeometry *g);
3448
3463extern char GEOS_DLL GEOSisValidDetail(
3464 const GEOSGeometry* g,
3465 int flags,
3466 char** reason,
3467 GEOSGeometry** location);
3468
3477 const GEOSGeometry* g);
3478
3493 const GEOSGeometry* g,
3494 const GEOSMakeValidParams *makeValidParams);
3495
3505
3514
3525 enum GEOSMakeValidMethods method);
3526
3539 int keepCollapsed);
3540
3560extern int GEOS_DLL GEOSMinimumClearance(const GEOSGeometry* g, double* d);
3561
3574
3593 const GEOSGeometry* g,
3594 double tolerance);
3595
3597
3598/* ========= Metric functions ================================================== */
3603
3611extern int GEOS_DLL GEOSArea(
3612 const GEOSGeometry* g,
3613 double *area);
3614
3622extern int GEOS_DLL GEOSLength(
3623 const GEOSGeometry* g,
3624 double *length);
3625
3635extern int GEOS_DLL GEOSGeomGetLength(
3636 const GEOSGeometry *g,
3637 double *length);
3638
3640
3641/* ========== Distance functions ================================================ */
3647
3656extern int GEOS_DLL GEOSDistance(
3657 const GEOSGeometry* g1,
3658 const GEOSGeometry* g2,
3659 double *dist);
3660
3671extern char GEOS_DLL GEOSDistanceWithin(
3672 const GEOSGeometry* g1,
3673 const GEOSGeometry* g2,
3674 double dist);
3675
3689extern int GEOS_DLL GEOSDistanceIndexed(
3690 const GEOSGeometry* g1,
3691 const GEOSGeometry* g2,
3692 double *dist);
3693
3706 const GEOSGeometry* g1,
3707 const GEOSGeometry* g2);
3708
3720extern int GEOS_DLL GEOSHausdorffDistance(
3721 const GEOSGeometry *g1,
3722 const GEOSGeometry *g2,
3723 double *dist);
3724
3725
3741 const GEOSGeometry *g1,
3742 const GEOSGeometry *g2,
3743 double *dist,
3744 double *p1x, double *p1y,
3745 double *p2x, double *p2y);
3746
3747
3748
3764 const GEOSGeometry *g1,
3765 const GEOSGeometry *g2,
3766 double densifyFrac,
3767 double *dist);
3768
3789 const GEOSGeometry *g1,
3790 const GEOSGeometry *g2,
3791 double densifyFrac,
3792 double *dist,
3793 double* p1x, double* p1y,
3794 double* p2x, double* p2y);
3795
3809extern int GEOS_DLL GEOSFrechetDistance(
3810 const GEOSGeometry *g1,
3811 const GEOSGeometry *g2,
3812 double *dist);
3813
3830extern int GEOS_DLL GEOSFrechetDistanceDensify(
3831 const GEOSGeometry *g1,
3832 const GEOSGeometry *g2,
3833 double densifyFrac,
3834 double *dist);
3835
3837
3838/* ========== Linear referencing functions */
3844
3854extern double GEOS_DLL GEOSProject(const GEOSGeometry* line,
3855 const GEOSGeometry* point);
3856
3868extern GEOSGeometry GEOS_DLL *GEOSInterpolate(const GEOSGeometry* line,
3869 double d);
3870
3881extern double GEOS_DLL GEOSProjectNormalized(const GEOSGeometry* line,
3882 const GEOSGeometry* point);
3883
3894 const GEOSGeometry *line,
3895 double proportion);
3896
3898
3899/* ========== Overlay functions ========== */
3905
3916extern GEOSGeometry GEOS_DLL *GEOSIntersection(const GEOSGeometry* g1, const GEOSGeometry* g2);
3917
3932extern GEOSGeometry GEOS_DLL *GEOSIntersectionPrec(const GEOSGeometry* g1, const GEOSGeometry* g2, double gridSize);
3933
3945 const GEOSGeometry* ga,
3946 const GEOSGeometry* gb);
3947
3964 const GEOSGeometry* ga,
3965 const GEOSGeometry* gb,
3966 double gridSize);
3967
3980 const GEOSGeometry* ga,
3981 const GEOSGeometry* gb);
3982
4000 const GEOSGeometry* ga,
4001 const GEOSGeometry* gb,
4002 double gridSize);
4003
4014extern GEOSGeometry GEOS_DLL *GEOSUnion(
4015 const GEOSGeometry* ga,
4016 const GEOSGeometry* gb);
4017
4034 const GEOSGeometry* ga,
4035 const GEOSGeometry* gb,
4036 double gridSize);
4037
4049extern GEOSGeometry GEOS_DLL *GEOSUnaryUnion(const GEOSGeometry* g);
4050
4067 const GEOSGeometry* g,
4068 double gridSize);
4069
4081
4098 const GEOSGeometry* g,
4099 double xmin, double ymin,
4100 double xmax, double ymax);
4101
4126 const GEOSGeometry* g,
4127 double xmin, double ymin,
4128 double xmax, double ymax,
4129 unsigned nx, unsigned ny,
4130 int includeExterior);
4131
4149 const GEOSGeometry* g,
4150 double xmin, double ymin,
4151 double xmax, double ymax,
4152 unsigned nx, unsigned ny,
4153 float* buf);
4154
4174 const GEOSGeometry* g1,
4175 const GEOSGeometry* g2);
4177
4178/* ========== Clustering functions ========== */
4185static const size_t GEOS_CLUSTER_NONE = (size_t) -1;
4186
4188
4198extern GEOSClusterInfo GEOS_DLL* GEOSClusterDBSCAN(const GEOSGeometry* g, double eps, unsigned minPoints);
4199
4209extern GEOSClusterInfo GEOS_DLL* GEOSClusterGeometryDistance(const GEOSGeometry* g, double d);
4210
4220
4230extern GEOSClusterInfo GEOS_DLL* GEOSClusterEnvelopeDistance(const GEOSGeometry* g, double d);
4231
4241
4250extern size_t GEOS_DLL GEOSClusterInfo_getNumClusters(const GEOSClusterInfo* clusters);
4251
4261extern size_t GEOS_DLL GEOSClusterInfo_getClusterSize(const GEOSClusterInfo* clusters, size_t i );
4262
4272extern size_t GEOS_DLL* GEOSClusterInfo_getClustersForInputs(const GEOSClusterInfo* clusters);
4273
4282extern const size_t GEOS_DLL* GEOSClusterInfo_getInputsForClusterN(const GEOSClusterInfo* clusters, size_t i);
4283
4291extern void GEOS_DLL GEOSClusterInfo_destroy(GEOSClusterInfo* clusters);
4292
4294
4295/* ========== Buffer related functions ========== */
4300
4312extern GEOSGeometry GEOS_DLL *GEOSBuffer(const GEOSGeometry* g,
4313 double width, int quadsegs);
4314
4324
4331extern void GEOS_DLL GEOSBufferParams_destroy(GEOSBufferParams* parms);
4332
4342 int style);
4343
4353 int joinStyle);
4354
4368 double mitreLimit);
4369
4382 int quadSegs);
4383
4396 int singleSided);
4397
4409 const GEOSGeometry* g,
4410 const GEOSBufferParams* p,
4411 double width);
4412
4427 const GEOSGeometry* g,
4428 double width,
4429 int quadsegs,
4430 int endCapStyle,
4431 int joinStyle,
4432 double mitreLimit);
4433
4457 double width, int quadsegs, int joinStyle, double mitreLimit);
4458
4460
4461
4462/* ====================================================================== */
4468
4481
4482
4506extern int GEOS_DLL GEOSCoverageIsValid(
4507 const GEOSGeometry* input,
4508 double gapWidth,
4509 GEOSGeometry** invalidEdges);
4510
4537 const GEOSGeometry* input,
4538 double tolerance,
4539 int preserveBoundary);
4540
4549extern GEOSCoverageCleanParams GEOS_DLL *
4551
4558extern void GEOS_DLL
4560 GEOSCoverageCleanParams* params);
4561
4582extern int GEOS_DLL
4585 double snappingDistance);
4586
4605extern int GEOS_DLL
4608 double gapMaximumWidth);
4609
4610/*
4611* Sets the overlap merge strategy to use, using one from \ref GEOSOverlapMerge.
4612* Overlaps are merged with an adjacent polygon chosen according to a specified merge strategy.
4613* The supported strategies are:
4614*
4615* * **Longest Border**: (default) merge with the polygon with longest shared border (GEOS_MERGE_LONGEST_BORDER.)
4616* * **Maximum/Minimum Area**: merge with the polygon with largest or smallest area (GEOS_MERGE_MAX_AREA, GEOS_MERGE_MIN_AREA.)
4617* * **Minimum Index**: merge with the polygon with the lowest index in the input array (GEOS_MERGE_MIN_INDEX.)
4618*
4619* This allows sorting the input according to some criteria to provide a priority
4620* for merging gaps.
4621*
4622* The default is GEOS_MERGE_LONGEST_BORDER.
4623*
4624* \see geos::coverage::CoverageCleaner::setGapMaximumWidth
4625* \param params The GEOSCoverageCleanParams to operate on
4626* \param overlapMergeStrategy One of \ref GEOSOverlapMerge strategies
4627* \return 0 on exception, 1 on success.
4628*
4629* \since 3.14
4630*/
4631extern int GEOS_DLL
4632GEOSCoverageCleanParams_setOverlapMergeStrategy(
4634 int overlapMergeStrategy);
4635
4657extern GEOSGeometry GEOS_DLL *
4659 const GEOSGeometry* input,
4660 const GEOSCoverageCleanParams* params
4661);
4662
4664extern GEOSGeometry GEOS_DLL *
4666 const GEOSGeometry* input);
4667
4668
4669
4670
4672
4673
4674/* ========== Construction Operations ========== */
4679
4688extern GEOSGeometry GEOS_DLL *GEOSEnvelope(const GEOSGeometry* g);
4689
4703extern GEOSGeometry GEOS_DLL *GEOSBoundary(const GEOSGeometry* g);
4704
4714extern GEOSGeometry GEOS_DLL *GEOSConvexHull(const GEOSGeometry* g);
4715
4747 const GEOSGeometry* g,
4748 double ratio,
4749 unsigned int allowHoles);
4750
4781 const GEOSGeometry* g,
4782 double length,
4783 unsigned int allowHoles);
4784
4824 const GEOSGeometry* g,
4825 double lengthRatio,
4826 unsigned int isTight,
4827 unsigned int isHolesAllowed);
4828
4849 const GEOSGeometry* g,
4850 unsigned int isOuter,
4851 double vertexNumFraction);
4852
4853
4863
4886 const GEOSGeometry* g,
4887 unsigned int isOuter,
4888 unsigned int parameterMode,
4889 double parameter);
4890
4905
4931 const GEOSGeometry* g,
4932 double tolerance);
4933
4968 const GEOSGeometry* obstacles,
4969 const GEOSGeometry* boundary,
4970 double tolerance);
4971
4985extern GEOSGeometry GEOS_DLL *GEOSMinimumWidth(const GEOSGeometry* g);
4986
4987
4998
5008extern GEOSGeometry GEOS_DLL *GEOSGetCentroid(const GEOSGeometry* g);
5009
5023 const GEOSGeometry* g,
5024 double* radius,
5025 GEOSGeometry** center);
5026
5041 const GEOSGeometry *g,
5042 double tolerance,
5043 int onlyEdges);
5044
5057 const GEOSGeometry *g);
5058
5069
5091 const GEOSGeometry *g,
5092 const GEOSGeometry *env,
5093 double tolerance,
5094 int flags);
5095
5097
5098/* ============================================================== */
5103
5114extern GEOSGeometry GEOS_DLL *GEOSNode(const GEOSGeometry* g);
5115
5159 const GEOSGeometry * const geoms[],
5160 unsigned int ngeoms);
5161
5177 const GEOSGeometry * const geoms[],
5178 unsigned int ngeoms);
5179
5194 const GEOSGeometry * const geoms[],
5195 unsigned int ngeoms);
5196
5212 const GEOSGeometry* input,
5213 GEOSGeometry** cuts,
5214 GEOSGeometry** dangles,
5215 GEOSGeometry** invalid);
5216
5228extern GEOSGeometry GEOS_DLL *GEOSBuildArea(const GEOSGeometry* g);
5229
5231
5232/* ============================================================== */
5237
5251extern GEOSGeometry GEOS_DLL *GEOSDensify(
5252 const GEOSGeometry* g,
5253 double tolerance);
5254
5266extern GEOSGeometry GEOS_DLL *GEOSLineMerge(const GEOSGeometry* g);
5267
5282
5295 const GEOSGeometry* g,
5296 double start_fraction,
5297 double end_fraction);
5298
5309extern GEOSGeometry GEOS_DLL *GEOSReverse(const GEOSGeometry* g);
5310
5327 const GEOSGeometry* g,
5328 double tolerance);
5329
5347 const GEOSGeometry* g,
5348 double tolerance);
5349
5361 const GEOSGeometry* g);
5362
5378extern int GEOS_DLL GEOSHilbertCode(
5379 const GEOSGeometry *geom,
5380 const GEOSGeometry* extent,
5381 unsigned int level,
5382 unsigned int *code
5383);
5384
5400 const GEOSGeometry* g,
5401 GEOSTransformXYCallback callback,
5402 void* userdata);
5403
5419 const GEOSGeometry* g,
5420 GEOSTransformXYZCallback callback,
5421 void* userdata);
5422
5444extern GEOSGeometry GEOS_DLL *GEOSSnap(
5445 const GEOSGeometry* input,
5446 const GEOSGeometry* snap_target,
5447 double tolerance);
5448
5479 const GEOSGeometry *g,
5480 double gridSize,
5481 int flags);
5482
5484
5485/* ============================================================== */
5490
5499extern char GEOS_DLL GEOSDisjoint(const GEOSGeometry* g1, const GEOSGeometry* g2);
5500
5510extern char GEOS_DLL GEOSTouches(const GEOSGeometry* g1, const GEOSGeometry* g2);
5511
5520extern char GEOS_DLL GEOSIntersects(const GEOSGeometry* g1, const GEOSGeometry* g2);
5521
5531extern char GEOS_DLL GEOSCrosses(const GEOSGeometry* g1, const GEOSGeometry* g2);
5532
5542extern char GEOS_DLL GEOSWithin(const GEOSGeometry* g1, const GEOSGeometry* g2);
5543
5553extern char GEOS_DLL GEOSContains(const GEOSGeometry* g1, const GEOSGeometry* g2);
5554
5564extern char GEOS_DLL GEOSOverlaps(const GEOSGeometry* g1, const GEOSGeometry* g2);
5565
5574extern char GEOS_DLL GEOSEquals(const GEOSGeometry* g1, const GEOSGeometry* g2);
5575
5586extern char GEOS_DLL GEOSCovers(const GEOSGeometry* g1, const GEOSGeometry* g2);
5587
5598extern char GEOS_DLL GEOSCoveredBy(const GEOSGeometry* g1, const GEOSGeometry* g2);
5599
5617extern char GEOS_DLL GEOSEqualsExact(
5618 const GEOSGeometry* g1,
5619 const GEOSGeometry* g2,
5620 double tolerance);
5621
5634extern char GEOS_DLL GEOSEqualsIdentical(
5635 const GEOSGeometry* g1,
5636 const GEOSGeometry* g2);
5637
5653extern char GEOS_DLL GEOSRelatePattern(
5654 const GEOSGeometry* g1,
5655 const GEOSGeometry* g2,
5656 const char *imPattern);
5657
5668extern char GEOS_DLL *GEOSRelate(
5669 const GEOSGeometry* g1,
5670 const GEOSGeometry* g2);
5671
5681extern char GEOS_DLL GEOSRelatePatternMatch(
5682 const char *intMatrix,
5683 const char *imPattern);
5684
5698extern char GEOS_DLL *GEOSRelateBoundaryNodeRule(
5699 const GEOSGeometry* g1,
5700 const GEOSGeometry* g2,
5701 int bnr);
5702
5704
5705/* ========== Prepared Geometry Binary predicates ========== */
5706
5718
5732extern const GEOSPreparedGeometry GEOS_DLL *GEOSPrepare(const GEOSGeometry* g);
5733
5742extern void GEOS_DLL GEOSPreparedGeom_destroy(const GEOSPreparedGeometry* g);
5743
5754extern char GEOS_DLL GEOSPreparedContains(
5755 const GEOSPreparedGeometry* pg1,
5756 const GEOSGeometry* g2);
5757
5769extern char GEOS_DLL GEOSPreparedContainsXY(
5770 const GEOSPreparedGeometry* pg1,
5771 double x,
5772 double y);
5773
5784extern char GEOS_DLL GEOSPreparedContainsProperly(
5785 const GEOSPreparedGeometry* pg1,
5786 const GEOSGeometry* g2);
5787
5798extern char GEOS_DLL GEOSPreparedCoveredBy(
5799 const GEOSPreparedGeometry* pg1,
5800 const GEOSGeometry* g2);
5801
5812extern char GEOS_DLL GEOSPreparedCovers(
5813 const GEOSPreparedGeometry* pg1,
5814 const GEOSGeometry* g2);
5815
5826extern char GEOS_DLL GEOSPreparedCrosses(
5827 const GEOSPreparedGeometry* pg1,
5828 const GEOSGeometry* g2);
5829
5840extern char GEOS_DLL GEOSPreparedDisjoint(
5841 const GEOSPreparedGeometry* pg1,
5842 const GEOSGeometry* g2);
5843
5854extern char GEOS_DLL GEOSPreparedIntersects(
5855 const GEOSPreparedGeometry* pg1,
5856 const GEOSGeometry* g2);
5857
5869extern char GEOS_DLL GEOSPreparedIntersectsXY(
5870 const GEOSPreparedGeometry* pg1,
5871 double x,
5872 double y);
5873
5884extern char GEOS_DLL GEOSPreparedOverlaps(
5885 const GEOSPreparedGeometry* pg1,
5886 const GEOSGeometry* g2);
5887
5898extern char GEOS_DLL GEOSPreparedTouches(
5899 const GEOSPreparedGeometry* pg1,
5900 const GEOSGeometry* g2);
5901
5912extern char GEOS_DLL GEOSPreparedWithin(
5913 const GEOSPreparedGeometry* pg1,
5914 const GEOSGeometry* g2);
5915
5929extern char GEOS_DLL * GEOSPreparedRelate(
5930 const GEOSPreparedGeometry* pg1,
5931 const GEOSGeometry* g2);
5932
5949extern char GEOS_DLL GEOSPreparedRelatePattern(
5950 const GEOSPreparedGeometry* pg1,
5951 const GEOSGeometry* g2,
5952 const char* imPattern);
5953
5967 const GEOSPreparedGeometry* pg1,
5968 const GEOSGeometry* g2);
5969
5983extern int GEOS_DLL GEOSPreparedDistance(
5984 const GEOSPreparedGeometry* pg1,
5985 const GEOSGeometry* g2,
5986 double *dist);
5987
6002extern char GEOS_DLL GEOSPreparedDistanceWithin(
6003 const GEOSPreparedGeometry* pg1,
6004 const GEOSGeometry* g2,
6005 double dist);
6006
6008
6009/* ========== STRtree functions ========== */
6015
6028extern GEOSSTRtree GEOS_DLL *GEOSSTRtree_create(size_t nodeCapacity);
6029
6042extern int GEOS_DLL GEOSSTRtree_build(GEOSSTRtree *tree);
6043
6056extern void GEOS_DLL GEOSSTRtree_insert(
6057 GEOSSTRtree *tree,
6058 const GEOSGeometry *g,
6059 void *item);
6060
6075extern void GEOS_DLL GEOSSTRtree_query(
6076 GEOSSTRtree *tree,
6077 const GEOSGeometry *g,
6078 GEOSQueryCallback callback,
6079 void *userdata);
6080
6095extern const GEOSGeometry GEOS_DLL *GEOSSTRtree_nearest(
6096 GEOSSTRtree *tree,
6097 const GEOSGeometry* geom);
6098
6119extern const void GEOS_DLL *GEOSSTRtree_nearest_generic(
6120 GEOSSTRtree *tree,
6121 const void* item,
6122 const GEOSGeometry* itemEnvelope,
6123 GEOSDistanceCallback distancefn,
6124 void* userdata);
6125
6136extern void GEOS_DLL GEOSSTRtree_iterate(
6137 GEOSSTRtree *tree,
6138 GEOSQueryCallback callback,
6139 void *userdata);
6140
6155extern char GEOS_DLL GEOSSTRtree_remove(
6156 GEOSSTRtree *tree,
6157 const GEOSGeometry *g,
6158 void *item);
6159
6170extern void GEOS_DLL GEOSSTRtree_destroy(GEOSSTRtree *tree);
6171
6173
6174/* ========== Algorithms ====================================================== */
6179
6198extern int GEOS_DLL GEOSSegmentIntersection(
6199 double ax0, double ay0,
6200 double ax1, double ay1,
6201 double bx0, double by0,
6202 double bx1, double by1,
6203 double* cx, double* cy);
6204
6220extern int GEOS_DLL GEOSOrientationIndex(
6221 double Ax, double Ay,
6222 double Bx, double By,
6223 double Px, double Py);
6224
6226
6227/* ========= Reader and Writer APIs ========= */
6228
6233/* ========= WKT Reader ========= */
6234
6241
6247extern void GEOS_DLL GEOSWKTReader_destroy(GEOSWKTReader* reader);
6248
6258 GEOSWKTReader* reader,
6259 const char *wkt);
6260
6270 GEOSWKTReader *reader,
6271 char doFix);
6272
6273/* ========= WKT Writer ========= */
6274
6281
6287extern void GEOS_DLL GEOSWKTWriter_destroy(
6288 GEOSWKTWriter* writer);
6289
6299extern char GEOS_DLL *GEOSWKTWriter_write(
6300 GEOSWKTWriter* writer,
6301 const GEOSGeometry* g);
6302
6317extern void GEOS_DLL GEOSWKTWriter_setTrim(
6318 GEOSWKTWriter *writer,
6319 char trim);
6320
6330 GEOSWKTWriter *writer,
6331 int precision);
6332
6342 GEOSWKTWriter *writer,
6343 int dim);
6344
6353
6364extern void GEOS_DLL GEOSWKTWriter_setOld3D(
6365 GEOSWKTWriter *writer,
6366 int useOld3D);
6368
6369/* ============================================================================== */
6374
6375/* ========== WKB Reader ========== */
6382
6388extern void GEOS_DLL GEOSWKBReader_destroy(
6389 GEOSWKBReader* reader);
6390
6400 GEOSWKBReader *reader,
6401 char doFix);
6402
6412 GEOSWKBReader* reader,
6413 const unsigned char *wkb,
6414 size_t size);
6415
6425 GEOSWKBReader* reader,
6426 const unsigned char *hex,
6427 size_t size);
6428
6429/* ========== WKB Writer ========== */
6430
6437
6443extern void GEOS_DLL GEOSWKBWriter_destroy(GEOSWKBWriter* writer);
6444
6454extern unsigned char GEOS_DLL *GEOSWKBWriter_write(
6455 GEOSWKBWriter* writer,
6456 const GEOSGeometry* g,
6457 size_t *size);
6458
6468extern unsigned char GEOS_DLL *GEOSWKBWriter_writeHEX(
6469 GEOSWKBWriter* writer,
6470 const GEOSGeometry* g,
6471 size_t *size);
6472
6482 const GEOSWKBWriter* writer);
6483
6492 GEOSWKBWriter* writer,
6493 int newDimension);
6494
6504extern int GEOS_DLL GEOSWKBWriter_getByteOrder(
6505 const GEOSWKBWriter* writer);
6506
6514extern void GEOS_DLL GEOSWKBWriter_setByteOrder(
6515 GEOSWKBWriter* writer,
6516 int byteOrder);
6517
6532extern int GEOS_DLL GEOSWKBWriter_getFlavor(
6533 const GEOSWKBWriter* writer);
6534
6543extern void GEOS_DLL GEOSWKBWriter_setFlavor(
6544 GEOSWKBWriter* writer,
6545 int flavor);
6546
6552extern char GEOS_DLL GEOSWKBWriter_getIncludeSRID(
6553 const GEOSWKBWriter* writer);
6554
6562extern void GEOS_DLL GEOSWKBWriter_setIncludeSRID(
6563 GEOSWKBWriter* writer,
6564 const char writeSRID);
6565
6567
6568/* ============================================================================= */
6573/* ========= GeoJSON Reader ========= */
6574
6582
6589extern void GEOS_DLL GEOSGeoJSONReader_destroy(GEOSGeoJSONReader* reader);
6590
6602 GEOSGeoJSONReader* reader,
6603 const char *geojson);
6604
6605/* ========= GeoJSON Writer ========= */
6606
6614
6621extern void GEOS_DLL GEOSGeoJSONWriter_destroy(GEOSGeoJSONWriter* writer);
6622
6634 GEOSGeoJSONWriter* writer,
6635 const GEOSGeometry* g,
6636 int indent);
6637
6647 GEOSGeoJSONWriter *writer,
6648 int dim);
6649
6658
6660
6661#endif /* #ifndef GEOS_USE_ONLY_R_API */
6662
6663/* ====================================================================== */
6664/* DEPRECATIONS */
6665/* ====================================================================== */
6666
6672
6677 const GEOSGeometry* g,
6678 double width, int quadsegs,
6679 int joinStyle, double mitreLimit,
6680 int leftSide);
6681
6686 GEOSContextHandle_t handle,
6687 const GEOSGeometry* g,
6688 double width, int quadsegs,
6689 int joinStyle, double mitreLimit,
6690 int leftSide);
6691
6697 GEOSMessageHandler notice_function,
6698 GEOSMessageHandler error_function);
6699
6703extern void GEOS_DLL finishGEOS_r(GEOSContextHandle_t handle);
6704
6709 GEOSContextHandle_t handle,
6710 const char *wkt);
6711
6715extern char GEOS_DLL *GEOSGeomToWKT_r(
6716 GEOSContextHandle_t handle,
6717 const GEOSGeometry* g);
6718
6722extern int GEOS_DLL GEOS_getWKBOutputDims_r(
6723 GEOSContextHandle_t handle);
6724
6728extern int GEOS_DLL GEOS_setWKBOutputDims_r(
6729 GEOSContextHandle_t handle,
6730 int newDims);
6731
6735extern int GEOS_DLL GEOS_getWKBByteOrder_r(
6736 GEOSContextHandle_t handle);
6737
6741extern int GEOS_DLL GEOS_setWKBByteOrder_r(
6742 GEOSContextHandle_t handle,
6743 int byteOrder);
6744
6749 GEOSContextHandle_t handle,
6750 const unsigned char *wkb,
6751 size_t size);
6752
6756extern unsigned char GEOS_DLL *GEOSGeomToWKB_buf_r(
6757 GEOSContextHandle_t handle,
6758 const GEOSGeometry* g,
6759 size_t *size);
6760
6765 GEOSContextHandle_t handle,
6766 const unsigned char *hex,
6767 size_t size);
6768
6772extern unsigned char GEOS_DLL *GEOSGeomToHEX_buf_r(
6773 GEOSContextHandle_t handle,
6774 const GEOSGeometry* g,
6775 size_t *size);
6776
6780extern GEOSGeometry GEOS_DLL *GEOSGeomFromWKT(const char *wkt);
6781
6785extern char GEOS_DLL *GEOSGeomToWKT(const GEOSGeometry* g);
6786
6790extern int GEOS_DLL GEOS_getWKBOutputDims(void);
6791
6795extern int GEOS_DLL GEOS_setWKBOutputDims(int newDims);
6796
6800extern int GEOS_DLL GEOS_getWKBByteOrder(void);
6801
6805extern int GEOS_DLL GEOS_setWKBByteOrder(int byteOrder);
6806
6810extern GEOSGeometry GEOS_DLL *GEOSGeomFromWKB_buf(const unsigned char *wkb, size_t size);
6811
6815extern unsigned char GEOS_DLL *GEOSGeomToWKB_buf(const GEOSGeometry* g, size_t *size);
6816
6820extern GEOSGeometry GEOS_DLL *GEOSGeomFromHEX_buf(const unsigned char *hex, size_t size);
6821
6825extern unsigned char GEOS_DLL *GEOSGeomToHEX_buf(const GEOSGeometry* g, size_t *size);
6826
6831
6836 GEOSContextHandle_t handle,
6837 const GEOSGeometry* g);
6838
6840
6841/* ====================================================================== */
6842/* END DEPRECATIONS */
6843/* ====================================================================== */
6844
6845
6846#ifdef __cplusplus
6847} // extern "C"
6848#endif
6849
6850#endif /* #ifndef GEOS_C_H_INCLUDED */
int GEOS_setWKBOutputDims_r(GEOSContextHandle_t handle, int newDims)
GEOSGeometry * GEOSMaximumInscribedCircle_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double tolerance)
int GEOSBufferParams_setEndCapStyle_r(GEOSContextHandle_t handle, GEOSBufferParams *p, int style)
char GEOSisEmpty_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
char GEOSisSimple(const GEOSGeometry *g)
void GEOSWKBWriter_setByteOrder(GEOSWKBWriter *writer, int byteOrder)
GEOSGeometry * GEOSIntersectionPrec_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double gridSize)
const GEOSCoordSequence * GEOSGeom_getCoordSeq(const GEOSGeometry *g)
int GEOSCoordSeq_setZ_r(GEOSContextHandle_t handle, GEOSCoordSequence *s, unsigned int idx, double val)
void GEOSGeom_setUserData_r(GEOSContextHandle_t handle, GEOSGeometry *g, void *userData)
GEOSGeometry * GEOSGeom_createEmptyPoint(void)
GEOSGeometry * GEOSReverse_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
int GEOS_getWKBOutputDims_r(GEOSContextHandle_t handle)
GEOSGeometry * GEOSGeom_createEmptyCompoundCurve_r(GEOSContextHandle_t handle)
int GEOSGeomGetM(const GEOSGeometry *g, double *m)
GEOSGeometry * GEOSPolygonHullSimplify(const GEOSGeometry *g, unsigned int isOuter, double vertexNumFraction)
char GEOSisRing_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
int GEOSSTRtree_build_r(GEOSContextHandle_t handle, GEOSSTRtree *tree)
GEOSGeometry * GEOSGetCentroid(const GEOSGeometry *g)
void GEOSBufferParams_destroy_r(GEOSContextHandle_t handle, GEOSBufferParams *parms)
GEOSGeometry * GEOSCoverageCleanWithParams(const GEOSGeometry *input, const GEOSCoverageCleanParams *params)
GEOSGeometry * GEOSMinimumRotatedRectangle_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSCoordSequence * GEOSCoordSeq_create(unsigned int size, unsigned int dims)
char GEOSPreparedDistanceWithin(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2, double dist)
GEOSGeometry * GEOSWKBReader_read_r(GEOSContextHandle_t handle, GEOSWKBReader *reader, const unsigned char *wkb, size_t size)
GEOSClusterInfo * GEOSClusterEnvelopeIntersects(const GEOSGeometry *g)
GEOSClusterEnvelopeIntersects.
char * GEOSGeomToWKT_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSBufferWithParams_r(GEOSContextHandle_t handle, const GEOSGeometry *g, const GEOSBufferParams *p, double width)
int GEOSBufferParams_setQuadrantSegments_r(GEOSContextHandle_t handle, GEOSBufferParams *p, int quadSegs)
GEOSGeometry * GEOSConcaveHull_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double ratio, unsigned int allowHoles)
GEOSGeometry * GEOSSubdivideByGrid(const GEOSGeometry *g, double xmin, double ymin, double xmax, double ymax, unsigned nx, unsigned ny, int includeExterior)
void GEOSSTRtree_iterate(GEOSSTRtree *tree, GEOSQueryCallback callback, void *userdata)
const GEOSGeometry * GEOSGetExteriorRing_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSCoordSequence * GEOSPreparedNearestPoints(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
void(*) typedef void(* GEOSMessageHandler_r)(const char *message, void *userdata)
Definition geos_c.h:118
GEOSGeometry * GEOSDelaunayTriangulation_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double tolerance, int onlyEdges)
int GEOSGeoJSONWriter_getOutputDimension_r(GEOSContextHandle_t handle, GEOSGeoJSONWriter *writer)
GEOSGeometry ** GEOSGeom_releaseCollection(GEOSGeometry *collection, unsigned int *ngeoms)
void * GEOSGeom_getUserData_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
struct GEOSGeoJSONReader_t GEOSGeoJSONReader
Definition geos_c.h:2124
int GEOSCoverageCleanParams_setOverlapMergeStrategy_r(GEOSContextHandle_t extHandle, GEOSCoverageCleanParams *params, int overlapMergeStrategy)
char GEOSRelatePattern_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, const char *imPattern)
int GEOS_getWKBByteOrder(void)
void GEOSWKBReader_destroy(GEOSWKBReader *reader)
char GEOSPreparedContainsProperly(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
void GEOSCoverageCleanParams_destroy(GEOSCoverageCleanParams *params)
void GEOSSTRtree_iterate_r(GEOSContextHandle_t handle, GEOSSTRtree *tree, GEOSQueryCallback callback, void *userdata)
int GEOS_printDouble(double d, unsigned int precision, char *result)
GEOSGeoJSONWriter * GEOSGeoJSONWriter_create_r(GEOSContextHandle_t handle)
int GEOSDistanceIndexed(const GEOSGeometry *g1, const GEOSGeometry *g2, double *dist)
int GEOSGeom_getDimensions_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSClusterInfo * GEOSClusterEnvelopeDistance(const GEOSGeometry *g, double d)
GEOSClusterEnvelopeDistance.
int GEOSCoordSeq_getZ(const GEOSCoordSequence *s, unsigned int idx, double *val)
int GEOSHausdorffDistanceDensifyWithPoints_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double densifyFrac, double *dist, double *p1x, double *p1y, double *p2x, double *p2y)
const GEOSGeometry * GEOSSTRtree_nearest_r(GEOSContextHandle_t handle, GEOSSTRtree *tree, const GEOSGeometry *geom)
void GEOSWKTWriter_setOld3D_r(GEOSContextHandle_t handle, GEOSWKTWriter *writer, int useOld3D)
GEOSGeometry * GEOSGeom_createRectangle_r(GEOSContextHandle_t handle, double xmin, double ymin, double xmax, double ymax)
GEOSGeoJSONWriter * GEOSGeoJSONWriter_create(void)
int(* GEOSDistanceCallback)(const void *item1, const void *item2, double *distance, void *userdata)
Definition geos_c.h:305
GEOSGeometry * GEOSPolygonize_valid(const GEOSGeometry *const geoms[], unsigned int ngeoms)
int GEOSGridIntersectionFractions_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double xmin, double ymin, double xmax, double ymax, unsigned nx, unsigned ny, float *buf)
GEOSWKTReader * GEOSWKTReader_create(void)
struct GEOSWKBReader_t GEOSWKBReader
Definition geos_c.h:2110
char GEOSHasM(const GEOSGeometry *g)
GEOSGeometry * GEOSConcaveHullByLength_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double ratio, unsigned int allowHoles)
void GEOSGeom_destroy(GEOSGeometry *g)
int GEOS_setWKBByteOrder_r(GEOSContextHandle_t handle, int byteOrder)
GEOSGeometry * GEOSClipByRect(const GEOSGeometry *g, double xmin, double ymin, double xmax, double ymax)
GEOSGeometry * GEOSCoverageSimplifyVW_r(GEOSContextHandle_t extHandle, const GEOSGeometry *input, double tolerance, int preserveBoundary)
void(* GEOSMessageHandler)(GEOS_PRINTF_FORMAT const char *fmt,...) GEOS_PRINTF_FORMAT_ATTR(1
Definition geos_c.h:105
int GEOSDistance_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double *dist)
int GEOSGeomGetM_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *m)
char GEOSTouches(const GEOSGeometry *g1, const GEOSGeometry *g2)
struct GEOSCoordSeq_t GEOSCoordSequence
Definition geos_c.h:155
GEOSGeometry * GEOSGeomGetStartPoint_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
char GEOSRelatePatternMatch_r(GEOSContextHandle_t handle, const char *intMatrix, const char *imPattern)
void GEOSSTRtree_destroy(GEOSSTRtree *tree)
GEOSCoverageCleanParams * GEOSCoverageCleanParams_create_r(GEOSContextHandle_t extHandle)
GEOSGeometry * GEOSGeom_createCircularString_r(GEOSContextHandle_t handle, GEOSCoordSequence *s)
void GEOSBufferParams_destroy(GEOSBufferParams *parms)
const size_t * GEOSClusterInfo_getInputsForClusterN_r(GEOSContextHandle_t, const GEOSClusterInfo *clusters, size_t i)
int GEOSCoordSeq_setXY_r(GEOSContextHandle_t handle, GEOSCoordSequence *s, unsigned int idx, double x, double y)
GEOSGeomTypes
Definition geos_c.h:211
@ GEOS_MULTILINESTRING
Definition geos_c.h:223
@ GEOS_GEOMETRYCOLLECTION
Definition geos_c.h:227
@ GEOS_POINT
Definition geos_c.h:213
@ GEOS_MULTIPOLYGON
Definition geos_c.h:225
@ GEOS_LINEARRING
Definition geos_c.h:217
@ GEOS_POLYGON
Definition geos_c.h:219
@ GEOS_MULTIPOINT
Definition geos_c.h:221
@ GEOS_LINESTRING
Definition geos_c.h:215
GEOSGeometry * GEOSIntersectionPrec(const GEOSGeometry *g1, const GEOSGeometry *g2, double gridSize)
int GEOSGetNumInteriorRings(const GEOSGeometry *g)
char GEOSSTRtree_remove_r(GEOSContextHandle_t handle, GEOSSTRtree *tree, const GEOSGeometry *g, void *item)
void GEOSSTRtree_query_r(GEOSContextHandle_t handle, GEOSSTRtree *tree, const GEOSGeometry *g, GEOSQueryCallback callback, void *userdata)
GEOSGeometry * GEOSGeom_setPrecision_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double gridSize, int flags)
char GEOSEqualsExact(const GEOSGeometry *g1, const GEOSGeometry *g2, double tolerance)
GEOSGeometry * GEOSDisjointSubsetUnion_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSMessageHandler_r GEOSContext_setNoticeMessageHandler_r(GEOSContextHandle_t extHandle, GEOSMessageHandler_r nf, void *userData)
int GEOSCoordSeq_getOrdinate(const GEOSCoordSequence *s, unsigned int idx, unsigned int dim, double *val)
void GEOSWKBReader_destroy_r(GEOSContextHandle_t handle, GEOSWKBReader *reader)
GEOSGeometry * GEOSBoundary(const GEOSGeometry *g)
GEOSGeometry * GEOSUnaryUnion_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
int GEOSDistanceIndexed_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double *dist)
char GEOSCoordSeq_hasM(GEOSCoordSequence *s)
void GEOSWKTReader_destroy(GEOSWKTReader *reader)
GEOSGeometry * GEOSMinimumWidth(const GEOSGeometry *g)
char * GEOSWKTWriter_write(GEOSWKTWriter *writer, const GEOSGeometry *g)
GEOSGeometry * GEOSTopologyPreserveSimplify(const GEOSGeometry *g, double tolerance)
void(* GEOSQueryCallback)(void *item, void *userdata)
Definition geos_c.h:286
int GEOSCoordSeq_getSize_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s, unsigned int *size)
GEOSGeometry * GEOSGeomFromWKT(const char *wkt)
GEOSGeometry * GEOSWKBReader_read(GEOSWKBReader *reader, const unsigned char *wkb, size_t size)
GEOSGeometry * GEOSCoverageSimplifyVW(const GEOSGeometry *input, double tolerance, int preserveBoundary)
char GEOSContains_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
double GEOSProject_r(GEOSContextHandle_t handle, const GEOSGeometry *line, const GEOSGeometry *point)
void GEOSGeom_destroy_r(GEOSContextHandle_t handle, GEOSGeometry *g)
int GEOSHausdorffDistanceDensifyWithPoints(const GEOSGeometry *g1, const GEOSGeometry *g2, double densifyFrac, double *dist, double *p1x, double *p1y, double *p2x, double *p2y)
GEOSGeometry * GEOSTopologyPreserveSimplify_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double tolerance)
GEOSGeometry * GEOSSingleSidedBuffer_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double width, int quadsegs, int joinStyle, double mitreLimit, int leftSide)
GEOSContextHandle_t GEOS_init_r(void)
struct GEOSGeom_t GEOSGeometry
Definition geos_c.h:140
char GEOSPreparedContainsXY_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, double x, double y)
GEOSGeometry * GEOSGeom_createRectangle(double xmin, double ymin, double xmax, double ymax)
GEOSGeometry * GEOSGeom_setPrecision(const GEOSGeometry *g, double gridSize, int flags)
const void * GEOSSTRtree_nearest_generic_r(GEOSContextHandle_t handle, GEOSSTRtree *tree, const void *item, const GEOSGeometry *itemEnvelope, GEOSDistanceCallback distancefn, void *userdata)
int GEOSCoordSeq_getM_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s, unsigned int idx, double *val)
int GEOSGeomTypeId(const GEOSGeometry *g)
int GEOSSTRtree_build(GEOSSTRtree *tree)
GEOSGeometry * GEOSPolygonize_full_r(GEOSContextHandle_t handle, const GEOSGeometry *input, GEOSGeometry **cuts, GEOSGeometry **dangles, GEOSGeometry **invalidRings)
char GEOSCoveredBy_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
int GEOSGetNumCoordinates_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
void GEOSWKTWriter_destroy(GEOSWKTWriter *writer)
int GEOSCoordSeq_getDimensions_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s, unsigned int *dims)
GEOSGeometry * GEOSGeom_createEmptyCollection_r(GEOSContextHandle_t handle, int type)
GEOSGeometry * GEOSGeom_createEmptyCircularString_r(GEOSContextHandle_t handle)
void GEOSWKBWriter_setOutputDimension(GEOSWKBWriter *writer, int newDimension)
GEOSGeometry * GEOSEnvelope(const GEOSGeometry *g)
GEOSGeometry * GEOSGeom_createPoint_r(GEOSContextHandle_t handle, GEOSCoordSequence *s)
GEOSWKBFlavors
Definition geos_c.h:257
@ GEOS_WKB_ISO
Definition geos_c.h:261
@ GEOS_WKB_EXTENDED
Definition geos_c.h:259
GEOSGeometry * GEOSDensify(const GEOSGeometry *g, double tolerance)
GEOSGeometry * GEOSConstrainedDelaunayTriangulation_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
void GEOSWKBReader_setFixStructure_r(GEOSContextHandle_t handle, GEOSWKBReader *reader, char doFix)
void GEOSFree_r(GEOSContextHandle_t handle, void *buffer)
GEOSGeometry * GEOSGeom_extractUniquePoints(const GEOSGeometry *g)
int GEOSHausdorffDistance(const GEOSGeometry *g1, const GEOSGeometry *g2, double *dist)
int GEOSWKBWriter_getOutputDimension(const GEOSWKBWriter *writer)
void GEOSPreparedGeom_destroy_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *g)
char GEOSCoordSeq_hasZ_r(GEOSContextHandle_t handle, GEOSCoordSequence *s)
int GEOS_getWKBOutputDims(void)
GEOSGeometry * GEOSGeom_createPolygon_r(GEOSContextHandle_t handle, GEOSGeometry *shell, GEOSGeometry **holes, unsigned int nholes)
GEOSGeometry * GEOSGeomGetPointN(const GEOSGeometry *g, int n)
const char * GEOSversion(void)
const GEOSGeometry * GEOSGetExteriorRing(const GEOSGeometry *g)
int GEOSMakeValidParams_setMethod(GEOSMakeValidParams *p, enum GEOSMakeValidMethods method)
void initGEOS(GEOSMessageHandler notice_function, GEOSMessageHandler error_function)
GEOSGeometry * GEOSNode(const GEOSGeometry *g)
int GEOSOrientPolygons_r(GEOSContextHandle_t handle, GEOSGeometry *g, int exteriorCW)
int GEOSCoverageCleanParams_setGapMaximumWidth(GEOSCoverageCleanParams *params, double gapMaximumWidth)
GEOSGeometry * GEOSOffsetCurve_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double width, int quadsegs, int joinStyle, double mitreLimit)
GEOSSTRtree * GEOSSTRtree_create(size_t nodeCapacity)
GEOSGeometry * GEOSBoundary_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
int GEOSFrechetDistanceDensify_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double densifyFrac, double *dist)
char GEOSPreparedRelatePattern_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2, const char *im)
char GEOSPreparedIntersects_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
GEOSGeometry * GEOSGeom_createLinearRing_r(GEOSContextHandle_t handle, GEOSCoordSequence *s)
char GEOSCrosses_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
char GEOSEquals(const GEOSGeometry *g1, const GEOSGeometry *g2)
int GEOSGeom_getYMin(const GEOSGeometry *g, double *value)
int GEOSGeomGetX(const GEOSGeometry *g, double *x)
GEOSOverlapMerge
Definition geos_c.h:268
@ GEOS_MERGE_MIN_AREA
Definition geos_c.h:274
@ GEOS_MERGE_MIN_INDEX
Definition geos_c.h:276
@ GEOS_MERGE_LONGEST_BORDER
Definition geos_c.h:270
@ GEOS_MERGE_MAX_AREA
Definition geos_c.h:272
char GEOSisSimpleDetail(const GEOSGeometry *g, int findAllLocations, GEOSGeometry **locations)
char GEOSPreparedDistanceWithin_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2, double dist)
void GEOSSTRtree_query(GEOSSTRtree *tree, const GEOSGeometry *g, GEOSQueryCallback callback, void *userdata)
GEOSGeometry * GEOSOffsetCurve(const GEOSGeometry *g, double width, int quadsegs, int joinStyle, double mitreLimit)
GEOSGeometry * GEOSCoverageUnion_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
void GEOS_interruptCancel(void)
void GEOSMakeValidParams_destroy(GEOSMakeValidParams *parms)
int GEOSGeomGetY(const GEOSGeometry *g, double *y)
GEOSGeometry * GEOSLineMergeDirected_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
size_t * GEOSClusterInfo_getClustersForInputs_r(GEOSContextHandle_t, const GEOSClusterInfo *clusters)
int GEOSFrechetDistance(const GEOSGeometry *g1, const GEOSGeometry *g2, double *dist)
void GEOSWKTReader_setFixStructure_r(GEOSContextHandle_t handle, GEOSWKTReader *reader, char doFix)
GEOSWKTWriter * GEOSWKTWriter_create_r(GEOSContextHandle_t handle)
GEOSGeometry * GEOSGeomGetPointN_r(GEOSContextHandle_t handle, const GEOSGeometry *g, int n)
void GEOSClusterInfo_destroy_r(GEOSContextHandle_t, GEOSClusterInfo *info)
GEOSGeometry * GEOSDifference(const GEOSGeometry *ga, const GEOSGeometry *gb)
GEOSGeometry * GEOSGeom_createLineString_r(GEOSContextHandle_t handle, GEOSCoordSequence *s)
GEOSGeometry * GEOSPolygonizer_getCutEdges_r(GEOSContextHandle_t handle, const GEOSGeometry *const geoms[], unsigned int ngeoms)
int GEOSMinimumClearance(const GEOSGeometry *g, double *d)
size_t GEOSClusterInfo_getNumClusters_r(GEOSContextHandle_t, const GEOSClusterInfo *clusters)
GEOSGeometry * GEOSDelaunayTriangulation(const GEOSGeometry *g, double tolerance, int onlyEdges)
GEOSGeometry * GEOSGeom_createCurvePolygon_r(GEOSContextHandle_t handle, GEOSGeometry *shell, GEOSGeometry **holes, unsigned int nholes)
char GEOSSTRtree_remove(GEOSSTRtree *tree, const GEOSGeometry *g, void *item)
GEOSGeometry * GEOSBufferWithParams(const GEOSGeometry *g, const GEOSBufferParams *p, double width)
GEOSMessageHandler GEOSContext_setNoticeHandler_r(GEOSContextHandle_t extHandle, GEOSMessageHandler nf)
int GEOSCoordSeq_getXYZ(const GEOSCoordSequence *s, unsigned int idx, double *x, double *y, double *z)
char GEOSisValidDetail_r(GEOSContextHandle_t handle, const GEOSGeometry *g, int flags, char **reason, GEOSGeometry **location)
GEOSMakeValidParams * GEOSMakeValidParams_create(void)
GEOSGeometry * GEOSGeom_createEmptyLineString_r(GEOSContextHandle_t handle)
char * GEOSGeomType_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSMinimumClearanceLine(const GEOSGeometry *g)
void GEOSGeoJSONWriter_setOutputDimension(GEOSGeoJSONWriter *writer, int dim)
char * GEOSRelateBoundaryNodeRule_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, int bnr)
int GEOSHausdorffDistanceWithPoints_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double *dist, double *p1x, double *p1y, double *p2x, double *p2y)
char GEOSDisjoint(const GEOSGeometry *g1, const GEOSGeometry *g2)
int GEOSCoordSeq_setX(GEOSCoordSequence *s, unsigned int idx, double val)
int GEOSCoverageIsValid(const GEOSGeometry *input, double gapWidth, GEOSGeometry **invalidEdges)
int GEOSPreparedDistance(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2, double *dist)
GEOSGeometry * GEOSUnion_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
GEOSMakeValidParams * GEOSMakeValidParams_create_r(GEOSContextHandle_t extHandle)
GEOSGeometry * GEOSCoverageCleanWithParams_r(GEOSContextHandle_t extHandle, const GEOSGeometry *input, const GEOSCoverageCleanParams *params)
char GEOSPreparedContains(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
GEOSGeometry * GEOSPolygonHullSimplifyMode_r(GEOSContextHandle_t handle, const GEOSGeometry *g, unsigned int isOuter, unsigned int parameterMode, double parameter)
int GEOSCoordSeq_getXYZ_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s, unsigned int idx, double *x, double *y, double *z)
GEOSGeometry * GEOSGeomGetEndPoint_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
void GEOSWKBWriter_setFlavor(GEOSWKBWriter *writer, int flavor)
GEOSContextHandle_t initGEOS_r(GEOSMessageHandler notice_function, GEOSMessageHandler error_function)
GEOSCoordSequence * GEOSCoordSeq_createWithDimensions_r(GEOSContextHandle_t handle, unsigned int size, int hasZ, int hasM)
GEOSBufCapStyles
Definition geos_c.h:711
@ GEOSBUF_CAP_SQUARE
Definition geos_c.h:720
@ GEOSBUF_CAP_FLAT
Definition geos_c.h:717
@ GEOSBUF_CAP_ROUND
Definition geos_c.h:714
GEOSGeometry * GEOSConvexHull(const GEOSGeometry *g)
GEOSVoronoiFlags
Definition geos_c.h:5061
@ GEOS_VORONOI_PRESERVE_ORDER
Definition geos_c.h:5067
@ GEOS_VORONOI_ONLY_EDGES
Definition geos_c.h:5063
GEOSGeometry * GEOSCoverageUnion(const GEOSGeometry *g)
int GEOSCoordSeq_setY_r(GEOSContextHandle_t handle, GEOSCoordSequence *s, unsigned int idx, double val)
int GEOSMakeValidParams_setMethod_r(GEOSContextHandle_t handle, GEOSMakeValidParams *p, enum GEOSMakeValidMethods method)
unsigned char * GEOSWKBWriter_write_r(GEOSContextHandle_t handle, GEOSWKBWriter *writer, const GEOSGeometry *g, size_t *size)
GEOSGeometry * GEOSSymDifference_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
void GEOSPreparedGeom_destroy(const GEOSPreparedGeometry *g)
GEOSGeometry * GEOSNode_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
int GEOSBufferParams_setJoinStyle(GEOSBufferParams *p, int joinStyle)
void GEOSCoordSeq_destroy(GEOSCoordSequence *s)
GEOSGeometry * GEOSGeomFromWKT_r(GEOSContextHandle_t handle, const char *wkt)
GEOSGeoJSONReader * GEOSGeoJSONReader_create(void)
int GEOSCoordSeq_setOrdinate(GEOSCoordSequence *s, unsigned int idx, unsigned int dim, double val)
char GEOSPreparedIntersectsXY(const GEOSPreparedGeometry *pg1, double x, double y)
int GEOSBufferParams_setMitreLimit_r(GEOSContextHandle_t handle, GEOSBufferParams *p, double mitreLimit)
char GEOSContains(const GEOSGeometry *g1, const GEOSGeometry *g2)
void GEOSCoverageCleanParams_destroy_r(GEOSContextHandle_t extHandle, GEOSCoverageCleanParams *params)
GEOSGeometry * GEOSGeom_transformXYZ_r(GEOSContextHandle_t handle, const GEOSGeometry *g, GEOSTransformXYZCallback callback, void *userdata)
char GEOSPreparedIntersectsXY_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, double x, double y)
GEOSGeometry * GEOSBufferWithStyle(const GEOSGeometry *g, double width, int quadsegs, int endCapStyle, int joinStyle, double mitreLimit)
GEOSGeometry * GEOSGeom_transformXY_r(GEOSContextHandle_t handle, const GEOSGeometry *g, GEOSTransformXYCallback callback, void *userdata)
GEOSGeometry * GEOSBuildArea(const GEOSGeometry *g)
GEOSClusterInfo * GEOSClusterEnvelopeDistance_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double d)
GEOSValidFlags
Definition geos_c.h:1635
@ GEOSVALID_ALLOW_SELFTOUCHING_RING_FORMING_HOLE
Definition geos_c.h:1637
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:2117
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:2103
char GEOSPreparedWithin_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
int GEOSSegmentIntersection(double ax0, double ay0, double ax1, double ay1, double bx0, double by0, double bx1, double by1, double *cx, double *cy)
int GEOSCoordSeq_setY(GEOSCoordSequence *s, unsigned int idx, double val)
void GEOSMakeValidParams_destroy_r(GEOSContextHandle_t handle, GEOSMakeValidParams *parms)
char GEOSPreparedCovers(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
GEOSMessageHandler_r GEOSContext_setErrorMessageHandler_r(GEOSContextHandle_t extHandle, GEOSMessageHandler_r ef, void *userData)
GEOSGeometry ** GEOSGeom_releaseCollection_r(GEOSContextHandle_t handle, GEOSGeometry *collection, unsigned int *ngeoms)
GEOSGeometry * GEOSGeoJSONReader_readGeometry(GEOSGeoJSONReader *reader, const char *geojson)
GEOSGeometry * GEOSEnvelope_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
char GEOSEqualsIdentical(const GEOSGeometry *g1, const GEOSGeometry *g2)
GEOSGeometry * GEOSGeomFromHEX_buf(const unsigned char *hex, size_t size)
unsigned char * GEOSWKBWriter_writeHEX(GEOSWKBWriter *writer, const GEOSGeometry *g, size_t *size)
GEOSGeometry * GEOSInterpolate_r(GEOSContextHandle_t handle, const GEOSGeometry *line, double d)
GEOSGeometry * GEOSSharedPaths_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
int GEOSGeom_getExtent_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *xmin, double *ymin, double *xmax, double *ymax)
GEOSGeometry * GEOSWKTReader_read_r(GEOSContextHandle_t handle, GEOSWKTReader *reader, const char *wkt)
char GEOSPreparedRelatePattern(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2, const char *imPattern)
int GEOS_setWKBByteOrder(int byteOrder)
int GEOSCoverageIsValid_r(GEOSContextHandle_t extHandle, const GEOSGeometry *input, double gapWidth, GEOSGeometry **output)
int GEOSCoverageCleanParams_setGapMaximumWidth_r(GEOSContextHandle_t extHandle, GEOSCoverageCleanParams *params, double gapMaximumWidth)
void GEOSWKBReader_setFixStructure(GEOSWKBReader *reader, char doFix)
GEOSGeometry * GEOSInterpolate(const GEOSGeometry *line, double d)
char GEOSPreparedContains_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
GEOSGeometry * GEOSInterpolateNormalized_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double d)
int GEOSCoordSeq_getY_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s, unsigned int idx, double *val)
GEOSGeometry * GEOSGeomGetEndPoint(const GEOSGeometry *g)
GEOSGeometry * GEOSSnap_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double tolerance)
GEOSGeometry * GEOSPolygonize_full(const GEOSGeometry *input, GEOSGeometry **cuts, GEOSGeometry **dangles, GEOSGeometry **invalid)
char * GEOSRelateBoundaryNodeRule(const GEOSGeometry *g1, const GEOSGeometry *g2, int bnr)
double GEOSGeom_getPrecision(const GEOSGeometry *g)
GEOSGeometry * GEOSLargestEmptyCircle(const GEOSGeometry *obstacles, const GEOSGeometry *boundary, double tolerance)
char GEOSIntersects(const GEOSGeometry *g1, const GEOSGeometry *g2)
int GEOSCoordSeq_getDimensions(const GEOSCoordSequence *s, unsigned int *dims)
char GEOSPreparedCoveredBy(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
char GEOSCovers(const GEOSGeometry *g1, const GEOSGeometry *g2)
GEOSInterruptCallback * GEOS_interruptRegisterCallback(GEOSInterruptCallback *cb)
int GEOSGeom_getXMin_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *value)
int GEOSCoordSeq_getOrdinate_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s, unsigned int idx, unsigned int dim, double *val)
int GEOSCoordSeq_getXY(const GEOSCoordSequence *s, unsigned int idx, double *x, double *y)
GEOSGeometry * GEOSSimplify_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double tolerance)
GEOSGeometry * GEOSIntersection_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
int GEOSOrientPolygons(GEOSGeometry *g, int exteriorCW)
char GEOSOverlaps(const GEOSGeometry *g1, const GEOSGeometry *g2)
char GEOSHasM_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
void GEOSWKTWriter_setTrim_r(GEOSContextHandle_t handle, GEOSWKTWriter *writer, char trim)
GEOSGeometry * GEOSLineMergeDirected(const GEOSGeometry *g)
GEOSGeometry * GEOSMakeValidWithParams(const GEOSGeometry *g, const GEOSMakeValidParams *makeValidParams)
GEOSGeometry * GEOSGeomFromWKB_buf_r(GEOSContextHandle_t handle, const unsigned char *wkb, size_t size)
GEOSGeometry * GEOSPointOnSurface(const GEOSGeometry *g)
GEOSGeometry * GEOSUnaryUnionPrec(const GEOSGeometry *g, double gridSize)
void GEOSWKTWriter_setTrim(GEOSWKTWriter *writer, char trim)
GEOSGeometry * GEOSBuffer_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double width, int quadsegs)
GEOSGeometry * GEOSMinimumWidth_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSWKBReader_readHEX_r(GEOSContextHandle_t handle, GEOSWKBReader *reader, const unsigned char *hex, size_t size)
GEOSWKBByteOrders
Definition geos_c.h:241
@ GEOS_WKB_NDR
Definition geos_c.h:245
@ GEOS_WKB_XDR
Definition geos_c.h:243
GEOSGeometry * GEOSVoronoiDiagram_r(GEOSContextHandle_t extHandle, const GEOSGeometry *g, const GEOSGeometry *env, double tolerance, int flags)
void GEOSWKBWriter_setIncludeSRID_r(GEOSContextHandle_t handle, GEOSWKBWriter *writer, const char writeSRID)
GEOSClusterInfo * GEOSClusterDBSCAN_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double eps, unsigned minPoints)
GEOSGeometry * GEOSConstrainedDelaunayTriangulation(const GEOSGeometry *g)
int GEOSCoordSeq_copyToArrays(const GEOSCoordSequence *s, double *x, double *y, double *z, double *m)
GEOSGeometry * GEOSMinimumBoundingCircle(const GEOSGeometry *g, double *radius, GEOSGeometry **center)
GEOSGeometry * GEOSSymDifference(const GEOSGeometry *ga, const GEOSGeometry *gb)
char GEOSDistanceWithin_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double dist)
GEOSGeometry * GEOSMakeValidWithParams_r(GEOSContextHandle_t handle, const GEOSGeometry *g, const GEOSMakeValidParams *makeValidParams)
struct GEOSWKTReader_t GEOSWKTReader
Definition geos_c.h:2096
GEOSCoordSequence * GEOSNearestPoints_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
GEOSGeometry * GEOSPolygonize(const GEOSGeometry *const geoms[], unsigned int ngeoms)
char GEOSPreparedCoveredBy_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
GEOSGeometry * GEOSDisjointSubsetUnion(const GEOSGeometry *g)
GEOSGeometry * GEOSGeom_createPointFromXY(double x, double y)
GEOSGeometry * GEOSRemoveRepeatedPoints(const GEOSGeometry *g, double tolerance)
GEOSGeometry * GEOSVoronoiDiagram(const GEOSGeometry *g, const GEOSGeometry *env, double tolerance, int flags)
GEOSGeometry * GEOSGeom_createPolygon(GEOSGeometry *shell, GEOSGeometry **holes, unsigned int nholes)
void GEOSWKBWriter_setOutputDimension_r(GEOSContextHandle_t handle, GEOSWKBWriter *writer, int newDimension)
void GEOSSetSRID_r(GEOSContextHandle_t handle, GEOSGeometry *g, int SRID)
void GEOSWKTReader_destroy_r(GEOSContextHandle_t handle, GEOSWKTReader *reader)
void GEOSSTRtree_destroy_r(GEOSContextHandle_t handle, GEOSSTRtree *tree)
char * GEOSGeomType(const GEOSGeometry *g)
char GEOSPreparedDisjoint(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
GEOSGeometry * GEOSGeom_createEmptyPoint_r(GEOSContextHandle_t handle)
GEOSRelateBoundaryNodeRules
Definition geos_c.h:1592
@ GEOSRELATE_BNR_OGC
Definition geos_c.h:1596
@ GEOSRELATE_BNR_MULTIVALENT_ENDPOINT
Definition geos_c.h:1600
@ GEOSRELATE_BNR_ENDPOINT
Definition geos_c.h:1598
@ GEOSRELATE_BNR_MOD2
Definition geos_c.h:1594
@ GEOSRELATE_BNR_MONOVALENT_ENDPOINT
Definition geos_c.h:1602
const size_t * GEOSClusterInfo_getInputsForClusterN(const GEOSClusterInfo *clusters, size_t i)
GEOSClusterInfo_getInputsForClusterN.
GEOSGeometry * GEOSSymDifferencePrec_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double gridSize)
char * GEOSGeoJSONWriter_writeGeometry_r(GEOSContextHandle_t handle, GEOSGeoJSONWriter *writer, const GEOSGeometry *g, int indent)
int GEOSBufferParams_setSingleSided_r(GEOSContextHandle_t handle, GEOSBufferParams *p, int singleSided)
char GEOSCrosses(const GEOSGeometry *g1, const GEOSGeometry *g2)
GEOSGeometry * GEOSGeomGetStartPoint(const GEOSGeometry *g)
int() GEOSContextInterruptCallback(void *)
Definition geos_c.h:369
int GEOSMakeValidParams_setKeepCollapsed_r(GEOSContextHandle_t handle, GEOSMakeValidParams *p, int style)
int GEOSCoordSeq_setOrdinate_r(GEOSContextHandle_t handle, GEOSCoordSequence *s, unsigned int idx, unsigned int dim, double val)
void GEOSSetSRID(GEOSGeometry *g, int SRID)
GEOSGeometry * GEOSGeoJSONReader_readGeometry_r(GEOSContextHandle_t handle, GEOSGeoJSONReader *reader, const char *geojson)
char * GEOSGeoJSONWriter_writeGeometry(GEOSGeoJSONWriter *writer, const GEOSGeometry *g, int indent)
GEOSGeometry * GEOSGeom_createLineString(GEOSCoordSequence *s)
unsigned char * GEOSWKBWriter_write(GEOSWKBWriter *writer, const GEOSGeometry *g, size_t *size)
GEOSGeometry * GEOSMakeValid_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSLineSubstring_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double start_fraction, double end_fdraction)
GEOSGeometry * GEOSReverse(const GEOSGeometry *g)
int GEOSWKBWriter_getFlavor(const GEOSWKBWriter *writer)
char GEOSIntersects_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
char * GEOSRelate(const GEOSGeometry *g1, const GEOSGeometry *g2)
int GEOSCoordSeq_getSize(const GEOSCoordSequence *s, unsigned int *size)
GEOSPolygonHullParameterModes
Definition geos_c.h:4857
@ GEOSHULL_PARAM_AREA_RATIO
Definition geos_c.h:4861
@ GEOSHULL_PARAM_VERTEX_RATIO
Definition geos_c.h:4859
int GEOSOrientationIndex(double Ax, double Ay, double Bx, double By, double Px, double Py)
GEOSGeometry * GEOSGeomFromWKB_buf(const unsigned char *wkb, size_t size)
void GEOSWKTWriter_setOutputDimension_r(GEOSContextHandle_t handle, GEOSWKTWriter *writer, int dim)
GEOSGeometry * GEOSClipByRect_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double xmin, double ymin, double xmax, double ymax)
int GEOSGetNumInteriorRings_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
int GEOSGeomGetZ(const GEOSGeometry *g, double *z)
GEOSGeometry * GEOSDensify_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double tolerance)
int GEOSWKBWriter_getFlavor_r(GEOSContextHandle_t handle, const GEOSWKBWriter *writer)
int GEOSCoordSeq_isCCW(const GEOSCoordSequence *s, char *is_ccw)
struct GEOSContextHandle_HS * GEOSContextHandle_t
Definition geos_c.h:95
int GEOSCoordSeq_copyToBuffer_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s, double *buf, int hasZ, int hasM)
int GEOSCoordSeq_setXY(GEOSCoordSequence *s, unsigned int idx, double x, double y)
GEOSGeometry * GEOSMakeValid(const GEOSGeometry *g)
void GEOSCoordSeq_destroy_r(GEOSContextHandle_t handle, GEOSCoordSequence *s)
GEOSGeometry * GEOSPolygonizer_getCutEdges(const GEOSGeometry *const geoms[], unsigned int ngeoms)
int GEOSGetSRID_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
int GEOSHilbertCode_r(GEOSContextHandle_t handle, const GEOSGeometry *geom, const GEOSGeometry *extent, unsigned int level, unsigned int *code)
GEOSSTRtree * GEOSSTRtree_create_r(GEOSContextHandle_t handle, size_t nodeCapacity)
int GEOSMakeValidParams_setKeepCollapsed(GEOSMakeValidParams *p, int keepCollapsed)
GEOSGeometry * GEOSUnionPrec(const GEOSGeometry *ga, const GEOSGeometry *gb, double gridSize)
int GEOSHausdorffDistanceDensify(const GEOSGeometry *g1, const GEOSGeometry *g2, double densifyFrac, double *dist)
GEOSGeometry * GEOSMinimumRotatedRectangle(const GEOSGeometry *g)
GEOSGeometry * GEOSGeom_createEmptyPolygon_r(GEOSContextHandle_t handle)
GEOSBufJoinStyles
Definition geos_c.h:727
@ GEOSBUF_JOIN_MITRE
Definition geos_c.h:737
@ GEOSBUF_JOIN_ROUND
Definition geos_c.h:732
@ GEOSBUF_JOIN_BEVEL
Definition geos_c.h:742
GEOSGeometry * GEOSGeom_createEmptyCollection(int type)
GEOSGeometry * GEOSIntersection(const GEOSGeometry *g1, const GEOSGeometry *g2)
int GEOSWKBWriter_getByteOrder_r(GEOSContextHandle_t handle, const GEOSWKBWriter *writer)
int GEOSGeom_getXMax_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *value)
void GEOSWKBWriter_destroy(GEOSWKBWriter *writer)
char GEOSEquals_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
int GEOSCoverageCleanParams_setSnappingDistance_r(GEOSContextHandle_t extHandle, GEOSCoverageCleanParams *params, double snappingDistance)
int GEOSGeom_getXMin(const GEOSGeometry *g, double *value)
char GEOSCovers_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
int GEOSGeomGetLength(const GEOSGeometry *g, double *length)
char GEOSOverlaps_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
int GEOSLength_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *length)
const GEOSGeometry * GEOSSTRtree_nearest(GEOSSTRtree *tree, const GEOSGeometry *geom)
GEOSClusterInfo * GEOSClusterGeometryIntersects(const GEOSGeometry *g)
GEOSClusterGeometryIntersects.
unsigned char * GEOSGeomToHEX_buf(const GEOSGeometry *g, size_t *size)
GEOSCoordSequence * GEOSCoordSeq_copyFromBuffer_r(GEOSContextHandle_t handle, const double *buf, unsigned int size, int hasZ, int hasM)
GEOSWKBReader * GEOSWKBReader_create_r(GEOSContextHandle_t handle)
char GEOSisSimpleDetail_r(GEOSContextHandle_t handle, const GEOSGeometry *g, int findAllLocations, GEOSGeometry **location)
char GEOSDisjoint_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
char GEOSPreparedContainsProperly_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
GEOSCoordSequence * GEOSPreparedNearestPoints_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
GEOSGeometry * GEOSGeomFromHEX_buf_r(GEOSContextHandle_t handle, const unsigned char *hex, size_t size)
GEOSClusterInfo * GEOSClusterGeometryDistance_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double d)
GEOSCoordSequence * GEOSCoordSeq_clone(const GEOSCoordSequence *s)
int GEOSGeom_getCoordinateDimension_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSSubdivideByGrid_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double xmin, double ymin, double xmax, double ymax, unsigned nx, unsigned ny, int includeExterior)
int GEOSNormalize(GEOSGeometry *g)
unsigned char * GEOSGeomToWKB_buf(const GEOSGeometry *g, size_t *size)
int GEOSGetNumGeometries_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
char GEOSEqualsExact_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double tolerance)
GEOSGeometry * GEOSMinimumBoundingCircle_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *radius, GEOSGeometry **center)
int GEOSWKTWriter_getOutputDimension(GEOSWKTWriter *writer)
char GEOSTouches_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
GEOSGeometry * GEOSWKTReader_read(GEOSWKTReader *reader, const char *wkt)
GEOSGeometry * GEOSUnaryUnionPrec_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double gridSize)
int GEOSCoordSeq_getM(const GEOSCoordSequence *s, unsigned int idx, double *val)
int GEOSArea_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *area)
double GEOSGeom_getPrecision_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
void GEOSWKTWriter_setOutputDimension(GEOSWKTWriter *writer, int dim)
GEOSCoordSequence * GEOSCoordSeq_copyFromArrays(const double *x, const double *y, const double *z, const double *m, unsigned int size)
GEOSWKBReader * GEOSWKBReader_create(void)
int GEOSCoordSeq_getY(const GEOSCoordSequence *s, unsigned int idx, double *val)
void GEOS_interruptThread(void)
int GEOSCoordSeq_setZ(GEOSCoordSequence *s, unsigned int idx, double val)
int GEOSBufferParams_setMitreLimit(GEOSBufferParams *p, double mitreLimit)
int(* GEOSTransformXYCallback)(double *x, double *y, void *userdata)
Definition geos_c.h:324
void GEOSWKTWriter_setOld3D(GEOSWKTWriter *writer, int useOld3D)
int GEOSGeom_getExtent(const GEOSGeometry *g, double *xmin, double *ymin, double *xmax, double *ymax)
int GEOSCoordSeq_copyToArrays_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s, double *x, double *y, double *z, double *m)
char GEOSWithin(const GEOSGeometry *g1, const GEOSGeometry *g2)
int GEOSNormalize_r(GEOSContextHandle_t handle, GEOSGeometry *g)
void GEOSWKBWriter_destroy_r(GEOSContextHandle_t handle, GEOSWKBWriter *writer)
GEOSCoordSequence * GEOSCoordSeq_createWithDimensions(unsigned int size, int hasZ, int hasM)
int GEOSCoverageCleanParams_setSnappingDistance(GEOSCoverageCleanParams *params, double snappingDistance)
int GEOSDistance(const GEOSGeometry *g1, const GEOSGeometry *g2, double *dist)
GEOSGeometry * GEOSGeom_createEmptyPolygon(void)
void finishGEOS_r(GEOSContextHandle_t handle)
char GEOSisClosed(const GEOSGeometry *g)
GEOSGeometry * GEOSPolygonHullSimplifyMode(const GEOSGeometry *g, unsigned int isOuter, unsigned int parameterMode, double parameter)
int GEOSGeom_getCoordinateDimension(const GEOSGeometry *g)
size_t GEOSClusterInfo_getClusterSize(const GEOSClusterInfo *clusters, size_t i)
GEOSClusterInfo_getSize.
struct GEOSClusterInfo_t GEOSClusterInfo
Definition geos_c.h:189
int GEOSFrechetDistance_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double *dist)
char GEOSRelatePattern(const GEOSGeometry *g1, const GEOSGeometry *g2, const char *imPattern)
GEOSGeometry * GEOSBufferWithStyle_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double width, int quadsegs, int endCapStyle, int joinStyle, double mitreLimit)
char * GEOSRelate_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
GEOSGeometry * GEOSConvexHull_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
struct GEOSGeoJSONWriter_t GEOSGeoJSONWriter
Definition geos_c.h:2131
unsigned char * GEOSGeomToWKB_buf_r(GEOSContextHandle_t handle, const GEOSGeometry *g, size_t *size)
GEOSGeometry * GEOSSingleSidedBuffer(const GEOSGeometry *g, double width, int quadsegs, int joinStyle, double mitreLimit, int leftSide)
GEOSGeometry * GEOSUnionCascaded(const GEOSGeometry *g)
char GEOSPreparedTouches_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
GEOSMessageHandler GEOSContext_setErrorHandler_r(GEOSContextHandle_t extHandle, GEOSMessageHandler ef)
int GEOSCoordSeq_setXYZ(GEOSCoordSequence *s, unsigned int idx, double x, double y, double z)
size_t * GEOSClusterInfo_getClustersForInputs(const GEOSClusterInfo *clusters)
GEOSClusterInfo_getClustersForInputs.
GEOSGeometry * GEOSCoverageClean_r(GEOSContextHandle_t extHandle, const GEOSGeometry *input)
int GEOSWKTWriter_getOutputDimension_r(GEOSContextHandle_t handle, GEOSWKTWriter *writer)
double GEOSProjectNormalized(const GEOSGeometry *line, const GEOSGeometry *point)
GEOSGeometry * GEOSGeom_createEmptyCircularString()
int GEOSGeom_getYMin_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *value)
GEOSGeometry * GEOSGeom_clone_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
const GEOSPreparedGeometry * GEOSPrepare_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSMinimumClearanceLine_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
void GEOSGeom_setUserData(GEOSGeometry *g, void *userData)
GEOSGeometry * GEOSGeom_createCollection(int type, GEOSGeometry **geoms, unsigned int ngeoms)
void GEOSGeoJSONReader_destroy(GEOSGeoJSONReader *reader)
GEOSGeometry * GEOSGetCentroid_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSCoordSequence * GEOSCoordSeq_copyFromBuffer(const double *buf, unsigned int size, int hasZ, int hasM)
int GEOSGridIntersectionFractions(const GEOSGeometry *g, double xmin, double ymin, double xmax, double ymax, unsigned nx, unsigned ny, float *buf)
int GEOSGeomGetNumPoints(const GEOSGeometry *g)
void GEOSGeoJSONWriter_destroy(GEOSGeoJSONWriter *writer)
GEOSGeometry * GEOSGeom_transformXY(const GEOSGeometry *g, GEOSTransformXYCallback callback, void *userdata)
size_t GEOSClusterInfo_getNumClusters(const GEOSClusterInfo *clusters)
GEOSClusterInfo_getNumClusters.
double GEOSProjectNormalized_r(GEOSContextHandle_t handle, const GEOSGeometry *g, const GEOSGeometry *p)
char GEOSPreparedCrosses(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
int GEOSGeomGetNumPoints_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
char * GEOSisValidReason_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSPolygonize_valid_r(GEOSContextHandle_t handle, const GEOSGeometry *const geoms[], unsigned int ngems)
GEOSGeometry * GEOSGeom_createCurvePolygon(GEOSGeometry *shell, GEOSGeometry **holes, unsigned int nholes)
GEOSGeometry * GEOSLineSubstring(const GEOSGeometry *g, double start_fraction, double end_fraction)
char GEOSPreparedIntersects(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
char GEOSWithin_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
GEOSClusterInfo * GEOSClusterDBSCAN(const GEOSGeometry *g, double eps, unsigned minPoints)
GEOSClusterDBSCAN.
GEOSGeometry * GEOSConcaveHullOfPolygons_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double lengthRatio, unsigned int isTight, unsigned int isHolesAllowed)
int GEOS_setWKBOutputDims(int newDims)
const GEOSCoordSequence * GEOSGeom_getCoordSeq_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSPointOnSurface_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSGeom_createEmptyCurvePolygon()
int GEOSFrechetDistanceDensify(const GEOSGeometry *g1, const GEOSGeometry *g2, double densifyFrac, double *dist)
struct GEOSBufParams_t GEOSBufferParams
Definition geos_c.h:169
char GEOSPreparedCovers_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
GEOSGeometry * GEOSDifference_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
char GEOSCoordSeq_hasM_r(GEOSContextHandle_t handle, GEOSCoordSequence *s)
GEOSGeometry * GEOSLargestEmptyCircle_r(GEOSContextHandle_t handle, const GEOSGeometry *g, const GEOSGeometry *boundary, double tolerance)
int GEOSOrientationIndex_r(GEOSContextHandle_t handle, double Ax, double Ay, double Bx, double By, double Px, double Py)
GEOSGeometry * GEOSPolygonHullSimplify_r(GEOSContextHandle_t handle, const GEOSGeometry *g, unsigned int isOuter, double vertexNumFraction)
GEOSPrecisionRules
Definition geos_c.h:1781
@ GEOS_PREC_NO_TOPO
Definition geos_c.h:1785
@ GEOS_PREC_KEEP_COLLAPSED
Definition geos_c.h:1787
@ GEOS_PREC_VALID_OUTPUT
Definition geos_c.h:1783
int GEOSGetNumGeometries(const GEOSGeometry *g)
int GEOSCoordSeq_setM(GEOSCoordSequence *s, unsigned int idx, double val)
void * GEOSGeom_getUserData(const GEOSGeometry *g)
char GEOSCoordSeq_hasZ(GEOSCoordSequence *s)
int GEOSGetNumCoordinates(const GEOSGeometry *g)
struct GEOSMakeValidParams_t GEOSMakeValidParams
Definition geos_c.h:183
char GEOSRelatePatternMatch(const char *intMatrix, const char *imPattern)
void GEOS_finish_r(GEOSContextHandle_t handle)
GEOSMakeValidMethods
Definition geos_c.h:1672
@ GEOS_MAKE_VALID_LINEWORK
Definition geos_c.h:1676
@ GEOS_MAKE_VALID_STRUCTURE
Definition geos_c.h:1681
GEOSGeometry * GEOSWKBReader_readHEX(GEOSWKBReader *reader, const unsigned char *hex, size_t size)
int GEOSGeom_getYMax_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *value)
GEOSGeometry * GEOSGeom_createEmptyLineString(void)
const GEOSGeometry * GEOSGetInteriorRingN_r(GEOSContextHandle_t handle, const GEOSGeometry *g, int n)
GEOSGeometry * GEOSInterpolateNormalized(const GEOSGeometry *line, double proportion)
GEOSGeometry * GEOSGeom_createEmptyCompoundCurve()
GEOSGeometry * GEOSGeom_clone(const GEOSGeometry *g)
void GEOSGeoJSONWriter_destroy_r(GEOSContextHandle_t handle, GEOSGeoJSONWriter *writer)
int GEOSBufferParams_setSingleSided(GEOSBufferParams *p, int singleSided)
const GEOSGeometry * GEOSGetInteriorRingN(const GEOSGeometry *g, int n)
int GEOSGeomGetZ_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *z)
GEOSGeometry * GEOSUnionPrec_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double gridSize)
GEOSGeometry * GEOSGeom_createPointFromXY_r(GEOSContextHandle_t handle, double x, double y)
char GEOSEqualsIdentical_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
GEOSClusterInfo * GEOSClusterGeometryDistance(const GEOSGeometry *g, double d)
GEOSClusterGeometryDistance.
GEOSClusterInfo * GEOSClusterEnvelopeIntersects_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
void GEOSWKTWriter_destroy_r(GEOSContextHandle_t handle, GEOSWKTWriter *writer)
const GEOSPreparedGeometry * GEOSPrepare(const GEOSGeometry *g)
int GEOSWKBWriter_getByteOrder(const GEOSWKBWriter *writer)
char GEOSPreparedOverlaps(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
char GEOSHasZ_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
int GEOSCoordSeq_setM_r(GEOSContextHandle_t handle, GEOSCoordSequence *s, unsigned int idx, double val)
GEOSGeometry * GEOSUnion(const GEOSGeometry *ga, const GEOSGeometry *gb)
void GEOSGeoJSONReader_destroy_r(GEOSContextHandle_t handle, GEOSGeoJSONReader *reader)
GEOSGeometry * GEOSSimplify(const GEOSGeometry *g, double tolerance)
void GEOSSTRtree_insert(GEOSSTRtree *tree, const GEOSGeometry *g, void *item)
char GEOSisSimple_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSWKBWriter * GEOSWKBWriter_create_r(GEOSContextHandle_t handle)
char GEOSDistanceWithin(const GEOSGeometry *g1, const GEOSGeometry *g2, double dist)
int GEOSCoordSeq_setXYZ_r(GEOSContextHandle_t handle, GEOSCoordSequence *s, unsigned int idx, double x, double y, double z)
int GEOSHausdorffDistanceWithPoints(const GEOSGeometry *g1, const GEOSGeometry *g2, double *dist, double *p1x, double *p1y, double *p2x, double *p2y)
int GEOSGeomGetX_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *x)
unsigned char * GEOSGeomToHEX_buf_r(GEOSContextHandle_t handle, const GEOSGeometry *g, size_t *size)
char GEOSPreparedWithin(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
char GEOSHasZ(const GEOSGeometry *g)
int GEOSWKBWriter_getOutputDimension_r(GEOSContextHandle_t handle, const GEOSWKBWriter *writer)
int GEOSBufferParams_setQuadrantSegments(GEOSBufferParams *p, int quadSegs)
void GEOS_interruptRequest(void)
char GEOSWKBWriter_getIncludeSRID_r(GEOSContextHandle_t handle, const GEOSWKBWriter *writer)
void finishGEOS(void)
int GEOSLength(const GEOSGeometry *g, double *length)
GEOSGeometry * GEOSConcaveHull(const GEOSGeometry *g, double ratio, unsigned int allowHoles)
int GEOSCoordSeq_getZ_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s, unsigned int idx, double *val)
int GEOSBufferParams_setEndCapStyle(GEOSBufferParams *p, int style)
GEOSGeometry * GEOSUnionCascaded_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
int GEOSGetSRID(const GEOSGeometry *g)
GEOSGeometry * GEOSBuffer(const GEOSGeometry *g, double width, int quadsegs)
unsigned char * GEOSWKBWriter_writeHEX_r(GEOSContextHandle_t handle, GEOSWKBWriter *writer, const GEOSGeometry *g, size_t *size)
void GEOSWKTWriter_setRoundingPrecision(GEOSWKTWriter *writer, int precision)
char GEOSisClosed_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
char * GEOSisValidReason(const GEOSGeometry *g)
void GEOSGeoJSONWriter_setOutputDimension_r(GEOSContextHandle_t handle, GEOSGeoJSONWriter *writer, int dim)
int GEOSBufferParams_setJoinStyle_r(GEOSContextHandle_t handle, GEOSBufferParams *p, int joinStyle)
char GEOSisRing(const GEOSGeometry *g)
int GEOSCoordSeq_getXY_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s, unsigned int idx, double *x, double *y)
char GEOSPreparedContainsXY(const GEOSPreparedGeometry *pg1, double x, double y)
const GEOSGeometry * GEOSGetGeometryN_r(GEOSContextHandle_t handle, const GEOSGeometry *g, int n)
int GEOSCoordSeq_getX_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s, unsigned int idx, double *val)
int GEOSPreparedDistance_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2, double *dist)
GEOSWKTWriter * GEOSWKTWriter_create(void)
char * GEOSPreparedRelate_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
int GEOSSegmentIntersection_r(GEOSContextHandle_t extHandle, double ax0, double ay0, double ax1, double ay1, double bx0, double by0, double bx1, double by1, double *cx, double *cy)
char GEOSisValid(const GEOSGeometry *g)
char GEOSCoveredBy(const GEOSGeometry *g1, const GEOSGeometry *g2)
int GEOSGeom_getDimensions(const GEOSGeometry *g)
char GEOSPreparedDisjoint_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
int GEOSHausdorffDistance_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double *dist)
GEOSGeometry * GEOSGeom_createCircularString(GEOSCoordSequence *s)
void GEOSWKBWriter_setIncludeSRID(GEOSWKBWriter *writer, const char writeSRID)
GEOSGeometry * GEOSBuildArea_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
char GEOSisEmpty(const GEOSGeometry *g)
GEOSCoverageCleanParams * GEOSCoverageCleanParams_create()
const GEOSGeometry * GEOSGetGeometryN(const GEOSGeometry *g, int n)
int GEOSMinimumClearance_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *distance)
int GEOSHilbertCode(const GEOSGeometry *geom, const GEOSGeometry *extent, unsigned int level, unsigned int *code)
GEOSGeometry * GEOSConcaveHullByLength(const GEOSGeometry *g, double length, unsigned int allowHoles)
GEOSContextInterruptCallback * GEOSContext_setInterruptCallback_r(GEOSContextHandle_t extHandle, GEOSContextInterruptCallback *cb, void *userData)
GEOSGeometry * GEOSGeom_createCollection_r(GEOSContextHandle_t handle, int type, GEOSGeometry **geoms, unsigned int ngeoms)
GEOSGeometry * GEOSMaximumInscribedCircle(const GEOSGeometry *g, double tolerance)
GEOSGeoJSONReader * GEOSGeoJSONReader_create_r(GEOSContextHandle_t handle)
void() GEOSInterruptCallback(void)
Definition geos_c.h:359
GEOSGeometry * GEOSGeom_createPoint(GEOSCoordSequence *s)
int GEOS_getWKBByteOrder_r(GEOSContextHandle_t handle)
char GEOSPreparedTouches(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
char GEOSWKBWriter_getIncludeSRID(const GEOSWKBWriter *writer)
GEOSGeometry * GEOSCoverageClean(const GEOSGeometry *input)
GEOSGeometry * GEOSSnap(const GEOSGeometry *input, const GEOSGeometry *snap_target, double tolerance)
GEOSWKBWriter * GEOSWKBWriter_create(void)
struct GEOSSTRtree_t GEOSSTRtree
Definition geos_c.h:162
GEOSCoordSequence * GEOSCoordSeq_create_r(GEOSContextHandle_t handle, unsigned int size, unsigned int dims)
GEOSCoordSequence * GEOSNearestPoints(const GEOSGeometry *g1, const GEOSGeometry *g2)
GEOSGeometry * GEOSSymDifferencePrec(const GEOSGeometry *ga, const GEOSGeometry *gb, double gridSize)
int GEOSGeom_getXMax(const GEOSGeometry *g, double *value)
GEOSGeometry * GEOSRemoveRepeatedPoints_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double tolerance)
GEOSGeometry * GEOSGeom_extractUniquePoints_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
void GEOSFree(void *buffer)
GEOSBufferParams * GEOSBufferParams_create_r(GEOSContextHandle_t handle)
int GEOSCoordSeq_getX(const GEOSCoordSequence *s, unsigned int idx, double *val)
char * GEOSPreparedRelate(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
GEOSGeometry * GEOSDifferencePrec_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double gridSize)
char * GEOSGeomToWKT(const GEOSGeometry *g)
GEOSGeometry * GEOSSharedPaths(const GEOSGeometry *g1, const GEOSGeometry *g2)
int GEOSArea(const GEOSGeometry *g, double *area)
int GEOSGeomGetLength_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *length)
char GEOSPreparedCrosses_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
GEOSGeometry * GEOSGeom_createCompoundCurve(GEOSGeometry **curves, unsigned int ncurves)
int GEOSGeomGetY_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *y)
int GEOSCoordSeq_isCCW_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s, char *is_ccw)
char GEOSisValid_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
void GEOSSTRtree_insert_r(GEOSContextHandle_t handle, GEOSSTRtree *tree, const GEOSGeometry *g, void *item)
GEOSCoordSequence * GEOSCoordSeq_copyFromArrays_r(GEOSContextHandle_t handle, const double *x, const double *y, const double *z, const double *m, unsigned int size)
int GEOSCoordSeq_setX_r(GEOSContextHandle_t handle, GEOSCoordSequence *s, unsigned int idx, double val)
GEOSGeometry * GEOSLineMerge_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
char GEOSisValidDetail(const GEOSGeometry *g, int flags, char **reason, GEOSGeometry **location)
GEOSGeometry * GEOSPolygonize_r(GEOSContextHandle_t handle, const GEOSGeometry *const geoms[], unsigned int ngeoms)
GEOSGeometry * GEOSLineMerge(const GEOSGeometry *g)
GEOSGeometry * GEOSGeom_createEmptyCurvePolygon_r(GEOSContextHandle_t handle)
size_t GEOSClusterInfo_getClusterSize_r(GEOSContextHandle_t, const GEOSClusterInfo *clusters, size_t i)
GEOSGeometry * GEOSGeom_createLinearRing(GEOSCoordSequence *s)
struct GEOSCoverageCleanParams_t GEOSCoverageCleanParams
Definition geos_c.h:176
void GEOSClusterInfo_destroy(GEOSClusterInfo *clusters)
GEOSClusterInfo_destroy.
void GEOSWKTWriter_setRoundingPrecision_r(GEOSContextHandle_t handle, GEOSWKTWriter *writer, int precision)
const void * GEOSSTRtree_nearest_generic(GEOSSTRtree *tree, const void *item, const GEOSGeometry *itemEnvelope, GEOSDistanceCallback distancefn, void *userdata)
int GEOSGeom_getYMax(const GEOSGeometry *g, double *value)
int GEOSHausdorffDistanceDensify_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double densifyFrac, double *dist)
double GEOSProject(const GEOSGeometry *line, const GEOSGeometry *point)
int(* GEOSTransformXYZCallback)(double *x, double *y, double *z, void *userdata)
Definition geos_c.h:343
char * GEOSWKTWriter_write_r(GEOSContextHandle_t handle, GEOSWKTWriter *writer, const GEOSGeometry *g)
GEOSCoordSequence * GEOSCoordSeq_clone_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s)
GEOSGeometry * GEOSDifferencePrec(const GEOSGeometry *ga, const GEOSGeometry *gb, double gridSize)
GEOSGeometry * GEOSUnaryUnion(const GEOSGeometry *g)
struct GEOSPrepGeom_t GEOSPreparedGeometry
Definition geos_c.h:147