GEOS 3.15.0dev
geos_c.h
Go to the documentation of this file.
1/************************************************************************
2 *
3 * C-Wrapper for GEOS library
4 *
5 * Copyright (C) 2010 2011 Sandro Santilli <strk@kbt.io>
6 * Copyright (C) 2005 Refractions Research Inc.
7 *
8 * This is free software; you can redistribute and/or modify it under
9 * the terms of the GNU Lesser General Public Licence as published
10 * by the Free Software Foundation.
11 * See the COPYING file for more information.
12 ***********************************************************************/
13
40#ifndef GEOS_C_H_INCLUDED
41#define GEOS_C_H_INCLUDED
42
43#ifndef __cplusplus
44# include <stddef.h> /* for size_t definition */
45#else
46# include <cstddef>
47using std::size_t;
48#endif
49
50#ifdef __cplusplus
51extern "C" {
52#endif
53
54/* ====================================================================== */
55/* Version */
56/* ====================================================================== */
57
60#ifndef GEOS_VERSION_MAJOR
61#define GEOS_VERSION_MAJOR 3
62#endif
63#ifndef GEOS_VERSION_MINOR
64#define GEOS_VERSION_MINOR 15
65#endif
66#ifndef GEOS_VERSION_PATCH
67#define GEOS_VERSION_PATCH 0dev
68#endif
69#ifndef GEOS_VERSION
70#define GEOS_VERSION "3.15.0dev"
71#endif
72#ifndef GEOS_JTS_PORT
73#define GEOS_JTS_PORT "1.18.0"
74#endif
75
76#define GEOS_CAPI_VERSION_MAJOR 1
77#define GEOS_CAPI_VERSION_MINOR 21
78#define GEOS_CAPI_VERSION_PATCH 0
79#define GEOS_CAPI_VERSION "3.15.0dev-CAPI-1.21.0"
80
81#define GEOS_CAPI_FIRST_INTERFACE GEOS_CAPI_VERSION_MAJOR
82#define GEOS_CAPI_LAST_INTERFACE (GEOS_CAPI_VERSION_MAJOR+GEOS_CAPI_VERSION_MINOR)
83
86#include <geos/export.h>
87
88
95typedef struct GEOSContextHandle_HS *GEOSContextHandle_t;
96
105typedef void (*GEOSMessageHandler)(GEOS_PRINTF_FORMAT const char *fmt, ...)
106 GEOS_PRINTF_FORMAT_ATTR(1, 2);
107
118typedef void (*GEOSMessageHandler_r)(const char *message, void *userdata);
119
120/*
121* When we're included by geos_c.cpp, these types are #defined to the
122* C++ definitions via preprocessor. We don't touch them to allow the
123* compiler to cross-check the declarations. However, for all "normal"
124* C-API users, we need to define these types as "opaque" struct pointers, as
125* those clients don't have access to the original C++ headers, by design.
126*/
127#ifndef GEOSGeometry
128
140typedef struct GEOSGeom_t GEOSGeometry;
141
147typedef struct GEOSPrepGeom_t GEOSPreparedGeometry;
148
155typedef struct GEOSCoordSeq_t GEOSCoordSequence;
156
162typedef struct GEOSSTRtree_t GEOSSTRtree;
163
169typedef struct GEOSBufParams_t GEOSBufferParams;
170
176typedef struct GEOSCoverageCleanParams_t GEOSCoverageCleanParams;
177
183typedef struct GEOSMakeValidParams_t GEOSMakeValidParams;
184
189typedef struct GEOSClusterInfo_t GEOSClusterInfo;
190
191#endif
192
195/*
196* These are compatibility definitions for source compatibility
197* with GEOS 2.X clients relying on that type.
198*/
199typedef GEOSGeometry* GEOSGeom;
200typedef GEOSCoordSequence* GEOSCoordSeq;
201
228 GEOS_CIRCULARSTRING,
229 GEOS_COMPOUNDCURVE,
230 GEOS_CURVEPOLYGON,
231 GEOS_MULTICURVE,
232 GEOS_MULTISURFACE,
233};
234
247
263
278
286typedef void (*GEOSQueryCallback)(void *item, void *userdata);
287
305typedef int (*GEOSDistanceCallback)(
306 const void* item1,
307 const void* item2,
308 double* distance,
309 void* userdata);
310
311
325 double* x,
326 double* y,
327 void* userdata);
328
329
344 double* x,
345 double* y,
346 double* z,
347 void* userdata);
348
349
350/* ========== Interruption ========== */
359typedef void (GEOSInterruptCallback)(void);
360
369typedef int (GEOSContextInterruptCallback)(void*);
370
383
397 GEOSContextHandle_t extHandle,
399 void* userData);
400
407extern void GEOS_DLL GEOS_interruptRequest(void);
408
413extern void GEOS_DLL GEOS_interruptThread(void);
414
419extern void GEOS_DLL GEOS_interruptCancel(void);
420
421/* ========== Initialization and Cleanup ========== */
422
431extern GEOSContextHandle_t GEOS_DLL GEOS_init_r(void);
432
440extern void GEOS_DLL GEOS_finish_r(GEOSContextHandle_t handle);
441
451 GEOSContextHandle_t extHandle,
453
465 GEOSContextHandle_t extHandle,
467
478 GEOSContextHandle_t extHandle,
480 void *userData);
481
494 GEOSContextHandle_t extHandle,
496 void *userData);
497
498/* ========== Coordinate Sequence functions ========== */
499
502 GEOSContextHandle_t handle,
503 unsigned int size,
504 unsigned int dims);
505
508 GEOSContextHandle_t handle,
509 unsigned int size,
510 int hasZ,
511 int hasM);
512
515 GEOSContextHandle_t handle,
516 const double* buf,
517 unsigned int size,
518 int hasZ,
519 int hasM);
520
523 GEOSContextHandle_t handle,
524 const double* x,
525 const double* y,
526 const double* z,
527 const double* m,
528 unsigned int size);
529
531extern int GEOS_DLL GEOSCoordSeq_copyToBuffer_r(
532 GEOSContextHandle_t handle,
533 const GEOSCoordSequence* s,
534 double* buf,
535 int hasZ,
536 int hasM);
537
539extern int GEOS_DLL GEOSCoordSeq_copyToArrays_r(
540 GEOSContextHandle_t handle,
541 const GEOSCoordSequence* s,
542 double* x,
543 double* y,
544 double* z,
545 double* m);
546
549 GEOSContextHandle_t handle,
550 const GEOSCoordSequence* s);
551
553extern void GEOS_DLL GEOSCoordSeq_destroy_r(
554 GEOSContextHandle_t handle,
556
558extern char GEOS_DLL GEOSCoordSeq_hasZ_r(
559 GEOSContextHandle_t handle,
561
563extern char GEOS_DLL GEOSCoordSeq_hasM_r(
564 GEOSContextHandle_t handle,
566
568extern int GEOS_DLL GEOSCoordSeq_setX_r(
569 GEOSContextHandle_t handle,
570 GEOSCoordSequence* s, unsigned int idx,
571 double val);
572
574extern int GEOS_DLL GEOSCoordSeq_setY_r(
575 GEOSContextHandle_t handle,
576 GEOSCoordSequence* s, unsigned int idx,
577 double val);
578
580extern int GEOS_DLL GEOSCoordSeq_setZ_r(
581 GEOSContextHandle_t handle,
582 GEOSCoordSequence* s, unsigned int idx,
583 double val);
584
586extern int GEOS_DLL GEOSCoordSeq_setM_r(
587 GEOSContextHandle_t handle,
588 GEOSCoordSequence* s, unsigned int idx,
589 double val);
590
592extern int GEOS_DLL GEOSCoordSeq_setXY_r(
593 GEOSContextHandle_t handle,
594 GEOSCoordSequence* s, unsigned int idx,
595 double x, double y);
596
598extern int GEOS_DLL GEOSCoordSeq_setXYZ_r(
599 GEOSContextHandle_t handle,
600 GEOSCoordSequence* s, unsigned int idx,
601 double x, double y, double z);
602
604extern int GEOS_DLL GEOSCoordSeq_setOrdinate_r(
605 GEOSContextHandle_t handle,
607 unsigned int idx,
608 unsigned int dim, double val);
609
611extern int GEOS_DLL GEOSCoordSeq_getX_r(
612 GEOSContextHandle_t handle,
613 const GEOSCoordSequence* s,
614 unsigned int idx, double *val);
615
617extern int GEOS_DLL GEOSCoordSeq_getY_r(
618 GEOSContextHandle_t handle,
619 const GEOSCoordSequence* s,
620 unsigned int idx, double *val);
621
623extern int GEOS_DLL GEOSCoordSeq_getZ_r(
624 GEOSContextHandle_t handle,
625 const GEOSCoordSequence* s,
626 unsigned int idx, double *val);
627
629extern int GEOS_DLL GEOSCoordSeq_getM_r(
630 GEOSContextHandle_t handle,
631 const GEOSCoordSequence* s,
632 unsigned int idx, double *val);
633
635extern int GEOS_DLL GEOSCoordSeq_getXY_r(
636 GEOSContextHandle_t handle,
637 const GEOSCoordSequence* s,
638 unsigned int idx,
639 double *x, double *y);
640
642extern int GEOS_DLL GEOSCoordSeq_getXYZ_r(
643 GEOSContextHandle_t handle,
644 const GEOSCoordSequence* s,
645 unsigned int idx,
646 double *x, double *y, double *z);
647
649extern int GEOS_DLL GEOSCoordSeq_getOrdinate_r(
650 GEOSContextHandle_t handle,
651 const GEOSCoordSequence* s,
652 unsigned int idx,
653 unsigned int dim, double *val);
654
656extern int GEOS_DLL GEOSCoordSeq_getSize_r(
657 GEOSContextHandle_t handle,
658 const GEOSCoordSequence* s,
659 unsigned int *size);
660
663 GEOSContextHandle_t handle,
664 const GEOSCoordSequence* s,
665 unsigned int *dims);
666
668extern int GEOS_DLL GEOSCoordSeq_isCCW_r(
669 GEOSContextHandle_t handle,
670 const GEOSCoordSequence* s,
671 char* is_ccw);
672
673/* ========= Linear referencing functions ========= */
674
676extern double GEOS_DLL GEOSProject_r(
677 GEOSContextHandle_t handle,
678 const GEOSGeometry *line,
679 const GEOSGeometry *point);
680
683 GEOSContextHandle_t handle,
684 const GEOSGeometry *line,
685 double d);
686
688extern double GEOS_DLL GEOSProjectNormalized_r(
689 GEOSContextHandle_t handle,
690 const GEOSGeometry *g,
691 const GEOSGeometry *p);
692
695 GEOSContextHandle_t handle,
696 const GEOSGeometry *g,
697 double d);
698
699/* ========== Buffer related functions ========== */
700
702extern GEOSGeometry GEOS_DLL *GEOSBuffer_r(
703 GEOSContextHandle_t handle,
704 const GEOSGeometry* g,
705 double width, int quadsegs);
706
722
744
747 GEOSContextHandle_t handle);
748
750extern void GEOS_DLL GEOSBufferParams_destroy_r(
751 GEOSContextHandle_t handle,
752 GEOSBufferParams* parms);
753
756 GEOSContextHandle_t handle,
758 int style);
759
762 GEOSContextHandle_t handle,
764 int joinStyle);
765
768 GEOSContextHandle_t handle,
770 double mitreLimit);
771
774 GEOSContextHandle_t handle,
776 int quadSegs);
777
780 GEOSContextHandle_t handle,
782 int singleSided);
783
786 GEOSContextHandle_t handle,
787 const GEOSGeometry* g,
788 const GEOSBufferParams* p,
789 double width);
790
793 GEOSContextHandle_t handle,
794 const GEOSGeometry* g,
795 double width, int quadsegs, int endCapStyle,
796 int joinStyle, double mitreLimit);
797
800 GEOSContextHandle_t handle,
801 const GEOSGeometry* g,
802 double tolerance);
803
806 GEOSContextHandle_t handle,
807 const GEOSGeometry* g, double width, int quadsegs,
808 int joinStyle, double mitreLimit);
809
810
811/* ========= Geometry Constructors ========= */
812
815 GEOSContextHandle_t handle,
817
820 GEOSContextHandle_t handle,
821 double x, double y);
822
825 GEOSContextHandle_t handle);
826
829 GEOSContextHandle_t handle,
831
834 GEOSContextHandle_t handle,
836
839 GEOSContextHandle_t handle);
840
843 GEOSContextHandle_t handle);
844
847 GEOSContextHandle_t handle,
848 GEOSGeometry* shell,
849 GEOSGeometry** holes,
850 unsigned int nholes);
851
854 GEOSContextHandle_t handle,
855 int type,
856 GEOSGeometry* *geoms,
857 unsigned int ngeoms);
858
861 GEOSContextHandle_t handle,
862 GEOSGeometry * collection,
863 unsigned int * ngeoms);
864
867 GEOSContextHandle_t handle, int type);
868
871 GEOSContextHandle_t handle,
872 double xmin, double ymin,
873 double xmax, double ymax);
874
877 GEOSContextHandle_t handle,
878 const GEOSGeometry* g);
879
882 GEOSContextHandle_t handle,
884
887 GEOSContextHandle_t handle);
888
891 GEOSContextHandle_t handle,
892 GEOSGeometry** curves,
893 unsigned int ncurves);
894
897 GEOSContextHandle_t handle);
898
901 GEOSContextHandle_t handle,
902 GEOSGeometry* shell,
903 GEOSGeometry** holes,
904 unsigned int nholes);
905
908 GEOSContextHandle_t handle);
909
910/* ========= Memory management ========= */
911
913extern void GEOS_DLL GEOSGeom_destroy_r(
914 GEOSContextHandle_t handle,
915 GEOSGeometry* g);
916
917/* ========= Coverages ========= */
918
920extern GEOSGeometry GEOS_DLL *
922 GEOSContextHandle_t handle,
923 const GEOSGeometry* g);
924
926extern int GEOS_DLL
928 GEOSContextHandle_t extHandle,
929 const GEOSGeometry* input,
930 double gapWidth,
931 GEOSGeometry** output);
932
934extern GEOSGeometry GEOS_DLL *
936 GEOSContextHandle_t extHandle,
937 const GEOSGeometry* input,
938 double tolerance,
939 int preserveBoundary);
940
942extern GEOSGeometry GEOS_DLL *
944 GEOSContextHandle_t handle,
945 const GEOSGeometry* input,
946 int edgetype);
947
949extern GEOSCoverageCleanParams GEOS_DLL *
951 GEOSContextHandle_t extHandle);
952
954extern void GEOS_DLL
956 GEOSContextHandle_t extHandle,
958
960extern int GEOS_DLL
962 GEOSContextHandle_t extHandle,
964 double snappingDistance);
965
967extern int GEOS_DLL
969 GEOSContextHandle_t extHandle,
971 double gapMaximumWidth);
972
974extern int GEOS_DLL
976 GEOSContextHandle_t extHandle,
978 int overlapMergeStrategy);
979
981extern GEOSGeometry GEOS_DLL *
983 GEOSContextHandle_t extHandle,
984 const GEOSGeometry* input,
985 const GEOSCoverageCleanParams* params);
986
988extern GEOSGeometry GEOS_DLL *
990 GEOSContextHandle_t extHandle,
991 const GEOSGeometry* input);
992
993/* ========= Topology Operations ========= */
994
997 GEOSContextHandle_t handle,
998 const GEOSGeometry* g);
999
1002 GEOSContextHandle_t handle,
1003 const GEOSGeometry* g1,
1004 const GEOSGeometry* g2);
1005
1008 GEOSContextHandle_t handle,
1009 const GEOSGeometry* g1,
1010 const GEOSGeometry* g2,
1011 double gridSize);
1012
1015 GEOSContextHandle_t handle,
1016 const GEOSGeometry* g);
1017
1020 GEOSContextHandle_t handle,
1021 const GEOSGeometry* g,
1022 double ratio,
1023 unsigned int allowHoles);
1024
1027 GEOSContextHandle_t handle,
1028 const GEOSGeometry* g,
1029 double ratio,
1030 unsigned int allowHoles);
1031
1034 GEOSContextHandle_t handle,
1035 const GEOSGeometry* g,
1036 unsigned int isOuter,
1037 double vertexNumFraction);
1038
1041 GEOSContextHandle_t handle,
1042 const GEOSGeometry* g,
1043 unsigned int isOuter,
1044 unsigned int parameterMode,
1045 double parameter);
1046
1049 GEOSContextHandle_t handle,
1050 const GEOSGeometry* g,
1051 double lengthRatio,
1052 unsigned int isTight,
1053 unsigned int isHolesAllowed);
1054
1057 GEOSContextHandle_t handle,
1058 const GEOSGeometry* g);
1059
1062 GEOSContextHandle_t handle,
1063 const GEOSGeometry* g,
1064 double tolerance);
1065
1068 GEOSContextHandle_t handle,
1069 const GEOSGeometry* g,
1070 const GEOSGeometry* boundary,
1071 double tolerance);
1072
1075 GEOSContextHandle_t handle,
1076 const GEOSGeometry* g);
1077
1080 GEOSContextHandle_t handle,
1081 const GEOSGeometry* g);
1082
1084extern int GEOS_DLL GEOSMinimumClearance_r(
1085 GEOSContextHandle_t handle,
1086 const GEOSGeometry* g,
1087 double* distance);
1088
1091 GEOSContextHandle_t handle,
1092 const GEOSGeometry* g1,
1093 const GEOSGeometry* g2);
1094
1097 GEOSContextHandle_t handle,
1098 const GEOSGeometry* g1,
1099 const GEOSGeometry* g2,
1100 double gridSize);
1101
1104 GEOSContextHandle_t handle,
1105 const GEOSGeometry* g1,
1106 const GEOSGeometry* g2);
1107
1110 GEOSContextHandle_t handle,
1111 const GEOSGeometry* g1,
1112 const GEOSGeometry* g2,
1113 double gridSize);
1114
1117 GEOSContextHandle_t handle,
1118 const GEOSGeometry* g);
1119
1121extern GEOSGeometry GEOS_DLL *GEOSUnion_r(
1122 GEOSContextHandle_t handle,
1123 const GEOSGeometry* g1,
1124 const GEOSGeometry* g2);
1125
1128 GEOSContextHandle_t handle,
1129 const GEOSGeometry* g1,
1130 const GEOSGeometry* g2,
1131 double gridSize);
1132
1135 GEOSContextHandle_t handle,
1136 const GEOSGeometry* g);
1137
1140 GEOSContextHandle_t handle,
1141 const GEOSGeometry* g,
1142 double gridSize);
1143
1146 GEOSContextHandle_t handle,
1147 const GEOSGeometry* g);
1148
1151 GEOSContextHandle_t handle,
1152 const GEOSGeometry* g);
1153
1156 GEOSContextHandle_t handle,
1157 const GEOSGeometry* g);
1158
1161 GEOSContextHandle_t handle,
1162 const GEOSGeometry* g,
1163 double* radius,
1164 GEOSGeometry** center);
1165
1167extern GEOSGeometry GEOS_DLL *GEOSNode_r(
1168 GEOSContextHandle_t handle,
1169 const GEOSGeometry* g);
1170
1173 GEOSContextHandle_t handle,
1174 const GEOSGeometry* g,
1175 double xmin, double ymin,
1176 double xmax, double ymax);
1177
1180 GEOSContextHandle_t handle,
1181 const GEOSGeometry* g,
1182 double xmin, double ymin,
1183 double xmax, double ymax,
1184 unsigned nx, unsigned ny,
1185 int includeExterior);
1186
1189 GEOSContextHandle_t handle,
1190 const GEOSGeometry* g,
1191 double xmin, double ymin,
1192 double xmax, double ymax,
1193 unsigned nx, unsigned ny,
1194 float* buf);
1195
1198 GEOSContextHandle_t handle,
1199 const GEOSGeometry *const geoms[],
1200 unsigned int ngeoms);
1201
1204 GEOSContextHandle_t handle,
1205 const GEOSGeometry *const geoms[],
1206 unsigned int ngems);
1207
1210 GEOSContextHandle_t handle,
1211 const GEOSGeometry * const geoms[],
1212 unsigned int ngeoms);
1213
1216 GEOSContextHandle_t handle,
1217 const GEOSGeometry* input,
1218 GEOSGeometry** cuts,
1219 GEOSGeometry** dangles,
1220 GEOSGeometry** invalidRings);
1221
1224 GEOSContextHandle_t handle,
1225 const GEOSGeometry* g);
1226
1229 GEOSContextHandle_t handle,
1230 const GEOSGeometry* g);
1231
1233extern size_t GEOS_DLL *GEOSMinimumSpanningTree_r(
1234 GEOSContextHandle_t handle,
1235 const GEOSGeometry * const geoms[],
1236 unsigned int ngeoms);
1237
1240 GEOSContextHandle_t handle,
1241 const GEOSGeometry* g);
1242
1245 GEOSContextHandle_t handle,
1246 const GEOSGeometry* g,
1247 double start_fraction,
1248 double end_fdraction);
1249
1252 GEOSContextHandle_t handle,
1253 const GEOSGeometry* g);
1254
1257 GEOSContextHandle_t handle,
1258 const GEOSGeometry* g,
1259 double tolerance);
1260
1263 GEOSContextHandle_t handle,
1264 const GEOSGeometry* g, double tolerance);
1265
1268 GEOSContextHandle_t handle,
1269 const GEOSGeometry* g);
1270
1273 GEOSContextHandle_t handle,
1274 const GEOSGeometry* g1,
1275 const GEOSGeometry* g2);
1276
1278extern GEOSGeometry GEOS_DLL *GEOSSnap_r(
1279 GEOSContextHandle_t handle,
1280 const GEOSGeometry* g1,
1281 const GEOSGeometry* g2,
1282 double tolerance);
1283
1286 GEOSContextHandle_t handle,
1287 const GEOSGeometry *g,
1288 double tolerance,
1289 int onlyEdges);
1290
1293 GEOSContextHandle_t handle,
1294 const GEOSGeometry *g);
1295
1298 GEOSContextHandle_t extHandle,
1299 const GEOSGeometry *g,
1300 const GEOSGeometry *env,
1301 double tolerance,
1302 int flags);
1303
1305extern int GEOS_DLL GEOSSegmentIntersection_r(
1306 GEOSContextHandle_t extHandle,
1307 double ax0, double ay0,
1308 double ax1, double ay1,
1309 double bx0, double by0,
1310 double bx1, double by1,
1311 double* cx, double* cy);
1312
1313/* ========= Binary predicates ========= */
1314
1316extern char GEOS_DLL GEOSDisjoint_r(
1317 GEOSContextHandle_t handle,
1318 const GEOSGeometry* g1,
1319 const GEOSGeometry* g2);
1320
1322extern char GEOS_DLL GEOSTouches_r(
1323 GEOSContextHandle_t handle,
1324 const GEOSGeometry* g1,
1325 const GEOSGeometry* g2);
1326
1328extern char GEOS_DLL GEOSIntersects_r(
1329 GEOSContextHandle_t handle,
1330 const GEOSGeometry* g1,
1331 const GEOSGeometry* g2);
1332
1334extern char GEOS_DLL GEOSCrosses_r(
1335 GEOSContextHandle_t handle,
1336 const GEOSGeometry* g1,
1337 const GEOSGeometry* g2);
1338
1340extern char GEOS_DLL GEOSWithin_r(
1341 GEOSContextHandle_t handle,
1342 const GEOSGeometry* g1,
1343 const GEOSGeometry* g2);
1344
1346extern char GEOS_DLL GEOSContains_r(
1347 GEOSContextHandle_t handle,
1348 const GEOSGeometry* g1,
1349 const GEOSGeometry* g2);
1350
1352extern char GEOS_DLL GEOSOverlaps_r(
1353 GEOSContextHandle_t handle,
1354 const GEOSGeometry* g1,
1355 const GEOSGeometry* g2);
1356
1358extern char GEOS_DLL GEOSEquals_r(
1359 GEOSContextHandle_t handle,
1360 const GEOSGeometry* g1,
1361 const GEOSGeometry* g2);
1362
1364extern char GEOS_DLL GEOSEqualsExact_r(
1365 GEOSContextHandle_t handle,
1366 const GEOSGeometry* g1,
1367 const GEOSGeometry* g2,
1368 double tolerance);
1369
1371extern char GEOS_DLL GEOSEqualsIdentical_r(
1372 GEOSContextHandle_t handle,
1373 const GEOSGeometry* g1,
1374 const GEOSGeometry* g2);
1375
1377extern char GEOS_DLL GEOSCovers_r(
1378 GEOSContextHandle_t handle,
1379 const GEOSGeometry* g1,
1380 const GEOSGeometry* g2);
1381
1383extern char GEOS_DLL GEOSCoveredBy_r(
1384 GEOSContextHandle_t handle,
1385 const GEOSGeometry* g1,
1386 const GEOSGeometry* g2);
1387
1388/* ========= Prepared Geometry Binary Predicates ========== */
1389
1392 GEOSContextHandle_t handle,
1393 const GEOSGeometry* g);
1394
1396extern void GEOS_DLL GEOSPreparedGeom_destroy_r(
1397 GEOSContextHandle_t handle,
1398 const GEOSPreparedGeometry* g);
1399
1401extern char GEOS_DLL GEOSPreparedContains_r(
1402 GEOSContextHandle_t handle,
1403 const GEOSPreparedGeometry* pg1,
1404 const GEOSGeometry* g2);
1405
1407extern char GEOS_DLL GEOSPreparedContainsXY_r(
1408 GEOSContextHandle_t handle,
1409 const GEOSPreparedGeometry* pg1,
1410 double x,
1411 double y);
1412
1415 GEOSContextHandle_t handle,
1416 const GEOSPreparedGeometry* pg1,
1417 const GEOSGeometry* g2);
1418
1420extern char GEOS_DLL GEOSPreparedCoveredBy_r(
1421 GEOSContextHandle_t handle,
1422 const GEOSPreparedGeometry* pg1,
1423 const GEOSGeometry* g2);
1424
1426extern char GEOS_DLL GEOSPreparedCovers_r(
1427 GEOSContextHandle_t handle,
1428 const GEOSPreparedGeometry* pg1,
1429 const GEOSGeometry* g2);
1430
1432extern char GEOS_DLL GEOSPreparedCrosses_r(
1433 GEOSContextHandle_t handle,
1434 const GEOSPreparedGeometry* pg1,
1435 const GEOSGeometry* g2);
1436
1438extern char GEOS_DLL GEOSPreparedDisjoint_r(
1439 GEOSContextHandle_t handle,
1440 const GEOSPreparedGeometry* pg1,
1441 const GEOSGeometry* g2);
1442
1444extern char GEOS_DLL GEOSPreparedIntersects_r(
1445 GEOSContextHandle_t handle,
1446 const GEOSPreparedGeometry* pg1,
1447 const GEOSGeometry* g2);
1448
1450extern char GEOS_DLL GEOSPreparedIntersectsXY_r(
1451 GEOSContextHandle_t handle,
1452 const GEOSPreparedGeometry* pg1,
1453 double x,
1454 double y);
1455
1457extern char GEOS_DLL GEOSPreparedOverlaps_r(
1458 GEOSContextHandle_t handle,
1459 const GEOSPreparedGeometry* pg1,
1460 const GEOSGeometry* g2);
1461
1463extern char GEOS_DLL GEOSPreparedTouches_r(
1464 GEOSContextHandle_t handle,
1465 const GEOSPreparedGeometry* pg1,
1466 const GEOSGeometry* g2);
1467
1469extern char GEOS_DLL GEOSPreparedWithin_r(
1470 GEOSContextHandle_t handle,
1471 const GEOSPreparedGeometry* pg1,
1472 const GEOSGeometry* g2);
1473
1475extern char GEOS_DLL * GEOSPreparedRelate_r(
1476 GEOSContextHandle_t handle,
1477 const GEOSPreparedGeometry* pg1,
1478 const GEOSGeometry* g2);
1479
1481extern char GEOS_DLL GEOSPreparedRelatePattern_r(
1482 GEOSContextHandle_t handle,
1483 const GEOSPreparedGeometry* pg1,
1484 const GEOSGeometry* g2,
1485 const char* im);
1486
1489 GEOSContextHandle_t handle,
1490 const GEOSPreparedGeometry* pg1,
1491 const GEOSGeometry* g2);
1492
1494extern int GEOS_DLL GEOSPreparedDistance_r(
1495 GEOSContextHandle_t handle,
1496 const GEOSPreparedGeometry* pg1,
1497 const GEOSGeometry* g2, double *dist);
1498
1500extern char GEOS_DLL GEOSPreparedDistanceWithin_r(
1501 GEOSContextHandle_t handle,
1502 const GEOSPreparedGeometry* pg1,
1503 const GEOSGeometry* g2, double dist);
1504
1505/* ========== STRtree ========== */
1506
1509 GEOSContextHandle_t handle,
1510 size_t nodeCapacity);
1511
1513extern int GEOS_DLL GEOSSTRtree_build_r(
1514 GEOSContextHandle_t handle,
1515 GEOSSTRtree *tree);
1516
1518extern void GEOS_DLL GEOSSTRtree_insert_r(
1519 GEOSContextHandle_t handle,
1520 GEOSSTRtree *tree,
1521 const GEOSGeometry *g,
1522 void *item);
1523
1525extern void GEOS_DLL GEOSSTRtree_query_r(
1526 GEOSContextHandle_t handle,
1527 GEOSSTRtree *tree,
1528 const GEOSGeometry *g,
1529 GEOSQueryCallback callback,
1530 void *userdata);
1531
1534 GEOSContextHandle_t handle,
1535 GEOSSTRtree *tree,
1536 const GEOSGeometry* geom);
1537
1539extern const void GEOS_DLL *GEOSSTRtree_nearest_generic_r(
1540 GEOSContextHandle_t handle,
1541 GEOSSTRtree *tree,
1542 const void* item,
1543 const GEOSGeometry* itemEnvelope,
1544 GEOSDistanceCallback distancefn,
1545 void* userdata);
1546
1548extern void GEOS_DLL GEOSSTRtree_iterate_r(
1549 GEOSContextHandle_t handle,
1550 GEOSSTRtree *tree,
1551 GEOSQueryCallback callback,
1552 void *userdata);
1553
1555extern char GEOS_DLL GEOSSTRtree_remove_r(
1556 GEOSContextHandle_t handle,
1557 GEOSSTRtree *tree,
1558 const GEOSGeometry *g,
1559 void *item);
1560
1562extern void GEOS_DLL GEOSSTRtree_destroy_r(
1563 GEOSContextHandle_t handle,
1564 GEOSSTRtree *tree);
1565
1566
1567/* ========= Unary predicate ========= */
1568
1570extern char GEOS_DLL GEOSisEmpty_r(
1571 GEOSContextHandle_t handle,
1572 const GEOSGeometry* g);
1573
1575extern char GEOS_DLL GEOSisSimple_r(
1576 GEOSContextHandle_t handle,
1577 const GEOSGeometry* g);
1578
1580extern char GEOS_DLL GEOSisRing_r(
1581 GEOSContextHandle_t handle,
1582 const GEOSGeometry* g);
1583
1585extern char GEOS_DLL GEOSHasZ_r(
1586 GEOSContextHandle_t handle,
1587 const GEOSGeometry* g);
1588
1590extern char GEOS_DLL GEOSHasM_r(
1591 GEOSContextHandle_t handle,
1592 const GEOSGeometry* g);
1593
1595extern char GEOS_DLL GEOSisClosed_r(
1596 GEOSContextHandle_t handle,
1597 const GEOSGeometry *g);
1598
1599/* ========== Dimensionally Extended 9 Intersection Model ========== */
1600
1617
1619extern char GEOS_DLL GEOSRelatePattern_r(
1620 GEOSContextHandle_t handle,
1621 const GEOSGeometry* g1,
1622 const GEOSGeometry* g2,
1623 const char *imPattern);
1624
1626extern char GEOS_DLL *GEOSRelate_r(
1627 GEOSContextHandle_t handle,
1628 const GEOSGeometry* g1,
1629 const GEOSGeometry* g2);
1630
1632extern char GEOS_DLL GEOSRelatePatternMatch_r(
1633 GEOSContextHandle_t handle,
1634 const char *intMatrix,
1635 const char *imPattern);
1636
1638extern char GEOS_DLL *GEOSRelateBoundaryNodeRule_r(
1639 GEOSContextHandle_t handle,
1640 const GEOSGeometry* g1,
1641 const GEOSGeometry* g2,
1642 int bnr);
1643
1644/* ========= Validity checking ========= */
1645
1652
1654extern char GEOS_DLL GEOSisValid_r(
1655 GEOSContextHandle_t handle,
1656 const GEOSGeometry* g);
1657
1659extern char GEOS_DLL *GEOSisValidReason_r(
1660 GEOSContextHandle_t handle,
1661 const GEOSGeometry* g);
1662
1664extern char GEOS_DLL GEOSisSimpleDetail_r(
1665 GEOSContextHandle_t handle,
1666 const GEOSGeometry* g,
1667 int findAllLocations,
1668 GEOSGeometry** location);
1669
1671extern char GEOS_DLL GEOSisValidDetail_r(
1672 GEOSContextHandle_t handle,
1673 const GEOSGeometry* g,
1674 int flags,
1675 char** reason,
1676 GEOSGeometry** location);
1677
1678/* ========== Make Valid ========== */
1679
1696
1699 GEOSContextHandle_t extHandle);
1700
1703 GEOSContextHandle_t handle,
1704 GEOSMakeValidParams* parms);
1705
1708 GEOSContextHandle_t handle,
1710 int style);
1711
1714 GEOSContextHandle_t handle,
1716 enum GEOSMakeValidMethods method);
1717
1720 GEOSContextHandle_t handle,
1721 const GEOSGeometry* g);
1722
1725 GEOSContextHandle_t handle,
1726 const GEOSGeometry* g,
1727 const GEOSMakeValidParams* makeValidParams);
1728
1731 GEOSContextHandle_t handle,
1732 const GEOSGeometry* g,
1733 double tolerance);
1734
1735/* ========== Geometry info ========== */
1736
1738/* Return NULL on exception, result must be freed by caller. */
1739extern char GEOS_DLL *GEOSGeomType_r(
1740 GEOSContextHandle_t handle,
1741 const GEOSGeometry* g);
1742
1744extern int GEOS_DLL GEOSGeomTypeId_r(
1745 GEOSContextHandle_t handle,
1746 const GEOSGeometry* g);
1747
1749extern int GEOS_DLL GEOSGetSRID_r(
1750 GEOSContextHandle_t handle,
1751 const GEOSGeometry* g);
1752
1754extern void GEOS_DLL GEOSSetSRID_r(
1755 GEOSContextHandle_t handle,
1756 GEOSGeometry* g, int SRID);
1757
1759extern void GEOS_DLL *GEOSGeom_getUserData_r(
1760 GEOSContextHandle_t handle,
1761 const GEOSGeometry* g);
1762
1764extern void GEOS_DLL GEOSGeom_setUserData_r(
1765 GEOSContextHandle_t handle,
1766 GEOSGeometry* g,
1767 void* userData);
1768
1770extern int GEOS_DLL GEOSGetNumGeometries_r(
1771 GEOSContextHandle_t handle,
1772 const GEOSGeometry* g);
1773
1775extern const GEOSGeometry GEOS_DLL *GEOSGetGeometryN_r(
1776 GEOSContextHandle_t handle,
1777 const GEOSGeometry* g, int n);
1778
1780extern int GEOS_DLL GEOSNormalize_r(
1781 GEOSContextHandle_t handle,
1782 GEOSGeometry* g);
1783
1785extern int GEOS_DLL GEOSOrientPolygons_r(
1786 GEOSContextHandle_t handle,
1787 GEOSGeometry* g,
1788 int exteriorCW);
1789
1802
1805 GEOSContextHandle_t handle,
1806 const GEOSGeometry *g,
1807 double gridSize,
1808 int flags);
1809
1811extern double GEOS_DLL GEOSGeom_getPrecision_r(
1812 GEOSContextHandle_t handle,
1813 const GEOSGeometry *g);
1814
1816extern int GEOS_DLL GEOSGetNumInteriorRings_r(
1817 GEOSContextHandle_t handle,
1818 const GEOSGeometry* g);
1819
1821extern int GEOS_DLL GEOSGeomGetNumPoints_r(
1822 GEOSContextHandle_t handle,
1823 const GEOSGeometry* g);
1824
1826extern int GEOS_DLL GEOSGeomGetX_r(
1827 GEOSContextHandle_t handle,
1828 const GEOSGeometry *g,
1829 double *x);
1830
1832extern int GEOS_DLL GEOSGeomGetY_r(
1833 GEOSContextHandle_t handle,
1834 const GEOSGeometry *g,
1835 double *y);
1836
1838extern int GEOS_DLL GEOSGeomGetZ_r(
1839 GEOSContextHandle_t handle,
1840 const GEOSGeometry *g,
1841 double *z);
1842
1844extern int GEOS_DLL GEOSGeomGetM_r(
1845 GEOSContextHandle_t handle,
1846 const GEOSGeometry *g,
1847 double *m);
1848
1851 GEOSContextHandle_t handle,
1852 const GEOSGeometry* g, int n);
1853
1856 GEOSContextHandle_t handle,
1857 const GEOSGeometry* g);
1858
1860extern int GEOS_DLL GEOSGetNumCoordinates_r(
1861 GEOSContextHandle_t handle,
1862 const GEOSGeometry* g);
1863
1866 GEOSContextHandle_t handle,
1867 const GEOSGeometry* g);
1868
1870extern int GEOS_DLL GEOSGeom_getDimensions_r(
1871 GEOSContextHandle_t handle,
1872 const GEOSGeometry* g);
1873
1876 GEOSContextHandle_t handle,
1877 const GEOSGeometry* g);
1878
1880extern int GEOS_DLL GEOSGeom_getXMin_r(
1881 GEOSContextHandle_t handle,
1882 const GEOSGeometry* g,
1883 double* value);
1884
1886extern int GEOS_DLL GEOSGeom_getYMin_r(
1887 GEOSContextHandle_t handle,
1888 const GEOSGeometry* g,
1889 double* value);
1890
1892extern int GEOS_DLL GEOSGeom_getXMax_r(
1893 GEOSContextHandle_t handle,
1894 const GEOSGeometry* g,
1895 double* value);
1896
1898extern int GEOS_DLL GEOSGeom_getYMax_r(
1899 GEOSContextHandle_t handle,
1900 const GEOSGeometry* g,
1901 double* value);
1902
1904extern int GEOS_DLL GEOSGeom_getExtent_r(
1905 GEOSContextHandle_t handle,
1906 const GEOSGeometry* g,
1907 double* xmin,
1908 double* ymin,
1909 double* xmax,
1910 double* ymax);
1911
1914 GEOSContextHandle_t handle,
1915 const GEOSGeometry *g,
1916 int n);
1917
1920 GEOSContextHandle_t handle,
1921 const GEOSGeometry *g);
1922
1925 GEOSContextHandle_t handle,
1926 const GEOSGeometry *g);
1927
1928/* ========= Misc functions ========= */
1929
1931extern int GEOS_DLL GEOSArea_r(
1932 GEOSContextHandle_t handle,
1933 const GEOSGeometry* g,
1934 double *area);
1935
1937extern int GEOS_DLL GEOSLength_r(
1938 GEOSContextHandle_t handle,
1939 const GEOSGeometry* g,
1940 double *length);
1941
1943extern int GEOS_DLL GEOSDistance_r(
1944 GEOSContextHandle_t handle,
1945 const GEOSGeometry* g1,
1946 const GEOSGeometry* g2,
1947 double *dist);
1948
1950extern char GEOS_DLL GEOSDistanceWithin_r(
1951 GEOSContextHandle_t handle,
1952 const GEOSGeometry* g1,
1953 const GEOSGeometry* g2,
1954 double dist);
1955
1957extern int GEOS_DLL GEOSDistanceIndexed_r(
1958 GEOSContextHandle_t handle,
1959 const GEOSGeometry* g1,
1960 const GEOSGeometry* g2,
1961 double *dist);
1962
1964extern int GEOS_DLL GEOSHausdorffDistance_r(
1965 GEOSContextHandle_t handle,
1966 const GEOSGeometry *g1,
1967 const GEOSGeometry *g2,
1968 double *dist);
1969
1972 GEOSContextHandle_t handle,
1973 const GEOSGeometry *g1,
1974 const GEOSGeometry *g2,
1975 double *dist,
1976 double *p1x, double *p1y,
1977 double *p2x, double *p2y);
1978
1981 GEOSContextHandle_t handle,
1982 const GEOSGeometry *g1,
1983 const GEOSGeometry *g2,
1984 double densifyFrac, double *dist);
1985
1988 GEOSContextHandle_t handle,
1989 const GEOSGeometry *g1,
1990 const GEOSGeometry *g2,
1991 double densifyFrac, double* dist,
1992 double *p1x, double *p1y,
1993 double *p2x, double *p2y);
1994
1996extern int GEOS_DLL GEOSFrechetDistance_r(
1997 GEOSContextHandle_t handle,
1998 const GEOSGeometry *g1,
1999 const GEOSGeometry *g2,
2000 double *dist);
2001
2004 GEOSContextHandle_t handle,
2005 const GEOSGeometry *g1,
2006 const GEOSGeometry *g2,
2007 double densifyFrac,
2008 double *dist);
2009
2010
2012extern int GEOS_DLL GEOSHilbertCode_r(
2013 GEOSContextHandle_t handle,
2014 const GEOSGeometry *geom,
2015 const GEOSGeometry* extent,
2016 unsigned int level,
2017 unsigned int *code
2018);
2019
2021extern int GEOS_DLL GEOSGeomGetLength_r(
2022 GEOSContextHandle_t handle,
2023 const GEOSGeometry *g,
2024 double *length);
2025
2028 GEOSContextHandle_t handle,
2029 const GEOSGeometry* g1,
2030 const GEOSGeometry* g2);
2031
2034 GEOSContextHandle_t handle,
2035 const GEOSGeometry* g,
2036 GEOSTransformXYCallback callback,
2037 void* userdata);
2038
2041 GEOSContextHandle_t handle,
2042 const GEOSGeometry* g,
2043 GEOSTransformXYZCallback callback,
2044 void* userdata);
2045
2048 GEOSContextHandle_t handle,
2049 const GEOSGeometry* g,
2050 double eps,
2051 unsigned minPoints);
2052
2055 GEOSContextHandle_t handle,
2056 const GEOSGeometry* g,
2057 double d);
2058
2061 GEOSContextHandle_t handle,
2062 const GEOSGeometry* g);
2063
2066 GEOSContextHandle_t handle,
2067 const GEOSGeometry* g,
2068 double d);
2069
2072 GEOSContextHandle_t handle,
2073 const GEOSGeometry* g);
2074
2077
2079extern size_t GEOS_DLL GEOSClusterInfo_getClusterSize_r(GEOSContextHandle_t, const GEOSClusterInfo* clusters, size_t i);
2080
2083
2085extern const size_t GEOS_DLL* GEOSClusterInfo_getInputsForClusterN_r(GEOSContextHandle_t, const GEOSClusterInfo* clusters, size_t i);
2086
2089
2090/* ========= Algorithms ========= */
2091
2093extern int GEOS_DLL GEOSOrientationIndex_r(
2094 GEOSContextHandle_t handle,
2095 double Ax, double Ay,
2096 double Bx, double By,
2097 double Px, double Py);
2098
2099
2100/* ========== Reader and Writer APIs ========== */
2101
2102#ifndef GEOSWKTReader
2103
2109typedef struct GEOSWKTReader_t GEOSWKTReader;
2110
2116typedef struct GEOSWKTWriter_t GEOSWKTWriter;
2117
2123typedef struct GEOSWKBReader_t GEOSWKBReader;
2124
2130typedef struct GEOSWKBWriter_t GEOSWKBWriter;
2131
2137typedef struct GEOSGeoJSONReader_t GEOSGeoJSONReader;
2138
2144typedef struct GEOSGeoJSONWriter_t GEOSGeoJSONWriter;
2145
2146#endif
2147
2148/* ========== WKT Reader ========== */
2149
2152 GEOSContextHandle_t handle);
2153
2156 GEOSWKTReader* reader);
2157
2160 GEOSContextHandle_t handle,
2161 GEOSWKTReader* reader,
2162 const char *wkt);
2163
2166 GEOSContextHandle_t handle,
2167 GEOSWKTReader *reader,
2168 char doFix);
2169
2170
2171/* ========== WKT Writer ========== */
2172
2175 GEOSContextHandle_t handle);
2176
2178extern void GEOS_DLL GEOSWKTWriter_destroy_r(
2179 GEOSContextHandle_t handle,
2180 GEOSWKTWriter* writer);
2181
2183extern char GEOS_DLL *GEOSWKTWriter_write_r(
2184 GEOSContextHandle_t handle,
2185 GEOSWKTWriter* writer,
2186 const GEOSGeometry* g);
2187
2189extern void GEOS_DLL GEOSWKTWriter_setTrim_r(
2190 GEOSContextHandle_t handle,
2191 GEOSWKTWriter *writer,
2192 char trim);
2193
2196 GEOSContextHandle_t handle,
2197 GEOSWKTWriter *writer,
2198 int precision);
2199
2202 GEOSContextHandle_t handle,
2203 GEOSWKTWriter *writer,
2204 int dim);
2205
2208 GEOSContextHandle_t handle,
2209 GEOSWKTWriter *writer);
2210
2212extern void GEOS_DLL GEOSWKTWriter_setOld3D_r(
2213 GEOSContextHandle_t handle,
2214 GEOSWKTWriter *writer,
2215 int useOld3D);
2216
2226extern int GEOS_DLL GEOS_printDouble(
2227 double d,
2228 unsigned int precision,
2229 char *result
2230);
2231
2232/* ========== WKB Reader ========== */
2233
2236 GEOSContextHandle_t handle);
2237
2239extern void GEOS_DLL GEOSWKBReader_destroy_r(
2240 GEOSContextHandle_t handle,
2241 GEOSWKBReader* reader);
2242
2245 GEOSContextHandle_t handle,
2246 GEOSWKBReader *reader,
2247 char doFix);
2248
2251 GEOSContextHandle_t handle,
2252 GEOSWKBReader* reader,
2253 const unsigned char *wkb,
2254 size_t size);
2255
2258 GEOSContextHandle_t handle,
2259 GEOSWKBReader* reader,
2260 const unsigned char *hex,
2261 size_t size);
2262
2263
2264/* ========== WKB Writer ========== */
2265
2268 GEOSContextHandle_t handle);
2269
2271extern void GEOS_DLL GEOSWKBWriter_destroy_r(
2272 GEOSContextHandle_t handle,
2273 GEOSWKBWriter* writer);
2274
2276extern unsigned char GEOS_DLL *GEOSWKBWriter_write_r(
2277 GEOSContextHandle_t handle,
2278 GEOSWKBWriter* writer,
2279 const GEOSGeometry* g,
2280 size_t *size);
2281
2283extern unsigned char GEOS_DLL *GEOSWKBWriter_writeHEX_r(
2284 GEOSContextHandle_t handle,
2285 GEOSWKBWriter* writer,
2286 const GEOSGeometry* g,
2287 size_t *size);
2288
2291 GEOSContextHandle_t handle,
2292 const GEOSWKBWriter* writer);
2293
2296 GEOSContextHandle_t handle,
2297 GEOSWKBWriter* writer, int newDimension);
2298
2301 GEOSContextHandle_t handle,
2302 const GEOSWKBWriter* writer);
2303
2305extern void GEOS_DLL GEOSWKBWriter_setByteOrder_r(
2306 GEOSContextHandle_t handle,
2307 GEOSWKBWriter* writer,
2308 int byteOrder);
2309
2311extern int GEOS_DLL GEOSWKBWriter_getFlavor_r(
2312 GEOSContextHandle_t handle,
2313 const GEOSWKBWriter* writer);
2314
2316extern void GEOS_DLL GEOSWKBWriter_setFlavor_r(
2317 GEOSContextHandle_t handle,
2318 GEOSWKBWriter* writer,
2319 int flavor);
2320
2323 GEOSContextHandle_t handle,
2324 const GEOSWKBWriter* writer);
2325
2328 GEOSContextHandle_t handle,
2329 GEOSWKBWriter* writer, const char writeSRID);
2330
2331/* ========== GeoJSON Reader ========== */
2332
2335 GEOSContextHandle_t handle);
2336
2339 GEOSGeoJSONReader* reader);
2340
2343 GEOSContextHandle_t handle,
2344 GEOSGeoJSONReader* reader,
2345 const char *geojson);
2346
2347/* ========== GeoJSON Writer ========== */
2348
2351 GEOSContextHandle_t handle);
2352
2355 GEOSGeoJSONWriter* writer);
2356
2359 GEOSContextHandle_t handle,
2360 GEOSGeoJSONWriter* writer,
2361 const GEOSGeometry* g,
2362 int indent);
2363
2366 GEOSContextHandle_t handle,
2367 GEOSGeoJSONWriter *writer,
2368 int dim);
2369
2372 GEOSContextHandle_t handle,
2373 GEOSGeoJSONWriter *writer);
2374
2376extern void GEOS_DLL GEOSFree_r(
2377 GEOSContextHandle_t handle,
2378 void *buffer);
2379
2387extern const char GEOS_DLL *GEOSversion(void);
2388
2389/*
2390* External code to GEOS can define GEOS_USE_ONLY_R_API
2391* to strip the non-reentrant API functions from this header,
2392* leaving only the "_r" compatible variants.
2393*/
2394#ifndef GEOS_USE_ONLY_R_API
2395
2396/* ========== Initialization, cleanup ================================= */
2402
2415extern void GEOS_DLL initGEOS(
2416 GEOSMessageHandler notice_function,
2417 GEOSMessageHandler error_function);
2418
2424extern void GEOS_DLL finishGEOS(void);
2425
2435extern void GEOS_DLL GEOSFree(void *buffer);
2436
2438
2439/* ========= Coordinate Sequence functions ========= */
2445
2453extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_create(unsigned int size, unsigned int dims);
2454
2463extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_createWithDimensions(unsigned int size, int hasZ, int hasM);
2464
2475extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_copyFromBuffer(const double* buf, unsigned int size, int hasZ, int hasM);
2476
2488extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_copyFromArrays(const double* x, const double* y, const double* z, const double* m, unsigned int size);
2489
2500extern int GEOS_DLL GEOSCoordSeq_copyToBuffer(const GEOSCoordSequence* s, double* buf, int hasZ, int hasM);
2501
2513extern int GEOS_DLL GEOSCoordSeq_copyToArrays(const GEOSCoordSequence* s, double* x, double* y, double* z, double* m);
2514
2522
2529
2537extern char GEOS_DLL GEOSCoordSeq_hasZ(GEOSCoordSequence* s);
2538
2546extern char GEOS_DLL GEOSCoordSeq_hasM(GEOSCoordSequence* s);
2547
2557 unsigned int idx, double val);
2567 unsigned int idx, double val);
2577 unsigned int idx, double val);
2578
2588 unsigned int idx, double val);
2589
2601 unsigned int idx, double x, double y);
2614 unsigned int idx, double x, double y, double z);
2625 unsigned int idx, unsigned int dim, double val);
2626
2635extern int GEOS_DLL GEOSCoordSeq_getX(const GEOSCoordSequence* s,
2636 unsigned int idx, double *val);
2637
2646extern int GEOS_DLL GEOSCoordSeq_getY(const GEOSCoordSequence* s,
2647 unsigned int idx, double *val);
2648
2657extern int GEOS_DLL GEOSCoordSeq_getZ(const GEOSCoordSequence* s,
2658 unsigned int idx, double *val);
2659
2668extern int GEOS_DLL GEOSCoordSeq_getM(const GEOSCoordSequence* s,
2669 unsigned int idx, double *val);
2670
2681extern int GEOS_DLL GEOSCoordSeq_getXY(const GEOSCoordSequence* s,
2682 unsigned int idx, double *x, double *y);
2694extern int GEOS_DLL GEOSCoordSeq_getXYZ(const GEOSCoordSequence* s,
2695 unsigned int idx, double *x, double *y, double *z);
2705extern int GEOS_DLL GEOSCoordSeq_getOrdinate(const GEOSCoordSequence* s,
2706 unsigned int idx, unsigned int dim, double *val);
2707
2715extern int GEOS_DLL GEOSCoordSeq_getSize(
2716 const GEOSCoordSequence* s,
2717 unsigned int *size);
2718
2726extern int GEOS_DLL GEOSCoordSeq_getDimensions(
2727 const GEOSCoordSequence* s,
2728 unsigned int *dims);
2729
2739extern int GEOS_DLL GEOSCoordSeq_isCCW(
2740 const GEOSCoordSequence* s,
2741 char* is_ccw);
2742
2744
2745/* ========= Geometry Constructors ========= */
2751
2760
2770extern GEOSGeometry GEOS_DLL *GEOSGeom_createPointFromXY(double x, double y);
2771
2780
2789
2798
2807
2816
2831 GEOSGeometry* shell,
2832 GEOSGeometry** holes,
2833 unsigned int nholes);
2834
2843
2851
2861 unsigned int ncurves);
2862
2870
2885 GEOSGeometry* shell,
2886 GEOSGeometry** holes,
2887 unsigned int nholes);
2888
2896
2911 int type,
2912 GEOSGeometry** geoms,
2913 unsigned int ngeoms);
2914
2932 GEOSGeometry * collection,
2933 unsigned int * ngeoms);
2934
2944
2956 double xmin, double ymin,
2957 double xmax, double ymax);
2958
2966extern GEOSGeometry GEOS_DLL *GEOSGeom_clone(const GEOSGeometry* g);
2967
2973extern void GEOS_DLL GEOSGeom_destroy(GEOSGeometry* g);
2974
2976
2977/* ========== Geometry info ========== */
2982
2992extern char GEOS_DLL *GEOSGeomType(const GEOSGeometry* g);
2993
3000extern int GEOS_DLL GEOSGeomTypeId(const GEOSGeometry* g);
3001
3008extern int GEOS_DLL GEOSGetSRID(const GEOSGeometry* g);
3009
3020extern void GEOS_DLL *GEOSGeom_getUserData(const GEOSGeometry* g);
3021
3034extern int GEOS_DLL GEOSGetNumGeometries(const GEOSGeometry* g);
3035
3051extern const GEOSGeometry GEOS_DLL *GEOSGetGeometryN(
3052 const GEOSGeometry* g,
3053 int n);
3054
3064extern double GEOS_DLL GEOSGeom_getPrecision(const GEOSGeometry *g);
3065
3073extern int GEOS_DLL GEOSGetNumInteriorRings(const GEOSGeometry* g);
3074
3085extern int GEOS_DLL GEOSGeomGetNumPoints(const GEOSGeometry* g);
3086
3095extern int GEOS_DLL GEOSGeomGetX(const GEOSGeometry *g, double *x);
3096
3105extern int GEOS_DLL GEOSGeomGetY(const GEOSGeometry *g, double *y);
3106
3116extern int GEOS_DLL GEOSGeomGetZ(const GEOSGeometry *g, double *z);
3117
3127extern int GEOS_DLL GEOSGeomGetM(const GEOSGeometry *g, double *m);
3128
3138extern const GEOSGeometry GEOS_DLL *GEOSGetInteriorRingN(
3139 const GEOSGeometry* g,
3140 int n);
3141
3150extern const GEOSGeometry GEOS_DLL *GEOSGetExteriorRing(
3151 const GEOSGeometry* g);
3152
3160extern int GEOS_DLL GEOSGetNumCoordinates(
3161 const GEOSGeometry* g);
3162
3173 const GEOSGeometry* g);
3174
3187extern int GEOS_DLL GEOSGeom_getDimensions(
3188 const GEOSGeometry* g);
3189
3203 const GEOSGeometry* g);
3204
3218extern int GEOS_DLL GEOSGeom_getXMin(const GEOSGeometry* g, double* value);
3219
3233extern int GEOS_DLL GEOSGeom_getYMin(const GEOSGeometry* g, double* value);
3234
3248extern int GEOS_DLL GEOSGeom_getXMax(const GEOSGeometry* g, double* value);
3249
3263extern int GEOS_DLL GEOSGeom_getYMax(const GEOSGeometry* g, double* value);
3264
3282extern int GEOS_DLL GEOSGeom_getExtent(
3283 const GEOSGeometry* g,
3284 double* xmin,
3285 double* ymin,
3286 double* xmax,
3287 double* ymax);
3288
3302extern GEOSGeometry GEOS_DLL *GEOSGeomGetPointN(const GEOSGeometry *g, int n);
3303
3317
3331
3340extern char GEOS_DLL GEOSisEmpty(const GEOSGeometry* g);
3341
3351extern char GEOS_DLL GEOSisRing(const GEOSGeometry* g);
3352
3359extern char GEOS_DLL GEOSHasZ(const GEOSGeometry* g);
3360
3368extern char GEOS_DLL GEOSHasM(const GEOSGeometry* g);
3369
3384extern char GEOS_DLL GEOSisClosed(const GEOSGeometry *g);
3385
3387
3388/* ==================================================================================== */
3393
3400extern void GEOS_DLL GEOSSetSRID(GEOSGeometry* g, int SRID);
3401
3409extern void GEOS_DLL GEOSGeom_setUserData(GEOSGeometry* g, void* userData);
3410
3434extern int GEOS_DLL GEOSNormalize(GEOSGeometry* g);
3435
3447extern int GEOS_DLL GEOSOrientPolygons(GEOSGeometry* g,
3448 int exteriorCW);
3449
3451
3452/* ========== Validity checking ============================================================ */
3458
3467extern char GEOS_DLL GEOSisSimple(const GEOSGeometry* g);
3468
3483extern char GEOS_DLL GEOSisSimpleDetail(
3484 const GEOSGeometry* g,
3485 int findAllLocations,
3486 GEOSGeometry** locations);
3487
3503extern char GEOS_DLL GEOSisValid(const GEOSGeometry* g);
3504
3514extern char GEOS_DLL *GEOSisValidReason(const GEOSGeometry *g);
3515
3530extern char GEOS_DLL GEOSisValidDetail(
3531 const GEOSGeometry* g,
3532 int flags,
3533 char** reason,
3534 GEOSGeometry** location);
3535
3544 const GEOSGeometry* g);
3545
3560 const GEOSGeometry* g,
3561 const GEOSMakeValidParams *makeValidParams);
3562
3572
3581
3592 enum GEOSMakeValidMethods method);
3593
3606 int keepCollapsed);
3607
3627extern int GEOS_DLL GEOSMinimumClearance(const GEOSGeometry* g, double* d);
3628
3641
3663 const GEOSGeometry* g,
3664 double tolerance);
3665
3667
3668/* ========= Metric functions ================================================== */
3673
3686extern int GEOS_DLL GEOSArea(
3687 const GEOSGeometry* g,
3688 double *area);
3689
3701extern int GEOS_DLL GEOSLength(
3702 const GEOSGeometry* g,
3703 double *length);
3704
3719extern int GEOS_DLL GEOSGeomGetLength(
3720 const GEOSGeometry *g,
3721 double *length);
3722
3724
3725/* ========== Distance functions ================================================ */
3731
3743extern int GEOS_DLL GEOSDistance(
3744 const GEOSGeometry* g1,
3745 const GEOSGeometry* g2,
3746 double *dist);
3747
3760extern char GEOS_DLL GEOSDistanceWithin(
3761 const GEOSGeometry* g1,
3762 const GEOSGeometry* g2,
3763 double dist);
3764
3778extern int GEOS_DLL GEOSDistanceIndexed(
3779 const GEOSGeometry* g1,
3780 const GEOSGeometry* g2,
3781 double *dist);
3782
3796 const GEOSGeometry* g1,
3797 const GEOSGeometry* g2);
3798
3810extern int GEOS_DLL GEOSHausdorffDistance(
3811 const GEOSGeometry *g1,
3812 const GEOSGeometry *g2,
3813 double *dist);
3814
3815
3831 const GEOSGeometry *g1,
3832 const GEOSGeometry *g2,
3833 double *dist,
3834 double *p1x, double *p1y,
3835 double *p2x, double *p2y);
3836
3837
3838
3854 const GEOSGeometry *g1,
3855 const GEOSGeometry *g2,
3856 double densifyFrac,
3857 double *dist);
3858
3879 const GEOSGeometry *g1,
3880 const GEOSGeometry *g2,
3881 double densifyFrac,
3882 double *dist,
3883 double* p1x, double* p1y,
3884 double* p2x, double* p2y);
3885
3899extern int GEOS_DLL GEOSFrechetDistance(
3900 const GEOSGeometry *g1,
3901 const GEOSGeometry *g2,
3902 double *dist);
3903
3920extern int GEOS_DLL GEOSFrechetDistanceDensify(
3921 const GEOSGeometry *g1,
3922 const GEOSGeometry *g2,
3923 double densifyFrac,
3924 double *dist);
3925
3927
3928/* ========== Linear referencing functions */
3934
3944extern double GEOS_DLL GEOSProject(const GEOSGeometry* line,
3945 const GEOSGeometry* point);
3946
3961extern GEOSGeometry GEOS_DLL *GEOSInterpolate(const GEOSGeometry* line,
3962 double d);
3963
3974extern double GEOS_DLL GEOSProjectNormalized(const GEOSGeometry* line,
3975 const GEOSGeometry* point);
3976
3993 const GEOSGeometry *line,
3994 double proportion);
3995
3997
3998/* ========== Overlay functions ========== */
4004
4015extern GEOSGeometry GEOS_DLL *GEOSIntersection(const GEOSGeometry* g1, const GEOSGeometry* g2);
4016
4031extern GEOSGeometry GEOS_DLL *GEOSIntersectionPrec(const GEOSGeometry* g1, const GEOSGeometry* g2, double gridSize);
4032
4044 const GEOSGeometry* ga,
4045 const GEOSGeometry* gb);
4046
4063 const GEOSGeometry* ga,
4064 const GEOSGeometry* gb,
4065 double gridSize);
4066
4079 const GEOSGeometry* ga,
4080 const GEOSGeometry* gb);
4081
4099 const GEOSGeometry* ga,
4100 const GEOSGeometry* gb,
4101 double gridSize);
4102
4113extern GEOSGeometry GEOS_DLL *GEOSUnion(
4114 const GEOSGeometry* ga,
4115 const GEOSGeometry* gb);
4116
4133 const GEOSGeometry* ga,
4134 const GEOSGeometry* gb,
4135 double gridSize);
4136
4148extern GEOSGeometry GEOS_DLL *GEOSUnaryUnion(const GEOSGeometry* g);
4149
4166 const GEOSGeometry* g,
4167 double gridSize);
4168
4180
4197 const GEOSGeometry* g,
4198 double xmin, double ymin,
4199 double xmax, double ymax);
4200
4225 const GEOSGeometry* g,
4226 double xmin, double ymin,
4227 double xmax, double ymax,
4228 unsigned nx, unsigned ny,
4229 int includeExterior);
4230
4248 const GEOSGeometry* g,
4249 double xmin, double ymin,
4250 double xmax, double ymax,
4251 unsigned nx, unsigned ny,
4252 float* buf);
4253
4273 const GEOSGeometry* g1,
4274 const GEOSGeometry* g2);
4276
4277/* ========== Clustering functions ========== */
4284static const size_t GEOS_CLUSTER_NONE = (size_t) -1;
4285
4287
4297extern GEOSClusterInfo GEOS_DLL* GEOSClusterDBSCAN(const GEOSGeometry* g, double eps, unsigned minPoints);
4298
4308extern GEOSClusterInfo GEOS_DLL* GEOSClusterGeometryDistance(const GEOSGeometry* g, double d);
4309
4319
4329extern GEOSClusterInfo GEOS_DLL* GEOSClusterEnvelopeDistance(const GEOSGeometry* g, double d);
4330
4340
4349extern size_t GEOS_DLL GEOSClusterInfo_getNumClusters(const GEOSClusterInfo* clusters);
4350
4360extern size_t GEOS_DLL GEOSClusterInfo_getClusterSize(const GEOSClusterInfo* clusters, size_t i );
4361
4371extern size_t GEOS_DLL* GEOSClusterInfo_getClustersForInputs(const GEOSClusterInfo* clusters);
4372
4381extern const size_t GEOS_DLL* GEOSClusterInfo_getInputsForClusterN(const GEOSClusterInfo* clusters, size_t i);
4382
4390extern void GEOS_DLL GEOSClusterInfo_destroy(GEOSClusterInfo* clusters);
4391
4393
4394/* ========== Buffer related functions ========== */
4399
4413extern GEOSGeometry GEOS_DLL *GEOSBuffer(const GEOSGeometry* g,
4414 double width, int quadsegs);
4415
4425
4432extern void GEOS_DLL GEOSBufferParams_destroy(GEOSBufferParams* parms);
4433
4443 int style);
4444
4454 int joinStyle);
4455
4469 double mitreLimit);
4470
4483 int quadSegs);
4484
4497 int singleSided);
4498
4510 const GEOSGeometry* g,
4511 const GEOSBufferParams* p,
4512 double width);
4513
4530 const GEOSGeometry* g,
4531 double width,
4532 int quadsegs,
4533 int endCapStyle,
4534 int joinStyle,
4535 double mitreLimit);
4536
4561 double width, int quadsegs, int joinStyle, double mitreLimit);
4562
4564
4565
4566/* ====================================================================== */
4572
4585
4586
4610extern int GEOS_DLL GEOSCoverageIsValid(
4611 const GEOSGeometry* input,
4612 double gapWidth,
4613 GEOSGeometry** invalidEdges);
4614
4641 const GEOSGeometry* input,
4642 double tolerance,
4643 int preserveBoundary);
4644
4654extern GEOSGeometry GEOS_DLL *GEOSCoverageEdges(const GEOSGeometry *input, int edgetype);
4655
4663extern GEOSCoverageCleanParams GEOS_DLL *
4665
4672extern void GEOS_DLL
4674 GEOSCoverageCleanParams* params);
4675
4696extern int GEOS_DLL
4699 double snappingDistance);
4700
4719extern int GEOS_DLL
4722 double gapMaximumWidth);
4723
4724/*
4725* Sets the overlap merge strategy to use, using one from \ref GEOSOverlapMerge.
4726* Overlaps are merged with an adjacent polygon chosen according to a specified merge strategy.
4727* The supported strategies are:
4728*
4729* * **Longest Border**: (default) merge with the polygon with longest shared border (GEOS_MERGE_LONGEST_BORDER.)
4730* * **Maximum/Minimum Area**: merge with the polygon with largest or smallest area (GEOS_MERGE_MAX_AREA, GEOS_MERGE_MIN_AREA.)
4731* * **Minimum Index**: merge with the polygon with the lowest index in the input array (GEOS_MERGE_MIN_INDEX.)
4732*
4733* This allows sorting the input according to some criteria to provide a priority
4734* for merging gaps.
4735*
4736* The default is GEOS_MERGE_LONGEST_BORDER.
4737*
4738* \see geos::coverage::CoverageCleaner::setGapMaximumWidth
4739* \param params The GEOSCoverageCleanParams to operate on
4740* \param overlapMergeStrategy One of \ref GEOSOverlapMerge strategies
4741* \return 0 on exception, 1 on success.
4742*
4743* \since 3.14
4744*/
4745extern int GEOS_DLL
4746GEOSCoverageCleanParams_setOverlapMergeStrategy(
4748 int overlapMergeStrategy);
4749
4771extern GEOSGeometry GEOS_DLL *
4773 const GEOSGeometry* input,
4774 const GEOSCoverageCleanParams* params
4775);
4776
4778extern GEOSGeometry GEOS_DLL *
4780 const GEOSGeometry* input);
4781
4782
4783
4784
4786
4787
4788/* ========== Construction Operations ========== */
4793
4807extern GEOSGeometry GEOS_DLL *GEOSEnvelope(const GEOSGeometry* g);
4808
4826extern GEOSGeometry GEOS_DLL *GEOSBoundary(const GEOSGeometry* g);
4827
4841extern GEOSGeometry GEOS_DLL *GEOSConvexHull(const GEOSGeometry* g);
4842
4877 const GEOSGeometry* g,
4878 double ratio,
4879 unsigned int allowHoles);
4880
4914 const GEOSGeometry* g,
4915 double length,
4916 unsigned int allowHoles);
4917
4957 const GEOSGeometry* g,
4958 double lengthRatio,
4959 unsigned int isTight,
4960 unsigned int isHolesAllowed);
4961
4982 const GEOSGeometry* g,
4983 unsigned int isOuter,
4984 double vertexNumFraction);
4985
4986
4996
5019 const GEOSGeometry* g,
5020 unsigned int isOuter,
5021 unsigned int parameterMode,
5022 double parameter);
5023
5038
5064 const GEOSGeometry* g,
5065 double tolerance);
5066
5101 const GEOSGeometry* obstacles,
5102 const GEOSGeometry* boundary,
5103 double tolerance);
5104
5118extern GEOSGeometry GEOS_DLL *GEOSMinimumWidth(const GEOSGeometry* g);
5119
5120
5131
5141extern GEOSGeometry GEOS_DLL *GEOSGetCentroid(const GEOSGeometry* g);
5142
5156 const GEOSGeometry* g,
5157 double* radius,
5158 GEOSGeometry** center);
5159
5177 const GEOSGeometry *g,
5178 double tolerance,
5179 int onlyEdges);
5180
5196 const GEOSGeometry *g);
5197
5208
5231 const GEOSGeometry *g,
5232 const GEOSGeometry *env,
5233 double tolerance,
5234 int flags);
5235
5237
5238/* ============================================================== */
5243
5260extern GEOSGeometry GEOS_DLL *GEOSNode(const GEOSGeometry* g);
5261
5308 const GEOSGeometry * const geoms[],
5309 unsigned int ngeoms);
5310
5329 const GEOSGeometry * const geoms[],
5330 unsigned int ngeoms);
5331
5349 const GEOSGeometry * const geoms[],
5350 unsigned int ngeoms);
5351
5370 const GEOSGeometry* input,
5371 GEOSGeometry** cuts,
5372 GEOSGeometry** dangles,
5373 GEOSGeometry** invalid);
5374
5386extern GEOSGeometry GEOS_DLL *GEOSBuildArea(const GEOSGeometry* g);
5387
5389
5390/* ============================================================== */
5395
5410extern GEOSGeometry GEOS_DLL *GEOSDensify(
5411 const GEOSGeometry* g,
5412 double tolerance);
5413
5429extern GEOSGeometry GEOS_DLL *GEOSLineMerge(const GEOSGeometry* g);
5430
5447extern size_t GEOS_DLL *GEOSMinimumSpanningTree(const GEOSGeometry * const geoms[], unsigned int ngeoms);
5448
5466
5483 const GEOSGeometry* g,
5484 double start_fraction,
5485 double end_fraction);
5486
5501extern GEOSGeometry GEOS_DLL *GEOSReverse(const GEOSGeometry* g);
5502
5519 const GEOSGeometry* g,
5520 double tolerance);
5521
5541 const GEOSGeometry* g,
5542 double tolerance);
5543
5561 const GEOSGeometry* g);
5562
5578extern int GEOS_DLL GEOSHilbertCode(
5579 const GEOSGeometry *geom,
5580 const GEOSGeometry* extent,
5581 unsigned int level,
5582 unsigned int *code
5583);
5584
5603 const GEOSGeometry* g,
5604 GEOSTransformXYCallback callback,
5605 void* userdata);
5606
5625 const GEOSGeometry* g,
5626 GEOSTransformXYZCallback callback,
5627 void* userdata);
5628
5650extern GEOSGeometry GEOS_DLL *GEOSSnap(
5651 const GEOSGeometry* input,
5652 const GEOSGeometry* snap_target,
5653 double tolerance);
5654
5688 const GEOSGeometry *g,
5689 double gridSize,
5690 int flags);
5691
5693
5694/* ============================================================== */
5699
5708extern char GEOS_DLL GEOSDisjoint(const GEOSGeometry* g1, const GEOSGeometry* g2);
5709
5719extern char GEOS_DLL GEOSTouches(const GEOSGeometry* g1, const GEOSGeometry* g2);
5720
5729extern char GEOS_DLL GEOSIntersects(const GEOSGeometry* g1, const GEOSGeometry* g2);
5730
5740extern char GEOS_DLL GEOSCrosses(const GEOSGeometry* g1, const GEOSGeometry* g2);
5741
5751extern char GEOS_DLL GEOSWithin(const GEOSGeometry* g1, const GEOSGeometry* g2);
5752
5762extern char GEOS_DLL GEOSContains(const GEOSGeometry* g1, const GEOSGeometry* g2);
5763
5773extern char GEOS_DLL GEOSOverlaps(const GEOSGeometry* g1, const GEOSGeometry* g2);
5774
5783extern char GEOS_DLL GEOSEquals(const GEOSGeometry* g1, const GEOSGeometry* g2);
5784
5795extern char GEOS_DLL GEOSCovers(const GEOSGeometry* g1, const GEOSGeometry* g2);
5796
5807extern char GEOS_DLL GEOSCoveredBy(const GEOSGeometry* g1, const GEOSGeometry* g2);
5808
5829extern char GEOS_DLL GEOSEqualsExact(
5830 const GEOSGeometry* g1,
5831 const GEOSGeometry* g2,
5832 double tolerance);
5833
5848extern char GEOS_DLL GEOSEqualsIdentical(
5849 const GEOSGeometry* g1,
5850 const GEOSGeometry* g2);
5851
5867extern char GEOS_DLL GEOSRelatePattern(
5868 const GEOSGeometry* g1,
5869 const GEOSGeometry* g2,
5870 const char *imPattern);
5871
5882extern char GEOS_DLL *GEOSRelate(
5883 const GEOSGeometry* g1,
5884 const GEOSGeometry* g2);
5885
5895extern char GEOS_DLL GEOSRelatePatternMatch(
5896 const char *intMatrix,
5897 const char *imPattern);
5898
5912extern char GEOS_DLL *GEOSRelateBoundaryNodeRule(
5913 const GEOSGeometry* g1,
5914 const GEOSGeometry* g2,
5915 int bnr);
5916
5918
5919/* ========== Prepared Geometry Binary predicates ========== */
5920
5932
5946extern const GEOSPreparedGeometry GEOS_DLL *GEOSPrepare(const GEOSGeometry* g);
5947
5956extern void GEOS_DLL GEOSPreparedGeom_destroy(const GEOSPreparedGeometry* g);
5957
5968extern char GEOS_DLL GEOSPreparedContains(
5969 const GEOSPreparedGeometry* pg1,
5970 const GEOSGeometry* g2);
5971
5983extern char GEOS_DLL GEOSPreparedContainsXY(
5984 const GEOSPreparedGeometry* pg1,
5985 double x,
5986 double y);
5987
5998extern char GEOS_DLL GEOSPreparedContainsProperly(
5999 const GEOSPreparedGeometry* pg1,
6000 const GEOSGeometry* g2);
6001
6012extern char GEOS_DLL GEOSPreparedCoveredBy(
6013 const GEOSPreparedGeometry* pg1,
6014 const GEOSGeometry* g2);
6015
6026extern char GEOS_DLL GEOSPreparedCovers(
6027 const GEOSPreparedGeometry* pg1,
6028 const GEOSGeometry* g2);
6029
6040extern char GEOS_DLL GEOSPreparedCrosses(
6041 const GEOSPreparedGeometry* pg1,
6042 const GEOSGeometry* g2);
6043
6054extern char GEOS_DLL GEOSPreparedDisjoint(
6055 const GEOSPreparedGeometry* pg1,
6056 const GEOSGeometry* g2);
6057
6068extern char GEOS_DLL GEOSPreparedIntersects(
6069 const GEOSPreparedGeometry* pg1,
6070 const GEOSGeometry* g2);
6071
6083extern char GEOS_DLL GEOSPreparedIntersectsXY(
6084 const GEOSPreparedGeometry* pg1,
6085 double x,
6086 double y);
6087
6098extern char GEOS_DLL GEOSPreparedOverlaps(
6099 const GEOSPreparedGeometry* pg1,
6100 const GEOSGeometry* g2);
6101
6112extern char GEOS_DLL GEOSPreparedTouches(
6113 const GEOSPreparedGeometry* pg1,
6114 const GEOSGeometry* g2);
6115
6126extern char GEOS_DLL GEOSPreparedWithin(
6127 const GEOSPreparedGeometry* pg1,
6128 const GEOSGeometry* g2);
6129
6143extern char GEOS_DLL * GEOSPreparedRelate(
6144 const GEOSPreparedGeometry* pg1,
6145 const GEOSGeometry* g2);
6146
6163extern char GEOS_DLL GEOSPreparedRelatePattern(
6164 const GEOSPreparedGeometry* pg1,
6165 const GEOSGeometry* g2,
6166 const char* imPattern);
6167
6181 const GEOSPreparedGeometry* pg1,
6182 const GEOSGeometry* g2);
6183
6197extern int GEOS_DLL GEOSPreparedDistance(
6198 const GEOSPreparedGeometry* pg1,
6199 const GEOSGeometry* g2,
6200 double *dist);
6201
6216extern char GEOS_DLL GEOSPreparedDistanceWithin(
6217 const GEOSPreparedGeometry* pg1,
6218 const GEOSGeometry* g2,
6219 double dist);
6220
6222
6223/* ========== STRtree functions ========== */
6229
6242extern GEOSSTRtree GEOS_DLL *GEOSSTRtree_create(size_t nodeCapacity);
6243
6256extern int GEOS_DLL GEOSSTRtree_build(GEOSSTRtree *tree);
6257
6270extern void GEOS_DLL GEOSSTRtree_insert(
6271 GEOSSTRtree *tree,
6272 const GEOSGeometry *g,
6273 void *item);
6274
6289extern void GEOS_DLL GEOSSTRtree_query(
6290 GEOSSTRtree *tree,
6291 const GEOSGeometry *g,
6292 GEOSQueryCallback callback,
6293 void *userdata);
6294
6309extern const GEOSGeometry GEOS_DLL *GEOSSTRtree_nearest(
6310 GEOSSTRtree *tree,
6311 const GEOSGeometry* geom);
6312
6333extern const void GEOS_DLL *GEOSSTRtree_nearest_generic(
6334 GEOSSTRtree *tree,
6335 const void* item,
6336 const GEOSGeometry* itemEnvelope,
6337 GEOSDistanceCallback distancefn,
6338 void* userdata);
6339
6350extern void GEOS_DLL GEOSSTRtree_iterate(
6351 GEOSSTRtree *tree,
6352 GEOSQueryCallback callback,
6353 void *userdata);
6354
6369extern char GEOS_DLL GEOSSTRtree_remove(
6370 GEOSSTRtree *tree,
6371 const GEOSGeometry *g,
6372 void *item);
6373
6384extern void GEOS_DLL GEOSSTRtree_destroy(GEOSSTRtree *tree);
6385
6387
6388/* ========== Algorithms ====================================================== */
6393
6412extern int GEOS_DLL GEOSSegmentIntersection(
6413 double ax0, double ay0,
6414 double ax1, double ay1,
6415 double bx0, double by0,
6416 double bx1, double by1,
6417 double* cx, double* cy);
6418
6434extern int GEOS_DLL GEOSOrientationIndex(
6435 double Ax, double Ay,
6436 double Bx, double By,
6437 double Px, double Py);
6438
6440
6441/* ========= Reader and Writer APIs ========= */
6442
6447/* ========= WKT Reader ========= */
6448
6455
6461extern void GEOS_DLL GEOSWKTReader_destroy(GEOSWKTReader* reader);
6462
6472 GEOSWKTReader* reader,
6473 const char *wkt);
6474
6484 GEOSWKTReader *reader,
6485 char doFix);
6486
6487/* ========= WKT Writer ========= */
6488
6495
6501extern void GEOS_DLL GEOSWKTWriter_destroy(
6502 GEOSWKTWriter* writer);
6503
6513extern char GEOS_DLL *GEOSWKTWriter_write(
6514 GEOSWKTWriter* writer,
6515 const GEOSGeometry* g);
6516
6531extern void GEOS_DLL GEOSWKTWriter_setTrim(
6532 GEOSWKTWriter *writer,
6533 char trim);
6534
6544 GEOSWKTWriter *writer,
6545 int precision);
6546
6556 GEOSWKTWriter *writer,
6557 int dim);
6558
6567
6578extern void GEOS_DLL GEOSWKTWriter_setOld3D(
6579 GEOSWKTWriter *writer,
6580 int useOld3D);
6582
6583/* ============================================================================== */
6588
6589/* ========== WKB Reader ========== */
6596
6602extern void GEOS_DLL GEOSWKBReader_destroy(
6603 GEOSWKBReader* reader);
6604
6614 GEOSWKBReader *reader,
6615 char doFix);
6616
6626 GEOSWKBReader* reader,
6627 const unsigned char *wkb,
6628 size_t size);
6629
6639 GEOSWKBReader* reader,
6640 const unsigned char *hex,
6641 size_t size);
6642
6643/* ========== WKB Writer ========== */
6644
6651
6657extern void GEOS_DLL GEOSWKBWriter_destroy(GEOSWKBWriter* writer);
6658
6668extern unsigned char GEOS_DLL *GEOSWKBWriter_write(
6669 GEOSWKBWriter* writer,
6670 const GEOSGeometry* g,
6671 size_t *size);
6672
6682extern unsigned char GEOS_DLL *GEOSWKBWriter_writeHEX(
6683 GEOSWKBWriter* writer,
6684 const GEOSGeometry* g,
6685 size_t *size);
6686
6696 const GEOSWKBWriter* writer);
6697
6706 GEOSWKBWriter* writer,
6707 int newDimension);
6708
6718extern int GEOS_DLL GEOSWKBWriter_getByteOrder(
6719 const GEOSWKBWriter* writer);
6720
6728extern void GEOS_DLL GEOSWKBWriter_setByteOrder(
6729 GEOSWKBWriter* writer,
6730 int byteOrder);
6731
6746extern int GEOS_DLL GEOSWKBWriter_getFlavor(
6747 const GEOSWKBWriter* writer);
6748
6757extern void GEOS_DLL GEOSWKBWriter_setFlavor(
6758 GEOSWKBWriter* writer,
6759 int flavor);
6760
6766extern char GEOS_DLL GEOSWKBWriter_getIncludeSRID(
6767 const GEOSWKBWriter* writer);
6768
6776extern void GEOS_DLL GEOSWKBWriter_setIncludeSRID(
6777 GEOSWKBWriter* writer,
6778 const char writeSRID);
6779
6781
6782/* ============================================================================= */
6787/* ========= GeoJSON Reader ========= */
6788
6796
6803extern void GEOS_DLL GEOSGeoJSONReader_destroy(GEOSGeoJSONReader* reader);
6804
6816 GEOSGeoJSONReader* reader,
6817 const char *geojson);
6818
6819/* ========= GeoJSON Writer ========= */
6820
6828
6835extern void GEOS_DLL GEOSGeoJSONWriter_destroy(GEOSGeoJSONWriter* writer);
6836
6848 GEOSGeoJSONWriter* writer,
6849 const GEOSGeometry* g,
6850 int indent);
6851
6861 GEOSGeoJSONWriter *writer,
6862 int dim);
6863
6872
6874
6875#endif /* #ifndef GEOS_USE_ONLY_R_API */
6876
6877/* ====================================================================== */
6878/* DEPRECATIONS */
6879/* ====================================================================== */
6880
6886
6891 const GEOSGeometry* g,
6892 double width, int quadsegs,
6893 int joinStyle, double mitreLimit,
6894 int leftSide);
6895
6900 GEOSContextHandle_t handle,
6901 const GEOSGeometry* g,
6902 double width, int quadsegs,
6903 int joinStyle, double mitreLimit,
6904 int leftSide);
6905
6911 GEOSMessageHandler notice_function,
6912 GEOSMessageHandler error_function);
6913
6917extern void GEOS_DLL finishGEOS_r(GEOSContextHandle_t handle);
6918
6923 GEOSContextHandle_t handle,
6924 const char *wkt);
6925
6929extern char GEOS_DLL *GEOSGeomToWKT_r(
6930 GEOSContextHandle_t handle,
6931 const GEOSGeometry* g);
6932
6936extern int GEOS_DLL GEOS_getWKBOutputDims_r(
6937 GEOSContextHandle_t handle);
6938
6942extern int GEOS_DLL GEOS_setWKBOutputDims_r(
6943 GEOSContextHandle_t handle,
6944 int newDims);
6945
6949extern int GEOS_DLL GEOS_getWKBByteOrder_r(
6950 GEOSContextHandle_t handle);
6951
6955extern int GEOS_DLL GEOS_setWKBByteOrder_r(
6956 GEOSContextHandle_t handle,
6957 int byteOrder);
6958
6963 GEOSContextHandle_t handle,
6964 const unsigned char *wkb,
6965 size_t size);
6966
6970extern unsigned char GEOS_DLL *GEOSGeomToWKB_buf_r(
6971 GEOSContextHandle_t handle,
6972 const GEOSGeometry* g,
6973 size_t *size);
6974
6979 GEOSContextHandle_t handle,
6980 const unsigned char *hex,
6981 size_t size);
6982
6986extern unsigned char GEOS_DLL *GEOSGeomToHEX_buf_r(
6987 GEOSContextHandle_t handle,
6988 const GEOSGeometry* g,
6989 size_t *size);
6990
6994extern GEOSGeometry GEOS_DLL *GEOSGeomFromWKT(const char *wkt);
6995
6999extern char GEOS_DLL *GEOSGeomToWKT(const GEOSGeometry* g);
7000
7004extern int GEOS_DLL GEOS_getWKBOutputDims(void);
7005
7009extern int GEOS_DLL GEOS_setWKBOutputDims(int newDims);
7010
7014extern int GEOS_DLL GEOS_getWKBByteOrder(void);
7015
7019extern int GEOS_DLL GEOS_setWKBByteOrder(int byteOrder);
7020
7024extern GEOSGeometry GEOS_DLL *GEOSGeomFromWKB_buf(const unsigned char *wkb, size_t size);
7025
7029extern unsigned char GEOS_DLL *GEOSGeomToWKB_buf(const GEOSGeometry* g, size_t *size);
7030
7034extern GEOSGeometry GEOS_DLL *GEOSGeomFromHEX_buf(const unsigned char *hex, size_t size);
7035
7039extern unsigned char GEOS_DLL *GEOSGeomToHEX_buf(const GEOSGeometry* g, size_t *size);
7040
7045
7050 GEOSContextHandle_t handle,
7051 const GEOSGeometry* g);
7052
7054
7055/* ====================================================================== */
7056/* END DEPRECATIONS */
7057/* ====================================================================== */
7058
7059
7060#ifdef __cplusplus
7061} // extern "C"
7062#endif
7063
7064#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)
size_t * GEOSMinimumSpanningTree(const GEOSGeometry *const geoms[], unsigned int ngeoms)
GEOSCoordSequence * GEOSCoordSeq_create(unsigned int size, unsigned int dims)
char GEOSPreparedDistanceWithin(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2, double dist)
GEOSGeometry * GEOSWKBReader_read_r(GEOSContextHandle_t handle, GEOSWKBReader *reader, const unsigned char *wkb, size_t size)
GEOSClusterInfo * GEOSClusterEnvelopeIntersects(const GEOSGeometry *g)
GEOSClusterEnvelopeIntersects.
char * GEOSGeomToWKT_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSBufferWithParams_r(GEOSContextHandle_t handle, const GEOSGeometry *g, const GEOSBufferParams *p, double width)
int GEOSBufferParams_setQuadrantSegments_r(GEOSContextHandle_t handle, GEOSBufferParams *p, int quadSegs)
GEOSGeometry * GEOSConcaveHull_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double ratio, unsigned int allowHoles)
GEOSGeometry * GEOSSubdivideByGrid(const GEOSGeometry *g, double xmin, double ymin, double xmax, double ymax, unsigned nx, unsigned ny, int includeExterior)
void GEOSSTRtree_iterate(GEOSSTRtree *tree, GEOSQueryCallback callback, void *userdata)
const GEOSGeometry * GEOSGetExteriorRing_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSCoordSequence * GEOSPreparedNearestPoints(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
void(*) typedef void(* GEOSMessageHandler_r)(const char *message, void *userdata)
Definition geos_c.h:118
GEOSGeometry * GEOSDelaunayTriangulation_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double tolerance, int onlyEdges)
int GEOSGeoJSONWriter_getOutputDimension_r(GEOSContextHandle_t handle, GEOSGeoJSONWriter *writer)
GEOSGeometry ** GEOSGeom_releaseCollection(GEOSGeometry *collection, unsigned int *ngeoms)
void * GEOSGeom_getUserData_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
struct GEOSGeoJSONReader_t GEOSGeoJSONReader
Definition geos_c.h:2137
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:2123
char GEOSHasM(const GEOSGeometry *g)
GEOSGeometry * GEOSConcaveHullByLength_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double ratio, unsigned int allowHoles)
void GEOSGeom_destroy(GEOSGeometry *g)
int GEOS_setWKBByteOrder_r(GEOSContextHandle_t handle, int byteOrder)
GEOSGeometry * GEOSClipByRect(const GEOSGeometry *g, double xmin, double ymin, double xmax, double ymax)
GEOSGeometry * GEOSCoverageSimplifyVW_r(GEOSContextHandle_t extHandle, const GEOSGeometry *input, double tolerance, int preserveBoundary)
void(* GEOSMessageHandler)(GEOS_PRINTF_FORMAT const char *fmt,...) GEOS_PRINTF_FORMAT_ATTR(1
Definition geos_c.h:105
int GEOSDistance_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double *dist)
int GEOSGeomGetM_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *m)
char GEOSTouches(const GEOSGeometry *g1, const GEOSGeometry *g2)
struct GEOSCoordSeq_t GEOSCoordSequence
Definition geos_c.h:155
GEOSGeometry * GEOSGeomGetStartPoint_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
char GEOSRelatePatternMatch_r(GEOSContextHandle_t handle, const char *intMatrix, const char *imPattern)
void GEOSSTRtree_destroy(GEOSSTRtree *tree)
GEOSCoverageCleanParams * GEOSCoverageCleanParams_create_r(GEOSContextHandle_t extHandle)
GEOSGeometry * GEOSGeom_createCircularString_r(GEOSContextHandle_t handle, GEOSCoordSequence *s)
void GEOSBufferParams_destroy(GEOSBufferParams *parms)
const size_t * GEOSClusterInfo_getInputsForClusterN_r(GEOSContextHandle_t, const GEOSClusterInfo *clusters, size_t i)
int GEOSCoordSeq_setXY_r(GEOSContextHandle_t handle, GEOSCoordSequence *s, unsigned int idx, double x, double y)
GEOSGeomTypes
Definition geos_c.h:211
@ GEOS_MULTILINESTRING
Definition geos_c.h:223
@ GEOS_GEOMETRYCOLLECTION
Definition geos_c.h:227
@ GEOS_POINT
Definition geos_c.h:213
@ GEOS_MULTIPOLYGON
Definition geos_c.h:225
@ GEOS_LINEARRING
Definition geos_c.h:217
@ GEOS_POLYGON
Definition geos_c.h:219
@ GEOS_MULTIPOINT
Definition geos_c.h:221
@ GEOS_LINESTRING
Definition geos_c.h:215
GEOSGeometry * GEOSIntersectionPrec(const GEOSGeometry *g1, const GEOSGeometry *g2, double gridSize)
int GEOSGetNumInteriorRings(const GEOSGeometry *g)
char GEOSSTRtree_remove_r(GEOSContextHandle_t handle, GEOSSTRtree *tree, const GEOSGeometry *g, void *item)
void GEOSSTRtree_query_r(GEOSContextHandle_t handle, GEOSSTRtree *tree, const GEOSGeometry *g, GEOSQueryCallback callback, void *userdata)
GEOSGeometry * GEOSGeom_setPrecision_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double gridSize, int flags)
char GEOSEqualsExact(const GEOSGeometry *g1, const GEOSGeometry *g2, double tolerance)
GEOSGeometry * GEOSDisjointSubsetUnion_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSGeom_createEmptyCircularString(void)
GEOSMessageHandler_r GEOSContext_setNoticeMessageHandler_r(GEOSContextHandle_t extHandle, GEOSMessageHandler_r nf, void *userData)
int GEOSCoordSeq_getOrdinate(const GEOSCoordSequence *s, unsigned int idx, unsigned int dim, double *val)
void GEOSWKBReader_destroy_r(GEOSContextHandle_t handle, GEOSWKBReader *reader)
GEOSGeometry * GEOSCoverageEdges(const GEOSGeometry *input, int edgetype)
GEOSGeometry * GEOSBoundary(const GEOSGeometry *g)
GEOSGeometry * GEOSUnaryUnion_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
int GEOSDistanceIndexed_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double *dist)
char GEOSCoordSeq_hasM(GEOSCoordSequence *s)
void GEOSWKTReader_destroy(GEOSWKTReader *reader)
GEOSGeometry * GEOSMinimumWidth(const GEOSGeometry *g)
char * GEOSWKTWriter_write(GEOSWKTWriter *writer, const GEOSGeometry *g)
GEOSGeometry * GEOSTopologyPreserveSimplify(const GEOSGeometry *g, double tolerance)
void(* GEOSQueryCallback)(void *item, void *userdata)
Definition geos_c.h:286
int GEOSCoordSeq_getSize_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s, unsigned int *size)
GEOSGeometry * GEOSGeomFromWKT(const char *wkt)
GEOSGeometry * GEOSWKBReader_read(GEOSWKBReader *reader, const unsigned char *wkb, size_t size)
GEOSGeometry * GEOSCoverageSimplifyVW(const GEOSGeometry *input, double tolerance, int preserveBoundary)
char GEOSContains_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
double GEOSProject_r(GEOSContextHandle_t handle, const GEOSGeometry *line, const GEOSGeometry *point)
void GEOSGeom_destroy_r(GEOSContextHandle_t handle, GEOSGeometry *g)
int GEOSHausdorffDistanceDensifyWithPoints(const GEOSGeometry *g1, const GEOSGeometry *g2, double densifyFrac, double *dist, double *p1x, double *p1y, double *p2x, double *p2y)
GEOSGeometry * GEOSTopologyPreserveSimplify_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double tolerance)
GEOSGeometry * GEOSSingleSidedBuffer_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double width, int quadsegs, int joinStyle, double mitreLimit, int leftSide)
GEOSContextHandle_t GEOS_init_r(void)
struct GEOSGeom_t GEOSGeometry
Definition geos_c.h:140
char GEOSPreparedContainsXY_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, double x, double y)
GEOSGeometry * GEOSGeom_createRectangle(double xmin, double ymin, double xmax, double ymax)
GEOSGeometry * GEOSGeom_setPrecision(const GEOSGeometry *g, double gridSize, int flags)
const void * GEOSSTRtree_nearest_generic_r(GEOSContextHandle_t handle, GEOSSTRtree *tree, const void *item, const GEOSGeometry *itemEnvelope, GEOSDistanceCallback distancefn, void *userdata)
int GEOSCoordSeq_getM_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s, unsigned int idx, double *val)
int GEOSGeomTypeId(const GEOSGeometry *g)
int GEOSSTRtree_build(GEOSSTRtree *tree)
GEOSGeometry * GEOSPolygonize_full_r(GEOSContextHandle_t handle, const GEOSGeometry *input, GEOSGeometry **cuts, GEOSGeometry **dangles, GEOSGeometry **invalidRings)
char GEOSCoveredBy_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
int GEOSGetNumCoordinates_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
void GEOSWKTWriter_destroy(GEOSWKTWriter *writer)
int GEOSCoordSeq_getDimensions_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s, unsigned int *dims)
GEOSGeometry * GEOSGeom_createEmptyCollection_r(GEOSContextHandle_t handle, int type)
GEOSGeometry * GEOSGeom_createEmptyCircularString_r(GEOSContextHandle_t handle)
void GEOSWKBWriter_setOutputDimension(GEOSWKBWriter *writer, int newDimension)
GEOSGeometry * GEOSEnvelope(const GEOSGeometry *g)
GEOSGeometry * GEOSGeom_createPoint_r(GEOSContextHandle_t handle, GEOSCoordSequence *s)
GEOSGeometry * GEOSGeom_createEmptyCurvePolygon(void)
GEOSWKBFlavors
Definition geos_c.h:257
@ GEOS_WKB_ISO
Definition geos_c.h:261
@ GEOS_WKB_EXTENDED
Definition geos_c.h:259
GEOSGeometry * GEOSDensify(const GEOSGeometry *g, double tolerance)
GEOSGeometry * GEOSConstrainedDelaunayTriangulation_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
void GEOSWKBReader_setFixStructure_r(GEOSContextHandle_t handle, GEOSWKBReader *reader, char doFix)
void GEOSFree_r(GEOSContextHandle_t handle, void *buffer)
GEOSGeometry * GEOSGeom_extractUniquePoints(const GEOSGeometry *g)
int GEOSHausdorffDistance(const GEOSGeometry *g1, const GEOSGeometry *g2, double *dist)
int GEOSWKBWriter_getOutputDimension(const GEOSWKBWriter *writer)
void GEOSPreparedGeom_destroy_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *g)
char GEOSCoordSeq_hasZ_r(GEOSContextHandle_t handle, GEOSCoordSequence *s)
int GEOS_getWKBOutputDims(void)
GEOSGeometry * GEOSGeom_createPolygon_r(GEOSContextHandle_t handle, GEOSGeometry *shell, GEOSGeometry **holes, unsigned int nholes)
GEOSGeometry * GEOSGeomGetPointN(const GEOSGeometry *g, int n)
const char * GEOSversion(void)
const GEOSGeometry * GEOSGetExteriorRing(const GEOSGeometry *g)
int GEOSMakeValidParams_setMethod(GEOSMakeValidParams *p, enum GEOSMakeValidMethods method)
void initGEOS(GEOSMessageHandler notice_function, GEOSMessageHandler error_function)
GEOSGeometry * GEOSNode(const GEOSGeometry *g)
int GEOSOrientPolygons_r(GEOSContextHandle_t handle, GEOSGeometry *g, int exteriorCW)
int GEOSCoverageCleanParams_setGapMaximumWidth(GEOSCoverageCleanParams *params, double gapMaximumWidth)
GEOSGeometry * GEOSOffsetCurve_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double width, int quadsegs, int joinStyle, double mitreLimit)
GEOSSTRtree * GEOSSTRtree_create(size_t nodeCapacity)
GEOSGeometry * GEOSBoundary_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
int GEOSFrechetDistanceDensify_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double densifyFrac, double *dist)
char GEOSPreparedRelatePattern_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2, const char *im)
char GEOSPreparedIntersects_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
GEOSGeometry * GEOSGeom_createLinearRing_r(GEOSContextHandle_t handle, GEOSCoordSequence *s)
char GEOSCrosses_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
char GEOSEquals(const GEOSGeometry *g1, const GEOSGeometry *g2)
int GEOSGeom_getYMin(const GEOSGeometry *g, double *value)
int GEOSGeomGetX(const GEOSGeometry *g, double *x)
GEOSOverlapMerge
Definition geos_c.h:268
@ GEOS_MERGE_MIN_AREA
Definition geos_c.h:274
@ GEOS_MERGE_MIN_INDEX
Definition geos_c.h:276
@ GEOS_MERGE_LONGEST_BORDER
Definition geos_c.h:270
@ GEOS_MERGE_MAX_AREA
Definition geos_c.h:272
char GEOSisSimpleDetail(const GEOSGeometry *g, int findAllLocations, GEOSGeometry **locations)
char GEOSPreparedDistanceWithin_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2, double dist)
void GEOSSTRtree_query(GEOSSTRtree *tree, const GEOSGeometry *g, GEOSQueryCallback callback, void *userdata)
GEOSGeometry * GEOSOffsetCurve(const GEOSGeometry *g, double width, int quadsegs, int joinStyle, double mitreLimit)
GEOSGeometry * GEOSCoverageUnion_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
void GEOS_interruptCancel(void)
void GEOSMakeValidParams_destroy(GEOSMakeValidParams *parms)
int GEOSGeomGetY(const GEOSGeometry *g, double *y)
GEOSGeometry * GEOSLineMergeDirected_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
size_t * GEOSClusterInfo_getClustersForInputs_r(GEOSContextHandle_t, const GEOSClusterInfo *clusters)
int GEOSFrechetDistance(const GEOSGeometry *g1, const GEOSGeometry *g2, double *dist)
GEOSCoverageCleanParams * GEOSCoverageCleanParams_create(void)
void GEOSWKTReader_setFixStructure_r(GEOSContextHandle_t handle, GEOSWKTReader *reader, char doFix)
GEOSWKTWriter * GEOSWKTWriter_create_r(GEOSContextHandle_t handle)
GEOSGeometry * GEOSGeomGetPointN_r(GEOSContextHandle_t handle, const GEOSGeometry *g, int n)
void GEOSClusterInfo_destroy_r(GEOSContextHandle_t, GEOSClusterInfo *info)
GEOSGeometry * GEOSDifference(const GEOSGeometry *ga, const GEOSGeometry *gb)
GEOSGeometry * GEOSCoverageEdges_r(GEOSContextHandle_t handle, const GEOSGeometry *input, int edgetype)
GEOSGeometry * GEOSGeom_createLineString_r(GEOSContextHandle_t handle, GEOSCoordSequence *s)
GEOSGeometry * GEOSPolygonizer_getCutEdges_r(GEOSContextHandle_t handle, const GEOSGeometry *const geoms[], unsigned int ngeoms)
int GEOSMinimumClearance(const GEOSGeometry *g, double *d)
size_t GEOSClusterInfo_getNumClusters_r(GEOSContextHandle_t, const GEOSClusterInfo *clusters)
GEOSGeometry * GEOSDelaunayTriangulation(const GEOSGeometry *g, double tolerance, int onlyEdges)
GEOSGeometry * GEOSGeom_createCurvePolygon_r(GEOSContextHandle_t handle, GEOSGeometry *shell, GEOSGeometry **holes, unsigned int nholes)
char GEOSSTRtree_remove(GEOSSTRtree *tree, const GEOSGeometry *g, void *item)
GEOSGeometry * GEOSBufferWithParams(const GEOSGeometry *g, const GEOSBufferParams *p, double width)
GEOSMessageHandler GEOSContext_setNoticeHandler_r(GEOSContextHandle_t extHandle, GEOSMessageHandler nf)
int GEOSCoordSeq_getXYZ(const GEOSCoordSequence *s, unsigned int idx, double *x, double *y, double *z)
char GEOSisValidDetail_r(GEOSContextHandle_t handle, const GEOSGeometry *g, int flags, char **reason, GEOSGeometry **location)
GEOSMakeValidParams * GEOSMakeValidParams_create(void)
GEOSGeometry * GEOSGeom_createEmptyLineString_r(GEOSContextHandle_t handle)
char * GEOSGeomType_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSMinimumClearanceLine(const GEOSGeometry *g)
void GEOSGeoJSONWriter_setOutputDimension(GEOSGeoJSONWriter *writer, int dim)
char * GEOSRelateBoundaryNodeRule_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, int bnr)
int GEOSHausdorffDistanceWithPoints_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double *dist, double *p1x, double *p1y, double *p2x, double *p2y)
char GEOSDisjoint(const GEOSGeometry *g1, const GEOSGeometry *g2)
int GEOSCoordSeq_setX(GEOSCoordSequence *s, unsigned int idx, double val)
int GEOSCoverageIsValid(const GEOSGeometry *input, double gapWidth, GEOSGeometry **invalidEdges)
int GEOSPreparedDistance(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2, double *dist)
GEOSGeometry * GEOSUnion_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
GEOSMakeValidParams * GEOSMakeValidParams_create_r(GEOSContextHandle_t extHandle)
GEOSGeometry * GEOSCoverageCleanWithParams_r(GEOSContextHandle_t extHandle, const GEOSGeometry *input, const GEOSCoverageCleanParams *params)
char GEOSPreparedContains(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
GEOSGeometry * GEOSPolygonHullSimplifyMode_r(GEOSContextHandle_t handle, const GEOSGeometry *g, unsigned int isOuter, unsigned int parameterMode, double parameter)
int GEOSCoordSeq_getXYZ_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s, unsigned int idx, double *x, double *y, double *z)
GEOSGeometry * GEOSGeomGetEndPoint_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
void GEOSWKBWriter_setFlavor(GEOSWKBWriter *writer, int flavor)
GEOSContextHandle_t initGEOS_r(GEOSMessageHandler notice_function, GEOSMessageHandler error_function)
GEOSCoordSequence * GEOSCoordSeq_createWithDimensions_r(GEOSContextHandle_t handle, unsigned int size, int hasZ, int hasM)
GEOSBufCapStyles
Definition geos_c.h:711
@ GEOSBUF_CAP_SQUARE
Definition geos_c.h:720
@ GEOSBUF_CAP_FLAT
Definition geos_c.h:717
@ GEOSBUF_CAP_ROUND
Definition geos_c.h:714
GEOSGeometry * GEOSConvexHull(const GEOSGeometry *g)
GEOSVoronoiFlags
Definition geos_c.h:5200
@ GEOS_VORONOI_PRESERVE_ORDER
Definition geos_c.h:5206
@ GEOS_VORONOI_ONLY_EDGES
Definition geos_c.h:5202
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:1648
@ GEOSVALID_ALLOW_SELFTOUCHING_RING_FORMING_HOLE
Definition geos_c.h:1650
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:2130
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:2116
char GEOSPreparedWithin_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
int GEOSSegmentIntersection(double ax0, double ay0, double ax1, double ay1, double bx0, double by0, double bx1, double by1, double *cx, double *cy)
int GEOSCoordSeq_setY(GEOSCoordSequence *s, unsigned int idx, double val)
void GEOSMakeValidParams_destroy_r(GEOSContextHandle_t handle, GEOSMakeValidParams *parms)
size_t * GEOSMinimumSpanningTree_r(GEOSContextHandle_t handle, const GEOSGeometry *const geoms[], unsigned int ngeoms)
char GEOSPreparedCovers(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
GEOSMessageHandler_r GEOSContext_setErrorMessageHandler_r(GEOSContextHandle_t extHandle, GEOSMessageHandler_r ef, void *userData)
GEOSGeometry ** GEOSGeom_releaseCollection_r(GEOSContextHandle_t handle, GEOSGeometry *collection, unsigned int *ngeoms)
GEOSGeometry * GEOSGeoJSONReader_readGeometry(GEOSGeoJSONReader *reader, const char *geojson)
GEOSGeometry * GEOSEnvelope_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
char GEOSEqualsIdentical(const GEOSGeometry *g1, const GEOSGeometry *g2)
GEOSGeometry * GEOSGeomFromHEX_buf(const unsigned char *hex, size_t size)
unsigned char * GEOSWKBWriter_writeHEX(GEOSWKBWriter *writer, const GEOSGeometry *g, size_t *size)
GEOSGeometry * GEOSInterpolate_r(GEOSContextHandle_t handle, const GEOSGeometry *line, double d)
GEOSGeometry * GEOSSharedPaths_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
int GEOSGeom_getExtent_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *xmin, double *ymin, double *xmax, double *ymax)
GEOSGeometry * GEOSWKTReader_read_r(GEOSContextHandle_t handle, GEOSWKTReader *reader, const char *wkt)
char GEOSPreparedRelatePattern(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2, const char *imPattern)
int GEOS_setWKBByteOrder(int byteOrder)
int GEOSCoverageIsValid_r(GEOSContextHandle_t extHandle, const GEOSGeometry *input, double gapWidth, GEOSGeometry **output)
int GEOSCoverageCleanParams_setGapMaximumWidth_r(GEOSContextHandle_t extHandle, GEOSCoverageCleanParams *params, double gapMaximumWidth)
void GEOSWKBReader_setFixStructure(GEOSWKBReader *reader, char doFix)
GEOSGeometry * GEOSInterpolate(const GEOSGeometry *line, double d)
char GEOSPreparedContains_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
GEOSGeometry * GEOSInterpolateNormalized_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double d)
int GEOSCoordSeq_getY_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s, unsigned int idx, double *val)
GEOSGeometry * GEOSGeomGetEndPoint(const GEOSGeometry *g)
GEOSGeometry * GEOSSnap_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double tolerance)
GEOSGeometry * GEOSPolygonize_full(const GEOSGeometry *input, GEOSGeometry **cuts, GEOSGeometry **dangles, GEOSGeometry **invalid)
char * GEOSRelateBoundaryNodeRule(const GEOSGeometry *g1, const GEOSGeometry *g2, int bnr)
double GEOSGeom_getPrecision(const GEOSGeometry *g)
GEOSGeometry * GEOSLargestEmptyCircle(const GEOSGeometry *obstacles, const GEOSGeometry *boundary, double tolerance)
char GEOSIntersects(const GEOSGeometry *g1, const GEOSGeometry *g2)
int GEOSCoordSeq_getDimensions(const GEOSCoordSequence *s, unsigned int *dims)
char GEOSPreparedCoveredBy(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
char GEOSCovers(const GEOSGeometry *g1, const GEOSGeometry *g2)
GEOSInterruptCallback * GEOS_interruptRegisterCallback(GEOSInterruptCallback *cb)
int GEOSGeom_getXMin_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *value)
int GEOSCoordSeq_getOrdinate_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s, unsigned int idx, unsigned int dim, double *val)
int GEOSCoordSeq_getXY(const GEOSCoordSequence *s, unsigned int idx, double *x, double *y)
GEOSGeometry * GEOSSimplify_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double tolerance)
GEOSGeometry * GEOSIntersection_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
int GEOSOrientPolygons(GEOSGeometry *g, int exteriorCW)
char GEOSOverlaps(const GEOSGeometry *g1, const GEOSGeometry *g2)
char GEOSHasM_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
void GEOSWKTWriter_setTrim_r(GEOSContextHandle_t handle, GEOSWKTWriter *writer, char trim)
GEOSGeometry * GEOSLineMergeDirected(const GEOSGeometry *g)
GEOSGeometry * GEOSMakeValidWithParams(const GEOSGeometry *g, const GEOSMakeValidParams *makeValidParams)
GEOSGeometry * GEOSGeomFromWKB_buf_r(GEOSContextHandle_t handle, const unsigned char *wkb, size_t size)
GEOSGeometry * GEOSPointOnSurface(const GEOSGeometry *g)
GEOSGeometry * GEOSUnaryUnionPrec(const GEOSGeometry *g, double gridSize)
void GEOSWKTWriter_setTrim(GEOSWKTWriter *writer, char trim)
GEOSGeometry * GEOSBuffer_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double width, int quadsegs)
GEOSGeometry * GEOSMinimumWidth_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSWKBReader_readHEX_r(GEOSContextHandle_t handle, GEOSWKBReader *reader, const unsigned char *hex, size_t size)
GEOSWKBByteOrders
Definition geos_c.h:241
@ GEOS_WKB_NDR
Definition geos_c.h:245
@ GEOS_WKB_XDR
Definition geos_c.h:243
GEOSGeometry * GEOSVoronoiDiagram_r(GEOSContextHandle_t extHandle, const GEOSGeometry *g, const GEOSGeometry *env, double tolerance, int flags)
void GEOSWKBWriter_setIncludeSRID_r(GEOSContextHandle_t handle, GEOSWKBWriter *writer, const char writeSRID)
GEOSClusterInfo * GEOSClusterDBSCAN_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double eps, unsigned minPoints)
GEOSGeometry * GEOSConstrainedDelaunayTriangulation(const GEOSGeometry *g)
int GEOSCoordSeq_copyToArrays(const GEOSCoordSequence *s, double *x, double *y, double *z, double *m)
GEOSGeometry * GEOSMinimumBoundingCircle(const GEOSGeometry *g, double *radius, GEOSGeometry **center)
GEOSGeometry * GEOSSymDifference(const GEOSGeometry *ga, const GEOSGeometry *gb)
char GEOSDistanceWithin_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double dist)
GEOSGeometry * GEOSMakeValidWithParams_r(GEOSContextHandle_t handle, const GEOSGeometry *g, const GEOSMakeValidParams *makeValidParams)
struct GEOSWKTReader_t GEOSWKTReader
Definition geos_c.h:2109
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:1605
@ GEOSRELATE_BNR_OGC
Definition geos_c.h:1609
@ GEOSRELATE_BNR_MULTIVALENT_ENDPOINT
Definition geos_c.h:1613
@ GEOSRELATE_BNR_ENDPOINT
Definition geos_c.h:1611
@ GEOSRELATE_BNR_MOD2
Definition geos_c.h:1607
@ GEOSRELATE_BNR_MONOVALENT_ENDPOINT
Definition geos_c.h:1615
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:4990
@ GEOSHULL_PARAM_AREA_RATIO
Definition geos_c.h:4994
@ GEOSHULL_PARAM_VERTEX_RATIO
Definition geos_c.h:4992
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:2144
unsigned char * GEOSGeomToWKB_buf_r(GEOSContextHandle_t handle, const GEOSGeometry *g, size_t *size)
GEOSGeometry * GEOSSingleSidedBuffer(const GEOSGeometry *g, double width, int quadsegs, int joinStyle, double mitreLimit, int leftSide)
GEOSGeometry * GEOSUnionCascaded(const GEOSGeometry *g)
char GEOSPreparedTouches_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
GEOSMessageHandler GEOSContext_setErrorHandler_r(GEOSContextHandle_t extHandle, GEOSMessageHandler ef)
int GEOSCoordSeq_setXYZ(GEOSCoordSequence *s, unsigned int idx, double x, double y, double z)
size_t * GEOSClusterInfo_getClustersForInputs(const GEOSClusterInfo *clusters)
GEOSClusterInfo_getClustersForInputs.
GEOSGeometry * GEOSCoverageClean_r(GEOSContextHandle_t extHandle, const GEOSGeometry *input)
int GEOSWKTWriter_getOutputDimension_r(GEOSContextHandle_t handle, GEOSWKTWriter *writer)
double GEOSProjectNormalized(const GEOSGeometry *line, const GEOSGeometry *point)
int GEOSGeom_getYMin_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *value)
GEOSGeometry * GEOSGeom_clone_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
const GEOSPreparedGeometry * GEOSPrepare_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSMinimumClearanceLine_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
void GEOSGeom_setUserData(GEOSGeometry *g, void *userData)
GEOSGeometry * GEOSGeom_createCollection(int type, GEOSGeometry **geoms, unsigned int ngeoms)
void GEOSGeoJSONReader_destroy(GEOSGeoJSONReader *reader)
GEOSGeometry * GEOSGeom_createEmptyCompoundCurve(void)
GEOSGeometry * GEOSGetCentroid_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSCoordSequence * GEOSCoordSeq_copyFromBuffer(const double *buf, unsigned int size, int hasZ, int hasM)
int GEOSGridIntersectionFractions(const GEOSGeometry *g, double xmin, double ymin, double xmax, double ymax, unsigned nx, unsigned ny, float *buf)
int GEOSGeomGetNumPoints(const GEOSGeometry *g)
void GEOSGeoJSONWriter_destroy(GEOSGeoJSONWriter *writer)
GEOSGeometry * GEOSGeom_transformXY(const GEOSGeometry *g, GEOSTransformXYCallback callback, void *userdata)
size_t GEOSClusterInfo_getNumClusters(const GEOSClusterInfo *clusters)
GEOSClusterInfo_getNumClusters.
double GEOSProjectNormalized_r(GEOSContextHandle_t handle, const GEOSGeometry *g, const GEOSGeometry *p)
char GEOSPreparedCrosses(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
int GEOSGeomGetNumPoints_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
char * GEOSisValidReason_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSPolygonize_valid_r(GEOSContextHandle_t handle, const GEOSGeometry *const geoms[], unsigned int ngems)
GEOSGeometry * GEOSGeom_createCurvePolygon(GEOSGeometry *shell, GEOSGeometry **holes, unsigned int nholes)
GEOSGeometry * GEOSLineSubstring(const GEOSGeometry *g, double start_fraction, double end_fraction)
char GEOSPreparedIntersects(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
char GEOSWithin_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
GEOSClusterInfo * GEOSClusterDBSCAN(const GEOSGeometry *g, double eps, unsigned minPoints)
GEOSClusterDBSCAN.
GEOSGeometry * GEOSConcaveHullOfPolygons_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double lengthRatio, unsigned int isTight, unsigned int isHolesAllowed)
int GEOS_setWKBOutputDims(int newDims)
const GEOSCoordSequence * GEOSGeom_getCoordSeq_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSPointOnSurface_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
int GEOSFrechetDistanceDensify(const GEOSGeometry *g1, const GEOSGeometry *g2, double densifyFrac, double *dist)
struct GEOSBufParams_t GEOSBufferParams
Definition geos_c.h:169
char GEOSPreparedCovers_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
GEOSGeometry * GEOSDifference_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
char GEOSCoordSeq_hasM_r(GEOSContextHandle_t handle, GEOSCoordSequence *s)
GEOSGeometry * GEOSLargestEmptyCircle_r(GEOSContextHandle_t handle, const GEOSGeometry *g, const GEOSGeometry *boundary, double tolerance)
int GEOSOrientationIndex_r(GEOSContextHandle_t handle, double Ax, double Ay, double Bx, double By, double Px, double Py)
GEOSGeometry * GEOSPolygonHullSimplify_r(GEOSContextHandle_t handle, const GEOSGeometry *g, unsigned int isOuter, double vertexNumFraction)
GEOSPrecisionRules
Definition geos_c.h:1794
@ GEOS_PREC_NO_TOPO
Definition geos_c.h:1798
@ GEOS_PREC_KEEP_COLLAPSED
Definition geos_c.h:1800
@ GEOS_PREC_VALID_OUTPUT
Definition geos_c.h:1796
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:1685
@ GEOS_MAKE_VALID_LINEWORK
Definition geos_c.h:1689
@ GEOS_MAKE_VALID_STRUCTURE
Definition geos_c.h:1694
GEOSGeometry * GEOSWKBReader_readHEX(GEOSWKBReader *reader, const unsigned char *hex, size_t size)
int GEOSGeom_getYMax_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *value)
GEOSGeometry * GEOSGeom_createEmptyLineString(void)
const GEOSGeometry * GEOSGetInteriorRingN_r(GEOSContextHandle_t handle, const GEOSGeometry *g, int n)
GEOSGeometry * GEOSInterpolateNormalized(const GEOSGeometry *line, double proportion)
GEOSGeometry * GEOSGeom_clone(const GEOSGeometry *g)
void GEOSGeoJSONWriter_destroy_r(GEOSContextHandle_t handle, GEOSGeoJSONWriter *writer)
int GEOSBufferParams_setSingleSided(GEOSBufferParams *p, int singleSided)
const GEOSGeometry * GEOSGetInteriorRingN(const GEOSGeometry *g, int n)
int GEOSGeomGetZ_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *z)
GEOSGeometry * GEOSUnionPrec_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double gridSize)
GEOSGeometry * GEOSGeom_createPointFromXY_r(GEOSContextHandle_t handle, double x, double y)
char GEOSEqualsIdentical_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
GEOSClusterInfo * GEOSClusterGeometryDistance(const GEOSGeometry *g, double d)
GEOSClusterGeometryDistance.
GEOSClusterInfo * GEOSClusterEnvelopeIntersects_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
void GEOSWKTWriter_destroy_r(GEOSContextHandle_t handle, GEOSWKTWriter *writer)
const GEOSPreparedGeometry * GEOSPrepare(const GEOSGeometry *g)
int GEOSWKBWriter_getByteOrder(const GEOSWKBWriter *writer)
char GEOSPreparedOverlaps(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
char GEOSHasZ_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
int GEOSCoordSeq_setM_r(GEOSContextHandle_t handle, GEOSCoordSequence *s, unsigned int idx, double val)
GEOSGeometry * GEOSUnion(const GEOSGeometry *ga, const GEOSGeometry *gb)
void GEOSGeoJSONReader_destroy_r(GEOSContextHandle_t handle, GEOSGeoJSONReader *reader)
GEOSGeometry * GEOSSimplify(const GEOSGeometry *g, double tolerance)
void GEOSSTRtree_insert(GEOSSTRtree *tree, const GEOSGeometry *g, void *item)
char GEOSisSimple_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSWKBWriter * GEOSWKBWriter_create_r(GEOSContextHandle_t handle)
char GEOSDistanceWithin(const GEOSGeometry *g1, const GEOSGeometry *g2, double dist)
int GEOSCoordSeq_setXYZ_r(GEOSContextHandle_t handle, GEOSCoordSequence *s, unsigned int idx, double x, double y, double z)
int GEOSHausdorffDistanceWithPoints(const GEOSGeometry *g1, const GEOSGeometry *g2, double *dist, double *p1x, double *p1y, double *p2x, double *p2y)
int GEOSGeomGetX_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *x)
unsigned char * GEOSGeomToHEX_buf_r(GEOSContextHandle_t handle, const GEOSGeometry *g, size_t *size)
char GEOSPreparedWithin(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
char GEOSHasZ(const GEOSGeometry *g)
int GEOSWKBWriter_getOutputDimension_r(GEOSContextHandle_t handle, const GEOSWKBWriter *writer)
int GEOSBufferParams_setQuadrantSegments(GEOSBufferParams *p, int quadSegs)
void GEOS_interruptRequest(void)
char GEOSWKBWriter_getIncludeSRID_r(GEOSContextHandle_t handle, const GEOSWKBWriter *writer)
void finishGEOS(void)
int GEOSLength(const GEOSGeometry *g, double *length)
GEOSGeometry * GEOSConcaveHull(const GEOSGeometry *g, double ratio, unsigned int allowHoles)
int GEOSCoordSeq_getZ_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s, unsigned int idx, double *val)
int GEOSBufferParams_setEndCapStyle(GEOSBufferParams *p, int style)
GEOSGeometry * GEOSUnionCascaded_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
int GEOSGetSRID(const GEOSGeometry *g)
GEOSGeometry * GEOSBuffer(const GEOSGeometry *g, double width, int quadsegs)
unsigned char * GEOSWKBWriter_writeHEX_r(GEOSContextHandle_t handle, GEOSWKBWriter *writer, const GEOSGeometry *g, size_t *size)
void GEOSWKTWriter_setRoundingPrecision(GEOSWKTWriter *writer, int precision)
char GEOSisClosed_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
char * GEOSisValidReason(const GEOSGeometry *g)
void GEOSGeoJSONWriter_setOutputDimension_r(GEOSContextHandle_t handle, GEOSGeoJSONWriter *writer, int dim)
int GEOSBufferParams_setJoinStyle_r(GEOSContextHandle_t handle, GEOSBufferParams *p, int joinStyle)
char GEOSisRing(const GEOSGeometry *g)
int GEOSCoordSeq_getXY_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s, unsigned int idx, double *x, double *y)
char GEOSPreparedContainsXY(const GEOSPreparedGeometry *pg1, double x, double y)
const GEOSGeometry * GEOSGetGeometryN_r(GEOSContextHandle_t handle, const GEOSGeometry *g, int n)
int GEOSCoordSeq_getX_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s, unsigned int idx, double *val)
int GEOSPreparedDistance_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2, double *dist)
GEOSWKTWriter * GEOSWKTWriter_create(void)
char * GEOSPreparedRelate_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
int GEOSSegmentIntersection_r(GEOSContextHandle_t extHandle, double ax0, double ay0, double ax1, double ay1, double bx0, double by0, double bx1, double by1, double *cx, double *cy)
char GEOSisValid(const GEOSGeometry *g)
char GEOSCoveredBy(const GEOSGeometry *g1, const GEOSGeometry *g2)
int GEOSGeom_getDimensions(const GEOSGeometry *g)
char GEOSPreparedDisjoint_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
int GEOSHausdorffDistance_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double *dist)
GEOSGeometry * GEOSGeom_createCircularString(GEOSCoordSequence *s)
void GEOSWKBWriter_setIncludeSRID(GEOSWKBWriter *writer, const char writeSRID)
GEOSGeometry * GEOSBuildArea_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
char GEOSisEmpty(const GEOSGeometry *g)
const GEOSGeometry * GEOSGetGeometryN(const GEOSGeometry *g, int n)
int GEOSMinimumClearance_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *distance)
int GEOSHilbertCode(const GEOSGeometry *geom, const GEOSGeometry *extent, unsigned int level, unsigned int *code)
GEOSGeometry * GEOSConcaveHullByLength(const GEOSGeometry *g, double length, unsigned int allowHoles)
GEOSContextInterruptCallback * GEOSContext_setInterruptCallback_r(GEOSContextHandle_t extHandle, GEOSContextInterruptCallback *cb, void *userData)
GEOSGeometry * GEOSGeom_createCollection_r(GEOSContextHandle_t handle, int type, GEOSGeometry **geoms, unsigned int ngeoms)
GEOSGeometry * GEOSMaximumInscribedCircle(const GEOSGeometry *g, double tolerance)
GEOSGeoJSONReader * GEOSGeoJSONReader_create_r(GEOSContextHandle_t handle)
void() GEOSInterruptCallback(void)
Definition geos_c.h:359
GEOSGeometry * GEOSGeom_createPoint(GEOSCoordSequence *s)
int GEOS_getWKBByteOrder_r(GEOSContextHandle_t handle)
char GEOSPreparedTouches(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
char GEOSWKBWriter_getIncludeSRID(const GEOSWKBWriter *writer)
GEOSGeometry * GEOSCoverageClean(const GEOSGeometry *input)
GEOSGeometry * GEOSSnap(const GEOSGeometry *input, const GEOSGeometry *snap_target, double tolerance)
GEOSWKBWriter * GEOSWKBWriter_create(void)
struct GEOSSTRtree_t GEOSSTRtree
Definition geos_c.h:162
GEOSCoordSequence * GEOSCoordSeq_create_r(GEOSContextHandle_t handle, unsigned int size, unsigned int dims)
GEOSCoordSequence * GEOSNearestPoints(const GEOSGeometry *g1, const GEOSGeometry *g2)
GEOSGeometry * GEOSSymDifferencePrec(const GEOSGeometry *ga, const GEOSGeometry *gb, double gridSize)
int GEOSGeom_getXMax(const GEOSGeometry *g, double *value)
GEOSGeometry * GEOSRemoveRepeatedPoints_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double tolerance)
GEOSGeometry * GEOSGeom_extractUniquePoints_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
void GEOSFree(void *buffer)
GEOSBufferParams * GEOSBufferParams_create_r(GEOSContextHandle_t handle)
int GEOSCoordSeq_getX(const GEOSCoordSequence *s, unsigned int idx, double *val)
char * GEOSPreparedRelate(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
GEOSGeometry * GEOSDifferencePrec_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double gridSize)
char * GEOSGeomToWKT(const GEOSGeometry *g)
GEOSGeometry * GEOSSharedPaths(const GEOSGeometry *g1, const GEOSGeometry *g2)
int GEOSArea(const GEOSGeometry *g, double *area)
int GEOSGeomGetLength_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *length)
char GEOSPreparedCrosses_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
GEOSGeometry * GEOSGeom_createCompoundCurve(GEOSGeometry **curves, unsigned int ncurves)
int GEOSGeomGetY_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *y)
int GEOSCoordSeq_isCCW_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s, char *is_ccw)
char GEOSisValid_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
void GEOSSTRtree_insert_r(GEOSContextHandle_t handle, GEOSSTRtree *tree, const GEOSGeometry *g, void *item)
GEOSCoordSequence * GEOSCoordSeq_copyFromArrays_r(GEOSContextHandle_t handle, const double *x, const double *y, const double *z, const double *m, unsigned int size)
int GEOSCoordSeq_setX_r(GEOSContextHandle_t handle, GEOSCoordSequence *s, unsigned int idx, double val)
GEOSGeometry * GEOSLineMerge_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
char GEOSisValidDetail(const GEOSGeometry *g, int flags, char **reason, GEOSGeometry **location)
GEOSGeometry * GEOSPolygonize_r(GEOSContextHandle_t handle, const GEOSGeometry *const geoms[], unsigned int ngeoms)
GEOSGeometry * GEOSLineMerge(const GEOSGeometry *g)
GEOSGeometry * GEOSGeom_createEmptyCurvePolygon_r(GEOSContextHandle_t handle)
size_t GEOSClusterInfo_getClusterSize_r(GEOSContextHandle_t, const GEOSClusterInfo *clusters, size_t i)
GEOSGeometry * GEOSGeom_createLinearRing(GEOSCoordSequence *s)
struct GEOSCoverageCleanParams_t GEOSCoverageCleanParams
Definition geos_c.h:176
void GEOSClusterInfo_destroy(GEOSClusterInfo *clusters)
GEOSClusterInfo_destroy.
void GEOSWKTWriter_setRoundingPrecision_r(GEOSContextHandle_t handle, GEOSWKTWriter *writer, int precision)
const void * GEOSSTRtree_nearest_generic(GEOSSTRtree *tree, const void *item, const GEOSGeometry *itemEnvelope, GEOSDistanceCallback distancefn, void *userdata)
int GEOSGeom_getYMax(const GEOSGeometry *g, double *value)
int GEOSHausdorffDistanceDensify_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double densifyFrac, double *dist)
double GEOSProject(const GEOSGeometry *line, const GEOSGeometry *point)
int(* GEOSTransformXYZCallback)(double *x, double *y, double *z, void *userdata)
Definition geos_c.h:343
char * GEOSWKTWriter_write_r(GEOSContextHandle_t handle, GEOSWKTWriter *writer, const GEOSGeometry *g)
GEOSCoordSequence * GEOSCoordSeq_clone_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s)
GEOSGeometry * GEOSDifferencePrec(const GEOSGeometry *ga, const GEOSGeometry *gb, double gridSize)
GEOSGeometry * GEOSUnaryUnion(const GEOSGeometry *g)
struct GEOSPrepGeom_t GEOSPreparedGeometry
Definition geos_c.h:147