GEOS 3.15.0beta1
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 0beta1
68#endif
69#ifndef GEOS_VERSION
70#define GEOS_VERSION "3.15.0beta1"
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.0beta1-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
1113 GEOSContextHandle_t handle,
1114 const GEOSGeometry* g,
1115 unsigned int isOuter,
1116 unsigned int parameterMode,
1117 double parameter);
1118
1121 GEOSContextHandle_t handle,
1122 const GEOSGeometry* g,
1123 double lengthRatio,
1124 unsigned int isTight,
1125 unsigned int isHolesAllowed);
1126
1129 GEOSContextHandle_t handle,
1130 const GEOSGeometry* g);
1131
1134 GEOSContextHandle_t handle,
1135 const GEOSGeometry* g,
1136 double tolerance);
1137
1140 GEOSContextHandle_t handle,
1141 const GEOSGeometry* g,
1142 const GEOSGeometry* boundary,
1143 double tolerance);
1144
1147 GEOSContextHandle_t handle,
1148 const GEOSGeometry* g);
1149
1152 GEOSContextHandle_t handle,
1153 const GEOSGeometry* g);
1154
1156extern int GEOS_DLL GEOSMinimumClearance_r(
1157 GEOSContextHandle_t handle,
1158 const GEOSGeometry* g,
1159 double* distance);
1160
1163 GEOSContextHandle_t handle,
1164 const GEOSGeometry* g1,
1165 const GEOSGeometry* g2);
1166
1169 GEOSContextHandle_t handle,
1170 const GEOSGeometry* g1,
1171 const GEOSGeometry* g2,
1172 double gridSize);
1173
1176 GEOSContextHandle_t handle,
1177 const GEOSGeometry* g1,
1178 const GEOSGeometry* g2);
1179
1182 GEOSContextHandle_t handle,
1183 const GEOSGeometry* g1,
1184 const GEOSGeometry* g2,
1185 double gridSize);
1186
1189 GEOSContextHandle_t handle,
1190 const GEOSGeometry* g);
1191
1193extern GEOSGeometry GEOS_DLL *GEOSUnion_r(
1194 GEOSContextHandle_t handle,
1195 const GEOSGeometry* g1,
1196 const GEOSGeometry* g2);
1197
1200 GEOSContextHandle_t handle,
1201 const GEOSGeometry* g1,
1202 const GEOSGeometry* g2,
1203 double gridSize);
1204
1207 GEOSContextHandle_t handle,
1208 const GEOSGeometry* g);
1209
1212 GEOSContextHandle_t handle,
1213 const GEOSGeometry* g,
1214 double gridSize);
1215
1218 GEOSContextHandle_t handle,
1219 const GEOSGeometry* g);
1220
1223 GEOSContextHandle_t handle,
1224 const GEOSGeometry* g);
1225
1228 GEOSContextHandle_t handle,
1229 const GEOSGeometry* g);
1230
1233 GEOSContextHandle_t handle,
1234 const GEOSGeometry* g,
1235 double* radius,
1236 GEOSGeometry** center);
1237
1239extern GEOSGeometry GEOS_DLL *GEOSNode_r(
1240 GEOSContextHandle_t handle,
1241 const GEOSGeometry* g);
1242
1244extern GEOSGeometry GEOS_DLL *GEOSSplit_r(
1245 GEOSContextHandle_t handle,
1246 const GEOSGeometry* g,
1247 const GEOSGeometry* edge);
1248
1251 GEOSContextHandle_t handle,
1252 const GEOSGeometry* g,
1253 double xmin, double ymin,
1254 double xmax, double ymax);
1255
1258 GEOSContextHandle_t handle,
1259 const GEOSGeometry* g,
1260 double xmin, double ymin,
1261 double xmax, double ymax,
1262 unsigned nx, unsigned ny,
1263 int includeExterior);
1264
1267 GEOSContextHandle_t handle,
1268 const GEOSGeometry* g,
1269 double xmin, double ymin,
1270 double xmax, double ymax,
1271 unsigned nx, unsigned ny,
1272 float* buf);
1273
1276 GEOSContextHandle_t handle,
1277 const GEOSGeometry *const geoms[],
1278 unsigned int ngeoms);
1279
1282 GEOSContextHandle_t handle,
1283 const GEOSGeometry *const geoms[],
1284 unsigned int ngems);
1285
1288 GEOSContextHandle_t handle,
1289 const GEOSGeometry * const geoms[],
1290 unsigned int ngeoms);
1291
1294 GEOSContextHandle_t handle,
1295 const GEOSGeometry* input,
1296 GEOSGeometry** cuts,
1297 GEOSGeometry** dangles,
1298 GEOSGeometry** invalidRings);
1299
1302 GEOSContextHandle_t handle,
1303 const GEOSGeometry* g);
1304
1307 GEOSContextHandle_t handle,
1308 const GEOSGeometry* g);
1309
1311extern size_t GEOS_DLL *GEOSMinimumSpanningTree_r(
1312 GEOSContextHandle_t handle,
1313 const GEOSGeometry * const geoms[],
1314 unsigned int ngeoms);
1315
1318 GEOSContextHandle_t handle,
1319 const GEOSGeometry* g);
1320
1323 GEOSContextHandle_t handle,
1324 const GEOSGeometry* g,
1325 double start_fraction,
1326 double end_fdraction);
1327
1330 GEOSContextHandle_t handle,
1331 const GEOSGeometry* g);
1332
1335 GEOSContextHandle_t handle,
1336 const GEOSGeometry* g,
1337 double tolerance);
1338
1341 GEOSContextHandle_t handle,
1342 const GEOSGeometry* g, double tolerance);
1343
1346 GEOSContextHandle_t handle,
1347 const GEOSGeometry* g);
1348
1351 GEOSContextHandle_t handle,
1352 const GEOSGeometry* g1,
1353 const GEOSGeometry* g2);
1354
1356extern GEOSGeometry GEOS_DLL *GEOSSnap_r(
1357 GEOSContextHandle_t handle,
1358 const GEOSGeometry* g1,
1359 const GEOSGeometry* g2,
1360 double tolerance);
1361
1364 GEOSContextHandle_t handle,
1365 const GEOSGeometry *g,
1366 double tolerance,
1367 int onlyEdges);
1368
1371 GEOSContextHandle_t handle,
1372 const GEOSGeometry *g);
1373
1376 GEOSContextHandle_t extHandle,
1377 const GEOSGeometry *g,
1378 const GEOSGeometry *env,
1379 double tolerance,
1380 int flags);
1381
1383extern int GEOS_DLL GEOSSegmentIntersection_r(
1384 GEOSContextHandle_t extHandle,
1385 double ax0, double ay0,
1386 double ax1, double ay1,
1387 double bx0, double by0,
1388 double bx1, double by1,
1389 double* cx, double* cy);
1390
1391/* ========= Binary predicates ========= */
1392
1394extern char GEOS_DLL GEOSDisjoint_r(
1395 GEOSContextHandle_t handle,
1396 const GEOSGeometry* g1,
1397 const GEOSGeometry* g2);
1398
1400extern char GEOS_DLL GEOSTouches_r(
1401 GEOSContextHandle_t handle,
1402 const GEOSGeometry* g1,
1403 const GEOSGeometry* g2);
1404
1406extern char GEOS_DLL GEOSIntersects_r(
1407 GEOSContextHandle_t handle,
1408 const GEOSGeometry* g1,
1409 const GEOSGeometry* g2);
1410
1412extern char GEOS_DLL GEOSCrosses_r(
1413 GEOSContextHandle_t handle,
1414 const GEOSGeometry* g1,
1415 const GEOSGeometry* g2);
1416
1418extern char GEOS_DLL GEOSWithin_r(
1419 GEOSContextHandle_t handle,
1420 const GEOSGeometry* g1,
1421 const GEOSGeometry* g2);
1422
1424extern char GEOS_DLL GEOSContains_r(
1425 GEOSContextHandle_t handle,
1426 const GEOSGeometry* g1,
1427 const GEOSGeometry* g2);
1428
1430extern char GEOS_DLL GEOSOverlaps_r(
1431 GEOSContextHandle_t handle,
1432 const GEOSGeometry* g1,
1433 const GEOSGeometry* g2);
1434
1436extern char GEOS_DLL GEOSEquals_r(
1437 GEOSContextHandle_t handle,
1438 const GEOSGeometry* g1,
1439 const GEOSGeometry* g2);
1440
1442extern char GEOS_DLL GEOSEqualsExact_r(
1443 GEOSContextHandle_t handle,
1444 const GEOSGeometry* g1,
1445 const GEOSGeometry* g2,
1446 double tolerance);
1447
1449extern char GEOS_DLL GEOSEqualsIdentical_r(
1450 GEOSContextHandle_t handle,
1451 const GEOSGeometry* g1,
1452 const GEOSGeometry* g2);
1453
1455extern char GEOS_DLL GEOSCovers_r(
1456 GEOSContextHandle_t handle,
1457 const GEOSGeometry* g1,
1458 const GEOSGeometry* g2);
1459
1461extern char GEOS_DLL GEOSCoveredBy_r(
1462 GEOSContextHandle_t handle,
1463 const GEOSGeometry* g1,
1464 const GEOSGeometry* g2);
1465
1466/* ========= Prepared Geometry Binary Predicates ========== */
1467
1470 GEOSContextHandle_t handle,
1471 const GEOSGeometry* g);
1472
1474extern void GEOS_DLL GEOSPreparedGeom_destroy_r(
1475 GEOSContextHandle_t handle,
1476 const GEOSPreparedGeometry* g);
1477
1479extern char GEOS_DLL GEOSPreparedContains_r(
1480 GEOSContextHandle_t handle,
1481 const GEOSPreparedGeometry* pg1,
1482 const GEOSGeometry* g2);
1483
1485extern char GEOS_DLL GEOSPreparedContainsXY_r(
1486 GEOSContextHandle_t handle,
1487 const GEOSPreparedGeometry* pg1,
1488 double x,
1489 double y);
1490
1493 GEOSContextHandle_t handle,
1494 const GEOSPreparedGeometry* pg1,
1495 const GEOSGeometry* g2);
1496
1498extern char GEOS_DLL GEOSPreparedCoveredBy_r(
1499 GEOSContextHandle_t handle,
1500 const GEOSPreparedGeometry* pg1,
1501 const GEOSGeometry* g2);
1502
1504extern char GEOS_DLL GEOSPreparedCovers_r(
1505 GEOSContextHandle_t handle,
1506 const GEOSPreparedGeometry* pg1,
1507 const GEOSGeometry* g2);
1508
1510extern char GEOS_DLL GEOSPreparedCrosses_r(
1511 GEOSContextHandle_t handle,
1512 const GEOSPreparedGeometry* pg1,
1513 const GEOSGeometry* g2);
1514
1516extern char GEOS_DLL GEOSPreparedDisjoint_r(
1517 GEOSContextHandle_t handle,
1518 const GEOSPreparedGeometry* pg1,
1519 const GEOSGeometry* g2);
1520
1522extern char GEOS_DLL GEOSPreparedIntersects_r(
1523 GEOSContextHandle_t handle,
1524 const GEOSPreparedGeometry* pg1,
1525 const GEOSGeometry* g2);
1526
1528extern char GEOS_DLL GEOSPreparedIntersectsXY_r(
1529 GEOSContextHandle_t handle,
1530 const GEOSPreparedGeometry* pg1,
1531 double x,
1532 double y);
1533
1535extern char GEOS_DLL GEOSPreparedOverlaps_r(
1536 GEOSContextHandle_t handle,
1537 const GEOSPreparedGeometry* pg1,
1538 const GEOSGeometry* g2);
1539
1541extern char GEOS_DLL GEOSPreparedTouches_r(
1542 GEOSContextHandle_t handle,
1543 const GEOSPreparedGeometry* pg1,
1544 const GEOSGeometry* g2);
1545
1547extern char GEOS_DLL GEOSPreparedWithin_r(
1548 GEOSContextHandle_t handle,
1549 const GEOSPreparedGeometry* pg1,
1550 const GEOSGeometry* g2);
1551
1553extern char GEOS_DLL * GEOSPreparedRelate_r(
1554 GEOSContextHandle_t handle,
1555 const GEOSPreparedGeometry* pg1,
1556 const GEOSGeometry* g2);
1557
1559extern char GEOS_DLL GEOSPreparedRelatePattern_r(
1560 GEOSContextHandle_t handle,
1561 const GEOSPreparedGeometry* pg1,
1562 const GEOSGeometry* g2,
1563 const char* im);
1564
1567 GEOSContextHandle_t handle,
1568 const GEOSPreparedGeometry* pg1,
1569 const GEOSGeometry* g2);
1570
1572extern int GEOS_DLL GEOSPreparedDistance_r(
1573 GEOSContextHandle_t handle,
1574 const GEOSPreparedGeometry* pg1,
1575 const GEOSGeometry* g2, double *dist);
1576
1578extern char GEOS_DLL GEOSPreparedDistanceWithin_r(
1579 GEOSContextHandle_t handle,
1580 const GEOSPreparedGeometry* pg1,
1581 const GEOSGeometry* g2, double dist);
1582
1583/* ========== STRtree ========== */
1584
1587 GEOSContextHandle_t handle,
1588 size_t nodeCapacity);
1589
1591extern int GEOS_DLL GEOSSTRtree_build_r(
1592 GEOSContextHandle_t handle,
1593 GEOSSTRtree *tree);
1594
1596extern void GEOS_DLL GEOSSTRtree_insert_r(
1597 GEOSContextHandle_t handle,
1598 GEOSSTRtree *tree,
1599 const GEOSGeometry *g,
1600 void *item);
1601
1603extern void GEOS_DLL GEOSSTRtree_query_r(
1604 GEOSContextHandle_t handle,
1605 GEOSSTRtree *tree,
1606 const GEOSGeometry *g,
1607 GEOSQueryCallback callback,
1608 void *userdata);
1609
1612 GEOSContextHandle_t handle,
1613 GEOSSTRtree *tree,
1614 const GEOSGeometry* geom);
1615
1617extern const void GEOS_DLL *GEOSSTRtree_nearest_generic_r(
1618 GEOSContextHandle_t handle,
1619 GEOSSTRtree *tree,
1620 const void* item,
1621 const GEOSGeometry* itemEnvelope,
1622 GEOSDistanceCallback distancefn,
1623 void* userdata);
1624
1626extern void GEOS_DLL GEOSSTRtree_iterate_r(
1627 GEOSContextHandle_t handle,
1628 GEOSSTRtree *tree,
1629 GEOSQueryCallback callback,
1630 void *userdata);
1631
1633extern char GEOS_DLL GEOSSTRtree_remove_r(
1634 GEOSContextHandle_t handle,
1635 GEOSSTRtree *tree,
1636 const GEOSGeometry *g,
1637 void *item);
1638
1640extern void GEOS_DLL GEOSSTRtree_destroy_r(
1641 GEOSContextHandle_t handle,
1642 GEOSSTRtree *tree);
1643
1644
1645/* ========= Unary predicate ========= */
1646
1648extern char GEOS_DLL GEOSisEmpty_r(
1649 GEOSContextHandle_t handle,
1650 const GEOSGeometry* g);
1651
1653extern char GEOS_DLL GEOSisSimple_r(
1654 GEOSContextHandle_t handle,
1655 const GEOSGeometry* g);
1656
1658extern char GEOS_DLL GEOSisRing_r(
1659 GEOSContextHandle_t handle,
1660 const GEOSGeometry* g);
1661
1663extern char GEOS_DLL GEOSHasZ_r(
1664 GEOSContextHandle_t handle,
1665 const GEOSGeometry* g);
1666
1668extern char GEOS_DLL GEOSHasM_r(
1669 GEOSContextHandle_t handle,
1670 const GEOSGeometry* g);
1671
1673extern char GEOS_DLL GEOSisClosed_r(
1674 GEOSContextHandle_t handle,
1675 const GEOSGeometry *g);
1676
1677/* ========== Dimensionally Extended 9 Intersection Model ========== */
1678
1695
1697extern char GEOS_DLL GEOSRelatePattern_r(
1698 GEOSContextHandle_t handle,
1699 const GEOSGeometry* g1,
1700 const GEOSGeometry* g2,
1701 const char *imPattern);
1702
1704extern char GEOS_DLL *GEOSRelate_r(
1705 GEOSContextHandle_t handle,
1706 const GEOSGeometry* g1,
1707 const GEOSGeometry* g2);
1708
1710extern char GEOS_DLL GEOSRelatePatternMatch_r(
1711 GEOSContextHandle_t handle,
1712 const char *intMatrix,
1713 const char *imPattern);
1714
1716extern char GEOS_DLL *GEOSRelateBoundaryNodeRule_r(
1717 GEOSContextHandle_t handle,
1718 const GEOSGeometry* g1,
1719 const GEOSGeometry* g2,
1720 int bnr);
1721
1722/* ========= Validity checking ========= */
1723
1730
1732extern char GEOS_DLL GEOSisValid_r(
1733 GEOSContextHandle_t handle,
1734 const GEOSGeometry* g);
1735
1737extern char GEOS_DLL *GEOSisValidReason_r(
1738 GEOSContextHandle_t handle,
1739 const GEOSGeometry* g);
1740
1742extern char GEOS_DLL GEOSisSimpleDetail_r(
1743 GEOSContextHandle_t handle,
1744 const GEOSGeometry* g,
1745 int findAllLocations,
1746 GEOSGeometry** location);
1747
1749extern char GEOS_DLL GEOSisValidDetail_r(
1750 GEOSContextHandle_t handle,
1751 const GEOSGeometry* g,
1752 int flags,
1753 char** reason,
1754 GEOSGeometry** location);
1755
1756/* ========== Make Valid ========== */
1757
1774
1777 GEOSContextHandle_t extHandle);
1778
1781 GEOSContextHandle_t handle,
1782 GEOSMakeValidParams* parms);
1783
1786 GEOSContextHandle_t handle,
1788 int style);
1789
1792 GEOSContextHandle_t handle,
1794 enum GEOSMakeValidMethods method);
1795
1798 GEOSContextHandle_t handle,
1799 const GEOSGeometry* g);
1800
1803 GEOSContextHandle_t handle,
1804 const GEOSGeometry* g,
1805 const GEOSMakeValidParams* makeValidParams);
1806
1809 GEOSContextHandle_t handle,
1810 const GEOSGeometry* g,
1811 double tolerance);
1812
1813/* ========== Geometry info ========== */
1814
1816/* Return NULL on exception, result must be freed by caller. */
1817extern char GEOS_DLL *GEOSGeomType_r(
1818 GEOSContextHandle_t handle,
1819 const GEOSGeometry* g);
1820
1822extern int GEOS_DLL GEOSGeomTypeId_r(
1823 GEOSContextHandle_t handle,
1824 const GEOSGeometry* g);
1825
1827extern int GEOS_DLL GEOSGetSRID_r(
1828 GEOSContextHandle_t handle,
1829 const GEOSGeometry* g);
1830
1832extern void GEOS_DLL GEOSSetSRID_r(
1833 GEOSContextHandle_t handle,
1834 GEOSGeometry* g, int SRID);
1835
1837extern void GEOS_DLL *GEOSGeom_getUserData_r(
1838 GEOSContextHandle_t handle,
1839 const GEOSGeometry* g);
1840
1842extern void GEOS_DLL GEOSGeom_setUserData_r(
1843 GEOSContextHandle_t handle,
1844 GEOSGeometry* g,
1845 void* userData);
1846
1848extern int GEOS_DLL GEOSGetNumGeometries_r(
1849 GEOSContextHandle_t handle,
1850 const GEOSGeometry* g);
1851
1853extern const GEOSGeometry GEOS_DLL *GEOSGetGeometryN_r(
1854 GEOSContextHandle_t handle,
1855 const GEOSGeometry* g, int n);
1856
1858extern int GEOS_DLL GEOSGetNumCurves_r(
1859 GEOSContextHandle_t handle,
1860 const GEOSGeometry* g);
1861
1863extern const GEOSGeometry GEOS_DLL *GEOSGetCurveN_r(
1864 GEOSContextHandle_t handle,
1865 const GEOSGeometry* g, int n);
1866
1868extern int GEOS_DLL GEOSNormalize_r(
1869 GEOSContextHandle_t handle,
1870 GEOSGeometry* g);
1871
1873extern int GEOS_DLL GEOSOrientPolygons_r(
1874 GEOSContextHandle_t handle,
1875 GEOSGeometry* g,
1876 int exteriorCW);
1877
1890
1893 GEOSContextHandle_t handle,
1894 const GEOSGeometry *g,
1895 double gridSize,
1896 int flags);
1897
1899extern double GEOS_DLL GEOSGeom_getPrecision_r(
1900 GEOSContextHandle_t handle,
1901 const GEOSGeometry *g);
1902
1905 GEOSContextHandle_t handle,
1906 const GEOSGeometry* g,
1907 const GEOSCurveToLineParams* params);
1908
1911 GEOSContextHandle_t extHandle,
1912 GEOSCurveToLineParams* params,
1913 double tolerance);
1914
1917 GEOSContextHandle_t extHandle,
1918 GEOSCurveToLineParams* params,
1919 double tolerance);
1920
1923 GEOSContextHandle_t handle,
1924 const GEOSGeometry* g,
1925 const GEOSLineToCurveParams* params);
1926
1929 GEOSContextHandle_t extHandle,
1930 GEOSLineToCurveParams* params,
1931 double tolerance);
1932
1935 GEOSContextHandle_t extHandle,
1936 GEOSLineToCurveParams* params,
1937 double tolerance);
1938
1941 GEOSContextHandle_t extHandle,
1942 GEOSLineToCurveParams* params,
1943 double tolerance);
1944
1946extern int GEOS_DLL GEOSGetNumInteriorRings_r(
1947 GEOSContextHandle_t handle,
1948 const GEOSGeometry* g);
1949
1951extern int GEOS_DLL GEOSGeomGetNumPoints_r(
1952 GEOSContextHandle_t handle,
1953 const GEOSGeometry* g);
1954
1956extern int GEOS_DLL GEOSGeomGetX_r(
1957 GEOSContextHandle_t handle,
1958 const GEOSGeometry *g,
1959 double *x);
1960
1962extern int GEOS_DLL GEOSGeomGetY_r(
1963 GEOSContextHandle_t handle,
1964 const GEOSGeometry *g,
1965 double *y);
1966
1968extern int GEOS_DLL GEOSGeomGetZ_r(
1969 GEOSContextHandle_t handle,
1970 const GEOSGeometry *g,
1971 double *z);
1972
1974extern int GEOS_DLL GEOSGeomGetM_r(
1975 GEOSContextHandle_t handle,
1976 const GEOSGeometry *g,
1977 double *m);
1978
1981 GEOSContextHandle_t handle,
1982 const GEOSGeometry* g, int n);
1983
1986 GEOSContextHandle_t handle,
1987 const GEOSGeometry* g);
1988
1990extern int GEOS_DLL GEOSGetNumCoordinates_r(
1991 GEOSContextHandle_t handle,
1992 const GEOSGeometry* g);
1993
1996 GEOSContextHandle_t handle,
1997 const GEOSGeometry* g);
1998
2000extern int GEOS_DLL GEOSGeom_getDimensions_r(
2001 GEOSContextHandle_t handle,
2002 const GEOSGeometry* g);
2003
2006 GEOSContextHandle_t handle,
2007 const GEOSGeometry* g);
2008
2010extern int GEOS_DLL GEOSGeom_getXMin_r(
2011 GEOSContextHandle_t handle,
2012 const GEOSGeometry* g,
2013 double* value);
2014
2016extern int GEOS_DLL GEOSGeom_getYMin_r(
2017 GEOSContextHandle_t handle,
2018 const GEOSGeometry* g,
2019 double* value);
2020
2022extern int GEOS_DLL GEOSGeom_getXMax_r(
2023 GEOSContextHandle_t handle,
2024 const GEOSGeometry* g,
2025 double* value);
2026
2028extern int GEOS_DLL GEOSGeom_getYMax_r(
2029 GEOSContextHandle_t handle,
2030 const GEOSGeometry* g,
2031 double* value);
2032
2034extern int GEOS_DLL GEOSGeom_getExtent_r(
2035 GEOSContextHandle_t handle,
2036 const GEOSGeometry* g,
2037 double* xmin,
2038 double* ymin,
2039 double* xmax,
2040 double* ymax);
2041
2044 GEOSContextHandle_t handle,
2045 const GEOSGeometry *g,
2046 int n);
2047
2050 GEOSContextHandle_t handle,
2051 const GEOSGeometry *g);
2052
2055 GEOSContextHandle_t handle,
2056 const GEOSGeometry *g);
2057
2058/* ========= Misc functions ========= */
2059
2061extern int GEOS_DLL GEOSArea_r(
2062 GEOSContextHandle_t handle,
2063 const GEOSGeometry* g,
2064 double *area);
2065
2067extern int GEOS_DLL GEOSLength_r(
2068 GEOSContextHandle_t handle,
2069 const GEOSGeometry* g,
2070 double *length);
2071
2073extern int GEOS_DLL GEOSDistance_r(
2074 GEOSContextHandle_t handle,
2075 const GEOSGeometry* g1,
2076 const GEOSGeometry* g2,
2077 double *dist);
2078
2080extern char GEOS_DLL GEOSDistanceWithin_r(
2081 GEOSContextHandle_t handle,
2082 const GEOSGeometry* g1,
2083 const GEOSGeometry* g2,
2084 double dist);
2085
2087extern int GEOS_DLL GEOSDistanceIndexed_r(
2088 GEOSContextHandle_t handle,
2089 const GEOSGeometry* g1,
2090 const GEOSGeometry* g2,
2091 double *dist);
2092
2094extern int GEOS_DLL GEOSHausdorffDistance_r(
2095 GEOSContextHandle_t handle,
2096 const GEOSGeometry *g1,
2097 const GEOSGeometry *g2,
2098 double *dist);
2099
2102 GEOSContextHandle_t handle,
2103 const GEOSGeometry *g1,
2104 const GEOSGeometry *g2,
2105 double *dist,
2106 double *p1x, double *p1y,
2107 double *p2x, double *p2y);
2108
2111 GEOSContextHandle_t handle,
2112 const GEOSGeometry *g1,
2113 const GEOSGeometry *g2,
2114 double densifyFrac, double *dist);
2115
2118 GEOSContextHandle_t handle,
2119 const GEOSGeometry *g1,
2120 const GEOSGeometry *g2,
2121 double densifyFrac, double* dist,
2122 double *p1x, double *p1y,
2123 double *p2x, double *p2y);
2124
2126extern int GEOS_DLL GEOSFrechetDistance_r(
2127 GEOSContextHandle_t handle,
2128 const GEOSGeometry *g1,
2129 const GEOSGeometry *g2,
2130 double *dist);
2131
2134 GEOSContextHandle_t handle,
2135 const GEOSGeometry *g1,
2136 const GEOSGeometry *g2,
2137 double densifyFrac,
2138 double *dist);
2139
2140
2142extern int GEOS_DLL GEOSHilbertCode_r(
2143 GEOSContextHandle_t handle,
2144 const GEOSGeometry *geom,
2145 const GEOSGeometry* extent,
2146 unsigned int level,
2147 unsigned int *code
2148);
2149
2151extern int GEOS_DLL GEOSGeomGetLength_r(
2152 GEOSContextHandle_t handle,
2153 const GEOSGeometry *g,
2154 double *length);
2155
2158 GEOSContextHandle_t handle,
2159 const GEOSGeometry* g1,
2160 const GEOSGeometry* g2);
2161
2164 GEOSContextHandle_t handle,
2165 const GEOSGeometry* g,
2166 GEOSTransformXYCallback callback,
2167 void* userdata);
2168
2171 GEOSContextHandle_t handle,
2172 const GEOSGeometry* g,
2173 GEOSTransformXYZCallback callback,
2174 void* userdata);
2175
2178 GEOSContextHandle_t handle,
2179 const GEOSGeometry* g,
2180 double eps,
2181 unsigned minPoints);
2182
2185 GEOSContextHandle_t handle,
2186 const GEOSGeometry* g,
2187 double d);
2188
2191 GEOSContextHandle_t handle,
2192 const GEOSGeometry* g);
2193
2196 GEOSContextHandle_t handle,
2197 const GEOSGeometry* g,
2198 double d);
2199
2202 GEOSContextHandle_t handle,
2203 const GEOSGeometry* g);
2204
2207
2209extern size_t GEOS_DLL GEOSClusterInfo_getClusterSize_r(GEOSContextHandle_t, const GEOSClusterInfo* clusters, size_t i);
2210
2213
2215extern const size_t GEOS_DLL* GEOSClusterInfo_getInputsForClusterN_r(GEOSContextHandle_t, const GEOSClusterInfo* clusters, size_t i);
2216
2219
2220/* ========= Algorithms ========= */
2221
2223extern int GEOS_DLL GEOSOrientationIndex_r(
2224 GEOSContextHandle_t handle,
2225 double Ax, double Ay,
2226 double Bx, double By,
2227 double Px, double Py);
2228
2229
2230/* ========== Reader and Writer APIs ========== */
2231
2232#ifndef GEOSWKTReader
2233
2239typedef struct GEOSWKTReader_t GEOSWKTReader;
2240
2246typedef struct GEOSWKTWriter_t GEOSWKTWriter;
2247
2253typedef struct GEOSWKBReader_t GEOSWKBReader;
2254
2260typedef struct GEOSWKBWriter_t GEOSWKBWriter;
2261
2267typedef struct GEOSGeoJSONReader_t GEOSGeoJSONReader;
2268
2274typedef struct GEOSGeoJSONWriter_t GEOSGeoJSONWriter;
2275
2276#endif
2277
2278/* ========== WKT Reader ========== */
2279
2282 GEOSContextHandle_t handle);
2283
2286 GEOSWKTReader* reader);
2287
2290 GEOSContextHandle_t handle,
2291 GEOSWKTReader* reader,
2292 const char *wkt);
2293
2296 GEOSContextHandle_t handle,
2297 GEOSWKTReader *reader,
2298 char doFix);
2299
2300
2301/* ========== WKT Writer ========== */
2302
2305 GEOSContextHandle_t handle);
2306
2308extern void GEOS_DLL GEOSWKTWriter_destroy_r(
2309 GEOSContextHandle_t handle,
2310 GEOSWKTWriter* writer);
2311
2313extern char GEOS_DLL *GEOSWKTWriter_write_r(
2314 GEOSContextHandle_t handle,
2315 GEOSWKTWriter* writer,
2316 const GEOSGeometry* g);
2317
2319extern void GEOS_DLL GEOSWKTWriter_setTrim_r(
2320 GEOSContextHandle_t handle,
2321 GEOSWKTWriter *writer,
2322 char trim);
2323
2326 GEOSContextHandle_t handle,
2327 GEOSWKTWriter *writer,
2328 int precision);
2329
2332 GEOSContextHandle_t handle,
2333 GEOSWKTWriter *writer,
2334 int dim);
2335
2338 GEOSContextHandle_t handle,
2339 GEOSWKTWriter *writer);
2340
2342extern void GEOS_DLL GEOSWKTWriter_setOld3D_r(
2343 GEOSContextHandle_t handle,
2344 GEOSWKTWriter *writer,
2345 int useOld3D);
2346
2356extern int GEOS_DLL GEOS_printDouble(
2357 double d,
2358 unsigned int precision,
2359 char *result
2360);
2361
2362/* ========== WKB Reader ========== */
2363
2366 GEOSContextHandle_t handle);
2367
2369extern void GEOS_DLL GEOSWKBReader_destroy_r(
2370 GEOSContextHandle_t handle,
2371 GEOSWKBReader* reader);
2372
2375 GEOSContextHandle_t handle,
2376 GEOSWKBReader *reader,
2377 char doFix);
2378
2381 GEOSContextHandle_t handle,
2382 GEOSWKBReader* reader,
2383 const unsigned char *wkb,
2384 size_t size);
2385
2388 GEOSContextHandle_t handle,
2389 GEOSWKBReader* reader,
2390 const unsigned char *hex,
2391 size_t size);
2392
2393
2394/* ========== WKB Writer ========== */
2395
2398 GEOSContextHandle_t handle);
2399
2401extern void GEOS_DLL GEOSWKBWriter_destroy_r(
2402 GEOSContextHandle_t handle,
2403 GEOSWKBWriter* writer);
2404
2406extern unsigned char GEOS_DLL *GEOSWKBWriter_write_r(
2407 GEOSContextHandle_t handle,
2408 GEOSWKBWriter* writer,
2409 const GEOSGeometry* g,
2410 size_t *size);
2411
2413extern unsigned char GEOS_DLL *GEOSWKBWriter_writeHEX_r(
2414 GEOSContextHandle_t handle,
2415 GEOSWKBWriter* writer,
2416 const GEOSGeometry* g,
2417 size_t *size);
2418
2421 GEOSContextHandle_t handle,
2422 const GEOSWKBWriter* writer);
2423
2426 GEOSContextHandle_t handle,
2427 GEOSWKBWriter* writer, int newDimension);
2428
2431 GEOSContextHandle_t handle,
2432 const GEOSWKBWriter* writer);
2433
2435extern void GEOS_DLL GEOSWKBWriter_setByteOrder_r(
2436 GEOSContextHandle_t handle,
2437 GEOSWKBWriter* writer,
2438 int byteOrder);
2439
2441extern int GEOS_DLL GEOSWKBWriter_getFlavor_r(
2442 GEOSContextHandle_t handle,
2443 const GEOSWKBWriter* writer);
2444
2446extern void GEOS_DLL GEOSWKBWriter_setFlavor_r(
2447 GEOSContextHandle_t handle,
2448 GEOSWKBWriter* writer,
2449 int flavor);
2450
2453 GEOSContextHandle_t handle,
2454 const GEOSWKBWriter* writer);
2455
2458 GEOSContextHandle_t handle,
2459 GEOSWKBWriter* writer, const char writeSRID);
2460
2461/* ========== GeoJSON Reader ========== */
2462
2465 GEOSContextHandle_t handle);
2466
2469 GEOSGeoJSONReader* reader);
2470
2473 GEOSContextHandle_t handle,
2474 GEOSGeoJSONReader* reader,
2475 const char *geojson);
2476
2477/* ========== GeoJSON Writer ========== */
2478
2481 GEOSContextHandle_t handle);
2482
2485 GEOSGeoJSONWriter* writer);
2486
2489 GEOSContextHandle_t handle,
2490 GEOSGeoJSONWriter* writer,
2491 const GEOSGeometry* g,
2492 int indent);
2493
2496 GEOSContextHandle_t handle,
2497 GEOSGeoJSONWriter *writer,
2498 int dim);
2499
2502 GEOSContextHandle_t handle,
2503 GEOSGeoJSONWriter *writer);
2504
2506extern void GEOS_DLL GEOSFree_r(
2507 GEOSContextHandle_t handle,
2508 void *buffer);
2509
2517extern const char GEOS_DLL *GEOSversion(void);
2518
2519/*
2520* External code to GEOS can define GEOS_USE_ONLY_R_API
2521* to strip the non-reentrant API functions from this header,
2522* leaving only the "_r" compatible variants.
2523*/
2524#ifndef GEOS_USE_ONLY_R_API
2525
2526/* ========== Initialization, cleanup ================================= */
2532
2545extern void GEOS_DLL initGEOS(
2546 GEOSMessageHandler notice_function,
2547 GEOSMessageHandler error_function);
2548
2554extern void GEOS_DLL finishGEOS(void);
2555
2565extern void GEOS_DLL GEOSFree(void *buffer);
2566
2568
2569/* ========= Coordinate Sequence functions ========= */
2575
2583extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_create(unsigned int size, unsigned int dims);
2584
2593extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_createWithDimensions(unsigned int size, int hasZ, int hasM);
2594
2605extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_copyFromBuffer(const double* buf, unsigned int size, int hasZ, int hasM);
2606
2618extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_copyFromArrays(const double* x, const double* y, const double* z, const double* m, unsigned int size);
2619
2630extern int GEOS_DLL GEOSCoordSeq_copyToBuffer(const GEOSCoordSequence* s, double* buf, int hasZ, int hasM);
2631
2643extern int GEOS_DLL GEOSCoordSeq_copyToArrays(const GEOSCoordSequence* s, double* x, double* y, double* z, double* m);
2644
2652
2659
2667extern char GEOS_DLL GEOSCoordSeq_hasZ(GEOSCoordSequence* s);
2668
2676extern char GEOS_DLL GEOSCoordSeq_hasM(GEOSCoordSequence* s);
2677
2687 unsigned int idx, double val);
2697 unsigned int idx, double val);
2707 unsigned int idx, double val);
2708
2718 unsigned int idx, double val);
2719
2731 unsigned int idx, double x, double y);
2744 unsigned int idx, double x, double y, double z);
2755 unsigned int idx, unsigned int dim, double val);
2756
2765extern int GEOS_DLL GEOSCoordSeq_getX(const GEOSCoordSequence* s,
2766 unsigned int idx, double *val);
2767
2776extern int GEOS_DLL GEOSCoordSeq_getY(const GEOSCoordSequence* s,
2777 unsigned int idx, double *val);
2778
2787extern int GEOS_DLL GEOSCoordSeq_getZ(const GEOSCoordSequence* s,
2788 unsigned int idx, double *val);
2789
2798extern int GEOS_DLL GEOSCoordSeq_getM(const GEOSCoordSequence* s,
2799 unsigned int idx, double *val);
2800
2811extern int GEOS_DLL GEOSCoordSeq_getXY(const GEOSCoordSequence* s,
2812 unsigned int idx, double *x, double *y);
2824extern int GEOS_DLL GEOSCoordSeq_getXYZ(const GEOSCoordSequence* s,
2825 unsigned int idx, double *x, double *y, double *z);
2835extern int GEOS_DLL GEOSCoordSeq_getOrdinate(const GEOSCoordSequence* s,
2836 unsigned int idx, unsigned int dim, double *val);
2837
2845extern int GEOS_DLL GEOSCoordSeq_getSize(
2846 const GEOSCoordSequence* s,
2847 unsigned int *size);
2848
2856extern int GEOS_DLL GEOSCoordSeq_getDimensions(
2857 const GEOSCoordSequence* s,
2858 unsigned int *dims);
2859
2869extern int GEOS_DLL GEOSCoordSeq_isCCW(
2870 const GEOSCoordSequence* s,
2871 char* is_ccw);
2872
2874
2875/* ========= Geometry Constructors ========= */
2881
2890
2900extern GEOSGeometry GEOS_DLL *GEOSGeom_createPointFromXY(double x, double y);
2901
2910
2919
2928
2937
2946
2961 GEOSGeometry* shell,
2962 GEOSGeometry** holes,
2963 unsigned int nholes);
2964
2973
2981
2991 unsigned int ncurves);
2992
3000
3015 GEOSGeometry* shell,
3016 GEOSGeometry** holes,
3017 unsigned int nholes);
3018
3026
3041 int type,
3042 GEOSGeometry** geoms,
3043 unsigned int ngeoms);
3044
3062 GEOSGeometry * collection,
3063 unsigned int * ngeoms);
3064
3074
3086 double xmin, double ymin,
3087 double xmax, double ymax);
3088
3096extern GEOSGeometry GEOS_DLL *GEOSGeom_clone(const GEOSGeometry* g);
3097
3103extern void GEOS_DLL GEOSGeom_destroy(GEOSGeometry* g);
3104
3106
3107/* ========== Geometry info ========== */
3112
3122extern char GEOS_DLL *GEOSGeomType(const GEOSGeometry* g);
3123
3130extern int GEOS_DLL GEOSGeomTypeId(const GEOSGeometry* g);
3131
3138extern int GEOS_DLL GEOSGetSRID(const GEOSGeometry* g);
3139
3150extern void GEOS_DLL *GEOSGeom_getUserData(const GEOSGeometry* g);
3151
3164extern int GEOS_DLL GEOSGetNumGeometries(const GEOSGeometry* g);
3165
3181extern const GEOSGeometry GEOS_DLL *GEOSGetGeometryN(
3182 const GEOSGeometry* g,
3183 int n);
3184
3193extern int GEOS_DLL GEOSGetNumCurves(const GEOSGeometry* g);
3194
3208extern const GEOSGeometry GEOS_DLL *GEOSGetCurveN(
3209 const GEOSGeometry* g,
3210 int n);
3211
3221extern double GEOS_DLL GEOSGeom_getPrecision(const GEOSGeometry *g);
3222
3230extern int GEOS_DLL GEOSGetNumInteriorRings(const GEOSGeometry* g);
3231
3242extern int GEOS_DLL GEOSGeomGetNumPoints(const GEOSGeometry* g);
3243
3252extern int GEOS_DLL GEOSGeomGetX(const GEOSGeometry *g, double *x);
3253
3262extern int GEOS_DLL GEOSGeomGetY(const GEOSGeometry *g, double *y);
3263
3273extern int GEOS_DLL GEOSGeomGetZ(const GEOSGeometry *g, double *z);
3274
3284extern int GEOS_DLL GEOSGeomGetM(const GEOSGeometry *g, double *m);
3285
3295extern const GEOSGeometry GEOS_DLL *GEOSGetInteriorRingN(
3296 const GEOSGeometry* g,
3297 int n);
3298
3307extern const GEOSGeometry GEOS_DLL *GEOSGetExteriorRing(
3308 const GEOSGeometry* g);
3309
3317extern int GEOS_DLL GEOSGetNumCoordinates(
3318 const GEOSGeometry* g);
3319
3330 const GEOSGeometry* g);
3331
3344extern int GEOS_DLL GEOSGeom_getDimensions(
3345 const GEOSGeometry* g);
3346
3360 const GEOSGeometry* g);
3361
3375extern int GEOS_DLL GEOSGeom_getXMin(const GEOSGeometry* g, double* value);
3376
3390extern int GEOS_DLL GEOSGeom_getYMin(const GEOSGeometry* g, double* value);
3391
3405extern int GEOS_DLL GEOSGeom_getXMax(const GEOSGeometry* g, double* value);
3406
3420extern int GEOS_DLL GEOSGeom_getYMax(const GEOSGeometry* g, double* value);
3421
3439extern int GEOS_DLL GEOSGeom_getExtent(
3440 const GEOSGeometry* g,
3441 double* xmin,
3442 double* ymin,
3443 double* xmax,
3444 double* ymax);
3445
3459extern GEOSGeometry GEOS_DLL *GEOSGeomGetPointN(const GEOSGeometry *g, int n);
3460
3474
3488
3497extern char GEOS_DLL GEOSisEmpty(const GEOSGeometry* g);
3498
3508extern char GEOS_DLL GEOSisRing(const GEOSGeometry* g);
3509
3516extern char GEOS_DLL GEOSHasZ(const GEOSGeometry* g);
3517
3525extern char GEOS_DLL GEOSHasM(const GEOSGeometry* g);
3526
3541extern char GEOS_DLL GEOSisClosed(const GEOSGeometry *g);
3542
3544
3545/* ==================================================================================== */
3550
3557extern void GEOS_DLL GEOSSetSRID(GEOSGeometry* g, int SRID);
3558
3566extern void GEOS_DLL GEOSGeom_setUserData(GEOSGeometry* g, void* userData);
3567
3591extern int GEOS_DLL GEOSNormalize(GEOSGeometry* g);
3592
3604extern int GEOS_DLL GEOSOrientPolygons(GEOSGeometry* g,
3605 int exteriorCW);
3606
3608
3609/* ========== Validity checking ============================================================ */
3615
3630extern char GEOS_DLL GEOSisSimple(const GEOSGeometry* g);
3631
3651extern char GEOS_DLL GEOSisSimpleDetail(
3652 const GEOSGeometry* g,
3653 int findAllLocations,
3654 GEOSGeometry** locations);
3655
3676extern char GEOS_DLL GEOSisValid(const GEOSGeometry* g);
3677
3693extern char GEOS_DLL *GEOSisValidReason(const GEOSGeometry *g);
3694
3715extern char GEOS_DLL GEOSisValidDetail(
3716 const GEOSGeometry* g,
3717 int flags,
3718 char** reason,
3719 GEOSGeometry** location);
3720
3739 const GEOSGeometry* g);
3740
3765 const GEOSGeometry* g,
3766 const GEOSMakeValidParams *makeValidParams);
3767
3777
3786
3797 enum GEOSMakeValidMethods method);
3798
3811 int keepCollapsed);
3812
3837extern int GEOS_DLL GEOSMinimumClearance(const GEOSGeometry* g, double* d);
3838
3856
3878 const GEOSGeometry* g,
3879 double tolerance);
3880
3882
3883/* ========= Metric functions ================================================== */
3888
3901extern int GEOS_DLL GEOSArea(
3902 const GEOSGeometry* g,
3903 double *area);
3904
3916extern int GEOS_DLL GEOSLength(
3917 const GEOSGeometry* g,
3918 double *length);
3919
3934extern int GEOS_DLL GEOSGeomGetLength(
3935 const GEOSGeometry *g,
3936 double *length);
3937
3939
3940/* ========== Distance functions ================================================ */
3946
3963extern int GEOS_DLL GEOSDistance(
3964 const GEOSGeometry* g1,
3965 const GEOSGeometry* g2,
3966 double *dist);
3967
3985extern char GEOS_DLL GEOSDistanceWithin(
3986 const GEOSGeometry* g1,
3987 const GEOSGeometry* g2,
3988 double dist);
3989
4009extern int GEOS_DLL GEOSDistanceIndexed(
4010 const GEOSGeometry* g1,
4011 const GEOSGeometry* g2,
4012 double *dist);
4013
4032 const GEOSGeometry* g1,
4033 const GEOSGeometry* g2);
4034
4052extern int GEOS_DLL GEOSHausdorffDistance(
4053 const GEOSGeometry *g1,
4054 const GEOSGeometry *g2,
4055 double *dist);
4056
4057
4079 const GEOSGeometry *g1,
4080 const GEOSGeometry *g2,
4081 double *dist,
4082 double *p1x, double *p1y,
4083 double *p2x, double *p2y);
4084
4085
4086
4108 const GEOSGeometry *g1,
4109 const GEOSGeometry *g2,
4110 double densifyFrac,
4111 double *dist);
4112
4139 const GEOSGeometry *g1,
4140 const GEOSGeometry *g2,
4141 double densifyFrac,
4142 double *dist,
4143 double* p1x, double* p1y,
4144 double* p2x, double* p2y);
4145
4165extern int GEOS_DLL GEOSFrechetDistance(
4166 const GEOSGeometry *g1,
4167 const GEOSGeometry *g2,
4168 double *dist);
4169
4192extern int GEOS_DLL GEOSFrechetDistanceDensify(
4193 const GEOSGeometry *g1,
4194 const GEOSGeometry *g2,
4195 double densifyFrac,
4196 double *dist);
4197
4199
4200/* ========== Linear referencing functions */
4206
4222extern double GEOS_DLL GEOSProject(const GEOSGeometry* line,
4223 const GEOSGeometry* point);
4224
4244extern GEOSGeometry GEOS_DLL *GEOSInterpolate(const GEOSGeometry* line,
4245 double d);
4246
4263extern double GEOS_DLL GEOSProjectNormalized(const GEOSGeometry* line,
4264 const GEOSGeometry* point);
4265
4287 const GEOSGeometry *line,
4288 double proportion);
4289
4291
4292/* ========== Overlay functions ========== */
4298
4319extern GEOSGeometry GEOS_DLL *GEOSIntersection(const GEOSGeometry* g1, const GEOSGeometry* g2);
4320
4335extern GEOSGeometry GEOS_DLL *GEOSIntersectionPrec(const GEOSGeometry* g1, const GEOSGeometry* g2, double gridSize);
4336
4358 const GEOSGeometry* ga,
4359 const GEOSGeometry* gb);
4360
4377 const GEOSGeometry* ga,
4378 const GEOSGeometry* gb,
4379 double gridSize);
4380
4403 const GEOSGeometry* ga,
4404 const GEOSGeometry* gb);
4405
4423 const GEOSGeometry* ga,
4424 const GEOSGeometry* gb,
4425 double gridSize);
4426
4447extern GEOSGeometry GEOS_DLL *GEOSUnion(
4448 const GEOSGeometry* ga,
4449 const GEOSGeometry* gb);
4450
4467 const GEOSGeometry* ga,
4468 const GEOSGeometry* gb,
4469 double gridSize);
4470
4492extern GEOSGeometry GEOS_DLL *GEOSUnaryUnion(const GEOSGeometry* g);
4493
4510 const GEOSGeometry* g,
4511 double gridSize);
4512
4534
4561 const GEOSGeometry* g,
4562 double xmin, double ymin,
4563 double xmax, double ymax);
4564
4599 const GEOSGeometry* g,
4600 double xmin, double ymin,
4601 double xmax, double ymax,
4602 unsigned nx, unsigned ny,
4603 int includeExterior);
4604
4628 const GEOSGeometry* g,
4629 double xmin, double ymin,
4630 double xmax, double ymax,
4631 unsigned nx, unsigned ny,
4632 float* buf);
4633
4658 const GEOSGeometry* g1,
4659 const GEOSGeometry* g2);
4661
4662/* ========== Clustering functions ========== */
4665
4666
4667
4668
4669static const size_t GEOS_CLUSTER_NONE = (size_t) -1;
4670
4672
4687extern GEOSClusterInfo GEOS_DLL* GEOSClusterDBSCAN(const GEOSGeometry* g, double eps, unsigned minPoints);
4688
4703extern GEOSClusterInfo GEOS_DLL* GEOSClusterGeometryDistance(const GEOSGeometry* g, double d);
4704
4719
4731extern GEOSClusterInfo GEOS_DLL* GEOSClusterEnvelopeDistance(const GEOSGeometry* g, double d);
4732
4744
4753extern size_t GEOS_DLL GEOSClusterInfo_getNumClusters(const GEOSClusterInfo* clusters);
4754
4764extern size_t GEOS_DLL GEOSClusterInfo_getClusterSize(const GEOSClusterInfo* clusters, size_t i );
4765
4775extern size_t GEOS_DLL* GEOSClusterInfo_getClustersForInputs(const GEOSClusterInfo* clusters);
4776
4785extern const size_t GEOS_DLL* GEOSClusterInfo_getInputsForClusterN(const GEOSClusterInfo* clusters, size_t i);
4786
4794extern void GEOS_DLL GEOSClusterInfo_destroy(GEOSClusterInfo* clusters);
4795
4797
4798/* ========== Buffer related functions ========== */
4803
4822extern GEOSGeometry GEOS_DLL *GEOSBuffer(const GEOSGeometry* g,
4823 double width, int quadsegs);
4824
4834
4841extern void GEOS_DLL GEOSBufferParams_destroy(GEOSBufferParams* parms);
4842
4852 int style);
4853
4863 int joinStyle);
4864
4878 double mitreLimit);
4879
4892 int quadSegs);
4893
4906 int singleSided);
4907
4925 const GEOSGeometry* g,
4926 const GEOSBufferParams* p,
4927 double width);
4928
4950 const GEOSGeometry* g,
4951 double width,
4952 int quadsegs,
4953 int endCapStyle,
4954 int joinStyle,
4955 double mitreLimit);
4956
4986 double width, int quadsegs, int joinStyle, double mitreLimit);
4987
4989
4990
4991/* ====================================================================== */
4997
5020
5021
5050extern int GEOS_DLL GEOSCoverageIsValid(
5051 const GEOSGeometry* input,
5052 double gapWidth,
5053 GEOSGeometry** invalidEdges);
5054
5090 const GEOSGeometry* input,
5091 double tolerance,
5092 int preserveBoundary);
5093
5103extern GEOSGeometry GEOS_DLL *GEOSCoverageEdges(const GEOSGeometry *input, int edgetype);
5104
5112extern GEOSCoverageCleanParams GEOS_DLL *
5114
5121extern void GEOS_DLL
5123 GEOSCoverageCleanParams* params);
5124
5145extern int GEOS_DLL
5148 double snappingDistance);
5149
5168extern int GEOS_DLL
5171 double gapMaximumWidth);
5172
5173/*
5174* Sets the overlap merge strategy to use, using one from \ref GEOSOverlapMerge.
5175* Overlaps are merged with an adjacent polygon chosen according to a specified merge strategy.
5176* The supported strategies are:
5177*
5178* * **Longest Border**: (default) merge with the polygon with longest shared border (GEOS_MERGE_LONGEST_BORDER.)
5179* * **Maximum/Minimum Area**: merge with the polygon with largest or smallest area (GEOS_MERGE_MAX_AREA, GEOS_MERGE_MIN_AREA.)
5180* * **Minimum Index**: merge with the polygon with the lowest index in the input array (GEOS_MERGE_MIN_INDEX.)
5181*
5182* This allows sorting the input according to some criteria to provide a priority
5183* for merging gaps.
5184*
5185* The default is GEOS_MERGE_LONGEST_BORDER.
5186*
5187* \see geos::coverage::CoverageCleaner::setGapMaximumWidth
5188* \param params The GEOSCoverageCleanParams to operate on
5189* \param overlapMergeStrategy One of \ref GEOSOverlapMerge strategies
5190* \return 0 on exception, 1 on success.
5191*
5192* \since 3.14
5193*/
5194extern int GEOS_DLL
5195GEOSCoverageCleanParams_setOverlapMergeStrategy(
5197 int overlapMergeStrategy);
5198
5229extern GEOSGeometry GEOS_DLL *
5231 const GEOSGeometry* input,
5232 const GEOSCoverageCleanParams* params
5233);
5234
5236extern GEOSGeometry GEOS_DLL *
5238 const GEOSGeometry* input);
5239
5240
5241
5242
5244
5245
5246/* ========== Construction Operations ========== */
5251
5265extern GEOSGeometry GEOS_DLL *GEOSEnvelope(const GEOSGeometry* g);
5266
5284extern GEOSGeometry GEOS_DLL *GEOSBoundary(const GEOSGeometry* g);
5285
5304extern GEOSGeometry GEOS_DLL *GEOSConvexHull(const GEOSGeometry* g);
5305
5345 const GEOSGeometry* g,
5346 double ratio,
5347 unsigned int allowHoles);
5348
5387 const GEOSGeometry* g,
5388 double length,
5389 unsigned int allowHoles);
5390
5435 const GEOSGeometry* g,
5436 double lengthRatio,
5437 unsigned int isTight,
5438 unsigned int isHolesAllowed);
5439
5469 const GEOSGeometry* g,
5470 unsigned int isOuter,
5471 double vertexNumFraction);
5472
5473
5483
5515 const GEOSGeometry* g,
5516 unsigned int isOuter,
5517 unsigned int parameterMode,
5518 double parameter);
5519
5540
5572 const GEOSGeometry* g,
5573 double tolerance);
5574
5614 const GEOSGeometry* obstacles,
5615 const GEOSGeometry* boundary,
5616 double tolerance);
5617
5637extern GEOSGeometry GEOS_DLL *GEOSMinimumWidth(const GEOSGeometry* g);
5638
5639
5656
5672extern GEOSGeometry GEOS_DLL *GEOSGetCentroid(const GEOSGeometry* g);
5673
5693 const GEOSGeometry* g,
5694 double* radius,
5695 GEOSGeometry** center);
5696
5717 const GEOSGeometry *g,
5718 double tolerance,
5719 int onlyEdges);
5720
5741 const GEOSGeometry *g);
5742
5753
5779 const GEOSGeometry *g,
5780 const GEOSGeometry *env,
5781 double tolerance,
5782 int flags);
5783
5785
5786/* ============================================================== */
5791
5808extern GEOSGeometry GEOS_DLL *GEOSNode(const GEOSGeometry* g);
5809
5810
5826extern GEOSGeometry GEOS_DLL *GEOSSplit(const GEOSGeometry* g, const GEOSGeometry* edge);
5827
5874 const GEOSGeometry * const geoms[],
5875 unsigned int ngeoms);
5876
5895 const GEOSGeometry * const geoms[],
5896 unsigned int ngeoms);
5897
5915 const GEOSGeometry * const geoms[],
5916 unsigned int ngeoms);
5917
5936 const GEOSGeometry* input,
5937 GEOSGeometry** cuts,
5938 GEOSGeometry** dangles,
5939 GEOSGeometry** invalid);
5940
5952extern GEOSGeometry GEOS_DLL *GEOSBuildArea(const GEOSGeometry* g);
5953
5955
5956/* ============================================================== */
5961
5981extern GEOSGeometry GEOS_DLL *GEOSDensify(
5982 const GEOSGeometry* g,
5983 double tolerance);
5984
6002extern GEOSGeometry GEOS_DLL *GEOSLineMerge(const GEOSGeometry* g);
6003
6020extern size_t GEOS_DLL *GEOSMinimumSpanningTree(const GEOSGeometry * const geoms[], unsigned int ngeoms);
6021
6041
6058 const GEOSGeometry* g,
6059 double start_fraction,
6060 double end_fraction);
6061
6076extern GEOSGeometry GEOS_DLL *GEOSReverse(const GEOSGeometry* g);
6077
6094 const GEOSGeometry* g,
6095 double tolerance);
6096
6116 const GEOSGeometry* g,
6117 double tolerance);
6118
6136 const GEOSGeometry* g);
6137
6156extern int GEOS_DLL GEOSHilbertCode(
6157 const GEOSGeometry *geom,
6158 const GEOSGeometry* extent,
6159 unsigned int level,
6160 unsigned int *code
6161);
6162
6181 const GEOSGeometry* g,
6182 GEOSTransformXYCallback callback,
6183 void* userdata);
6184
6203 const GEOSGeometry* g,
6204 GEOSTransformXYZCallback callback,
6205 void* userdata);
6206
6228extern GEOSGeometry GEOS_DLL *GEOSSnap(
6229 const GEOSGeometry* input,
6230 const GEOSGeometry* snap_target,
6231 double tolerance);
6232
6266 const GEOSGeometry *g,
6267 double gridSize,
6268 int flags);
6269
6271
6272/* ============================================================== */
6273
6278
6290 const GEOSGeometry* g,
6291 const GEOSCurveToLineParams* params);
6292
6293extern GEOSCurveToLineParams GEOS_DLL *GEOSCurveToLineParams_create();
6294
6295extern void GEOS_DLL GEOSCurveToLineParams_destroy(GEOSCurveToLineParams* params);
6296
6306 GEOSCurveToLineParams* params,
6307 double tolerance);
6308
6318 GEOSCurveToLineParams* params,
6319 double tolerance);
6320
6332 const GEOSGeometry* g,
6333 const GEOSLineToCurveParams* params);
6334
6335extern GEOSLineToCurveParams GEOS_DLL *GEOSLineToCurveParams_create();
6336
6337extern void GEOS_DLL GEOSLineToCurveParams_destroy(GEOSLineToCurveParams* params);
6338
6351 GEOSLineToCurveParams* params,
6352 double tolerance);
6353
6367 GEOSLineToCurveParams* params,
6368 double tolerance);
6369
6385 GEOSLineToCurveParams* params,
6386 double tolerance);
6387
6389
6390/* ============================================================== */
6395
6404extern char GEOS_DLL GEOSDisjoint(const GEOSGeometry* g1, const GEOSGeometry* g2);
6405
6415extern char GEOS_DLL GEOSTouches(const GEOSGeometry* g1, const GEOSGeometry* g2);
6416
6425extern char GEOS_DLL GEOSIntersects(const GEOSGeometry* g1, const GEOSGeometry* g2);
6426
6436extern char GEOS_DLL GEOSCrosses(const GEOSGeometry* g1, const GEOSGeometry* g2);
6437
6447extern char GEOS_DLL GEOSWithin(const GEOSGeometry* g1, const GEOSGeometry* g2);
6448
6458extern char GEOS_DLL GEOSContains(const GEOSGeometry* g1, const GEOSGeometry* g2);
6459
6469extern char GEOS_DLL GEOSOverlaps(const GEOSGeometry* g1, const GEOSGeometry* g2);
6470
6479extern char GEOS_DLL GEOSEquals(const GEOSGeometry* g1, const GEOSGeometry* g2);
6480
6491extern char GEOS_DLL GEOSCovers(const GEOSGeometry* g1, const GEOSGeometry* g2);
6492
6503extern char GEOS_DLL GEOSCoveredBy(const GEOSGeometry* g1, const GEOSGeometry* g2);
6504
6525extern char GEOS_DLL GEOSEqualsExact(
6526 const GEOSGeometry* g1,
6527 const GEOSGeometry* g2,
6528 double tolerance);
6529
6544extern char GEOS_DLL GEOSEqualsIdentical(
6545 const GEOSGeometry* g1,
6546 const GEOSGeometry* g2);
6547
6563extern char GEOS_DLL GEOSRelatePattern(
6564 const GEOSGeometry* g1,
6565 const GEOSGeometry* g2,
6566 const char *imPattern);
6567
6578extern char GEOS_DLL *GEOSRelate(
6579 const GEOSGeometry* g1,
6580 const GEOSGeometry* g2);
6581
6591extern char GEOS_DLL GEOSRelatePatternMatch(
6592 const char *intMatrix,
6593 const char *imPattern);
6594
6608extern char GEOS_DLL *GEOSRelateBoundaryNodeRule(
6609 const GEOSGeometry* g1,
6610 const GEOSGeometry* g2,
6611 int bnr);
6612
6614
6615/* ========== Prepared Geometry Binary predicates ========== */
6616
6628
6642extern const GEOSPreparedGeometry GEOS_DLL *GEOSPrepare(const GEOSGeometry* g);
6643
6652extern void GEOS_DLL GEOSPreparedGeom_destroy(const GEOSPreparedGeometry* g);
6653
6664extern char GEOS_DLL GEOSPreparedContains(
6665 const GEOSPreparedGeometry* pg1,
6666 const GEOSGeometry* g2);
6667
6679extern char GEOS_DLL GEOSPreparedContainsXY(
6680 const GEOSPreparedGeometry* pg1,
6681 double x,
6682 double y);
6683
6694extern char GEOS_DLL GEOSPreparedContainsProperly(
6695 const GEOSPreparedGeometry* pg1,
6696 const GEOSGeometry* g2);
6697
6708extern char GEOS_DLL GEOSPreparedCoveredBy(
6709 const GEOSPreparedGeometry* pg1,
6710 const GEOSGeometry* g2);
6711
6722extern char GEOS_DLL GEOSPreparedCovers(
6723 const GEOSPreparedGeometry* pg1,
6724 const GEOSGeometry* g2);
6725
6736extern char GEOS_DLL GEOSPreparedCrosses(
6737 const GEOSPreparedGeometry* pg1,
6738 const GEOSGeometry* g2);
6739
6750extern char GEOS_DLL GEOSPreparedDisjoint(
6751 const GEOSPreparedGeometry* pg1,
6752 const GEOSGeometry* g2);
6753
6764extern char GEOS_DLL GEOSPreparedIntersects(
6765 const GEOSPreparedGeometry* pg1,
6766 const GEOSGeometry* g2);
6767
6779extern char GEOS_DLL GEOSPreparedIntersectsXY(
6780 const GEOSPreparedGeometry* pg1,
6781 double x,
6782 double y);
6783
6794extern char GEOS_DLL GEOSPreparedOverlaps(
6795 const GEOSPreparedGeometry* pg1,
6796 const GEOSGeometry* g2);
6797
6808extern char GEOS_DLL GEOSPreparedTouches(
6809 const GEOSPreparedGeometry* pg1,
6810 const GEOSGeometry* g2);
6811
6822extern char GEOS_DLL GEOSPreparedWithin(
6823 const GEOSPreparedGeometry* pg1,
6824 const GEOSGeometry* g2);
6825
6839extern char GEOS_DLL * GEOSPreparedRelate(
6840 const GEOSPreparedGeometry* pg1,
6841 const GEOSGeometry* g2);
6842
6859extern char GEOS_DLL GEOSPreparedRelatePattern(
6860 const GEOSPreparedGeometry* pg1,
6861 const GEOSGeometry* g2,
6862 const char* imPattern);
6863
6877 const GEOSPreparedGeometry* pg1,
6878 const GEOSGeometry* g2);
6879
6893extern int GEOS_DLL GEOSPreparedDistance(
6894 const GEOSPreparedGeometry* pg1,
6895 const GEOSGeometry* g2,
6896 double *dist);
6897
6912extern char GEOS_DLL GEOSPreparedDistanceWithin(
6913 const GEOSPreparedGeometry* pg1,
6914 const GEOSGeometry* g2,
6915 double dist);
6916
6918
6919/* ========== STRtree functions ========== */
6925
6938extern GEOSSTRtree GEOS_DLL *GEOSSTRtree_create(size_t nodeCapacity);
6939
6952extern int GEOS_DLL GEOSSTRtree_build(GEOSSTRtree *tree);
6953
6966extern void GEOS_DLL GEOSSTRtree_insert(
6967 GEOSSTRtree *tree,
6968 const GEOSGeometry *g,
6969 void *item);
6970
6985extern void GEOS_DLL GEOSSTRtree_query(
6986 GEOSSTRtree *tree,
6987 const GEOSGeometry *g,
6988 GEOSQueryCallback callback,
6989 void *userdata);
6990
7005extern const GEOSGeometry GEOS_DLL *GEOSSTRtree_nearest(
7006 GEOSSTRtree *tree,
7007 const GEOSGeometry* geom);
7008
7029extern const void GEOS_DLL *GEOSSTRtree_nearest_generic(
7030 GEOSSTRtree *tree,
7031 const void* item,
7032 const GEOSGeometry* itemEnvelope,
7033 GEOSDistanceCallback distancefn,
7034 void* userdata);
7035
7046extern void GEOS_DLL GEOSSTRtree_iterate(
7047 GEOSSTRtree *tree,
7048 GEOSQueryCallback callback,
7049 void *userdata);
7050
7065extern char GEOS_DLL GEOSSTRtree_remove(
7066 GEOSSTRtree *tree,
7067 const GEOSGeometry *g,
7068 void *item);
7069
7080extern void GEOS_DLL GEOSSTRtree_destroy(GEOSSTRtree *tree);
7081
7083
7084/* ========== Algorithms ====================================================== */
7089
7108extern int GEOS_DLL GEOSSegmentIntersection(
7109 double ax0, double ay0,
7110 double ax1, double ay1,
7111 double bx0, double by0,
7112 double bx1, double by1,
7113 double* cx, double* cy);
7114
7130extern int GEOS_DLL GEOSOrientationIndex(
7131 double Ax, double Ay,
7132 double Bx, double By,
7133 double Px, double Py);
7134
7136
7137/* ========= Reader and Writer APIs ========= */
7138
7143/* ========= WKT Reader ========= */
7144
7151
7157extern void GEOS_DLL GEOSWKTReader_destroy(GEOSWKTReader* reader);
7158
7168 GEOSWKTReader* reader,
7169 const char *wkt);
7170
7180 GEOSWKTReader *reader,
7181 char doFix);
7182
7183/* ========= WKT Writer ========= */
7184
7191
7197extern void GEOS_DLL GEOSWKTWriter_destroy(
7198 GEOSWKTWriter* writer);
7199
7209extern char GEOS_DLL *GEOSWKTWriter_write(
7210 GEOSWKTWriter* writer,
7211 const GEOSGeometry* g);
7212
7227extern void GEOS_DLL GEOSWKTWriter_setTrim(
7228 GEOSWKTWriter *writer,
7229 char trim);
7230
7240 GEOSWKTWriter *writer,
7241 int precision);
7242
7252 GEOSWKTWriter *writer,
7253 int dim);
7254
7263
7274extern void GEOS_DLL GEOSWKTWriter_setOld3D(
7275 GEOSWKTWriter *writer,
7276 int useOld3D);
7278
7279/* ============================================================================== */
7284
7285/* ========== WKB Reader ========== */
7292
7298extern void GEOS_DLL GEOSWKBReader_destroy(
7299 GEOSWKBReader* reader);
7300
7310 GEOSWKBReader *reader,
7311 char doFix);
7312
7322 GEOSWKBReader* reader,
7323 const unsigned char *wkb,
7324 size_t size);
7325
7335 GEOSWKBReader* reader,
7336 const unsigned char *hex,
7337 size_t size);
7338
7339/* ========== WKB Writer ========== */
7340
7347
7353extern void GEOS_DLL GEOSWKBWriter_destroy(GEOSWKBWriter* writer);
7354
7364extern unsigned char GEOS_DLL *GEOSWKBWriter_write(
7365 GEOSWKBWriter* writer,
7366 const GEOSGeometry* g,
7367 size_t *size);
7368
7378extern unsigned char GEOS_DLL *GEOSWKBWriter_writeHEX(
7379 GEOSWKBWriter* writer,
7380 const GEOSGeometry* g,
7381 size_t *size);
7382
7392 const GEOSWKBWriter* writer);
7393
7402 GEOSWKBWriter* writer,
7403 int newDimension);
7404
7414extern int GEOS_DLL GEOSWKBWriter_getByteOrder(
7415 const GEOSWKBWriter* writer);
7416
7424extern void GEOS_DLL GEOSWKBWriter_setByteOrder(
7425 GEOSWKBWriter* writer,
7426 int byteOrder);
7427
7442extern int GEOS_DLL GEOSWKBWriter_getFlavor(
7443 const GEOSWKBWriter* writer);
7444
7453extern void GEOS_DLL GEOSWKBWriter_setFlavor(
7454 GEOSWKBWriter* writer,
7455 int flavor);
7456
7462extern char GEOS_DLL GEOSWKBWriter_getIncludeSRID(
7463 const GEOSWKBWriter* writer);
7464
7472extern void GEOS_DLL GEOSWKBWriter_setIncludeSRID(
7473 GEOSWKBWriter* writer,
7474 const char writeSRID);
7475
7477
7478/* ============================================================================= */
7483/* ========= GeoJSON Reader ========= */
7484
7492
7499extern void GEOS_DLL GEOSGeoJSONReader_destroy(GEOSGeoJSONReader* reader);
7500
7512 GEOSGeoJSONReader* reader,
7513 const char *geojson);
7514
7515/* ========= GeoJSON Writer ========= */
7516
7524
7531extern void GEOS_DLL GEOSGeoJSONWriter_destroy(GEOSGeoJSONWriter* writer);
7532
7544 GEOSGeoJSONWriter* writer,
7545 const GEOSGeometry* g,
7546 int indent);
7547
7557 GEOSGeoJSONWriter *writer,
7558 int dim);
7559
7568
7570
7571#endif /* #ifndef GEOS_USE_ONLY_R_API */
7572
7573/* ====================================================================== */
7574/* DEPRECATIONS */
7575/* ====================================================================== */
7576
7582
7587 const GEOSGeometry* g,
7588 double width, int quadsegs,
7589 int joinStyle, double mitreLimit,
7590 int leftSide);
7591
7596 GEOSContextHandle_t handle,
7597 const GEOSGeometry* g,
7598 double width, int quadsegs,
7599 int joinStyle, double mitreLimit,
7600 int leftSide);
7601
7607 GEOSMessageHandler notice_function,
7608 GEOSMessageHandler error_function);
7609
7613extern void GEOS_DLL finishGEOS_r(GEOSContextHandle_t handle);
7614
7619 GEOSContextHandle_t handle,
7620 const char *wkt);
7621
7625extern char GEOS_DLL *GEOSGeomToWKT_r(
7626 GEOSContextHandle_t handle,
7627 const GEOSGeometry* g);
7628
7632extern int GEOS_DLL GEOS_getWKBOutputDims_r(
7633 GEOSContextHandle_t handle);
7634
7638extern int GEOS_DLL GEOS_setWKBOutputDims_r(
7639 GEOSContextHandle_t handle,
7640 int newDims);
7641
7645extern int GEOS_DLL GEOS_getWKBByteOrder_r(
7646 GEOSContextHandle_t handle);
7647
7651extern int GEOS_DLL GEOS_setWKBByteOrder_r(
7652 GEOSContextHandle_t handle,
7653 int byteOrder);
7654
7659 GEOSContextHandle_t handle,
7660 const unsigned char *wkb,
7661 size_t size);
7662
7666extern unsigned char GEOS_DLL *GEOSGeomToWKB_buf_r(
7667 GEOSContextHandle_t handle,
7668 const GEOSGeometry* g,
7669 size_t *size);
7670
7675 GEOSContextHandle_t handle,
7676 const unsigned char *hex,
7677 size_t size);
7678
7682extern unsigned char GEOS_DLL *GEOSGeomToHEX_buf_r(
7683 GEOSContextHandle_t handle,
7684 const GEOSGeometry* g,
7685 size_t *size);
7686
7690extern GEOSGeometry GEOS_DLL *GEOSGeomFromWKT(const char *wkt);
7691
7695extern char GEOS_DLL *GEOSGeomToWKT(const GEOSGeometry* g);
7696
7700extern int GEOS_DLL GEOS_getWKBOutputDims(void);
7701
7705extern int GEOS_DLL GEOS_setWKBOutputDims(int newDims);
7706
7710extern int GEOS_DLL GEOS_getWKBByteOrder(void);
7711
7715extern int GEOS_DLL GEOS_setWKBByteOrder(int byteOrder);
7716
7720extern GEOSGeometry GEOS_DLL *GEOSGeomFromWKB_buf(const unsigned char *wkb, size_t size);
7721
7725extern unsigned char GEOS_DLL *GEOSGeomToWKB_buf(const GEOSGeometry* g, size_t *size);
7726
7730extern GEOSGeometry GEOS_DLL *GEOSGeomFromHEX_buf(const unsigned char *hex, size_t size);
7731
7735extern unsigned char GEOS_DLL *GEOSGeomToHEX_buf(const GEOSGeometry* g, size_t *size);
7736
7741
7746 GEOSContextHandle_t handle,
7747 const GEOSGeometry* g);
7748
7750
7751/* ====================================================================== */
7752/* END DEPRECATIONS */
7753/* ====================================================================== */
7754
7755
7756#ifdef __cplusplus
7757} // extern "C"
7758#endif
7759
7760#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:2267
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:2253
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:5745
@ GEOS_VORONOI_PRESERVE_ORDER
Definition geos_c.h:5751
@ GEOS_VORONOI_ONLY_EDGES
Definition geos_c.h:5747
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:1726
@ GEOSVALID_ALLOW_SELFTOUCHING_RING_FORMING_HOLE
Definition geos_c.h:1728
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:2260
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:2246
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:2239
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:1683
@ GEOSRELATE_BNR_OGC
Definition geos_c.h:1687
@ GEOSRELATE_BNR_MULTIVALENT_ENDPOINT
Definition geos_c.h:1691
@ GEOSRELATE_BNR_ENDPOINT
Definition geos_c.h:1689
@ GEOSRELATE_BNR_MOD2
Definition geos_c.h:1685
@ GEOSRELATE_BNR_MONOVALENT_ENDPOINT
Definition geos_c.h:1693
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:5477
@ GEOSHULL_PARAM_AREA_RATIO
Definition geos_c.h:5481
@ GEOSHULL_PARAM_VERTEX_RATIO
Definition geos_c.h:5479
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:2274
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:1882
@ GEOS_PREC_NO_TOPO
Definition geos_c.h:1886
@ GEOS_PREC_KEEP_COLLAPSED
Definition geos_c.h:1888
@ GEOS_PREC_VALID_OUTPUT
Definition geos_c.h:1884
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:1763
@ GEOS_MAKE_VALID_LINEWORK
Definition geos_c.h:1767
@ GEOS_MAKE_VALID_STRUCTURE
Definition geos_c.h:1772
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)
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