GEOS 3.15.0beta2
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
39
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
59
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 0beta2
68#endif
69#ifndef GEOS_VERSION
70#define GEOS_VERSION "3.15.0beta2"
71#endif
72#ifndef GEOS_JTS_PORT
73#define GEOS_JTS_PORT "1.20.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.0beta2-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
85
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
131typedef void (GEOSProgressCallback)(double progressRatio,
132 const char* message, void* userdata);
133
134
135/*
136* When we're included by geos_c.cpp, these types are #defined to the
137* C++ definitions via preprocessor. We don't touch them to allow the
138* compiler to cross-check the declarations. However, for all "normal"
139* C-API users, we need to define these types as "opaque" struct pointers, as
140* those clients don't have access to the original C++ headers, by design.
141*/
142#ifndef GEOSGeometry
143
155typedef struct GEOSGeom_t GEOSGeometry;
156
162typedef struct GEOSPrepGeom_t GEOSPreparedGeometry;
163
170typedef struct GEOSCoordSeq_t GEOSCoordSequence;
171
177typedef struct GEOSSTRtree_t GEOSSTRtree;
178
184typedef struct GEOSBufParams_t GEOSBufferParams;
185
191typedef struct GEOSCoverageCleanParams_t GEOSCoverageCleanParams;
192
198typedef struct GEOSMakeValidParams_t GEOSMakeValidParams;
199
204typedef struct GEOSClusterInfo_t GEOSClusterInfo;
205
211typedef struct GEOSCurveToLineParams_t GEOSCurveToLineParams;
212
218typedef struct GEOSLineToCurveParams_t GEOSLineToCurveParams;
219
220#endif
221
223
224/*
225* These are compatibility definitions for source compatibility
226* with GEOS 2.X clients relying on that type.
227*/
228typedef GEOSGeometry* GEOSGeom;
229typedef GEOSCoordSequence* GEOSCoordSeq;
230
232
257 GEOS_CIRCULARSTRING,
258 GEOS_COMPOUNDCURVE,
259 GEOS_CURVEPOLYGON,
260 GEOS_MULTICURVE,
261 GEOS_MULTISURFACE,
262};
263
276
292
307
315typedef void (*GEOSQueryCallback)(void *item, void *userdata);
316
334typedef int (*GEOSDistanceCallback)(
335 const void* item1,
336 const void* item2,
337 double* distance,
338 void* userdata);
339
340
354 double* x,
355 double* y,
356 void* userdata);
357
358
373 double* x,
374 double* y,
375 double* z,
376 void* userdata);
377
378
379/* ========== Interruption ========== */
388typedef void (GEOSInterruptCallback)(void);
389
398typedef int (GEOSContextInterruptCallback)(void*);
399
412
426 GEOSContextHandle_t extHandle,
428 void* userData);
429
436extern void GEOS_DLL GEOS_interruptRequest(void);
437
442extern void GEOS_DLL GEOS_interruptCancel(void);
443
444/* ========== Progress monitoring ========== */
445
457 GEOSContextHandle_t extHandle,
459 void* userData);
460
461/* ========== Initialization and Cleanup ========== */
462
471extern GEOSContextHandle_t GEOS_DLL GEOS_init_r(void);
472
480extern void GEOS_DLL GEOS_finish_r(GEOSContextHandle_t handle);
481
491 GEOSContextHandle_t extHandle,
493
495
505 GEOSContextHandle_t extHandle,
507
518 GEOSContextHandle_t extHandle,
520 void *userData);
521
534 GEOSContextHandle_t extHandle,
536 void *userData);
537
551 GEOSContextHandle_t extHandle,
552 const GEOSCurveToLineParams* params);
553
567 GEOSContextHandle_t extHandle,
568 const GEOSLineToCurveParams* params);
569
570/* ========== Coordinate Sequence functions ========== */
571
574 GEOSContextHandle_t handle,
575 unsigned int size,
576 unsigned int dims);
577
580 GEOSContextHandle_t handle,
581 unsigned int size,
582 int hasZ,
583 int hasM);
584
587 GEOSContextHandle_t handle,
588 const double* buf,
589 unsigned int size,
590 int hasZ,
591 int hasM);
592
595 GEOSContextHandle_t handle,
596 const double* x,
597 const double* y,
598 const double* z,
599 const double* m,
600 unsigned int size);
601
603extern int GEOS_DLL GEOSCoordSeq_copyToBuffer_r(
604 GEOSContextHandle_t handle,
605 const GEOSCoordSequence* s,
606 double* buf,
607 int hasZ,
608 int hasM);
609
611extern int GEOS_DLL GEOSCoordSeq_copyToArrays_r(
612 GEOSContextHandle_t handle,
613 const GEOSCoordSequence* s,
614 double* x,
615 double* y,
616 double* z,
617 double* m);
618
621 GEOSContextHandle_t handle,
622 const GEOSCoordSequence* s);
623
625extern void GEOS_DLL GEOSCoordSeq_destroy_r(
626 GEOSContextHandle_t handle,
628
630extern char GEOS_DLL GEOSCoordSeq_hasZ_r(
631 GEOSContextHandle_t handle,
633
635extern char GEOS_DLL GEOSCoordSeq_hasM_r(
636 GEOSContextHandle_t handle,
638
640extern int GEOS_DLL GEOSCoordSeq_setX_r(
641 GEOSContextHandle_t handle,
642 GEOSCoordSequence* s, unsigned int idx,
643 double val);
644
646extern int GEOS_DLL GEOSCoordSeq_setY_r(
647 GEOSContextHandle_t handle,
648 GEOSCoordSequence* s, unsigned int idx,
649 double val);
650
652extern int GEOS_DLL GEOSCoordSeq_setZ_r(
653 GEOSContextHandle_t handle,
654 GEOSCoordSequence* s, unsigned int idx,
655 double val);
656
658extern int GEOS_DLL GEOSCoordSeq_setM_r(
659 GEOSContextHandle_t handle,
660 GEOSCoordSequence* s, unsigned int idx,
661 double val);
662
664extern int GEOS_DLL GEOSCoordSeq_setXY_r(
665 GEOSContextHandle_t handle,
666 GEOSCoordSequence* s, unsigned int idx,
667 double x, double y);
668
670extern int GEOS_DLL GEOSCoordSeq_setXYZ_r(
671 GEOSContextHandle_t handle,
672 GEOSCoordSequence* s, unsigned int idx,
673 double x, double y, double z);
674
676extern int GEOS_DLL GEOSCoordSeq_setOrdinate_r(
677 GEOSContextHandle_t handle,
679 unsigned int idx,
680 unsigned int dim, double val);
681
683extern int GEOS_DLL GEOSCoordSeq_getX_r(
684 GEOSContextHandle_t handle,
685 const GEOSCoordSequence* s,
686 unsigned int idx, double *val);
687
689extern int GEOS_DLL GEOSCoordSeq_getY_r(
690 GEOSContextHandle_t handle,
691 const GEOSCoordSequence* s,
692 unsigned int idx, double *val);
693
695extern int GEOS_DLL GEOSCoordSeq_getZ_r(
696 GEOSContextHandle_t handle,
697 const GEOSCoordSequence* s,
698 unsigned int idx, double *val);
699
701extern int GEOS_DLL GEOSCoordSeq_getM_r(
702 GEOSContextHandle_t handle,
703 const GEOSCoordSequence* s,
704 unsigned int idx, double *val);
705
707extern int GEOS_DLL GEOSCoordSeq_getXY_r(
708 GEOSContextHandle_t handle,
709 const GEOSCoordSequence* s,
710 unsigned int idx,
711 double *x, double *y);
712
714extern int GEOS_DLL GEOSCoordSeq_getXYZ_r(
715 GEOSContextHandle_t handle,
716 const GEOSCoordSequence* s,
717 unsigned int idx,
718 double *x, double *y, double *z);
719
721extern int GEOS_DLL GEOSCoordSeq_getOrdinate_r(
722 GEOSContextHandle_t handle,
723 const GEOSCoordSequence* s,
724 unsigned int idx,
725 unsigned int dim, double *val);
726
728extern int GEOS_DLL GEOSCoordSeq_getSize_r(
729 GEOSContextHandle_t handle,
730 const GEOSCoordSequence* s,
731 unsigned int *size);
732
735 GEOSContextHandle_t handle,
736 const GEOSCoordSequence* s,
737 unsigned int *dims);
738
740extern int GEOS_DLL GEOSCoordSeq_isCCW_r(
741 GEOSContextHandle_t handle,
742 const GEOSCoordSequence* s,
743 char* is_ccw);
744
745/* ========= Linear referencing functions ========= */
746
748extern double GEOS_DLL GEOSProject_r(
749 GEOSContextHandle_t handle,
750 const GEOSGeometry *line,
751 const GEOSGeometry *point);
752
755 GEOSContextHandle_t handle,
756 const GEOSGeometry *line,
757 double d);
758
760extern double GEOS_DLL GEOSProjectNormalized_r(
761 GEOSContextHandle_t handle,
762 const GEOSGeometry *g,
763 const GEOSGeometry *p);
764
767 GEOSContextHandle_t handle,
768 const GEOSGeometry *g,
769 double d);
770
771/* ========== Buffer related functions ========== */
772
774extern GEOSGeometry GEOS_DLL *GEOSBuffer_r(
775 GEOSContextHandle_t handle,
776 const GEOSGeometry* g,
777 double width, int quadsegs);
778
794
816
819 GEOSContextHandle_t handle);
820
822extern void GEOS_DLL GEOSBufferParams_destroy_r(
823 GEOSContextHandle_t handle,
824 GEOSBufferParams* parms);
825
828 GEOSContextHandle_t handle,
830 int style);
831
834 GEOSContextHandle_t handle,
836 int joinStyle);
837
840 GEOSContextHandle_t handle,
842 double mitreLimit);
843
846 GEOSContextHandle_t handle,
848 int quadSegs);
849
852 GEOSContextHandle_t handle,
854 int singleSided);
855
858 GEOSContextHandle_t handle,
859 const GEOSGeometry* g,
860 const GEOSBufferParams* p,
861 double width);
862
865 GEOSContextHandle_t handle,
866 const GEOSGeometry* g,
867 double width, int quadsegs, int endCapStyle,
868 int joinStyle, double mitreLimit);
869
872 GEOSContextHandle_t handle,
873 const GEOSGeometry* g,
874 double tolerance);
875
878 GEOSContextHandle_t handle,
879 const GEOSGeometry* g, double width, int quadsegs,
880 int joinStyle, double mitreLimit);
881
882
883/* ========= Geometry Constructors ========= */
884
887 GEOSContextHandle_t handle,
889
892 GEOSContextHandle_t handle,
893 double x, double y);
894
897 GEOSContextHandle_t handle);
898
901 GEOSContextHandle_t handle,
903
906 GEOSContextHandle_t handle,
908
911 GEOSContextHandle_t handle);
912
915 GEOSContextHandle_t handle);
916
919 GEOSContextHandle_t handle,
920 GEOSGeometry* shell,
921 GEOSGeometry** holes,
922 unsigned int nholes);
923
926 GEOSContextHandle_t handle,
927 int type,
928 GEOSGeometry* *geoms,
929 unsigned int ngeoms);
930
933 GEOSContextHandle_t handle,
934 GEOSGeometry * collection,
935 unsigned int * ngeoms);
936
939 GEOSContextHandle_t handle, int type);
940
943 GEOSContextHandle_t handle,
944 double xmin, double ymin,
945 double xmax, double ymax);
946
949 GEOSContextHandle_t handle,
950 const GEOSGeometry* g);
951
954 GEOSContextHandle_t handle,
956
959 GEOSContextHandle_t handle);
960
963 GEOSContextHandle_t handle,
964 GEOSGeometry** curves,
965 unsigned int ncurves);
966
969 GEOSContextHandle_t handle);
970
973 GEOSContextHandle_t handle,
974 GEOSGeometry* shell,
975 GEOSGeometry** holes,
976 unsigned int nholes);
977
980 GEOSContextHandle_t handle);
981
982/* ========= Memory management ========= */
983
985extern void GEOS_DLL GEOSGeom_destroy_r(
986 GEOSContextHandle_t handle,
987 GEOSGeometry* g);
988
989/* ========= Coverages ========= */
990
992extern GEOSGeometry GEOS_DLL *
994 GEOSContextHandle_t handle,
995 const GEOSGeometry* g);
996
998extern int GEOS_DLL
1000 GEOSContextHandle_t extHandle,
1001 const GEOSGeometry* input,
1002 double gapWidth,
1003 GEOSGeometry** output);
1004
1006extern GEOSGeometry GEOS_DLL *
1008 GEOSContextHandle_t extHandle,
1009 const GEOSGeometry* input,
1010 double tolerance,
1011 int preserveBoundary);
1012
1014extern GEOSGeometry GEOS_DLL *
1016 GEOSContextHandle_t handle,
1017 const GEOSGeometry* input,
1018 int edgetype);
1019
1021extern GEOSCoverageCleanParams GEOS_DLL *
1023 GEOSContextHandle_t extHandle);
1024
1026extern void GEOS_DLL
1028 GEOSContextHandle_t extHandle,
1029 GEOSCoverageCleanParams* params);
1030
1032extern int GEOS_DLL
1034 GEOSContextHandle_t extHandle,
1036 double snappingDistance);
1037
1039extern int GEOS_DLL
1041 GEOSContextHandle_t extHandle,
1043 double gapMaximumWidth);
1044
1046extern int GEOS_DLL
1048 GEOSContextHandle_t extHandle,
1050 int overlapMergeStrategy);
1051
1053extern GEOSGeometry GEOS_DLL *
1055 GEOSContextHandle_t extHandle,
1056 const GEOSGeometry* input,
1057 const GEOSCoverageCleanParams* params);
1058
1060extern GEOSGeometry GEOS_DLL *
1062 GEOSContextHandle_t extHandle,
1063 const GEOSGeometry* input);
1064
1065/* ========= Topology Operations ========= */
1066
1069 GEOSContextHandle_t handle,
1070 const GEOSGeometry* g);
1071
1074 GEOSContextHandle_t handle,
1075 const GEOSGeometry* g1,
1076 const GEOSGeometry* g2);
1077
1080 GEOSContextHandle_t handle,
1081 const GEOSGeometry* g1,
1082 const GEOSGeometry* g2,
1083 double gridSize);
1084
1087 GEOSContextHandle_t handle,
1088 const GEOSGeometry* g);
1089
1092 GEOSContextHandle_t handle,
1093 const GEOSGeometry* g,
1094 double ratio,
1095 unsigned int allowHoles);
1096
1099 GEOSContextHandle_t handle,
1100 const GEOSGeometry* g,
1101 double ratio,
1102 unsigned int allowHoles);
1103
1106 GEOSContextHandle_t handle,
1107 const GEOSGeometry* g,
1108 unsigned int isOuter,
1109 double vertexNumFraction);
1110
1120
1123 GEOSContextHandle_t handle,
1124 const GEOSGeometry* g,
1125 unsigned int isOuter,
1126 unsigned int parameterMode,
1127 double parameter);
1128
1131 GEOSContextHandle_t handle,
1132 const GEOSGeometry* g,
1133 double lengthRatio,
1134 unsigned int isTight,
1135 unsigned int isHolesAllowed);
1136
1139 GEOSContextHandle_t handle,
1140 const GEOSGeometry* g);
1141
1144 GEOSContextHandle_t handle,
1145 const GEOSGeometry* g,
1146 double tolerance);
1147
1150 GEOSContextHandle_t handle,
1151 const GEOSGeometry* g,
1152 const GEOSGeometry* boundary,
1153 double tolerance);
1154
1157 GEOSContextHandle_t handle,
1158 const GEOSGeometry* g);
1159
1162 GEOSContextHandle_t handle,
1163 const GEOSGeometry* g);
1164
1166extern int GEOS_DLL GEOSMinimumClearance_r(
1167 GEOSContextHandle_t handle,
1168 const GEOSGeometry* g,
1169 double* distance);
1170
1173 GEOSContextHandle_t handle,
1174 const GEOSGeometry* g1,
1175 const GEOSGeometry* g2);
1176
1179 GEOSContextHandle_t handle,
1180 const GEOSGeometry* g1,
1181 const GEOSGeometry* g2,
1182 double gridSize);
1183
1186 GEOSContextHandle_t handle,
1187 const GEOSGeometry* g1,
1188 const GEOSGeometry* g2);
1189
1192 GEOSContextHandle_t handle,
1193 const GEOSGeometry* g1,
1194 const GEOSGeometry* g2,
1195 double gridSize);
1196
1199 GEOSContextHandle_t handle,
1200 const GEOSGeometry* g);
1201
1203extern GEOSGeometry GEOS_DLL *GEOSUnion_r(
1204 GEOSContextHandle_t handle,
1205 const GEOSGeometry* g1,
1206 const GEOSGeometry* g2);
1207
1210 GEOSContextHandle_t handle,
1211 const GEOSGeometry* g1,
1212 const GEOSGeometry* g2,
1213 double gridSize);
1214
1217 GEOSContextHandle_t handle,
1218 const GEOSGeometry* g);
1219
1222 GEOSContextHandle_t handle,
1223 const GEOSGeometry* g,
1224 double gridSize);
1225
1228 GEOSContextHandle_t handle,
1229 const GEOSGeometry* g);
1230
1233 GEOSContextHandle_t handle,
1234 const GEOSGeometry* g);
1235
1238 GEOSContextHandle_t handle,
1239 const GEOSGeometry* g);
1240
1243 GEOSContextHandle_t handle,
1244 const GEOSGeometry* g,
1245 double* radius,
1246 GEOSGeometry** center);
1247
1249extern GEOSGeometry GEOS_DLL *GEOSNode_r(
1250 GEOSContextHandle_t handle,
1251 const GEOSGeometry* g);
1252
1254extern GEOSGeometry GEOS_DLL *GEOSSplit_r(
1255 GEOSContextHandle_t handle,
1256 const GEOSGeometry* g,
1257 const GEOSGeometry* edge);
1258
1261 GEOSContextHandle_t handle,
1262 const GEOSGeometry* g,
1263 double xmin, double ymin,
1264 double xmax, double ymax);
1265
1268 GEOSContextHandle_t handle,
1269 const GEOSGeometry* g,
1270 double xmin, double ymin,
1271 double xmax, double ymax,
1272 unsigned nx, unsigned ny,
1273 int includeExterior);
1274
1277 GEOSContextHandle_t handle,
1278 const GEOSGeometry* g,
1279 double xmin, double ymin,
1280 double xmax, double ymax,
1281 unsigned nx, unsigned ny,
1282 float* buf);
1283
1286 GEOSContextHandle_t handle,
1287 const GEOSGeometry *const geoms[],
1288 unsigned int ngeoms);
1289
1292 GEOSContextHandle_t handle,
1293 const GEOSGeometry *const geoms[],
1294 unsigned int ngems);
1295
1298 GEOSContextHandle_t handle,
1299 const GEOSGeometry * const geoms[],
1300 unsigned int ngeoms);
1301
1304 GEOSContextHandle_t handle,
1305 const GEOSGeometry* input,
1306 GEOSGeometry** cuts,
1307 GEOSGeometry** dangles,
1308 GEOSGeometry** invalidRings);
1309
1312 GEOSContextHandle_t handle,
1313 const GEOSGeometry* g);
1314
1317 GEOSContextHandle_t handle,
1318 const GEOSGeometry* g);
1319
1321extern size_t GEOS_DLL *GEOSMinimumSpanningTree_r(
1322 GEOSContextHandle_t handle,
1323 const GEOSGeometry * const geoms[],
1324 unsigned int ngeoms);
1325
1328 GEOSContextHandle_t handle,
1329 const GEOSGeometry* g);
1330
1333 GEOSContextHandle_t handle,
1334 const GEOSGeometry* g,
1335 double start_fraction,
1336 double end_fdraction);
1337
1340 GEOSContextHandle_t handle,
1341 const GEOSGeometry* g);
1342
1345 GEOSContextHandle_t handle,
1346 const GEOSGeometry* g,
1347 double tolerance);
1348
1351 GEOSContextHandle_t handle,
1352 const GEOSGeometry* g, double tolerance);
1353
1356 GEOSContextHandle_t handle,
1357 const GEOSGeometry* g);
1358
1361 GEOSContextHandle_t handle,
1362 const GEOSGeometry* g1,
1363 const GEOSGeometry* g2);
1364
1366extern GEOSGeometry GEOS_DLL *GEOSSnap_r(
1367 GEOSContextHandle_t handle,
1368 const GEOSGeometry* g1,
1369 const GEOSGeometry* g2,
1370 double tolerance);
1371
1374 GEOSContextHandle_t handle,
1375 const GEOSGeometry *g,
1376 double tolerance,
1377 int onlyEdges);
1378
1381 GEOSContextHandle_t handle,
1382 const GEOSGeometry *g);
1383
1394
1397 GEOSContextHandle_t extHandle,
1398 const GEOSGeometry *g,
1399 const GEOSGeometry *env,
1400 double tolerance,
1401 int flags);
1402
1404extern int GEOS_DLL GEOSSegmentIntersection_r(
1405 GEOSContextHandle_t extHandle,
1406 double ax0, double ay0,
1407 double ax1, double ay1,
1408 double bx0, double by0,
1409 double bx1, double by1,
1410 double* cx, double* cy);
1411
1412/* ========= Binary predicates ========= */
1413
1415extern char GEOS_DLL GEOSDisjoint_r(
1416 GEOSContextHandle_t handle,
1417 const GEOSGeometry* g1,
1418 const GEOSGeometry* g2);
1419
1421extern char GEOS_DLL GEOSTouches_r(
1422 GEOSContextHandle_t handle,
1423 const GEOSGeometry* g1,
1424 const GEOSGeometry* g2);
1425
1427extern char GEOS_DLL GEOSIntersects_r(
1428 GEOSContextHandle_t handle,
1429 const GEOSGeometry* g1,
1430 const GEOSGeometry* g2);
1431
1433extern char GEOS_DLL GEOSCrosses_r(
1434 GEOSContextHandle_t handle,
1435 const GEOSGeometry* g1,
1436 const GEOSGeometry* g2);
1437
1439extern char GEOS_DLL GEOSWithin_r(
1440 GEOSContextHandle_t handle,
1441 const GEOSGeometry* g1,
1442 const GEOSGeometry* g2);
1443
1445extern char GEOS_DLL GEOSContains_r(
1446 GEOSContextHandle_t handle,
1447 const GEOSGeometry* g1,
1448 const GEOSGeometry* g2);
1449
1451extern char GEOS_DLL GEOSOverlaps_r(
1452 GEOSContextHandle_t handle,
1453 const GEOSGeometry* g1,
1454 const GEOSGeometry* g2);
1455
1457extern char GEOS_DLL GEOSEquals_r(
1458 GEOSContextHandle_t handle,
1459 const GEOSGeometry* g1,
1460 const GEOSGeometry* g2);
1461
1463extern char GEOS_DLL GEOSEqualsExact_r(
1464 GEOSContextHandle_t handle,
1465 const GEOSGeometry* g1,
1466 const GEOSGeometry* g2,
1467 double tolerance);
1468
1470extern char GEOS_DLL GEOSEqualsIdentical_r(
1471 GEOSContextHandle_t handle,
1472 const GEOSGeometry* g1,
1473 const GEOSGeometry* g2);
1474
1476extern char GEOS_DLL GEOSCovers_r(
1477 GEOSContextHandle_t handle,
1478 const GEOSGeometry* g1,
1479 const GEOSGeometry* g2);
1480
1482extern char GEOS_DLL GEOSCoveredBy_r(
1483 GEOSContextHandle_t handle,
1484 const GEOSGeometry* g1,
1485 const GEOSGeometry* g2);
1486
1487/* ========= Prepared Geometry Binary Predicates ========== */
1488
1491 GEOSContextHandle_t handle,
1492 const GEOSGeometry* g);
1493
1495extern void GEOS_DLL GEOSPreparedGeom_destroy_r(
1496 GEOSContextHandle_t handle,
1497 const GEOSPreparedGeometry* g);
1498
1500extern char GEOS_DLL GEOSPreparedContains_r(
1501 GEOSContextHandle_t handle,
1502 const GEOSPreparedGeometry* pg1,
1503 const GEOSGeometry* g2);
1504
1506extern char GEOS_DLL GEOSPreparedContainsXY_r(
1507 GEOSContextHandle_t handle,
1508 const GEOSPreparedGeometry* pg1,
1509 double x,
1510 double y);
1511
1514 GEOSContextHandle_t handle,
1515 const GEOSPreparedGeometry* pg1,
1516 const GEOSGeometry* g2);
1517
1519extern char GEOS_DLL GEOSPreparedCoveredBy_r(
1520 GEOSContextHandle_t handle,
1521 const GEOSPreparedGeometry* pg1,
1522 const GEOSGeometry* g2);
1523
1525extern char GEOS_DLL GEOSPreparedCovers_r(
1526 GEOSContextHandle_t handle,
1527 const GEOSPreparedGeometry* pg1,
1528 const GEOSGeometry* g2);
1529
1531extern char GEOS_DLL GEOSPreparedCrosses_r(
1532 GEOSContextHandle_t handle,
1533 const GEOSPreparedGeometry* pg1,
1534 const GEOSGeometry* g2);
1535
1537extern char GEOS_DLL GEOSPreparedDisjoint_r(
1538 GEOSContextHandle_t handle,
1539 const GEOSPreparedGeometry* pg1,
1540 const GEOSGeometry* g2);
1541
1543extern char GEOS_DLL GEOSPreparedIntersects_r(
1544 GEOSContextHandle_t handle,
1545 const GEOSPreparedGeometry* pg1,
1546 const GEOSGeometry* g2);
1547
1549extern char GEOS_DLL GEOSPreparedIntersectsXY_r(
1550 GEOSContextHandle_t handle,
1551 const GEOSPreparedGeometry* pg1,
1552 double x,
1553 double y);
1554
1556extern char GEOS_DLL GEOSPreparedOverlaps_r(
1557 GEOSContextHandle_t handle,
1558 const GEOSPreparedGeometry* pg1,
1559 const GEOSGeometry* g2);
1560
1562extern char GEOS_DLL GEOSPreparedTouches_r(
1563 GEOSContextHandle_t handle,
1564 const GEOSPreparedGeometry* pg1,
1565 const GEOSGeometry* g2);
1566
1568extern char GEOS_DLL GEOSPreparedWithin_r(
1569 GEOSContextHandle_t handle,
1570 const GEOSPreparedGeometry* pg1,
1571 const GEOSGeometry* g2);
1572
1574extern char GEOS_DLL * GEOSPreparedRelate_r(
1575 GEOSContextHandle_t handle,
1576 const GEOSPreparedGeometry* pg1,
1577 const GEOSGeometry* g2);
1578
1580extern char GEOS_DLL GEOSPreparedRelatePattern_r(
1581 GEOSContextHandle_t handle,
1582 const GEOSPreparedGeometry* pg1,
1583 const GEOSGeometry* g2,
1584 const char* im);
1585
1588 GEOSContextHandle_t handle,
1589 const GEOSPreparedGeometry* pg1,
1590 const GEOSGeometry* g2);
1591
1593extern int GEOS_DLL GEOSPreparedDistance_r(
1594 GEOSContextHandle_t handle,
1595 const GEOSPreparedGeometry* pg1,
1596 const GEOSGeometry* g2, double *dist);
1597
1599extern char GEOS_DLL GEOSPreparedDistanceWithin_r(
1600 GEOSContextHandle_t handle,
1601 const GEOSPreparedGeometry* pg1,
1602 const GEOSGeometry* g2, double dist);
1603
1604/* ========== STRtree ========== */
1605
1608 GEOSContextHandle_t handle,
1609 size_t nodeCapacity);
1610
1612extern int GEOS_DLL GEOSSTRtree_build_r(
1613 GEOSContextHandle_t handle,
1614 GEOSSTRtree *tree);
1615
1617extern void GEOS_DLL GEOSSTRtree_insert_r(
1618 GEOSContextHandle_t handle,
1619 GEOSSTRtree *tree,
1620 const GEOSGeometry *g,
1621 void *item);
1622
1624extern void GEOS_DLL GEOSSTRtree_query_r(
1625 GEOSContextHandle_t handle,
1626 GEOSSTRtree *tree,
1627 const GEOSGeometry *g,
1628 GEOSQueryCallback callback,
1629 void *userdata);
1630
1633 GEOSContextHandle_t handle,
1634 GEOSSTRtree *tree,
1635 const GEOSGeometry* geom);
1636
1638extern const void GEOS_DLL *GEOSSTRtree_nearest_generic_r(
1639 GEOSContextHandle_t handle,
1640 GEOSSTRtree *tree,
1641 const void* item,
1642 const GEOSGeometry* itemEnvelope,
1643 GEOSDistanceCallback distancefn,
1644 void* userdata);
1645
1647extern void GEOS_DLL GEOSSTRtree_iterate_r(
1648 GEOSContextHandle_t handle,
1649 GEOSSTRtree *tree,
1650 GEOSQueryCallback callback,
1651 void *userdata);
1652
1654extern char GEOS_DLL GEOSSTRtree_remove_r(
1655 GEOSContextHandle_t handle,
1656 GEOSSTRtree *tree,
1657 const GEOSGeometry *g,
1658 void *item);
1659
1661extern void GEOS_DLL GEOSSTRtree_destroy_r(
1662 GEOSContextHandle_t handle,
1663 GEOSSTRtree *tree);
1664
1665
1666/* ========= Unary predicate ========= */
1667
1669extern char GEOS_DLL GEOSisEmpty_r(
1670 GEOSContextHandle_t handle,
1671 const GEOSGeometry* g);
1672
1674extern char GEOS_DLL GEOSisSimple_r(
1675 GEOSContextHandle_t handle,
1676 const GEOSGeometry* g);
1677
1679extern char GEOS_DLL GEOSisRing_r(
1680 GEOSContextHandle_t handle,
1681 const GEOSGeometry* g);
1682
1684extern char GEOS_DLL GEOSHasZ_r(
1685 GEOSContextHandle_t handle,
1686 const GEOSGeometry* g);
1687
1689extern char GEOS_DLL GEOSHasM_r(
1690 GEOSContextHandle_t handle,
1691 const GEOSGeometry* g);
1692
1694extern char GEOS_DLL GEOSisClosed_r(
1695 GEOSContextHandle_t handle,
1696 const GEOSGeometry *g);
1697
1698/* ========== Dimensionally Extended 9 Intersection Model ========== */
1699
1716
1718extern char GEOS_DLL GEOSRelatePattern_r(
1719 GEOSContextHandle_t handle,
1720 const GEOSGeometry* g1,
1721 const GEOSGeometry* g2,
1722 const char *imPattern);
1723
1725extern char GEOS_DLL *GEOSRelate_r(
1726 GEOSContextHandle_t handle,
1727 const GEOSGeometry* g1,
1728 const GEOSGeometry* g2);
1729
1731extern char GEOS_DLL GEOSRelatePatternMatch_r(
1732 GEOSContextHandle_t handle,
1733 const char *intMatrix,
1734 const char *imPattern);
1735
1737extern char GEOS_DLL *GEOSRelateBoundaryNodeRule_r(
1738 GEOSContextHandle_t handle,
1739 const GEOSGeometry* g1,
1740 const GEOSGeometry* g2,
1741 int bnr);
1742
1743/* ========= Validity checking ========= */
1744
1751
1753extern char GEOS_DLL GEOSisValid_r(
1754 GEOSContextHandle_t handle,
1755 const GEOSGeometry* g);
1756
1758extern char GEOS_DLL *GEOSisValidReason_r(
1759 GEOSContextHandle_t handle,
1760 const GEOSGeometry* g);
1761
1763extern char GEOS_DLL GEOSisSimpleDetail_r(
1764 GEOSContextHandle_t handle,
1765 const GEOSGeometry* g,
1766 int findAllLocations,
1767 GEOSGeometry** location);
1768
1770extern char GEOS_DLL GEOSisValidDetail_r(
1771 GEOSContextHandle_t handle,
1772 const GEOSGeometry* g,
1773 int flags,
1774 char** reason,
1775 GEOSGeometry** location);
1776
1777/* ========== Make Valid ========== */
1778
1795
1798 GEOSContextHandle_t extHandle);
1799
1802 GEOSContextHandle_t handle,
1803 GEOSMakeValidParams* parms);
1804
1807 GEOSContextHandle_t handle,
1809 int style);
1810
1813 GEOSContextHandle_t handle,
1815 enum GEOSMakeValidMethods method);
1816
1819 GEOSContextHandle_t handle,
1820 const GEOSGeometry* g);
1821
1824 GEOSContextHandle_t handle,
1825 const GEOSGeometry* g,
1826 const GEOSMakeValidParams* makeValidParams);
1827
1830 GEOSContextHandle_t handle,
1831 const GEOSGeometry* g,
1832 double tolerance);
1833
1834/* ========== Geometry info ========== */
1835
1837/* Return NULL on exception, result must be freed by caller. */
1838extern char GEOS_DLL *GEOSGeomType_r(
1839 GEOSContextHandle_t handle,
1840 const GEOSGeometry* g);
1841
1843extern int GEOS_DLL GEOSGeomTypeId_r(
1844 GEOSContextHandle_t handle,
1845 const GEOSGeometry* g);
1846
1848extern int GEOS_DLL GEOSGetSRID_r(
1849 GEOSContextHandle_t handle,
1850 const GEOSGeometry* g);
1851
1853extern void GEOS_DLL GEOSSetSRID_r(
1854 GEOSContextHandle_t handle,
1855 GEOSGeometry* g, int SRID);
1856
1858extern void GEOS_DLL *GEOSGeom_getUserData_r(
1859 GEOSContextHandle_t handle,
1860 const GEOSGeometry* g);
1861
1863extern void GEOS_DLL GEOSGeom_setUserData_r(
1864 GEOSContextHandle_t handle,
1865 GEOSGeometry* g,
1866 void* userData);
1867
1869extern int GEOS_DLL GEOSGetNumGeometries_r(
1870 GEOSContextHandle_t handle,
1871 const GEOSGeometry* g);
1872
1874extern const GEOSGeometry GEOS_DLL *GEOSGetGeometryN_r(
1875 GEOSContextHandle_t handle,
1876 const GEOSGeometry* g, int n);
1877
1879extern int GEOS_DLL GEOSGetNumCurves_r(
1880 GEOSContextHandle_t handle,
1881 const GEOSGeometry* g);
1882
1884extern const GEOSGeometry GEOS_DLL *GEOSGetCurveN_r(
1885 GEOSContextHandle_t handle,
1886 const GEOSGeometry* g, int n);
1887
1889extern int GEOS_DLL GEOSNormalize_r(
1890 GEOSContextHandle_t handle,
1891 GEOSGeometry* g);
1892
1894extern int GEOS_DLL GEOSOrientPolygons_r(
1895 GEOSContextHandle_t handle,
1896 GEOSGeometry* g,
1897 int exteriorCW);
1898
1911
1914 GEOSContextHandle_t handle,
1915 const GEOSGeometry *g,
1916 double gridSize,
1917 int flags);
1918
1920extern double GEOS_DLL GEOSGeom_getPrecision_r(
1921 GEOSContextHandle_t handle,
1922 const GEOSGeometry *g);
1923
1926 GEOSContextHandle_t handle,
1927 const GEOSGeometry* g,
1928 const GEOSCurveToLineParams* params);
1929
1932 GEOSContextHandle_t extHandle,
1933 GEOSCurveToLineParams* params,
1934 double tolerance);
1935
1938 GEOSContextHandle_t extHandle,
1939 GEOSCurveToLineParams* params,
1940 double tolerance);
1941
1944 GEOSContextHandle_t handle,
1945 const GEOSGeometry* g,
1946 const GEOSLineToCurveParams* params);
1947
1950 GEOSContextHandle_t extHandle,
1951 GEOSLineToCurveParams* params,
1952 double tolerance);
1953
1956 GEOSContextHandle_t extHandle,
1957 GEOSLineToCurveParams* params,
1958 double tolerance);
1959
1962 GEOSContextHandle_t extHandle,
1963 GEOSLineToCurveParams* params,
1964 double tolerance);
1965
1967extern int GEOS_DLL GEOSGetNumInteriorRings_r(
1968 GEOSContextHandle_t handle,
1969 const GEOSGeometry* g);
1970
1972extern int GEOS_DLL GEOSGeomGetNumPoints_r(
1973 GEOSContextHandle_t handle,
1974 const GEOSGeometry* g);
1975
1977extern int GEOS_DLL GEOSGeomGetX_r(
1978 GEOSContextHandle_t handle,
1979 const GEOSGeometry *g,
1980 double *x);
1981
1983extern int GEOS_DLL GEOSGeomGetY_r(
1984 GEOSContextHandle_t handle,
1985 const GEOSGeometry *g,
1986 double *y);
1987
1989extern int GEOS_DLL GEOSGeomGetZ_r(
1990 GEOSContextHandle_t handle,
1991 const GEOSGeometry *g,
1992 double *z);
1993
1995extern int GEOS_DLL GEOSGeomGetM_r(
1996 GEOSContextHandle_t handle,
1997 const GEOSGeometry *g,
1998 double *m);
1999
2002 GEOSContextHandle_t handle,
2003 const GEOSGeometry* g, int n);
2004
2007 GEOSContextHandle_t handle,
2008 const GEOSGeometry* g);
2009
2011extern int GEOS_DLL GEOSGetNumCoordinates_r(
2012 GEOSContextHandle_t handle,
2013 const GEOSGeometry* g);
2014
2017 GEOSContextHandle_t handle,
2018 const GEOSGeometry* g);
2019
2021extern int GEOS_DLL GEOSGeom_getDimensions_r(
2022 GEOSContextHandle_t handle,
2023 const GEOSGeometry* g);
2024
2027 GEOSContextHandle_t handle,
2028 const GEOSGeometry* g);
2029
2031extern int GEOS_DLL GEOSGeom_getXMin_r(
2032 GEOSContextHandle_t handle,
2033 const GEOSGeometry* g,
2034 double* value);
2035
2037extern int GEOS_DLL GEOSGeom_getYMin_r(
2038 GEOSContextHandle_t handle,
2039 const GEOSGeometry* g,
2040 double* value);
2041
2043extern int GEOS_DLL GEOSGeom_getXMax_r(
2044 GEOSContextHandle_t handle,
2045 const GEOSGeometry* g,
2046 double* value);
2047
2049extern int GEOS_DLL GEOSGeom_getYMax_r(
2050 GEOSContextHandle_t handle,
2051 const GEOSGeometry* g,
2052 double* value);
2053
2055extern int GEOS_DLL GEOSGeom_getExtent_r(
2056 GEOSContextHandle_t handle,
2057 const GEOSGeometry* g,
2058 double* xmin,
2059 double* ymin,
2060 double* xmax,
2061 double* ymax);
2062
2065 GEOSContextHandle_t handle,
2066 const GEOSGeometry *g,
2067 int n);
2068
2071 GEOSContextHandle_t handle,
2072 const GEOSGeometry *g);
2073
2076 GEOSContextHandle_t handle,
2077 const GEOSGeometry *g);
2078
2079/* ========= Misc functions ========= */
2080
2082extern int GEOS_DLL GEOSArea_r(
2083 GEOSContextHandle_t handle,
2084 const GEOSGeometry* g,
2085 double *area);
2086
2088extern int GEOS_DLL GEOSLength_r(
2089 GEOSContextHandle_t handle,
2090 const GEOSGeometry* g,
2091 double *length);
2092
2094extern int GEOS_DLL GEOSDistance_r(
2095 GEOSContextHandle_t handle,
2096 const GEOSGeometry* g1,
2097 const GEOSGeometry* g2,
2098 double *dist);
2099
2101extern char GEOS_DLL GEOSDistanceWithin_r(
2102 GEOSContextHandle_t handle,
2103 const GEOSGeometry* g1,
2104 const GEOSGeometry* g2,
2105 double dist);
2106
2108extern int GEOS_DLL GEOSDistanceIndexed_r(
2109 GEOSContextHandle_t handle,
2110 const GEOSGeometry* g1,
2111 const GEOSGeometry* g2,
2112 double *dist);
2113
2115extern int GEOS_DLL GEOSHausdorffDistance_r(
2116 GEOSContextHandle_t handle,
2117 const GEOSGeometry *g1,
2118 const GEOSGeometry *g2,
2119 double *dist);
2120
2123 GEOSContextHandle_t handle,
2124 const GEOSGeometry *g1,
2125 const GEOSGeometry *g2,
2126 double *dist,
2127 double *p1x, double *p1y,
2128 double *p2x, double *p2y);
2129
2132 GEOSContextHandle_t handle,
2133 const GEOSGeometry *g1,
2134 const GEOSGeometry *g2,
2135 double densifyFrac, double *dist);
2136
2139 GEOSContextHandle_t handle,
2140 const GEOSGeometry *g1,
2141 const GEOSGeometry *g2,
2142 double densifyFrac, double* dist,
2143 double *p1x, double *p1y,
2144 double *p2x, double *p2y);
2145
2147extern int GEOS_DLL GEOSFrechetDistance_r(
2148 GEOSContextHandle_t handle,
2149 const GEOSGeometry *g1,
2150 const GEOSGeometry *g2,
2151 double *dist);
2152
2155 GEOSContextHandle_t handle,
2156 const GEOSGeometry *g1,
2157 const GEOSGeometry *g2,
2158 double densifyFrac,
2159 double *dist);
2160
2161
2163extern int GEOS_DLL GEOSHilbertCode_r(
2164 GEOSContextHandle_t handle,
2165 const GEOSGeometry *geom,
2166 const GEOSGeometry* extent,
2167 unsigned int level,
2168 unsigned int *code
2169);
2170
2172extern int GEOS_DLL GEOSGeomGetLength_r(
2173 GEOSContextHandle_t handle,
2174 const GEOSGeometry *g,
2175 double *length);
2176
2179 GEOSContextHandle_t handle,
2180 const GEOSGeometry* g1,
2181 const GEOSGeometry* g2);
2182
2185 GEOSContextHandle_t handle,
2186 const GEOSGeometry* g,
2187 GEOSTransformXYCallback callback,
2188 void* userdata);
2189
2192 GEOSContextHandle_t handle,
2193 const GEOSGeometry* g,
2194 GEOSTransformXYZCallback callback,
2195 void* userdata);
2196
2199 GEOSContextHandle_t handle,
2200 const GEOSGeometry* g,
2201 double eps,
2202 unsigned minPoints);
2203
2206 GEOSContextHandle_t handle,
2207 const GEOSGeometry* g,
2208 double d);
2209
2212 GEOSContextHandle_t handle,
2213 const GEOSGeometry* g);
2214
2217 GEOSContextHandle_t handle,
2218 const GEOSGeometry* g,
2219 double d);
2220
2223 GEOSContextHandle_t handle,
2224 const GEOSGeometry* g);
2225
2228
2230extern size_t GEOS_DLL GEOSClusterInfo_getClusterSize_r(GEOSContextHandle_t, const GEOSClusterInfo* clusters, size_t i);
2231
2234
2236extern const size_t GEOS_DLL* GEOSClusterInfo_getInputsForClusterN_r(GEOSContextHandle_t, const GEOSClusterInfo* clusters, size_t i);
2237
2240
2241/* ========= Algorithms ========= */
2242
2244extern int GEOS_DLL GEOSOrientationIndex_r(
2245 GEOSContextHandle_t handle,
2246 double Ax, double Ay,
2247 double Bx, double By,
2248 double Px, double Py);
2249
2250
2251/* ========== Reader and Writer APIs ========== */
2252
2253#ifndef GEOSWKTReader
2254
2260typedef struct GEOSWKTReader_t GEOSWKTReader;
2261
2267typedef struct GEOSWKTWriter_t GEOSWKTWriter;
2268
2274typedef struct GEOSWKBReader_t GEOSWKBReader;
2275
2281typedef struct GEOSWKBWriter_t GEOSWKBWriter;
2282
2288typedef struct GEOSGeoJSONReader_t GEOSGeoJSONReader;
2289
2295typedef struct GEOSGeoJSONWriter_t GEOSGeoJSONWriter;
2296
2297#endif
2298
2299/* ========== WKT Reader ========== */
2300
2303 GEOSContextHandle_t handle);
2304
2307 GEOSWKTReader* reader);
2308
2311 GEOSContextHandle_t handle,
2312 GEOSWKTReader* reader,
2313 const char *wkt);
2314
2317 GEOSContextHandle_t handle,
2318 GEOSWKTReader *reader,
2319 char doFix);
2320
2321
2322/* ========== WKT Writer ========== */
2323
2326 GEOSContextHandle_t handle);
2327
2329extern void GEOS_DLL GEOSWKTWriter_destroy_r(
2330 GEOSContextHandle_t handle,
2331 GEOSWKTWriter* writer);
2332
2334extern char GEOS_DLL *GEOSWKTWriter_write_r(
2335 GEOSContextHandle_t handle,
2336 GEOSWKTWriter* writer,
2337 const GEOSGeometry* g);
2338
2340extern void GEOS_DLL GEOSWKTWriter_setTrim_r(
2341 GEOSContextHandle_t handle,
2342 GEOSWKTWriter *writer,
2343 char trim);
2344
2347 GEOSContextHandle_t handle,
2348 GEOSWKTWriter *writer,
2349 int precision);
2350
2353 GEOSContextHandle_t handle,
2354 GEOSWKTWriter *writer,
2355 int dim);
2356
2359 GEOSContextHandle_t handle,
2360 GEOSWKTWriter *writer);
2361
2363extern void GEOS_DLL GEOSWKTWriter_setOld3D_r(
2364 GEOSContextHandle_t handle,
2365 GEOSWKTWriter *writer,
2366 int useOld3D);
2367
2377extern int GEOS_DLL GEOS_printDouble(
2378 double d,
2379 unsigned int precision,
2380 char *result
2381);
2382
2383/* ========== WKB Reader ========== */
2384
2387 GEOSContextHandle_t handle);
2388
2390extern void GEOS_DLL GEOSWKBReader_destroy_r(
2391 GEOSContextHandle_t handle,
2392 GEOSWKBReader* reader);
2393
2396 GEOSContextHandle_t handle,
2397 GEOSWKBReader *reader,
2398 char doFix);
2399
2402 GEOSContextHandle_t handle,
2403 GEOSWKBReader* reader,
2404 const unsigned char *wkb,
2405 size_t size);
2406
2409 GEOSContextHandle_t handle,
2410 GEOSWKBReader* reader,
2411 const unsigned char *hex,
2412 size_t size);
2413
2414
2415/* ========== WKB Writer ========== */
2416
2419 GEOSContextHandle_t handle);
2420
2422extern void GEOS_DLL GEOSWKBWriter_destroy_r(
2423 GEOSContextHandle_t handle,
2424 GEOSWKBWriter* writer);
2425
2427extern unsigned char GEOS_DLL *GEOSWKBWriter_write_r(
2428 GEOSContextHandle_t handle,
2429 GEOSWKBWriter* writer,
2430 const GEOSGeometry* g,
2431 size_t *size);
2432
2434extern unsigned char GEOS_DLL *GEOSWKBWriter_writeHEX_r(
2435 GEOSContextHandle_t handle,
2436 GEOSWKBWriter* writer,
2437 const GEOSGeometry* g,
2438 size_t *size);
2439
2442 GEOSContextHandle_t handle,
2443 const GEOSWKBWriter* writer);
2444
2447 GEOSContextHandle_t handle,
2448 GEOSWKBWriter* writer, int newDimension);
2449
2452 GEOSContextHandle_t handle,
2453 const GEOSWKBWriter* writer);
2454
2456extern void GEOS_DLL GEOSWKBWriter_setByteOrder_r(
2457 GEOSContextHandle_t handle,
2458 GEOSWKBWriter* writer,
2459 int byteOrder);
2460
2462extern int GEOS_DLL GEOSWKBWriter_getFlavor_r(
2463 GEOSContextHandle_t handle,
2464 const GEOSWKBWriter* writer);
2465
2467extern void GEOS_DLL GEOSWKBWriter_setFlavor_r(
2468 GEOSContextHandle_t handle,
2469 GEOSWKBWriter* writer,
2470 int flavor);
2471
2474 GEOSContextHandle_t handle,
2475 const GEOSWKBWriter* writer);
2476
2479 GEOSContextHandle_t handle,
2480 GEOSWKBWriter* writer, const char writeSRID);
2481
2482/* ========== GeoJSON Reader ========== */
2483
2486 GEOSContextHandle_t handle);
2487
2490 GEOSGeoJSONReader* reader);
2491
2494 GEOSContextHandle_t handle,
2495 GEOSGeoJSONReader* reader,
2496 const char *geojson);
2497
2498/* ========== GeoJSON Writer ========== */
2499
2502 GEOSContextHandle_t handle);
2503
2506 GEOSGeoJSONWriter* writer);
2507
2510 GEOSContextHandle_t handle,
2511 GEOSGeoJSONWriter* writer,
2512 const GEOSGeometry* g,
2513 int indent);
2514
2517 GEOSContextHandle_t handle,
2518 GEOSGeoJSONWriter *writer,
2519 int dim);
2520
2523 GEOSContextHandle_t handle,
2524 GEOSGeoJSONWriter *writer);
2525
2527extern void GEOS_DLL GEOSFree_r(
2528 GEOSContextHandle_t handle,
2529 void *buffer);
2530
2538extern const char GEOS_DLL *GEOSversion(void);
2539
2540/*
2541* External code to GEOS can define GEOS_USE_ONLY_R_API
2542* to strip the non-reentrant API functions from this header,
2543* leaving only the "_r" compatible variants.
2544*/
2545#ifndef GEOS_USE_ONLY_R_API
2546
2547/* ========== Initialization, cleanup ================================= */
2553
2566extern void GEOS_DLL initGEOS(
2567 GEOSMessageHandler notice_function,
2568 GEOSMessageHandler error_function);
2569
2575extern void GEOS_DLL finishGEOS(void);
2576
2586extern void GEOS_DLL GEOSFree(void *buffer);
2587
2589
2590/* ========= Coordinate Sequence functions ========= */
2596
2604extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_create(unsigned int size, unsigned int dims);
2605
2614extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_createWithDimensions(unsigned int size, int hasZ, int hasM);
2615
2626extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_copyFromBuffer(const double* buf, unsigned int size, int hasZ, int hasM);
2627
2639extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_copyFromArrays(const double* x, const double* y, const double* z, const double* m, unsigned int size);
2640
2651extern int GEOS_DLL GEOSCoordSeq_copyToBuffer(const GEOSCoordSequence* s, double* buf, int hasZ, int hasM);
2652
2664extern int GEOS_DLL GEOSCoordSeq_copyToArrays(const GEOSCoordSequence* s, double* x, double* y, double* z, double* m);
2665
2673
2680
2688extern char GEOS_DLL GEOSCoordSeq_hasZ(GEOSCoordSequence* s);
2689
2697extern char GEOS_DLL GEOSCoordSeq_hasM(GEOSCoordSequence* s);
2698
2708 unsigned int idx, double val);
2718 unsigned int idx, double val);
2728 unsigned int idx, double val);
2729
2739 unsigned int idx, double val);
2740
2752 unsigned int idx, double x, double y);
2765 unsigned int idx, double x, double y, double z);
2776 unsigned int idx, unsigned int dim, double val);
2777
2786extern int GEOS_DLL GEOSCoordSeq_getX(const GEOSCoordSequence* s,
2787 unsigned int idx, double *val);
2788
2797extern int GEOS_DLL GEOSCoordSeq_getY(const GEOSCoordSequence* s,
2798 unsigned int idx, double *val);
2799
2808extern int GEOS_DLL GEOSCoordSeq_getZ(const GEOSCoordSequence* s,
2809 unsigned int idx, double *val);
2810
2819extern int GEOS_DLL GEOSCoordSeq_getM(const GEOSCoordSequence* s,
2820 unsigned int idx, double *val);
2821
2832extern int GEOS_DLL GEOSCoordSeq_getXY(const GEOSCoordSequence* s,
2833 unsigned int idx, double *x, double *y);
2845extern int GEOS_DLL GEOSCoordSeq_getXYZ(const GEOSCoordSequence* s,
2846 unsigned int idx, double *x, double *y, double *z);
2856extern int GEOS_DLL GEOSCoordSeq_getOrdinate(const GEOSCoordSequence* s,
2857 unsigned int idx, unsigned int dim, double *val);
2858
2866extern int GEOS_DLL GEOSCoordSeq_getSize(
2867 const GEOSCoordSequence* s,
2868 unsigned int *size);
2869
2877extern int GEOS_DLL GEOSCoordSeq_getDimensions(
2878 const GEOSCoordSequence* s,
2879 unsigned int *dims);
2880
2890extern int GEOS_DLL GEOSCoordSeq_isCCW(
2891 const GEOSCoordSequence* s,
2892 char* is_ccw);
2893
2895
2896/* ========= Geometry Constructors ========= */
2902
2911
2921extern GEOSGeometry GEOS_DLL *GEOSGeom_createPointFromXY(double x, double y);
2922
2931
2940
2949
2958
2967
2982 GEOSGeometry* shell,
2983 GEOSGeometry** holes,
2984 unsigned int nholes);
2985
2994
3002
3012 unsigned int ncurves);
3013
3021
3036 GEOSGeometry* shell,
3037 GEOSGeometry** holes,
3038 unsigned int nholes);
3039
3047
3062 int type,
3063 GEOSGeometry** geoms,
3064 unsigned int ngeoms);
3065
3083 GEOSGeometry * collection,
3084 unsigned int * ngeoms);
3085
3095
3107 double xmin, double ymin,
3108 double xmax, double ymax);
3109
3117extern GEOSGeometry GEOS_DLL *GEOSGeom_clone(const GEOSGeometry* g);
3118
3124extern void GEOS_DLL GEOSGeom_destroy(GEOSGeometry* g);
3125
3127
3128/* ========== Geometry info ========== */
3133
3143extern char GEOS_DLL *GEOSGeomType(const GEOSGeometry* g);
3144
3151extern int GEOS_DLL GEOSGeomTypeId(const GEOSGeometry* g);
3152
3159extern int GEOS_DLL GEOSGetSRID(const GEOSGeometry* g);
3160
3171extern void GEOS_DLL *GEOSGeom_getUserData(const GEOSGeometry* g);
3172
3185extern int GEOS_DLL GEOSGetNumGeometries(const GEOSGeometry* g);
3186
3202extern const GEOSGeometry GEOS_DLL *GEOSGetGeometryN(
3203 const GEOSGeometry* g,
3204 int n);
3205
3214extern int GEOS_DLL GEOSGetNumCurves(const GEOSGeometry* g);
3215
3229extern const GEOSGeometry GEOS_DLL *GEOSGetCurveN(
3230 const GEOSGeometry* g,
3231 int n);
3232
3242extern double GEOS_DLL GEOSGeom_getPrecision(const GEOSGeometry *g);
3243
3251extern int GEOS_DLL GEOSGetNumInteriorRings(const GEOSGeometry* g);
3252
3263extern int GEOS_DLL GEOSGeomGetNumPoints(const GEOSGeometry* g);
3264
3273extern int GEOS_DLL GEOSGeomGetX(const GEOSGeometry *g, double *x);
3274
3283extern int GEOS_DLL GEOSGeomGetY(const GEOSGeometry *g, double *y);
3284
3294extern int GEOS_DLL GEOSGeomGetZ(const GEOSGeometry *g, double *z);
3295
3305extern int GEOS_DLL GEOSGeomGetM(const GEOSGeometry *g, double *m);
3306
3316extern const GEOSGeometry GEOS_DLL *GEOSGetInteriorRingN(
3317 const GEOSGeometry* g,
3318 int n);
3319
3328extern const GEOSGeometry GEOS_DLL *GEOSGetExteriorRing(
3329 const GEOSGeometry* g);
3330
3338extern int GEOS_DLL GEOSGetNumCoordinates(
3339 const GEOSGeometry* g);
3340
3351 const GEOSGeometry* g);
3352
3365extern int GEOS_DLL GEOSGeom_getDimensions(
3366 const GEOSGeometry* g);
3367
3381 const GEOSGeometry* g);
3382
3396extern int GEOS_DLL GEOSGeom_getXMin(const GEOSGeometry* g, double* value);
3397
3411extern int GEOS_DLL GEOSGeom_getYMin(const GEOSGeometry* g, double* value);
3412
3426extern int GEOS_DLL GEOSGeom_getXMax(const GEOSGeometry* g, double* value);
3427
3441extern int GEOS_DLL GEOSGeom_getYMax(const GEOSGeometry* g, double* value);
3442
3460extern int GEOS_DLL GEOSGeom_getExtent(
3461 const GEOSGeometry* g,
3462 double* xmin,
3463 double* ymin,
3464 double* xmax,
3465 double* ymax);
3466
3480extern GEOSGeometry GEOS_DLL *GEOSGeomGetPointN(const GEOSGeometry *g, int n);
3481
3495
3509
3518extern char GEOS_DLL GEOSisEmpty(const GEOSGeometry* g);
3519
3529extern char GEOS_DLL GEOSisRing(const GEOSGeometry* g);
3530
3537extern char GEOS_DLL GEOSHasZ(const GEOSGeometry* g);
3538
3546extern char GEOS_DLL GEOSHasM(const GEOSGeometry* g);
3547
3562extern char GEOS_DLL GEOSisClosed(const GEOSGeometry *g);
3563
3565
3566/* ==================================================================================== */
3571
3578extern void GEOS_DLL GEOSSetSRID(GEOSGeometry* g, int SRID);
3579
3587extern void GEOS_DLL GEOSGeom_setUserData(GEOSGeometry* g, void* userData);
3588
3612extern int GEOS_DLL GEOSNormalize(GEOSGeometry* g);
3613
3625extern int GEOS_DLL GEOSOrientPolygons(GEOSGeometry* g,
3626 int exteriorCW);
3627
3629
3630/* ========== Validity checking ============================================================ */
3636
3651extern char GEOS_DLL GEOSisSimple(const GEOSGeometry* g);
3652
3672extern char GEOS_DLL GEOSisSimpleDetail(
3673 const GEOSGeometry* g,
3674 int findAllLocations,
3675 GEOSGeometry** locations);
3676
3697extern char GEOS_DLL GEOSisValid(const GEOSGeometry* g);
3698
3714extern char GEOS_DLL *GEOSisValidReason(const GEOSGeometry *g);
3715
3736extern char GEOS_DLL GEOSisValidDetail(
3737 const GEOSGeometry* g,
3738 int flags,
3739 char** reason,
3740 GEOSGeometry** location);
3741
3760 const GEOSGeometry* g);
3761
3786 const GEOSGeometry* g,
3787 const GEOSMakeValidParams *makeValidParams);
3788
3798
3807
3818 enum GEOSMakeValidMethods method);
3819
3832 int keepCollapsed);
3833
3858extern int GEOS_DLL GEOSMinimumClearance(const GEOSGeometry* g, double* d);
3859
3877
3899 const GEOSGeometry* g,
3900 double tolerance);
3901
3903
3904/* ========= Metric functions ================================================== */
3909
3922extern int GEOS_DLL GEOSArea(
3923 const GEOSGeometry* g,
3924 double *area);
3925
3937extern int GEOS_DLL GEOSLength(
3938 const GEOSGeometry* g,
3939 double *length);
3940
3955extern int GEOS_DLL GEOSGeomGetLength(
3956 const GEOSGeometry *g,
3957 double *length);
3958
3960
3961/* ========== Distance functions ================================================ */
3967
3984extern int GEOS_DLL GEOSDistance(
3985 const GEOSGeometry* g1,
3986 const GEOSGeometry* g2,
3987 double *dist);
3988
4006extern char GEOS_DLL GEOSDistanceWithin(
4007 const GEOSGeometry* g1,
4008 const GEOSGeometry* g2,
4009 double dist);
4010
4030extern int GEOS_DLL GEOSDistanceIndexed(
4031 const GEOSGeometry* g1,
4032 const GEOSGeometry* g2,
4033 double *dist);
4034
4053 const GEOSGeometry* g1,
4054 const GEOSGeometry* g2);
4055
4073extern int GEOS_DLL GEOSHausdorffDistance(
4074 const GEOSGeometry *g1,
4075 const GEOSGeometry *g2,
4076 double *dist);
4077
4078
4100 const GEOSGeometry *g1,
4101 const GEOSGeometry *g2,
4102 double *dist,
4103 double *p1x, double *p1y,
4104 double *p2x, double *p2y);
4105
4106
4107
4129 const GEOSGeometry *g1,
4130 const GEOSGeometry *g2,
4131 double densifyFrac,
4132 double *dist);
4133
4160 const GEOSGeometry *g1,
4161 const GEOSGeometry *g2,
4162 double densifyFrac,
4163 double *dist,
4164 double* p1x, double* p1y,
4165 double* p2x, double* p2y);
4166
4186extern int GEOS_DLL GEOSFrechetDistance(
4187 const GEOSGeometry *g1,
4188 const GEOSGeometry *g2,
4189 double *dist);
4190
4213extern int GEOS_DLL GEOSFrechetDistanceDensify(
4214 const GEOSGeometry *g1,
4215 const GEOSGeometry *g2,
4216 double densifyFrac,
4217 double *dist);
4218
4220
4221/* ========== Linear referencing functions */
4227
4243extern double GEOS_DLL GEOSProject(const GEOSGeometry* line,
4244 const GEOSGeometry* point);
4245
4265extern GEOSGeometry GEOS_DLL *GEOSInterpolate(const GEOSGeometry* line,
4266 double d);
4267
4284extern double GEOS_DLL GEOSProjectNormalized(const GEOSGeometry* line,
4285 const GEOSGeometry* point);
4286
4308 const GEOSGeometry *line,
4309 double proportion);
4310
4312
4313/* ========== Overlay functions ========== */
4319
4340extern GEOSGeometry GEOS_DLL *GEOSIntersection(const GEOSGeometry* g1, const GEOSGeometry* g2);
4341
4356extern GEOSGeometry GEOS_DLL *GEOSIntersectionPrec(const GEOSGeometry* g1, const GEOSGeometry* g2, double gridSize);
4357
4379 const GEOSGeometry* ga,
4380 const GEOSGeometry* gb);
4381
4398 const GEOSGeometry* ga,
4399 const GEOSGeometry* gb,
4400 double gridSize);
4401
4424 const GEOSGeometry* ga,
4425 const GEOSGeometry* gb);
4426
4444 const GEOSGeometry* ga,
4445 const GEOSGeometry* gb,
4446 double gridSize);
4447
4468extern GEOSGeometry GEOS_DLL *GEOSUnion(
4469 const GEOSGeometry* ga,
4470 const GEOSGeometry* gb);
4471
4488 const GEOSGeometry* ga,
4489 const GEOSGeometry* gb,
4490 double gridSize);
4491
4513extern GEOSGeometry GEOS_DLL *GEOSUnaryUnion(const GEOSGeometry* g);
4514
4531 const GEOSGeometry* g,
4532 double gridSize);
4533
4555
4582 const GEOSGeometry* g,
4583 double xmin, double ymin,
4584 double xmax, double ymax);
4585
4620 const GEOSGeometry* g,
4621 double xmin, double ymin,
4622 double xmax, double ymax,
4623 unsigned nx, unsigned ny,
4624 int includeExterior);
4625
4649 const GEOSGeometry* g,
4650 double xmin, double ymin,
4651 double xmax, double ymax,
4652 unsigned nx, unsigned ny,
4653 float* buf);
4654
4679 const GEOSGeometry* g1,
4680 const GEOSGeometry* g2);
4682
4683/* ========== Clustering functions ========== */
4686
4687
4688
4689
4690static const size_t GEOS_CLUSTER_NONE = (size_t) -1;
4691
4693
4708extern GEOSClusterInfo GEOS_DLL* GEOSClusterDBSCAN(const GEOSGeometry* g, double eps, unsigned minPoints);
4709
4724extern GEOSClusterInfo GEOS_DLL* GEOSClusterGeometryDistance(const GEOSGeometry* g, double d);
4725
4740
4752extern GEOSClusterInfo GEOS_DLL* GEOSClusterEnvelopeDistance(const GEOSGeometry* g, double d);
4753
4765
4774extern size_t GEOS_DLL GEOSClusterInfo_getNumClusters(const GEOSClusterInfo* clusters);
4775
4785extern size_t GEOS_DLL GEOSClusterInfo_getClusterSize(const GEOSClusterInfo* clusters, size_t i );
4786
4796extern size_t GEOS_DLL* GEOSClusterInfo_getClustersForInputs(const GEOSClusterInfo* clusters);
4797
4806extern const size_t GEOS_DLL* GEOSClusterInfo_getInputsForClusterN(const GEOSClusterInfo* clusters, size_t i);
4807
4815extern void GEOS_DLL GEOSClusterInfo_destroy(GEOSClusterInfo* clusters);
4816
4818
4819/* ========== Buffer related functions ========== */
4824
4843extern GEOSGeometry GEOS_DLL *GEOSBuffer(const GEOSGeometry* g,
4844 double width, int quadsegs);
4845
4855
4862extern void GEOS_DLL GEOSBufferParams_destroy(GEOSBufferParams* parms);
4863
4873 int style);
4874
4884 int joinStyle);
4885
4899 double mitreLimit);
4900
4913 int quadSegs);
4914
4927 int singleSided);
4928
4946 const GEOSGeometry* g,
4947 const GEOSBufferParams* p,
4948 double width);
4949
4971 const GEOSGeometry* g,
4972 double width,
4973 int quadsegs,
4974 int endCapStyle,
4975 int joinStyle,
4976 double mitreLimit);
4977
5007 double width, int quadsegs, int joinStyle, double mitreLimit);
5008
5010
5011
5012/* ====================================================================== */
5018
5041
5042
5071extern int GEOS_DLL GEOSCoverageIsValid(
5072 const GEOSGeometry* input,
5073 double gapWidth,
5074 GEOSGeometry** invalidEdges);
5075
5111 const GEOSGeometry* input,
5112 double tolerance,
5113 int preserveBoundary);
5114
5124extern GEOSGeometry GEOS_DLL *GEOSCoverageEdges(const GEOSGeometry *input, int edgetype);
5125
5133extern GEOSCoverageCleanParams GEOS_DLL *
5135
5142extern void GEOS_DLL
5144 GEOSCoverageCleanParams* params);
5145
5170extern int GEOS_DLL
5173 double snappingDistance);
5174
5196extern int GEOS_DLL
5199 double gapMaximumWidth);
5200
5224extern int GEOS_DLL
5227 int overlapMergeStrategy);
5228
5261extern GEOSGeometry GEOS_DLL *
5263 const GEOSGeometry* input,
5264 const GEOSCoverageCleanParams* params
5265);
5266
5268extern GEOSGeometry GEOS_DLL *
5270 const GEOSGeometry* input);
5271
5272
5273
5274
5276
5277
5278/* ========== Construction Operations ========== */
5283
5297extern GEOSGeometry GEOS_DLL *GEOSEnvelope(const GEOSGeometry* g);
5298
5316extern GEOSGeometry GEOS_DLL *GEOSBoundary(const GEOSGeometry* g);
5317
5336extern GEOSGeometry GEOS_DLL *GEOSConvexHull(const GEOSGeometry* g);
5337
5377 const GEOSGeometry* g,
5378 double ratio,
5379 unsigned int allowHoles);
5380
5419 const GEOSGeometry* g,
5420 double length,
5421 unsigned int allowHoles);
5422
5467 const GEOSGeometry* g,
5468 double lengthRatio,
5469 unsigned int isTight,
5470 unsigned int isHolesAllowed);
5471
5501 const GEOSGeometry* g,
5502 unsigned int isOuter,
5503 double vertexNumFraction);
5504
5505
5537 const GEOSGeometry* g,
5538 unsigned int isOuter,
5539 unsigned int parameterMode,
5540 double parameter);
5541
5562
5594 const GEOSGeometry* g,
5595 double tolerance);
5596
5636 const GEOSGeometry* obstacles,
5637 const GEOSGeometry* boundary,
5638 double tolerance);
5639
5659extern GEOSGeometry GEOS_DLL *GEOSMinimumWidth(const GEOSGeometry* g);
5660
5661
5678
5694extern GEOSGeometry GEOS_DLL *GEOSGetCentroid(const GEOSGeometry* g);
5695
5715 const GEOSGeometry* g,
5716 double* radius,
5717 GEOSGeometry** center);
5718
5739 const GEOSGeometry *g,
5740 double tolerance,
5741 int onlyEdges);
5742
5763 const GEOSGeometry *g);
5764
5790 const GEOSGeometry *g,
5791 const GEOSGeometry *env,
5792 double tolerance,
5793 int flags);
5794
5796
5797/* ============================================================== */
5802
5819extern GEOSGeometry GEOS_DLL *GEOSNode(const GEOSGeometry* g);
5820
5821
5837extern GEOSGeometry GEOS_DLL *GEOSSplit(const GEOSGeometry* g, const GEOSGeometry* edge);
5838
5885 const GEOSGeometry * const geoms[],
5886 unsigned int ngeoms);
5887
5906 const GEOSGeometry * const geoms[],
5907 unsigned int ngeoms);
5908
5926 const GEOSGeometry * const geoms[],
5927 unsigned int ngeoms);
5928
5947 const GEOSGeometry* input,
5948 GEOSGeometry** cuts,
5949 GEOSGeometry** dangles,
5950 GEOSGeometry** invalid);
5951
5963extern GEOSGeometry GEOS_DLL *GEOSBuildArea(const GEOSGeometry* g);
5964
5966
5967/* ============================================================== */
5972
5992extern GEOSGeometry GEOS_DLL *GEOSDensify(
5993 const GEOSGeometry* g,
5994 double tolerance);
5995
6013extern GEOSGeometry GEOS_DLL *GEOSLineMerge(const GEOSGeometry* g);
6014
6031extern size_t GEOS_DLL *GEOSMinimumSpanningTree(const GEOSGeometry * const geoms[], unsigned int ngeoms);
6032
6052
6069 const GEOSGeometry* g,
6070 double start_fraction,
6071 double end_fraction);
6072
6087extern GEOSGeometry GEOS_DLL *GEOSReverse(const GEOSGeometry* g);
6088
6105 const GEOSGeometry* g,
6106 double tolerance);
6107
6127 const GEOSGeometry* g,
6128 double tolerance);
6129
6147 const GEOSGeometry* g);
6148
6167extern int GEOS_DLL GEOSHilbertCode(
6168 const GEOSGeometry *geom,
6169 const GEOSGeometry* extent,
6170 unsigned int level,
6171 unsigned int *code
6172);
6173
6192 const GEOSGeometry* g,
6193 GEOSTransformXYCallback callback,
6194 void* userdata);
6195
6214 const GEOSGeometry* g,
6215 GEOSTransformXYZCallback callback,
6216 void* userdata);
6217
6239extern GEOSGeometry GEOS_DLL *GEOSSnap(
6240 const GEOSGeometry* input,
6241 const GEOSGeometry* snap_target,
6242 double tolerance);
6243
6277 const GEOSGeometry *g,
6278 double gridSize,
6279 int flags);
6280
6282
6283/* ============================================================== */
6284
6289
6301 const GEOSGeometry* g,
6302 const GEOSCurveToLineParams* params);
6303
6304extern GEOSCurveToLineParams GEOS_DLL *GEOSCurveToLineParams_create();
6305
6306extern void GEOS_DLL GEOSCurveToLineParams_destroy(GEOSCurveToLineParams* params);
6307
6317 GEOSCurveToLineParams* params,
6318 double tolerance);
6319
6329 GEOSCurveToLineParams* params,
6330 double tolerance);
6331
6343 const GEOSGeometry* g,
6344 const GEOSLineToCurveParams* params);
6345
6346extern GEOSLineToCurveParams GEOS_DLL *GEOSLineToCurveParams_create();
6347
6348extern void GEOS_DLL GEOSLineToCurveParams_destroy(GEOSLineToCurveParams* params);
6349
6362 GEOSLineToCurveParams* params,
6363 double tolerance);
6364
6378 GEOSLineToCurveParams* params,
6379 double tolerance);
6380
6396 GEOSLineToCurveParams* params,
6397 double tolerance);
6398
6400
6401/* ============================================================== */
6406
6415extern char GEOS_DLL GEOSDisjoint(const GEOSGeometry* g1, const GEOSGeometry* g2);
6416
6426extern char GEOS_DLL GEOSTouches(const GEOSGeometry* g1, const GEOSGeometry* g2);
6427
6436extern char GEOS_DLL GEOSIntersects(const GEOSGeometry* g1, const GEOSGeometry* g2);
6437
6447extern char GEOS_DLL GEOSCrosses(const GEOSGeometry* g1, const GEOSGeometry* g2);
6448
6458extern char GEOS_DLL GEOSWithin(const GEOSGeometry* g1, const GEOSGeometry* g2);
6459
6469extern char GEOS_DLL GEOSContains(const GEOSGeometry* g1, const GEOSGeometry* g2);
6470
6480extern char GEOS_DLL GEOSOverlaps(const GEOSGeometry* g1, const GEOSGeometry* g2);
6481
6490extern char GEOS_DLL GEOSEquals(const GEOSGeometry* g1, const GEOSGeometry* g2);
6491
6502extern char GEOS_DLL GEOSCovers(const GEOSGeometry* g1, const GEOSGeometry* g2);
6503
6514extern char GEOS_DLL GEOSCoveredBy(const GEOSGeometry* g1, const GEOSGeometry* g2);
6515
6536extern char GEOS_DLL GEOSEqualsExact(
6537 const GEOSGeometry* g1,
6538 const GEOSGeometry* g2,
6539 double tolerance);
6540
6555extern char GEOS_DLL GEOSEqualsIdentical(
6556 const GEOSGeometry* g1,
6557 const GEOSGeometry* g2);
6558
6574extern char GEOS_DLL GEOSRelatePattern(
6575 const GEOSGeometry* g1,
6576 const GEOSGeometry* g2,
6577 const char *imPattern);
6578
6589extern char GEOS_DLL *GEOSRelate(
6590 const GEOSGeometry* g1,
6591 const GEOSGeometry* g2);
6592
6602extern char GEOS_DLL GEOSRelatePatternMatch(
6603 const char *intMatrix,
6604 const char *imPattern);
6605
6619extern char GEOS_DLL *GEOSRelateBoundaryNodeRule(
6620 const GEOSGeometry* g1,
6621 const GEOSGeometry* g2,
6622 int bnr);
6623
6625
6626/* ========== Prepared Geometry Binary predicates ========== */
6627
6639
6653extern const GEOSPreparedGeometry GEOS_DLL *GEOSPrepare(const GEOSGeometry* g);
6654
6663extern void GEOS_DLL GEOSPreparedGeom_destroy(const GEOSPreparedGeometry* g);
6664
6675extern char GEOS_DLL GEOSPreparedContains(
6676 const GEOSPreparedGeometry* pg1,
6677 const GEOSGeometry* g2);
6678
6690extern char GEOS_DLL GEOSPreparedContainsXY(
6691 const GEOSPreparedGeometry* pg1,
6692 double x,
6693 double y);
6694
6705extern char GEOS_DLL GEOSPreparedContainsProperly(
6706 const GEOSPreparedGeometry* pg1,
6707 const GEOSGeometry* g2);
6708
6719extern char GEOS_DLL GEOSPreparedCoveredBy(
6720 const GEOSPreparedGeometry* pg1,
6721 const GEOSGeometry* g2);
6722
6733extern char GEOS_DLL GEOSPreparedCovers(
6734 const GEOSPreparedGeometry* pg1,
6735 const GEOSGeometry* g2);
6736
6747extern char GEOS_DLL GEOSPreparedCrosses(
6748 const GEOSPreparedGeometry* pg1,
6749 const GEOSGeometry* g2);
6750
6761extern char GEOS_DLL GEOSPreparedDisjoint(
6762 const GEOSPreparedGeometry* pg1,
6763 const GEOSGeometry* g2);
6764
6775extern char GEOS_DLL GEOSPreparedIntersects(
6776 const GEOSPreparedGeometry* pg1,
6777 const GEOSGeometry* g2);
6778
6790extern char GEOS_DLL GEOSPreparedIntersectsXY(
6791 const GEOSPreparedGeometry* pg1,
6792 double x,
6793 double y);
6794
6805extern char GEOS_DLL GEOSPreparedOverlaps(
6806 const GEOSPreparedGeometry* pg1,
6807 const GEOSGeometry* g2);
6808
6819extern char GEOS_DLL GEOSPreparedTouches(
6820 const GEOSPreparedGeometry* pg1,
6821 const GEOSGeometry* g2);
6822
6833extern char GEOS_DLL GEOSPreparedWithin(
6834 const GEOSPreparedGeometry* pg1,
6835 const GEOSGeometry* g2);
6836
6850extern char GEOS_DLL * GEOSPreparedRelate(
6851 const GEOSPreparedGeometry* pg1,
6852 const GEOSGeometry* g2);
6853
6870extern char GEOS_DLL GEOSPreparedRelatePattern(
6871 const GEOSPreparedGeometry* pg1,
6872 const GEOSGeometry* g2,
6873 const char* imPattern);
6874
6888 const GEOSPreparedGeometry* pg1,
6889 const GEOSGeometry* g2);
6890
6904extern int GEOS_DLL GEOSPreparedDistance(
6905 const GEOSPreparedGeometry* pg1,
6906 const GEOSGeometry* g2,
6907 double *dist);
6908
6923extern char GEOS_DLL GEOSPreparedDistanceWithin(
6924 const GEOSPreparedGeometry* pg1,
6925 const GEOSGeometry* g2,
6926 double dist);
6927
6929
6930/* ========== STRtree functions ========== */
6936
6949extern GEOSSTRtree GEOS_DLL *GEOSSTRtree_create(size_t nodeCapacity);
6950
6963extern int GEOS_DLL GEOSSTRtree_build(GEOSSTRtree *tree);
6964
6977extern void GEOS_DLL GEOSSTRtree_insert(
6978 GEOSSTRtree *tree,
6979 const GEOSGeometry *g,
6980 void *item);
6981
6996extern void GEOS_DLL GEOSSTRtree_query(
6997 GEOSSTRtree *tree,
6998 const GEOSGeometry *g,
6999 GEOSQueryCallback callback,
7000 void *userdata);
7001
7016extern const GEOSGeometry GEOS_DLL *GEOSSTRtree_nearest(
7017 GEOSSTRtree *tree,
7018 const GEOSGeometry* geom);
7019
7040extern const void GEOS_DLL *GEOSSTRtree_nearest_generic(
7041 GEOSSTRtree *tree,
7042 const void* item,
7043 const GEOSGeometry* itemEnvelope,
7044 GEOSDistanceCallback distancefn,
7045 void* userdata);
7046
7057extern void GEOS_DLL GEOSSTRtree_iterate(
7058 GEOSSTRtree *tree,
7059 GEOSQueryCallback callback,
7060 void *userdata);
7061
7076extern char GEOS_DLL GEOSSTRtree_remove(
7077 GEOSSTRtree *tree,
7078 const GEOSGeometry *g,
7079 void *item);
7080
7091extern void GEOS_DLL GEOSSTRtree_destroy(GEOSSTRtree *tree);
7092
7094
7095/* ========== Algorithms ====================================================== */
7100
7119extern int GEOS_DLL GEOSSegmentIntersection(
7120 double ax0, double ay0,
7121 double ax1, double ay1,
7122 double bx0, double by0,
7123 double bx1, double by1,
7124 double* cx, double* cy);
7125
7141extern int GEOS_DLL GEOSOrientationIndex(
7142 double Ax, double Ay,
7143 double Bx, double By,
7144 double Px, double Py);
7145
7147
7148/* ========= Reader and Writer APIs ========= */
7149
7154/* ========= WKT Reader ========= */
7155
7162
7168extern void GEOS_DLL GEOSWKTReader_destroy(GEOSWKTReader* reader);
7169
7179 GEOSWKTReader* reader,
7180 const char *wkt);
7181
7191 GEOSWKTReader *reader,
7192 char doFix);
7193
7194/* ========= WKT Writer ========= */
7195
7202
7208extern void GEOS_DLL GEOSWKTWriter_destroy(
7209 GEOSWKTWriter* writer);
7210
7220extern char GEOS_DLL *GEOSWKTWriter_write(
7221 GEOSWKTWriter* writer,
7222 const GEOSGeometry* g);
7223
7238extern void GEOS_DLL GEOSWKTWriter_setTrim(
7239 GEOSWKTWriter *writer,
7240 char trim);
7241
7251 GEOSWKTWriter *writer,
7252 int precision);
7253
7263 GEOSWKTWriter *writer,
7264 int dim);
7265
7274
7285extern void GEOS_DLL GEOSWKTWriter_setOld3D(
7286 GEOSWKTWriter *writer,
7287 int useOld3D);
7289
7290/* ============================================================================== */
7295
7296/* ========== WKB Reader ========== */
7303
7309extern void GEOS_DLL GEOSWKBReader_destroy(
7310 GEOSWKBReader* reader);
7311
7321 GEOSWKBReader *reader,
7322 char doFix);
7323
7333 GEOSWKBReader* reader,
7334 const unsigned char *wkb,
7335 size_t size);
7336
7346 GEOSWKBReader* reader,
7347 const unsigned char *hex,
7348 size_t size);
7349
7350/* ========== WKB Writer ========== */
7351
7358
7364extern void GEOS_DLL GEOSWKBWriter_destroy(GEOSWKBWriter* writer);
7365
7375extern unsigned char GEOS_DLL *GEOSWKBWriter_write(
7376 GEOSWKBWriter* writer,
7377 const GEOSGeometry* g,
7378 size_t *size);
7379
7389extern unsigned char GEOS_DLL *GEOSWKBWriter_writeHEX(
7390 GEOSWKBWriter* writer,
7391 const GEOSGeometry* g,
7392 size_t *size);
7393
7403 const GEOSWKBWriter* writer);
7404
7413 GEOSWKBWriter* writer,
7414 int newDimension);
7415
7425extern int GEOS_DLL GEOSWKBWriter_getByteOrder(
7426 const GEOSWKBWriter* writer);
7427
7435extern void GEOS_DLL GEOSWKBWriter_setByteOrder(
7436 GEOSWKBWriter* writer,
7437 int byteOrder);
7438
7453extern int GEOS_DLL GEOSWKBWriter_getFlavor(
7454 const GEOSWKBWriter* writer);
7455
7464extern void GEOS_DLL GEOSWKBWriter_setFlavor(
7465 GEOSWKBWriter* writer,
7466 int flavor);
7467
7473extern char GEOS_DLL GEOSWKBWriter_getIncludeSRID(
7474 const GEOSWKBWriter* writer);
7475
7483extern void GEOS_DLL GEOSWKBWriter_setIncludeSRID(
7484 GEOSWKBWriter* writer,
7485 const char writeSRID);
7486
7488
7489/* ============================================================================= */
7494/* ========= GeoJSON Reader ========= */
7495
7503
7510extern void GEOS_DLL GEOSGeoJSONReader_destroy(GEOSGeoJSONReader* reader);
7511
7523 GEOSGeoJSONReader* reader,
7524 const char *geojson);
7525
7526/* ========= GeoJSON Writer ========= */
7527
7535
7542extern void GEOS_DLL GEOSGeoJSONWriter_destroy(GEOSGeoJSONWriter* writer);
7543
7555 GEOSGeoJSONWriter* writer,
7556 const GEOSGeometry* g,
7557 int indent);
7558
7568 GEOSGeoJSONWriter *writer,
7569 int dim);
7570
7579
7581
7582#endif /* #ifndef GEOS_USE_ONLY_R_API */
7583
7584/* ====================================================================== */
7585/* DEPRECATIONS */
7586/* ====================================================================== */
7587
7593
7598 const GEOSGeometry* g,
7599 double width, int quadsegs,
7600 int joinStyle, double mitreLimit,
7601 int leftSide);
7602
7607 GEOSContextHandle_t handle,
7608 const GEOSGeometry* g,
7609 double width, int quadsegs,
7610 int joinStyle, double mitreLimit,
7611 int leftSide);
7612
7618 GEOSMessageHandler notice_function,
7619 GEOSMessageHandler error_function);
7620
7624extern void GEOS_DLL finishGEOS_r(GEOSContextHandle_t handle);
7625
7630 GEOSContextHandle_t handle,
7631 const char *wkt);
7632
7636extern char GEOS_DLL *GEOSGeomToWKT_r(
7637 GEOSContextHandle_t handle,
7638 const GEOSGeometry* g);
7639
7643extern int GEOS_DLL GEOS_getWKBOutputDims_r(
7644 GEOSContextHandle_t handle);
7645
7649extern int GEOS_DLL GEOS_setWKBOutputDims_r(
7650 GEOSContextHandle_t handle,
7651 int newDims);
7652
7656extern int GEOS_DLL GEOS_getWKBByteOrder_r(
7657 GEOSContextHandle_t handle);
7658
7662extern int GEOS_DLL GEOS_setWKBByteOrder_r(
7663 GEOSContextHandle_t handle,
7664 int byteOrder);
7665
7670 GEOSContextHandle_t handle,
7671 const unsigned char *wkb,
7672 size_t size);
7673
7677extern unsigned char GEOS_DLL *GEOSGeomToWKB_buf_r(
7678 GEOSContextHandle_t handle,
7679 const GEOSGeometry* g,
7680 size_t *size);
7681
7686 GEOSContextHandle_t handle,
7687 const unsigned char *hex,
7688 size_t size);
7689
7693extern unsigned char GEOS_DLL *GEOSGeomToHEX_buf_r(
7694 GEOSContextHandle_t handle,
7695 const GEOSGeometry* g,
7696 size_t *size);
7697
7701extern GEOSGeometry GEOS_DLL *GEOSGeomFromWKT(const char *wkt);
7702
7706extern char GEOS_DLL *GEOSGeomToWKT(const GEOSGeometry* g);
7707
7711extern int GEOS_DLL GEOS_getWKBOutputDims(void);
7712
7716extern int GEOS_DLL GEOS_setWKBOutputDims(int newDims);
7717
7721extern int GEOS_DLL GEOS_getWKBByteOrder(void);
7722
7726extern int GEOS_DLL GEOS_setWKBByteOrder(int byteOrder);
7727
7731extern GEOSGeometry GEOS_DLL *GEOSGeomFromWKB_buf(const unsigned char *wkb, size_t size);
7732
7736extern unsigned char GEOS_DLL *GEOSGeomToWKB_buf(const GEOSGeometry* g, size_t *size);
7737
7741extern GEOSGeometry GEOS_DLL *GEOSGeomFromHEX_buf(const unsigned char *hex, size_t size);
7742
7746extern unsigned char GEOS_DLL *GEOSGeomToHEX_buf(const GEOSGeometry* g, size_t *size);
7747
7752
7757 GEOSContextHandle_t handle,
7758 const GEOSGeometry* g);
7759
7761
7762/* ====================================================================== */
7763/* END DEPRECATIONS */
7764/* ====================================================================== */
7765
7766
7767#ifdef __cplusplus
7768} // extern "C"
7769#endif
7770
7771#endif /* #ifndef GEOS_C_H_INCLUDED */
int GEOS_setWKBOutputDims_r(GEOSContextHandle_t handle, int newDims)
GEOSGeometry * GEOSMaximumInscribedCircle_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double tolerance)
int GEOSBufferParams_setEndCapStyle_r(GEOSContextHandle_t handle, GEOSBufferParams *p, int style)
char GEOSisEmpty_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
char GEOSisSimple(const GEOSGeometry *g)
void GEOSWKBWriter_setByteOrder(GEOSWKBWriter *writer, int byteOrder)
GEOSGeometry * GEOSIntersectionPrec_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double gridSize)
const GEOSCoordSequence * GEOSGeom_getCoordSeq(const GEOSGeometry *g)
int GEOSCoordSeq_setZ_r(GEOSContextHandle_t handle, GEOSCoordSequence *s, unsigned int idx, double val)
void GEOSGeom_setUserData_r(GEOSContextHandle_t handle, GEOSGeometry *g, void *userData)
GEOSGeometry * GEOSGeom_createEmptyPoint(void)
GEOSGeometry * GEOSReverse_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
int GEOS_getWKBOutputDims_r(GEOSContextHandle_t handle)
GEOSGeometry * GEOSGeom_createEmptyCompoundCurve_r(GEOSContextHandle_t handle)
GEOSGeometry * GEOSSplit(const GEOSGeometry *g, const GEOSGeometry *edge)
int GEOSGeomGetM(const GEOSGeometry *g, double *m)
GEOSGeometry * GEOSPolygonHullSimplify(const GEOSGeometry *g, unsigned int isOuter, double vertexNumFraction)
char GEOSisRing_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
int GEOSSTRtree_build_r(GEOSContextHandle_t handle, GEOSSTRtree *tree)
GEOSGeometry * GEOSGetCentroid(const GEOSGeometry *g)
void GEOSBufferParams_destroy_r(GEOSContextHandle_t handle, GEOSBufferParams *parms)
GEOSGeometry * GEOSCoverageCleanWithParams(const GEOSGeometry *input, const GEOSCoverageCleanParams *params)
GEOSGeometry * GEOSMinimumRotatedRectangle_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
size_t * GEOSMinimumSpanningTree(const GEOSGeometry *const geoms[], unsigned int ngeoms)
GEOSCoordSequence * GEOSCoordSeq_create(unsigned int size, unsigned int dims)
int GEOSLineToCurveParams_setMaxAngleDifferenceDegrees_r(GEOSContextHandle_t extHandle, GEOSLineToCurveParams *params, double tolerance)
char GEOSPreparedDistanceWithin(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2, double dist)
const GEOSGeometry * GEOSGetCurveN_r(GEOSContextHandle_t handle, const GEOSGeometry *g, int n)
GEOSGeometry * GEOSWKBReader_read_r(GEOSContextHandle_t handle, GEOSWKBReader *reader, const unsigned char *wkb, size_t size)
GEOSClusterInfo * GEOSClusterEnvelopeIntersects(const GEOSGeometry *g)
GEOSClusterEnvelopeIntersects.
char * GEOSGeomToWKT_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSBufferWithParams_r(GEOSContextHandle_t handle, const GEOSGeometry *g, const GEOSBufferParams *p, double width)
int GEOSBufferParams_setQuadrantSegments_r(GEOSContextHandle_t handle, GEOSBufferParams *p, int quadSegs)
GEOSGeometry * GEOSConcaveHull_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double ratio, unsigned int allowHoles)
GEOSGeometry * GEOSSubdivideByGrid(const GEOSGeometry *g, double xmin, double ymin, double xmax, double ymax, unsigned nx, unsigned ny, int includeExterior)
void GEOSSTRtree_iterate(GEOSSTRtree *tree, GEOSQueryCallback callback, void *userdata)
const GEOSGeometry * GEOSGetExteriorRing_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSCoordSequence * GEOSPreparedNearestPoints(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
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:2288
int GEOSCoverageCleanParams_setOverlapMergeStrategy_r(GEOSContextHandle_t extHandle, GEOSCoverageCleanParams *params, int overlapMergeStrategy)
char GEOSRelatePattern_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, const char *imPattern)
int GEOS_getWKBByteOrder(void)
int GEOSLineToCurveParams_setMaxStepDegrees(GEOSLineToCurveParams *params, double tolerance)
void GEOSWKBReader_destroy(GEOSWKBReader *reader)
struct GEOSLineToCurveParams_t GEOSLineToCurveParams
Definition geos_c.h:218
char GEOSPreparedContainsProperly(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
int GEOSContextInterruptCallback(void *)
Definition geos_c.h:398
void GEOSCoverageCleanParams_destroy(GEOSCoverageCleanParams *params)
void GEOSSTRtree_iterate_r(GEOSContextHandle_t handle, GEOSSTRtree *tree, GEOSQueryCallback callback, void *userdata)
GEOSGeometry * GEOSSplit_r(GEOSContextHandle_t handle, const GEOSGeometry *g, const GEOSGeometry *edge)
void GEOSContext_setLineToCurveParams_r(GEOSContextHandle_t extHandle, const GEOSLineToCurveParams *params)
int GEOS_printDouble(double d, unsigned int precision, char *result)
GEOSGeoJSONWriter * GEOSGeoJSONWriter_create_r(GEOSContextHandle_t handle)
int GEOSDistanceIndexed(const GEOSGeometry *g1, const GEOSGeometry *g2, double *dist)
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:334
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:2274
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)
int GEOSLineToCurveParams_setMaxAngleDifferenceDegrees(GEOSLineToCurveParams *params, double tolerance)
struct GEOSCoordSeq_t GEOSCoordSequence
Definition geos_c.h:170
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:240
@ GEOS_MULTILINESTRING
Definition geos_c.h:252
@ GEOS_GEOMETRYCOLLECTION
Definition geos_c.h:256
@ GEOS_POINT
Definition geos_c.h:242
@ GEOS_MULTIPOLYGON
Definition geos_c.h:254
@ GEOS_LINEARRING
Definition geos_c.h:246
@ GEOS_POLYGON
Definition geos_c.h:248
@ GEOS_MULTIPOINT
Definition geos_c.h:250
@ GEOS_LINESTRING
Definition geos_c.h:244
GEOSGeometry * GEOSIntersectionPrec(const GEOSGeometry *g1, const GEOSGeometry *g2, double gridSize)
int GEOSGetNumInteriorRings(const GEOSGeometry *g)
void GEOSContext_setCurveToLineParams_r(GEOSContextHandle_t extHandle, const GEOSCurveToLineParams *params)
char GEOSSTRtree_remove_r(GEOSContextHandle_t handle, GEOSSTRtree *tree, const GEOSGeometry *g, void *item)
void GEOSSTRtree_query_r(GEOSContextHandle_t handle, GEOSSTRtree *tree, const GEOSGeometry *g, GEOSQueryCallback callback, void *userdata)
GEOSGeometry * GEOSGeom_setPrecision_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double gridSize, int flags)
char GEOSEqualsExact(const GEOSGeometry *g1, const GEOSGeometry *g2, double tolerance)
GEOSGeometry * GEOSDisjointSubsetUnion_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSGeom_createEmptyCircularString(void)
int GEOSCurveToLineParams_setMaxStepDegrees(GEOSCurveToLineParams *params, double tolerance)
GEOSMessageHandler_r GEOSContext_setNoticeMessageHandler_r(GEOSContextHandle_t extHandle, GEOSMessageHandler_r nf, void *userData)
void GEOSProgressCallback(double progressRatio, const char *message, void *userdata)
Definition geos_c.h:131
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:315
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:155
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:286
@ GEOS_WKB_ISO
Definition geos_c.h:290
@ GEOS_WKB_EXTENDED
Definition geos_c.h:288
GEOSGeometry * GEOSDensify(const GEOSGeometry *g, double tolerance)
GEOSProgressCallback * GEOSContext_setProgressCallback_r(GEOSContextHandle_t extHandle, GEOSProgressCallback *cb, void *userData)
GEOSGeometry * GEOSConstrainedDelaunayTriangulation_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
void GEOSWKBReader_setFixStructure_r(GEOSContextHandle_t handle, GEOSWKBReader *reader, char doFix)
void GEOSFree_r(GEOSContextHandle_t handle, void *buffer)
GEOSGeometry * GEOSGeom_extractUniquePoints(const GEOSGeometry *g)
int GEOSHausdorffDistance(const GEOSGeometry *g1, const GEOSGeometry *g2, double *dist)
int GEOSWKBWriter_getOutputDimension(const GEOSWKBWriter *writer)
void GEOSPreparedGeom_destroy_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *g)
char GEOSCoordSeq_hasZ_r(GEOSContextHandle_t handle, GEOSCoordSequence *s)
int GEOS_getWKBOutputDims(void)
GEOSGeometry * GEOSGeom_createPolygon_r(GEOSContextHandle_t handle, GEOSGeometry *shell, GEOSGeometry **holes, unsigned int nholes)
GEOSGeometry * GEOSGeomGetPointN(const GEOSGeometry *g, int n)
const char * GEOSversion(void)
const GEOSGeometry * GEOSGetExteriorRing(const GEOSGeometry *g)
int GEOSMakeValidParams_setMethod(GEOSMakeValidParams *p, enum GEOSMakeValidMethods method)
void initGEOS(GEOSMessageHandler notice_function, GEOSMessageHandler error_function)
GEOSGeometry * GEOSNode(const GEOSGeometry *g)
int GEOSOrientPolygons_r(GEOSContextHandle_t handle, GEOSGeometry *g, int exteriorCW)
int GEOSCoverageCleanParams_setGapMaximumWidth(GEOSCoverageCleanParams *params, double gapMaximumWidth)
GEOSGeometry * GEOSOffsetCurve_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double width, int quadsegs, int joinStyle, double mitreLimit)
GEOSSTRtree * GEOSSTRtree_create(size_t nodeCapacity)
GEOSGeometry * GEOSBoundary_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
struct GEOSCurveToLineParams_t GEOSCurveToLineParams
Definition geos_c.h:211
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:297
@ GEOS_MERGE_MIN_AREA
Definition geos_c.h:303
@ GEOS_MERGE_MIN_INDEX
Definition geos_c.h:305
@ GEOS_MERGE_LONGEST_BORDER
Definition geos_c.h:299
@ GEOS_MERGE_MAX_AREA
Definition geos_c.h:301
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:783
@ GEOSBUF_CAP_SQUARE
Definition geos_c.h:792
@ GEOSBUF_CAP_FLAT
Definition geos_c.h:789
@ GEOSBUF_CAP_ROUND
Definition geos_c.h:786
GEOSGeometry * GEOSConvexHull(const GEOSGeometry *g)
GEOSVoronoiFlags
Definition geos_c.h:1386
@ GEOS_VORONOI_PRESERVE_ORDER
Definition geos_c.h:1392
@ GEOS_VORONOI_ONLY_EDGES
Definition geos_c.h:1388
GEOSGeometry * GEOSCoverageUnion(const GEOSGeometry *g)
int GEOSCoordSeq_setY_r(GEOSContextHandle_t handle, GEOSCoordSequence *s, unsigned int idx, double val)
int GEOSMakeValidParams_setMethod_r(GEOSContextHandle_t handle, GEOSMakeValidParams *p, enum GEOSMakeValidMethods method)
unsigned char * GEOSWKBWriter_write_r(GEOSContextHandle_t handle, GEOSWKBWriter *writer, const GEOSGeometry *g, size_t *size)
GEOSGeometry * GEOSSymDifference_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
void GEOSPreparedGeom_destroy(const GEOSPreparedGeometry *g)
GEOSGeometry * GEOSNode_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
int GEOSBufferParams_setJoinStyle(GEOSBufferParams *p, int joinStyle)
void GEOSCoordSeq_destroy(GEOSCoordSequence *s)
GEOSGeometry * GEOSGeomFromWKT_r(GEOSContextHandle_t handle, const char *wkt)
GEOSGeoJSONReader * GEOSGeoJSONReader_create(void)
int GEOSCoordSeq_setOrdinate(GEOSCoordSequence *s, unsigned int idx, unsigned int dim, double val)
char GEOSPreparedIntersectsXY(const GEOSPreparedGeometry *pg1, double x, double y)
int GEOSBufferParams_setMitreLimit_r(GEOSContextHandle_t handle, GEOSBufferParams *p, double mitreLimit)
char GEOSContains(const GEOSGeometry *g1, const GEOSGeometry *g2)
int GEOSCurveToLineParams_setMaxStepDegrees_r(GEOSContextHandle_t extHandle, GEOSCurveToLineParams *params, double tolerance)
void GEOSCoverageCleanParams_destroy_r(GEOSContextHandle_t extHandle, GEOSCoverageCleanParams *params)
GEOSGeometry * GEOSGeom_transformXYZ_r(GEOSContextHandle_t handle, const GEOSGeometry *g, GEOSTransformXYZCallback callback, void *userdata)
char GEOSPreparedIntersectsXY_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, double x, double y)
GEOSGeometry * GEOSBufferWithStyle(const GEOSGeometry *g, double width, int quadsegs, int endCapStyle, int joinStyle, double mitreLimit)
GEOSGeometry * GEOSGeom_transformXY_r(GEOSContextHandle_t handle, const GEOSGeometry *g, GEOSTransformXYCallback callback, void *userdata)
GEOSGeometry * GEOSBuildArea(const GEOSGeometry *g)
GEOSClusterInfo * GEOSClusterEnvelopeDistance_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double d)
GEOSValidFlags
Definition geos_c.h:1747
@ GEOSVALID_ALLOW_SELFTOUCHING_RING_FORMING_HOLE
Definition geos_c.h:1749
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:2281
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:2267
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)
void GEOSInterruptCallback(void)
Definition geos_c.h:388
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)
void typedef void(* GEOSMessageHandler_r)(const char *message, void *userdata)
Definition geos_c.h:118
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:270
@ GEOS_WKB_NDR
Definition geos_c.h:274
@ GEOS_WKB_XDR
Definition geos_c.h:272
int GEOSGetNumCurves_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSVoronoiDiagram_r(GEOSContextHandle_t extHandle, const GEOSGeometry *g, const GEOSGeometry *env, double tolerance, int flags)
void GEOSWKBWriter_setIncludeSRID_r(GEOSContextHandle_t handle, GEOSWKBWriter *writer, const char writeSRID)
GEOSClusterInfo * GEOSClusterDBSCAN_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double eps, unsigned minPoints)
GEOSGeometry * GEOSConstrainedDelaunayTriangulation(const GEOSGeometry *g)
int GEOSCoordSeq_copyToArrays(const GEOSCoordSequence *s, double *x, double *y, double *z, double *m)
GEOSGeometry * GEOSMinimumBoundingCircle(const GEOSGeometry *g, double *radius, GEOSGeometry **center)
GEOSGeometry * GEOSSymDifference(const GEOSGeometry *ga, const GEOSGeometry *gb)
char GEOSDistanceWithin_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double dist)
GEOSGeometry * GEOSMakeValidWithParams_r(GEOSContextHandle_t handle, const GEOSGeometry *g, const GEOSMakeValidParams *makeValidParams)
struct GEOSWKTReader_t GEOSWKTReader
Definition geos_c.h:2260
GEOSCoordSequence * GEOSNearestPoints_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
GEOSGeometry * GEOSPolygonize(const GEOSGeometry *const geoms[], unsigned int ngeoms)
char GEOSPreparedCoveredBy_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
GEOSGeometry * GEOSDisjointSubsetUnion(const GEOSGeometry *g)
GEOSGeometry * GEOSGeom_createPointFromXY(double x, double y)
GEOSGeometry * GEOSRemoveRepeatedPoints(const GEOSGeometry *g, double tolerance)
GEOSGeometry * GEOSVoronoiDiagram(const GEOSGeometry *g, const GEOSGeometry *env, double tolerance, int flags)
GEOSGeometry * GEOSGeom_createPolygon(GEOSGeometry *shell, GEOSGeometry **holes, unsigned int nholes)
void GEOSWKBWriter_setOutputDimension_r(GEOSContextHandle_t handle, GEOSWKBWriter *writer, int newDimension)
void GEOSSetSRID_r(GEOSContextHandle_t handle, GEOSGeometry *g, int SRID)
void GEOSWKTReader_destroy_r(GEOSContextHandle_t handle, GEOSWKTReader *reader)
void GEOSSTRtree_destroy_r(GEOSContextHandle_t handle, GEOSSTRtree *tree)
char * GEOSGeomType(const GEOSGeometry *g)
char GEOSPreparedDisjoint(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
GEOSGeometry * GEOSGeom_createEmptyPoint_r(GEOSContextHandle_t handle)
const GEOSGeometry * GEOSGetCurveN(const GEOSGeometry *g, int n)
GEOSRelateBoundaryNodeRules
Definition geos_c.h:1704
@ GEOSRELATE_BNR_OGC
Definition geos_c.h:1708
@ GEOSRELATE_BNR_MULTIVALENT_ENDPOINT
Definition geos_c.h:1712
@ GEOSRELATE_BNR_ENDPOINT
Definition geos_c.h:1710
@ GEOSRELATE_BNR_MOD2
Definition geos_c.h:1706
@ GEOSRELATE_BNR_MONOVALENT_ENDPOINT
Definition geos_c.h:1714
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 GEOSMakeValidParams_setKeepCollapsed_r(GEOSContextHandle_t handle, GEOSMakeValidParams *p, int style)
int GEOSCoordSeq_setOrdinate_r(GEOSContextHandle_t handle, GEOSCoordSequence *s, unsigned int idx, unsigned int dim, double val)
void GEOSSetSRID(GEOSGeometry *g, int SRID)
GEOSGeometry * GEOSGeoJSONReader_readGeometry_r(GEOSContextHandle_t handle, GEOSGeoJSONReader *reader, const char *geojson)
char * GEOSGeoJSONWriter_writeGeometry(GEOSGeoJSONWriter *writer, const GEOSGeometry *g, int indent)
GEOSGeometry * GEOSGeom_createLineString(GEOSCoordSequence *s)
unsigned char * GEOSWKBWriter_write(GEOSWKBWriter *writer, const GEOSGeometry *g, size_t *size)
GEOSGeometry * GEOSCurveToLine(const GEOSGeometry *g, const GEOSCurveToLineParams *params)
GEOSGeometry * GEOSMakeValid_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSLineSubstring_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double start_fraction, double end_fdraction)
GEOSGeometry * GEOSReverse(const GEOSGeometry *g)
int GEOSWKBWriter_getFlavor(const GEOSWKBWriter *writer)
char GEOSIntersects_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
char * GEOSRelate(const GEOSGeometry *g1, const GEOSGeometry *g2)
int GEOSCoordSeq_getSize(const GEOSCoordSequence *s, unsigned int *size)
GEOSPolygonHullParameterModes
Definition geos_c.h:1114
@ GEOSHULL_PARAM_AREA_RATIO
Definition geos_c.h:1118
@ GEOSHULL_PARAM_VERTEX_RATIO
Definition geos_c.h:1116
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:799
@ GEOSBUF_JOIN_MITRE
Definition geos_c.h:809
@ GEOSBUF_JOIN_ROUND
Definition geos_c.h:804
@ GEOSBUF_JOIN_BEVEL
Definition geos_c.h:814
GEOSGeometry * GEOSGeom_createEmptyCollection(int type)
GEOSGeometry * GEOSIntersection(const GEOSGeometry *g1, const GEOSGeometry *g2)
int GEOSWKBWriter_getByteOrder_r(GEOSContextHandle_t handle, const GEOSWKBWriter *writer)
int GEOSGeom_getXMax_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *value)
void GEOSWKBWriter_destroy(GEOSWKBWriter *writer)
char GEOSEquals_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
int GEOSCoverageCleanParams_setSnappingDistance_r(GEOSContextHandle_t extHandle, GEOSCoverageCleanParams *params, double snappingDistance)
int GEOSGeom_getXMin(const GEOSGeometry *g, double *value)
char GEOSCovers_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
int GEOSGeomGetLength(const GEOSGeometry *g, double *length)
char GEOSOverlaps_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
int GEOSLength_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *length)
const GEOSGeometry * GEOSSTRtree_nearest(GEOSSTRtree *tree, const GEOSGeometry *geom)
GEOSClusterInfo * GEOSClusterGeometryIntersects(const GEOSGeometry *g)
GEOSClusterGeometryIntersects.
unsigned char * GEOSGeomToHEX_buf(const GEOSGeometry *g, size_t *size)
GEOSCoordSequence * GEOSCoordSeq_copyFromBuffer_r(GEOSContextHandle_t handle, const double *buf, unsigned int size, int hasZ, int hasM)
int GEOSGetNumCurves(const GEOSGeometry *g)
GEOSWKBReader * GEOSWKBReader_create_r(GEOSContextHandle_t handle)
char GEOSisSimpleDetail_r(GEOSContextHandle_t handle, const GEOSGeometry *g, int findAllLocations, GEOSGeometry **location)
char GEOSDisjoint_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
char GEOSPreparedContainsProperly_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
GEOSCoordSequence * GEOSPreparedNearestPoints_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
GEOSGeometry * GEOSGeomFromHEX_buf_r(GEOSContextHandle_t handle, const unsigned char *hex, size_t size)
GEOSClusterInfo * GEOSClusterGeometryDistance_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double d)
GEOSCoordSequence * GEOSCoordSeq_clone(const GEOSCoordSequence *s)
int GEOSGeom_getCoordinateDimension_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSSubdivideByGrid_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double xmin, double ymin, double xmax, double ymax, unsigned nx, unsigned ny, int includeExterior)
int GEOSNormalize(GEOSGeometry *g)
unsigned char * GEOSGeomToWKB_buf(const GEOSGeometry *g, size_t *size)
int GEOSGetNumGeometries_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
char GEOSEqualsExact_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double tolerance)
GEOSGeometry * GEOSMinimumBoundingCircle_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *radius, GEOSGeometry **center)
int GEOSWKTWriter_getOutputDimension(GEOSWKTWriter *writer)
char GEOSTouches_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
GEOSGeometry * GEOSWKTReader_read(GEOSWKTReader *reader, const char *wkt)
GEOSGeometry * GEOSUnaryUnionPrec_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double gridSize)
int GEOSCoordSeq_getM(const GEOSCoordSequence *s, unsigned int idx, double *val)
int GEOSArea_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *area)
double GEOSGeom_getPrecision_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
void GEOSWKTWriter_setOutputDimension(GEOSWKTWriter *writer, int dim)
GEOSCoordSequence * GEOSCoordSeq_copyFromArrays(const double *x, const double *y, const double *z, const double *m, unsigned int size)
GEOSWKBReader * GEOSWKBReader_create(void)
int GEOSCoordSeq_getY(const GEOSCoordSequence *s, unsigned int idx, double *val)
int GEOSCoordSeq_setZ(GEOSCoordSequence *s, unsigned int idx, double val)
int GEOSBufferParams_setMitreLimit(GEOSBufferParams *p, double mitreLimit)
int(* GEOSTransformXYCallback)(double *x, double *y, void *userdata)
Definition geos_c.h:353
void GEOSWKTWriter_setOld3D(GEOSWKTWriter *writer, int useOld3D)
int GEOSGeom_getExtent(const GEOSGeometry *g, double *xmin, double *ymin, double *xmax, double *ymax)
int GEOSCoordSeq_copyToArrays_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s, double *x, double *y, double *z, double *m)
char GEOSWithin(const GEOSGeometry *g1, const GEOSGeometry *g2)
int GEOSNormalize_r(GEOSContextHandle_t handle, GEOSGeometry *g)
void GEOSWKBWriter_destroy_r(GEOSContextHandle_t handle, GEOSWKBWriter *writer)
GEOSCoordSequence * GEOSCoordSeq_createWithDimensions(unsigned int size, int hasZ, int hasM)
int GEOSCoverageCleanParams_setSnappingDistance(GEOSCoverageCleanParams *params, double snappingDistance)
int GEOSDistance(const GEOSGeometry *g1, const GEOSGeometry *g2, double *dist)
GEOSGeometry * GEOSLineToCurve_r(GEOSContextHandle_t handle, const GEOSGeometry *g, const GEOSLineToCurveParams *params)
GEOSGeometry * GEOSGeom_createEmptyPolygon(void)
void finishGEOS_r(GEOSContextHandle_t handle)
char GEOSisClosed(const GEOSGeometry *g)
GEOSGeometry * GEOSPolygonHullSimplifyMode(const GEOSGeometry *g, unsigned int isOuter, unsigned int parameterMode, double parameter)
int GEOSGeom_getCoordinateDimension(const GEOSGeometry *g)
size_t GEOSClusterInfo_getClusterSize(const GEOSClusterInfo *clusters, size_t i)
GEOSClusterInfo_getSize.
struct GEOSClusterInfo_t GEOSClusterInfo
Definition geos_c.h:204
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:2295
unsigned char * GEOSGeomToWKB_buf_r(GEOSContextHandle_t handle, const GEOSGeometry *g, size_t *size)
GEOSGeometry * GEOSSingleSidedBuffer(const GEOSGeometry *g, double width, int quadsegs, int joinStyle, double mitreLimit, int leftSide)
GEOSGeometry * GEOSUnionCascaded(const GEOSGeometry *g)
char GEOSPreparedTouches_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
GEOSMessageHandler GEOSContext_setErrorHandler_r(GEOSContextHandle_t extHandle, GEOSMessageHandler ef)
int GEOSCoordSeq_setXYZ(GEOSCoordSequence *s, unsigned int idx, double x, double y, double z)
size_t * GEOSClusterInfo_getClustersForInputs(const GEOSClusterInfo *clusters)
GEOSClusterInfo_getClustersForInputs.
GEOSGeometry * GEOSCoverageClean_r(GEOSContextHandle_t extHandle, const GEOSGeometry *input)
int GEOSWKTWriter_getOutputDimension_r(GEOSContextHandle_t handle, GEOSWKTWriter *writer)
double GEOSProjectNormalized(const GEOSGeometry *line, const GEOSGeometry *point)
int GEOSGeom_getYMin_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *value)
GEOSGeometry * GEOSGeom_clone_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
const GEOSPreparedGeometry * GEOSPrepare_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSMinimumClearanceLine_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
void GEOSGeom_setUserData(GEOSGeometry *g, void *userData)
GEOSGeometry * GEOSGeom_createCollection(int type, GEOSGeometry **geoms, unsigned int ngeoms)
void GEOSGeoJSONReader_destroy(GEOSGeoJSONReader *reader)
GEOSGeometry * GEOSGeom_createEmptyCompoundCurve(void)
GEOSGeometry * GEOSCurveToLine_r(GEOSContextHandle_t handle, const GEOSGeometry *g, const GEOSCurveToLineParams *params)
GEOSGeometry * GEOSGetCentroid_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSCoordSequence * GEOSCoordSeq_copyFromBuffer(const double *buf, unsigned int size, int hasZ, int hasM)
int GEOSGridIntersectionFractions(const GEOSGeometry *g, double xmin, double ymin, double xmax, double ymax, unsigned nx, unsigned ny, float *buf)
int GEOSGeomGetNumPoints(const GEOSGeometry *g)
void GEOSGeoJSONWriter_destroy(GEOSGeoJSONWriter *writer)
GEOSGeometry * GEOSGeom_transformXY(const GEOSGeometry *g, GEOSTransformXYCallback callback, void *userdata)
size_t GEOSClusterInfo_getNumClusters(const GEOSClusterInfo *clusters)
GEOSClusterInfo_getNumClusters.
double GEOSProjectNormalized_r(GEOSContextHandle_t handle, const GEOSGeometry *g, const GEOSGeometry *p)
char GEOSPreparedCrosses(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
int GEOSGeomGetNumPoints_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
char * GEOSisValidReason_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSPolygonize_valid_r(GEOSContextHandle_t handle, const GEOSGeometry *const geoms[], unsigned int ngems)
GEOSGeometry * GEOSGeom_createCurvePolygon(GEOSGeometry *shell, GEOSGeometry **holes, unsigned int nholes)
GEOSGeometry * GEOSLineSubstring(const GEOSGeometry *g, double start_fraction, double end_fraction)
GEOSGeometry * GEOSLineToCurve(const GEOSGeometry *g, const GEOSLineToCurveParams *params)
char GEOSPreparedIntersects(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
char GEOSWithin_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
GEOSClusterInfo * GEOSClusterDBSCAN(const GEOSGeometry *g, double eps, unsigned minPoints)
GEOSClusterDBSCAN.
GEOSGeometry * GEOSConcaveHullOfPolygons_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double lengthRatio, unsigned int isTight, unsigned int isHolesAllowed)
int GEOS_setWKBOutputDims(int newDims)
const GEOSCoordSequence * GEOSGeom_getCoordSeq_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSPointOnSurface_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
int GEOSFrechetDistanceDensify(const GEOSGeometry *g1, const GEOSGeometry *g2, double densifyFrac, double *dist)
struct GEOSBufParams_t GEOSBufferParams
Definition geos_c.h:184
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:1903
@ GEOS_PREC_NO_TOPO
Definition geos_c.h:1907
@ GEOS_PREC_KEEP_COLLAPSED
Definition geos_c.h:1909
@ GEOS_PREC_VALID_OUTPUT
Definition geos_c.h:1905
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:198
char GEOSRelatePatternMatch(const char *intMatrix, const char *imPattern)
void GEOS_finish_r(GEOSContextHandle_t handle)
GEOSMakeValidMethods
Definition geos_c.h:1784
@ GEOS_MAKE_VALID_LINEWORK
Definition geos_c.h:1788
@ GEOS_MAKE_VALID_STRUCTURE
Definition geos_c.h:1793
GEOSGeometry * GEOSWKBReader_readHEX(GEOSWKBReader *reader, const unsigned char *hex, size_t size)
int GEOSGeom_getYMax_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *value)
GEOSGeometry * GEOSGeom_createEmptyLineString(void)
const GEOSGeometry * GEOSGetInteriorRingN_r(GEOSContextHandle_t handle, const GEOSGeometry *g, int n)
GEOSGeometry * GEOSInterpolateNormalized(const GEOSGeometry *line, double proportion)
GEOSGeometry * GEOSGeom_clone(const GEOSGeometry *g)
void GEOSGeoJSONWriter_destroy_r(GEOSContextHandle_t handle, GEOSGeoJSONWriter *writer)
int GEOSBufferParams_setSingleSided(GEOSBufferParams *p, int singleSided)
const GEOSGeometry * GEOSGetInteriorRingN(const GEOSGeometry *g, int n)
int GEOSGeomGetZ_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *z)
GEOSGeometry * GEOSUnionPrec_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double gridSize)
GEOSGeometry * GEOSGeom_createPointFromXY_r(GEOSContextHandle_t handle, double x, double y)
char GEOSEqualsIdentical_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
GEOSClusterInfo * GEOSClusterGeometryDistance(const GEOSGeometry *g, double d)
GEOSClusterGeometryDistance.
GEOSClusterInfo * GEOSClusterEnvelopeIntersects_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
void GEOSWKTWriter_destroy_r(GEOSContextHandle_t handle, GEOSWKTWriter *writer)
const GEOSPreparedGeometry * GEOSPrepare(const GEOSGeometry *g)
int GEOSWKBWriter_getByteOrder(const GEOSWKBWriter *writer)
char GEOSPreparedOverlaps(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
char GEOSHasZ_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
int GEOSCurveToLineParams_setMaxDeviation(GEOSCurveToLineParams *params, double tolerance)
int GEOSLineToCurveParams_setMaxStepDegrees_r(GEOSContextHandle_t extHandle, GEOSLineToCurveParams *params, double tolerance)
int GEOSCoordSeq_setM_r(GEOSContextHandle_t handle, GEOSCoordSequence *s, unsigned int idx, double val)
GEOSGeometry * GEOSUnion(const GEOSGeometry *ga, const GEOSGeometry *gb)
void GEOSGeoJSONReader_destroy_r(GEOSContextHandle_t handle, GEOSGeoJSONReader *reader)
GEOSGeometry * GEOSSimplify(const GEOSGeometry *g, double tolerance)
int GEOSLineToCurveParams_setRadiusTolerance_r(GEOSContextHandle_t extHandle, GEOSLineToCurveParams *params, double tolerance)
void GEOSSTRtree_insert(GEOSSTRtree *tree, const GEOSGeometry *g, void *item)
char GEOSisSimple_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSWKBWriter * GEOSWKBWriter_create_r(GEOSContextHandle_t handle)
char GEOSDistanceWithin(const GEOSGeometry *g1, const GEOSGeometry *g2, double dist)
int GEOSCoordSeq_setXYZ_r(GEOSContextHandle_t handle, GEOSCoordSequence *s, unsigned int idx, double x, double y, double z)
int GEOSHausdorffDistanceWithPoints(const GEOSGeometry *g1, const GEOSGeometry *g2, double *dist, double *p1x, double *p1y, double *p2x, double *p2y)
int GEOSGeomGetX_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *x)
unsigned char * GEOSGeomToHEX_buf_r(GEOSContextHandle_t handle, const GEOSGeometry *g, size_t *size)
char GEOSPreparedWithin(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
char GEOSHasZ(const GEOSGeometry *g)
int GEOSLineToCurveParams_setRadiusTolerance(GEOSLineToCurveParams *params, double tolerance)
int GEOSWKBWriter_getOutputDimension_r(GEOSContextHandle_t handle, const GEOSWKBWriter *writer)
int GEOSBufferParams_setQuadrantSegments(GEOSBufferParams *p, int quadSegs)
void GEOS_interruptRequest(void)
char GEOSWKBWriter_getIncludeSRID_r(GEOSContextHandle_t handle, const GEOSWKBWriter *writer)
void finishGEOS(void)
int GEOSLength(const GEOSGeometry *g, double *length)
GEOSGeometry * GEOSConcaveHull(const GEOSGeometry *g, double ratio, unsigned int allowHoles)
int GEOSCoordSeq_getZ_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s, unsigned int idx, double *val)
int GEOSBufferParams_setEndCapStyle(GEOSBufferParams *p, int style)
GEOSGeometry * GEOSUnionCascaded_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
int GEOSGetSRID(const GEOSGeometry *g)
GEOSGeometry * GEOSBuffer(const GEOSGeometry *g, double width, int quadsegs)
unsigned char * GEOSWKBWriter_writeHEX_r(GEOSContextHandle_t handle, GEOSWKBWriter *writer, const GEOSGeometry *g, size_t *size)
void GEOSWKTWriter_setRoundingPrecision(GEOSWKTWriter *writer, int precision)
char GEOSisClosed_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
char * GEOSisValidReason(const GEOSGeometry *g)
void GEOSGeoJSONWriter_setOutputDimension_r(GEOSContextHandle_t handle, GEOSGeoJSONWriter *writer, int dim)
int GEOSBufferParams_setJoinStyle_r(GEOSContextHandle_t handle, GEOSBufferParams *p, int joinStyle)
char GEOSisRing(const GEOSGeometry *g)
int GEOSCoordSeq_getXY_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s, unsigned int idx, double *x, double *y)
char GEOSPreparedContainsXY(const GEOSPreparedGeometry *pg1, double x, double y)
int GEOSCoverageCleanParams_setOverlapMergeStrategy(GEOSCoverageCleanParams *params, int overlapMergeStrategy)
const GEOSGeometry * GEOSGetGeometryN_r(GEOSContextHandle_t handle, const GEOSGeometry *g, int n)
int GEOSCoordSeq_getX_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s, unsigned int idx, double *val)
int GEOSPreparedDistance_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2, double *dist)
GEOSWKTWriter * GEOSWKTWriter_create(void)
char * GEOSPreparedRelate_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
int GEOSSegmentIntersection_r(GEOSContextHandle_t extHandle, double ax0, double ay0, double ax1, double ay1, double bx0, double by0, double bx1, double by1, double *cx, double *cy)
char GEOSisValid(const GEOSGeometry *g)
char GEOSCoveredBy(const GEOSGeometry *g1, const GEOSGeometry *g2)
int GEOSGeom_getDimensions(const GEOSGeometry *g)
char GEOSPreparedDisjoint_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
int GEOSHausdorffDistance_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double *dist)
GEOSGeometry * GEOSGeom_createCircularString(GEOSCoordSequence *s)
void GEOSWKBWriter_setIncludeSRID(GEOSWKBWriter *writer, const char writeSRID)
GEOSGeometry * GEOSBuildArea_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
char GEOSisEmpty(const GEOSGeometry *g)
const GEOSGeometry * GEOSGetGeometryN(const GEOSGeometry *g, int n)
int GEOSMinimumClearance_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *distance)
int GEOSHilbertCode(const GEOSGeometry *geom, const GEOSGeometry *extent, unsigned int level, unsigned int *code)
GEOSGeometry * GEOSConcaveHullByLength(const GEOSGeometry *g, double length, unsigned int allowHoles)
GEOSContextInterruptCallback * GEOSContext_setInterruptCallback_r(GEOSContextHandle_t extHandle, GEOSContextInterruptCallback *cb, void *userData)
GEOSGeometry * GEOSGeom_createCollection_r(GEOSContextHandle_t handle, int type, GEOSGeometry **geoms, unsigned int ngeoms)
GEOSGeometry * GEOSMaximumInscribedCircle(const GEOSGeometry *g, double tolerance)
GEOSGeoJSONReader * GEOSGeoJSONReader_create_r(GEOSContextHandle_t handle)
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:177
GEOSCoordSequence * GEOSCoordSeq_create_r(GEOSContextHandle_t handle, unsigned int size, unsigned int dims)
GEOSCoordSequence * GEOSNearestPoints(const GEOSGeometry *g1, const GEOSGeometry *g2)
GEOSGeometry * GEOSSymDifferencePrec(const GEOSGeometry *ga, const GEOSGeometry *gb, double gridSize)
int GEOSCurveToLineParams_setMaxDeviation_r(GEOSContextHandle_t extHandle, GEOSCurveToLineParams *params, double tolerance)
int GEOSGeom_getXMax(const GEOSGeometry *g, double *value)
GEOSGeometry * GEOSRemoveRepeatedPoints_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double tolerance)
GEOSGeometry * GEOSGeom_extractUniquePoints_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
void GEOSFree(void *buffer)
GEOSBufferParams * GEOSBufferParams_create_r(GEOSContextHandle_t handle)
int GEOSCoordSeq_getX(const GEOSCoordSequence *s, unsigned int idx, double *val)
char * GEOSPreparedRelate(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
GEOSGeometry * GEOSDifferencePrec_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double gridSize)
char * GEOSGeomToWKT(const GEOSGeometry *g)
GEOSGeometry * GEOSSharedPaths(const GEOSGeometry *g1, const GEOSGeometry *g2)
int GEOSArea(const GEOSGeometry *g, double *area)
int GEOSGeomGetLength_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *length)
char GEOSPreparedCrosses_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
GEOSGeometry * GEOSGeom_createCompoundCurve(GEOSGeometry **curves, unsigned int ncurves)
int GEOSGeomGetY_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *y)
int GEOSCoordSeq_isCCW_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s, char *is_ccw)
char GEOSisValid_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
void GEOSSTRtree_insert_r(GEOSContextHandle_t handle, GEOSSTRtree *tree, const GEOSGeometry *g, void *item)
GEOSCoordSequence * GEOSCoordSeq_copyFromArrays_r(GEOSContextHandle_t handle, const double *x, const double *y, const double *z, const double *m, unsigned int size)
int GEOSCoordSeq_setX_r(GEOSContextHandle_t handle, GEOSCoordSequence *s, unsigned int idx, double val)
GEOSGeometry * GEOSLineMerge_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
char GEOSisValidDetail(const GEOSGeometry *g, int flags, char **reason, GEOSGeometry **location)
GEOSGeometry * GEOSPolygonize_r(GEOSContextHandle_t handle, const GEOSGeometry *const geoms[], unsigned int ngeoms)
GEOSGeometry * GEOSLineMerge(const GEOSGeometry *g)
GEOSGeometry * GEOSGeom_createEmptyCurvePolygon_r(GEOSContextHandle_t handle)
size_t GEOSClusterInfo_getClusterSize_r(GEOSContextHandle_t, const GEOSClusterInfo *clusters, size_t i)
GEOSGeometry * GEOSGeom_createLinearRing(GEOSCoordSequence *s)
struct GEOSCoverageCleanParams_t GEOSCoverageCleanParams
Definition geos_c.h:191
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:372
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:162