GEOS 3.15.0dev
geos_c.h
Go to the documentation of this file.
1/************************************************************************
2 *
3 * C-Wrapper for GEOS library
4 *
5 * Copyright (C) 2010 2011 Sandro Santilli <strk@kbt.io>
6 * Copyright (C) 2005 Refractions Research Inc.
7 *
8 * This is free software; you can redistribute and/or modify it under
9 * the terms of the GNU Lesser General Public Licence as published
10 * by the Free Software Foundation.
11 * See the COPYING file for more information.
12 ***********************************************************************/
13
40#ifndef GEOS_C_H_INCLUDED
41#define GEOS_C_H_INCLUDED
42
43#ifndef __cplusplus
44# include <stddef.h> /* for size_t definition */
45#else
46# include <cstddef>
47using std::size_t;
48#endif
49
50#ifdef __cplusplus
51extern "C" {
52#endif
53
54/* ====================================================================== */
55/* Version */
56/* ====================================================================== */
57
60#ifndef GEOS_VERSION_MAJOR
61#define GEOS_VERSION_MAJOR 3
62#endif
63#ifndef GEOS_VERSION_MINOR
64#define GEOS_VERSION_MINOR 15
65#endif
66#ifndef GEOS_VERSION_PATCH
67#define GEOS_VERSION_PATCH 0dev
68#endif
69#ifndef GEOS_VERSION
70#define GEOS_VERSION "3.15.0dev"
71#endif
72#ifndef GEOS_JTS_PORT
73#define GEOS_JTS_PORT "1.18.0"
74#endif
75
76#define GEOS_CAPI_VERSION_MAJOR 1
77#define GEOS_CAPI_VERSION_MINOR 21
78#define GEOS_CAPI_VERSION_PATCH 0
79#define GEOS_CAPI_VERSION "3.15.0dev-CAPI-1.21.0"
80
81#define GEOS_CAPI_FIRST_INTERFACE GEOS_CAPI_VERSION_MAJOR
82#define GEOS_CAPI_LAST_INTERFACE (GEOS_CAPI_VERSION_MAJOR+GEOS_CAPI_VERSION_MINOR)
83
86#include <geos/export.h>
87
88
95typedef struct GEOSContextHandle_HS *GEOSContextHandle_t;
96
105typedef void (*GEOSMessageHandler)(GEOS_PRINTF_FORMAT const char *fmt, ...)
106 GEOS_PRINTF_FORMAT_ATTR(1, 2);
107
118typedef void (*GEOSMessageHandler_r)(const char *message, void *userdata);
119
120/*
121* When we're included by geos_c.cpp, these types are #defined to the
122* C++ definitions via preprocessor. We don't touch them to allow the
123* compiler to cross-check the declarations. However, for all "normal"
124* C-API users, we need to define these types as "opaque" struct pointers, as
125* those clients don't have access to the original C++ headers, by design.
126*/
127#ifndef GEOSGeometry
128
140typedef struct GEOSGeom_t GEOSGeometry;
141
147typedef struct GEOSPrepGeom_t GEOSPreparedGeometry;
148
155typedef struct GEOSCoordSeq_t GEOSCoordSequence;
156
162typedef struct GEOSSTRtree_t GEOSSTRtree;
163
169typedef struct GEOSBufParams_t GEOSBufferParams;
170
176typedef struct GEOSCoverageCleanParams_t GEOSCoverageCleanParams;
177
183typedef struct GEOSMakeValidParams_t GEOSMakeValidParams;
184
189typedef struct GEOSClusterInfo_t GEOSClusterInfo;
190
196typedef struct GEOSCurveToLineParams_t GEOSCurveToLineParams;
197
203typedef struct GEOSLineToCurveParams_t GEOSLineToCurveParams;
204
205#endif
206
209/*
210* These are compatibility definitions for source compatibility
211* with GEOS 2.X clients relying on that type.
212*/
213typedef GEOSGeometry* GEOSGeom;
214typedef GEOSCoordSequence* GEOSCoordSeq;
215
242 GEOS_CIRCULARSTRING,
243 GEOS_COMPOUNDCURVE,
244 GEOS_CURVEPOLYGON,
245 GEOS_MULTICURVE,
246 GEOS_MULTISURFACE,
247};
248
261
277
292
300typedef void (*GEOSQueryCallback)(void *item, void *userdata);
301
319typedef int (*GEOSDistanceCallback)(
320 const void* item1,
321 const void* item2,
322 double* distance,
323 void* userdata);
324
325
339 double* x,
340 double* y,
341 void* userdata);
342
343
358 double* x,
359 double* y,
360 double* z,
361 void* userdata);
362
363
364/* ========== Interruption ========== */
373typedef void (GEOSInterruptCallback)(void);
374
383typedef int (GEOSContextInterruptCallback)(void*);
384
397
411 GEOSContextHandle_t extHandle,
413 void* userData);
414
421extern void GEOS_DLL GEOS_interruptRequest(void);
422
427extern void GEOS_DLL GEOS_interruptThread(void);
428
433extern void GEOS_DLL GEOS_interruptCancel(void);
434
435/* ========== Initialization and Cleanup ========== */
436
445extern GEOSContextHandle_t GEOS_DLL GEOS_init_r(void);
446
454extern void GEOS_DLL GEOS_finish_r(GEOSContextHandle_t handle);
455
465 GEOSContextHandle_t extHandle,
467
479 GEOSContextHandle_t extHandle,
481
492 GEOSContextHandle_t extHandle,
494 void *userData);
495
508 GEOSContextHandle_t extHandle,
510 void *userData);
511
525 GEOSContextHandle_t extHandle,
526 const GEOSCurveToLineParams* params);
527
541 GEOSContextHandle_t extHandle,
542 const GEOSLineToCurveParams* params);
543
544/* ========== Coordinate Sequence functions ========== */
545
548 GEOSContextHandle_t handle,
549 unsigned int size,
550 unsigned int dims);
551
554 GEOSContextHandle_t handle,
555 unsigned int size,
556 int hasZ,
557 int hasM);
558
561 GEOSContextHandle_t handle,
562 const double* buf,
563 unsigned int size,
564 int hasZ,
565 int hasM);
566
569 GEOSContextHandle_t handle,
570 const double* x,
571 const double* y,
572 const double* z,
573 const double* m,
574 unsigned int size);
575
577extern int GEOS_DLL GEOSCoordSeq_copyToBuffer_r(
578 GEOSContextHandle_t handle,
579 const GEOSCoordSequence* s,
580 double* buf,
581 int hasZ,
582 int hasM);
583
585extern int GEOS_DLL GEOSCoordSeq_copyToArrays_r(
586 GEOSContextHandle_t handle,
587 const GEOSCoordSequence* s,
588 double* x,
589 double* y,
590 double* z,
591 double* m);
592
595 GEOSContextHandle_t handle,
596 const GEOSCoordSequence* s);
597
599extern void GEOS_DLL GEOSCoordSeq_destroy_r(
600 GEOSContextHandle_t handle,
602
604extern char GEOS_DLL GEOSCoordSeq_hasZ_r(
605 GEOSContextHandle_t handle,
607
609extern char GEOS_DLL GEOSCoordSeq_hasM_r(
610 GEOSContextHandle_t handle,
612
614extern int GEOS_DLL GEOSCoordSeq_setX_r(
615 GEOSContextHandle_t handle,
616 GEOSCoordSequence* s, unsigned int idx,
617 double val);
618
620extern int GEOS_DLL GEOSCoordSeq_setY_r(
621 GEOSContextHandle_t handle,
622 GEOSCoordSequence* s, unsigned int idx,
623 double val);
624
626extern int GEOS_DLL GEOSCoordSeq_setZ_r(
627 GEOSContextHandle_t handle,
628 GEOSCoordSequence* s, unsigned int idx,
629 double val);
630
632extern int GEOS_DLL GEOSCoordSeq_setM_r(
633 GEOSContextHandle_t handle,
634 GEOSCoordSequence* s, unsigned int idx,
635 double val);
636
638extern int GEOS_DLL GEOSCoordSeq_setXY_r(
639 GEOSContextHandle_t handle,
640 GEOSCoordSequence* s, unsigned int idx,
641 double x, double y);
642
644extern int GEOS_DLL GEOSCoordSeq_setXYZ_r(
645 GEOSContextHandle_t handle,
646 GEOSCoordSequence* s, unsigned int idx,
647 double x, double y, double z);
648
650extern int GEOS_DLL GEOSCoordSeq_setOrdinate_r(
651 GEOSContextHandle_t handle,
653 unsigned int idx,
654 unsigned int dim, double val);
655
657extern int GEOS_DLL GEOSCoordSeq_getX_r(
658 GEOSContextHandle_t handle,
659 const GEOSCoordSequence* s,
660 unsigned int idx, double *val);
661
663extern int GEOS_DLL GEOSCoordSeq_getY_r(
664 GEOSContextHandle_t handle,
665 const GEOSCoordSequence* s,
666 unsigned int idx, double *val);
667
669extern int GEOS_DLL GEOSCoordSeq_getZ_r(
670 GEOSContextHandle_t handle,
671 const GEOSCoordSequence* s,
672 unsigned int idx, double *val);
673
675extern int GEOS_DLL GEOSCoordSeq_getM_r(
676 GEOSContextHandle_t handle,
677 const GEOSCoordSequence* s,
678 unsigned int idx, double *val);
679
681extern int GEOS_DLL GEOSCoordSeq_getXY_r(
682 GEOSContextHandle_t handle,
683 const GEOSCoordSequence* s,
684 unsigned int idx,
685 double *x, double *y);
686
688extern int GEOS_DLL GEOSCoordSeq_getXYZ_r(
689 GEOSContextHandle_t handle,
690 const GEOSCoordSequence* s,
691 unsigned int idx,
692 double *x, double *y, double *z);
693
695extern int GEOS_DLL GEOSCoordSeq_getOrdinate_r(
696 GEOSContextHandle_t handle,
697 const GEOSCoordSequence* s,
698 unsigned int idx,
699 unsigned int dim, double *val);
700
702extern int GEOS_DLL GEOSCoordSeq_getSize_r(
703 GEOSContextHandle_t handle,
704 const GEOSCoordSequence* s,
705 unsigned int *size);
706
709 GEOSContextHandle_t handle,
710 const GEOSCoordSequence* s,
711 unsigned int *dims);
712
714extern int GEOS_DLL GEOSCoordSeq_isCCW_r(
715 GEOSContextHandle_t handle,
716 const GEOSCoordSequence* s,
717 char* is_ccw);
718
719/* ========= Linear referencing functions ========= */
720
722extern double GEOS_DLL GEOSProject_r(
723 GEOSContextHandle_t handle,
724 const GEOSGeometry *line,
725 const GEOSGeometry *point);
726
729 GEOSContextHandle_t handle,
730 const GEOSGeometry *line,
731 double d);
732
734extern double GEOS_DLL GEOSProjectNormalized_r(
735 GEOSContextHandle_t handle,
736 const GEOSGeometry *g,
737 const GEOSGeometry *p);
738
741 GEOSContextHandle_t handle,
742 const GEOSGeometry *g,
743 double d);
744
745/* ========== Buffer related functions ========== */
746
748extern GEOSGeometry GEOS_DLL *GEOSBuffer_r(
749 GEOSContextHandle_t handle,
750 const GEOSGeometry* g,
751 double width, int quadsegs);
752
768
790
793 GEOSContextHandle_t handle);
794
796extern void GEOS_DLL GEOSBufferParams_destroy_r(
797 GEOSContextHandle_t handle,
798 GEOSBufferParams* parms);
799
802 GEOSContextHandle_t handle,
804 int style);
805
808 GEOSContextHandle_t handle,
810 int joinStyle);
811
814 GEOSContextHandle_t handle,
816 double mitreLimit);
817
820 GEOSContextHandle_t handle,
822 int quadSegs);
823
826 GEOSContextHandle_t handle,
828 int singleSided);
829
832 GEOSContextHandle_t handle,
833 const GEOSGeometry* g,
834 const GEOSBufferParams* p,
835 double width);
836
839 GEOSContextHandle_t handle,
840 const GEOSGeometry* g,
841 double width, int quadsegs, int endCapStyle,
842 int joinStyle, double mitreLimit);
843
846 GEOSContextHandle_t handle,
847 const GEOSGeometry* g,
848 double tolerance);
849
852 GEOSContextHandle_t handle,
853 const GEOSGeometry* g, double width, int quadsegs,
854 int joinStyle, double mitreLimit);
855
856
857/* ========= Geometry Constructors ========= */
858
861 GEOSContextHandle_t handle,
863
866 GEOSContextHandle_t handle,
867 double x, double y);
868
871 GEOSContextHandle_t handle);
872
875 GEOSContextHandle_t handle,
877
880 GEOSContextHandle_t handle,
882
885 GEOSContextHandle_t handle);
886
889 GEOSContextHandle_t handle);
890
893 GEOSContextHandle_t handle,
894 GEOSGeometry* shell,
895 GEOSGeometry** holes,
896 unsigned int nholes);
897
900 GEOSContextHandle_t handle,
901 int type,
902 GEOSGeometry* *geoms,
903 unsigned int ngeoms);
904
907 GEOSContextHandle_t handle,
908 GEOSGeometry * collection,
909 unsigned int * ngeoms);
910
913 GEOSContextHandle_t handle, int type);
914
917 GEOSContextHandle_t handle,
918 double xmin, double ymin,
919 double xmax, double ymax);
920
923 GEOSContextHandle_t handle,
924 const GEOSGeometry* g);
925
928 GEOSContextHandle_t handle,
930
933 GEOSContextHandle_t handle);
934
937 GEOSContextHandle_t handle,
938 GEOSGeometry** curves,
939 unsigned int ncurves);
940
943 GEOSContextHandle_t handle);
944
947 GEOSContextHandle_t handle,
948 GEOSGeometry* shell,
949 GEOSGeometry** holes,
950 unsigned int nholes);
951
954 GEOSContextHandle_t handle);
955
956/* ========= Memory management ========= */
957
959extern void GEOS_DLL GEOSGeom_destroy_r(
960 GEOSContextHandle_t handle,
961 GEOSGeometry* g);
962
963/* ========= Coverages ========= */
964
966extern GEOSGeometry GEOS_DLL *
968 GEOSContextHandle_t handle,
969 const GEOSGeometry* g);
970
972extern int GEOS_DLL
974 GEOSContextHandle_t extHandle,
975 const GEOSGeometry* input,
976 double gapWidth,
977 GEOSGeometry** output);
978
980extern GEOSGeometry GEOS_DLL *
982 GEOSContextHandle_t extHandle,
983 const GEOSGeometry* input,
984 double tolerance,
985 int preserveBoundary);
986
988extern GEOSGeometry GEOS_DLL *
990 GEOSContextHandle_t handle,
991 const GEOSGeometry* input,
992 int edgetype);
993
995extern GEOSCoverageCleanParams GEOS_DLL *
997 GEOSContextHandle_t extHandle);
998
1000extern void GEOS_DLL
1002 GEOSContextHandle_t extHandle,
1003 GEOSCoverageCleanParams* params);
1004
1006extern int GEOS_DLL
1008 GEOSContextHandle_t extHandle,
1010 double snappingDistance);
1011
1013extern int GEOS_DLL
1015 GEOSContextHandle_t extHandle,
1017 double gapMaximumWidth);
1018
1020extern int GEOS_DLL
1022 GEOSContextHandle_t extHandle,
1024 int overlapMergeStrategy);
1025
1027extern GEOSGeometry GEOS_DLL *
1029 GEOSContextHandle_t extHandle,
1030 const GEOSGeometry* input,
1031 const GEOSCoverageCleanParams* params);
1032
1034extern GEOSGeometry GEOS_DLL *
1036 GEOSContextHandle_t extHandle,
1037 const GEOSGeometry* input);
1038
1039/* ========= Topology Operations ========= */
1040
1043 GEOSContextHandle_t handle,
1044 const GEOSGeometry* g);
1045
1048 GEOSContextHandle_t handle,
1049 const GEOSGeometry* g1,
1050 const GEOSGeometry* g2);
1051
1054 GEOSContextHandle_t handle,
1055 const GEOSGeometry* g1,
1056 const GEOSGeometry* g2,
1057 double gridSize);
1058
1061 GEOSContextHandle_t handle,
1062 const GEOSGeometry* g);
1063
1066 GEOSContextHandle_t handle,
1067 const GEOSGeometry* g,
1068 double ratio,
1069 unsigned int allowHoles);
1070
1073 GEOSContextHandle_t handle,
1074 const GEOSGeometry* g,
1075 double ratio,
1076 unsigned int allowHoles);
1077
1080 GEOSContextHandle_t handle,
1081 const GEOSGeometry* g,
1082 unsigned int isOuter,
1083 double vertexNumFraction);
1084
1087 GEOSContextHandle_t handle,
1088 const GEOSGeometry* g,
1089 unsigned int isOuter,
1090 unsigned int parameterMode,
1091 double parameter);
1092
1095 GEOSContextHandle_t handle,
1096 const GEOSGeometry* g,
1097 double lengthRatio,
1098 unsigned int isTight,
1099 unsigned int isHolesAllowed);
1100
1103 GEOSContextHandle_t handle,
1104 const GEOSGeometry* g);
1105
1108 GEOSContextHandle_t handle,
1109 const GEOSGeometry* g,
1110 double tolerance);
1111
1114 GEOSContextHandle_t handle,
1115 const GEOSGeometry* g,
1116 const GEOSGeometry* boundary,
1117 double tolerance);
1118
1121 GEOSContextHandle_t handle,
1122 const GEOSGeometry* g);
1123
1126 GEOSContextHandle_t handle,
1127 const GEOSGeometry* g);
1128
1130extern int GEOS_DLL GEOSMinimumClearance_r(
1131 GEOSContextHandle_t handle,
1132 const GEOSGeometry* g,
1133 double* distance);
1134
1137 GEOSContextHandle_t handle,
1138 const GEOSGeometry* g1,
1139 const GEOSGeometry* g2);
1140
1143 GEOSContextHandle_t handle,
1144 const GEOSGeometry* g1,
1145 const GEOSGeometry* g2,
1146 double gridSize);
1147
1150 GEOSContextHandle_t handle,
1151 const GEOSGeometry* g1,
1152 const GEOSGeometry* g2);
1153
1156 GEOSContextHandle_t handle,
1157 const GEOSGeometry* g1,
1158 const GEOSGeometry* g2,
1159 double gridSize);
1160
1163 GEOSContextHandle_t handle,
1164 const GEOSGeometry* g);
1165
1167extern GEOSGeometry GEOS_DLL *GEOSUnion_r(
1168 GEOSContextHandle_t handle,
1169 const GEOSGeometry* g1,
1170 const GEOSGeometry* g2);
1171
1174 GEOSContextHandle_t handle,
1175 const GEOSGeometry* g1,
1176 const GEOSGeometry* g2,
1177 double gridSize);
1178
1181 GEOSContextHandle_t handle,
1182 const GEOSGeometry* g);
1183
1186 GEOSContextHandle_t handle,
1187 const GEOSGeometry* g,
1188 double gridSize);
1189
1192 GEOSContextHandle_t handle,
1193 const GEOSGeometry* g);
1194
1197 GEOSContextHandle_t handle,
1198 const GEOSGeometry* g);
1199
1202 GEOSContextHandle_t handle,
1203 const GEOSGeometry* g);
1204
1207 GEOSContextHandle_t handle,
1208 const GEOSGeometry* g,
1209 double* radius,
1210 GEOSGeometry** center);
1211
1213extern GEOSGeometry GEOS_DLL *GEOSNode_r(
1214 GEOSContextHandle_t handle,
1215 const GEOSGeometry* g);
1216
1218extern GEOSGeometry GEOS_DLL *GEOSSplit_r(
1219 GEOSContextHandle_t handle,
1220 const GEOSGeometry* g,
1221 const GEOSGeometry* edge);
1222
1225 GEOSContextHandle_t handle,
1226 const GEOSGeometry* g,
1227 double xmin, double ymin,
1228 double xmax, double ymax);
1229
1232 GEOSContextHandle_t handle,
1233 const GEOSGeometry* g,
1234 double xmin, double ymin,
1235 double xmax, double ymax,
1236 unsigned nx, unsigned ny,
1237 int includeExterior);
1238
1241 GEOSContextHandle_t handle,
1242 const GEOSGeometry* g,
1243 double xmin, double ymin,
1244 double xmax, double ymax,
1245 unsigned nx, unsigned ny,
1246 float* buf);
1247
1250 GEOSContextHandle_t handle,
1251 const GEOSGeometry *const geoms[],
1252 unsigned int ngeoms);
1253
1256 GEOSContextHandle_t handle,
1257 const GEOSGeometry *const geoms[],
1258 unsigned int ngems);
1259
1262 GEOSContextHandle_t handle,
1263 const GEOSGeometry * const geoms[],
1264 unsigned int ngeoms);
1265
1268 GEOSContextHandle_t handle,
1269 const GEOSGeometry* input,
1270 GEOSGeometry** cuts,
1271 GEOSGeometry** dangles,
1272 GEOSGeometry** invalidRings);
1273
1276 GEOSContextHandle_t handle,
1277 const GEOSGeometry* g);
1278
1281 GEOSContextHandle_t handle,
1282 const GEOSGeometry* g);
1283
1285extern size_t GEOS_DLL *GEOSMinimumSpanningTree_r(
1286 GEOSContextHandle_t handle,
1287 const GEOSGeometry * const geoms[],
1288 unsigned int ngeoms);
1289
1292 GEOSContextHandle_t handle,
1293 const GEOSGeometry* g);
1294
1297 GEOSContextHandle_t handle,
1298 const GEOSGeometry* g,
1299 double start_fraction,
1300 double end_fdraction);
1301
1304 GEOSContextHandle_t handle,
1305 const GEOSGeometry* g);
1306
1309 GEOSContextHandle_t handle,
1310 const GEOSGeometry* g,
1311 double tolerance);
1312
1315 GEOSContextHandle_t handle,
1316 const GEOSGeometry* g, double tolerance);
1317
1320 GEOSContextHandle_t handle,
1321 const GEOSGeometry* g);
1322
1325 GEOSContextHandle_t handle,
1326 const GEOSGeometry* g1,
1327 const GEOSGeometry* g2);
1328
1330extern GEOSGeometry GEOS_DLL *GEOSSnap_r(
1331 GEOSContextHandle_t handle,
1332 const GEOSGeometry* g1,
1333 const GEOSGeometry* g2,
1334 double tolerance);
1335
1338 GEOSContextHandle_t handle,
1339 const GEOSGeometry *g,
1340 double tolerance,
1341 int onlyEdges);
1342
1345 GEOSContextHandle_t handle,
1346 const GEOSGeometry *g);
1347
1350 GEOSContextHandle_t extHandle,
1351 const GEOSGeometry *g,
1352 const GEOSGeometry *env,
1353 double tolerance,
1354 int flags);
1355
1357extern int GEOS_DLL GEOSSegmentIntersection_r(
1358 GEOSContextHandle_t extHandle,
1359 double ax0, double ay0,
1360 double ax1, double ay1,
1361 double bx0, double by0,
1362 double bx1, double by1,
1363 double* cx, double* cy);
1364
1365/* ========= Binary predicates ========= */
1366
1368extern char GEOS_DLL GEOSDisjoint_r(
1369 GEOSContextHandle_t handle,
1370 const GEOSGeometry* g1,
1371 const GEOSGeometry* g2);
1372
1374extern char GEOS_DLL GEOSTouches_r(
1375 GEOSContextHandle_t handle,
1376 const GEOSGeometry* g1,
1377 const GEOSGeometry* g2);
1378
1380extern char GEOS_DLL GEOSIntersects_r(
1381 GEOSContextHandle_t handle,
1382 const GEOSGeometry* g1,
1383 const GEOSGeometry* g2);
1384
1386extern char GEOS_DLL GEOSCrosses_r(
1387 GEOSContextHandle_t handle,
1388 const GEOSGeometry* g1,
1389 const GEOSGeometry* g2);
1390
1392extern char GEOS_DLL GEOSWithin_r(
1393 GEOSContextHandle_t handle,
1394 const GEOSGeometry* g1,
1395 const GEOSGeometry* g2);
1396
1398extern char GEOS_DLL GEOSContains_r(
1399 GEOSContextHandle_t handle,
1400 const GEOSGeometry* g1,
1401 const GEOSGeometry* g2);
1402
1404extern char GEOS_DLL GEOSOverlaps_r(
1405 GEOSContextHandle_t handle,
1406 const GEOSGeometry* g1,
1407 const GEOSGeometry* g2);
1408
1410extern char GEOS_DLL GEOSEquals_r(
1411 GEOSContextHandle_t handle,
1412 const GEOSGeometry* g1,
1413 const GEOSGeometry* g2);
1414
1416extern char GEOS_DLL GEOSEqualsExact_r(
1417 GEOSContextHandle_t handle,
1418 const GEOSGeometry* g1,
1419 const GEOSGeometry* g2,
1420 double tolerance);
1421
1423extern char GEOS_DLL GEOSEqualsIdentical_r(
1424 GEOSContextHandle_t handle,
1425 const GEOSGeometry* g1,
1426 const GEOSGeometry* g2);
1427
1429extern char GEOS_DLL GEOSCovers_r(
1430 GEOSContextHandle_t handle,
1431 const GEOSGeometry* g1,
1432 const GEOSGeometry* g2);
1433
1435extern char GEOS_DLL GEOSCoveredBy_r(
1436 GEOSContextHandle_t handle,
1437 const GEOSGeometry* g1,
1438 const GEOSGeometry* g2);
1439
1440/* ========= Prepared Geometry Binary Predicates ========== */
1441
1444 GEOSContextHandle_t handle,
1445 const GEOSGeometry* g);
1446
1448extern void GEOS_DLL GEOSPreparedGeom_destroy_r(
1449 GEOSContextHandle_t handle,
1450 const GEOSPreparedGeometry* g);
1451
1453extern char GEOS_DLL GEOSPreparedContains_r(
1454 GEOSContextHandle_t handle,
1455 const GEOSPreparedGeometry* pg1,
1456 const GEOSGeometry* g2);
1457
1459extern char GEOS_DLL GEOSPreparedContainsXY_r(
1460 GEOSContextHandle_t handle,
1461 const GEOSPreparedGeometry* pg1,
1462 double x,
1463 double y);
1464
1467 GEOSContextHandle_t handle,
1468 const GEOSPreparedGeometry* pg1,
1469 const GEOSGeometry* g2);
1470
1472extern char GEOS_DLL GEOSPreparedCoveredBy_r(
1473 GEOSContextHandle_t handle,
1474 const GEOSPreparedGeometry* pg1,
1475 const GEOSGeometry* g2);
1476
1478extern char GEOS_DLL GEOSPreparedCovers_r(
1479 GEOSContextHandle_t handle,
1480 const GEOSPreparedGeometry* pg1,
1481 const GEOSGeometry* g2);
1482
1484extern char GEOS_DLL GEOSPreparedCrosses_r(
1485 GEOSContextHandle_t handle,
1486 const GEOSPreparedGeometry* pg1,
1487 const GEOSGeometry* g2);
1488
1490extern char GEOS_DLL GEOSPreparedDisjoint_r(
1491 GEOSContextHandle_t handle,
1492 const GEOSPreparedGeometry* pg1,
1493 const GEOSGeometry* g2);
1494
1496extern char GEOS_DLL GEOSPreparedIntersects_r(
1497 GEOSContextHandle_t handle,
1498 const GEOSPreparedGeometry* pg1,
1499 const GEOSGeometry* g2);
1500
1502extern char GEOS_DLL GEOSPreparedIntersectsXY_r(
1503 GEOSContextHandle_t handle,
1504 const GEOSPreparedGeometry* pg1,
1505 double x,
1506 double y);
1507
1509extern char GEOS_DLL GEOSPreparedOverlaps_r(
1510 GEOSContextHandle_t handle,
1511 const GEOSPreparedGeometry* pg1,
1512 const GEOSGeometry* g2);
1513
1515extern char GEOS_DLL GEOSPreparedTouches_r(
1516 GEOSContextHandle_t handle,
1517 const GEOSPreparedGeometry* pg1,
1518 const GEOSGeometry* g2);
1519
1521extern char GEOS_DLL GEOSPreparedWithin_r(
1522 GEOSContextHandle_t handle,
1523 const GEOSPreparedGeometry* pg1,
1524 const GEOSGeometry* g2);
1525
1527extern char GEOS_DLL * GEOSPreparedRelate_r(
1528 GEOSContextHandle_t handle,
1529 const GEOSPreparedGeometry* pg1,
1530 const GEOSGeometry* g2);
1531
1533extern char GEOS_DLL GEOSPreparedRelatePattern_r(
1534 GEOSContextHandle_t handle,
1535 const GEOSPreparedGeometry* pg1,
1536 const GEOSGeometry* g2,
1537 const char* im);
1538
1541 GEOSContextHandle_t handle,
1542 const GEOSPreparedGeometry* pg1,
1543 const GEOSGeometry* g2);
1544
1546extern int GEOS_DLL GEOSPreparedDistance_r(
1547 GEOSContextHandle_t handle,
1548 const GEOSPreparedGeometry* pg1,
1549 const GEOSGeometry* g2, double *dist);
1550
1552extern char GEOS_DLL GEOSPreparedDistanceWithin_r(
1553 GEOSContextHandle_t handle,
1554 const GEOSPreparedGeometry* pg1,
1555 const GEOSGeometry* g2, double dist);
1556
1557/* ========== STRtree ========== */
1558
1561 GEOSContextHandle_t handle,
1562 size_t nodeCapacity);
1563
1565extern int GEOS_DLL GEOSSTRtree_build_r(
1566 GEOSContextHandle_t handle,
1567 GEOSSTRtree *tree);
1568
1570extern void GEOS_DLL GEOSSTRtree_insert_r(
1571 GEOSContextHandle_t handle,
1572 GEOSSTRtree *tree,
1573 const GEOSGeometry *g,
1574 void *item);
1575
1577extern void GEOS_DLL GEOSSTRtree_query_r(
1578 GEOSContextHandle_t handle,
1579 GEOSSTRtree *tree,
1580 const GEOSGeometry *g,
1581 GEOSQueryCallback callback,
1582 void *userdata);
1583
1586 GEOSContextHandle_t handle,
1587 GEOSSTRtree *tree,
1588 const GEOSGeometry* geom);
1589
1591extern const void GEOS_DLL *GEOSSTRtree_nearest_generic_r(
1592 GEOSContextHandle_t handle,
1593 GEOSSTRtree *tree,
1594 const void* item,
1595 const GEOSGeometry* itemEnvelope,
1596 GEOSDistanceCallback distancefn,
1597 void* userdata);
1598
1600extern void GEOS_DLL GEOSSTRtree_iterate_r(
1601 GEOSContextHandle_t handle,
1602 GEOSSTRtree *tree,
1603 GEOSQueryCallback callback,
1604 void *userdata);
1605
1607extern char GEOS_DLL GEOSSTRtree_remove_r(
1608 GEOSContextHandle_t handle,
1609 GEOSSTRtree *tree,
1610 const GEOSGeometry *g,
1611 void *item);
1612
1614extern void GEOS_DLL GEOSSTRtree_destroy_r(
1615 GEOSContextHandle_t handle,
1616 GEOSSTRtree *tree);
1617
1618
1619/* ========= Unary predicate ========= */
1620
1622extern char GEOS_DLL GEOSisEmpty_r(
1623 GEOSContextHandle_t handle,
1624 const GEOSGeometry* g);
1625
1627extern char GEOS_DLL GEOSisSimple_r(
1628 GEOSContextHandle_t handle,
1629 const GEOSGeometry* g);
1630
1632extern char GEOS_DLL GEOSisRing_r(
1633 GEOSContextHandle_t handle,
1634 const GEOSGeometry* g);
1635
1637extern char GEOS_DLL GEOSHasZ_r(
1638 GEOSContextHandle_t handle,
1639 const GEOSGeometry* g);
1640
1642extern char GEOS_DLL GEOSHasM_r(
1643 GEOSContextHandle_t handle,
1644 const GEOSGeometry* g);
1645
1647extern char GEOS_DLL GEOSisClosed_r(
1648 GEOSContextHandle_t handle,
1649 const GEOSGeometry *g);
1650
1651/* ========== Dimensionally Extended 9 Intersection Model ========== */
1652
1669
1671extern char GEOS_DLL GEOSRelatePattern_r(
1672 GEOSContextHandle_t handle,
1673 const GEOSGeometry* g1,
1674 const GEOSGeometry* g2,
1675 const char *imPattern);
1676
1678extern char GEOS_DLL *GEOSRelate_r(
1679 GEOSContextHandle_t handle,
1680 const GEOSGeometry* g1,
1681 const GEOSGeometry* g2);
1682
1684extern char GEOS_DLL GEOSRelatePatternMatch_r(
1685 GEOSContextHandle_t handle,
1686 const char *intMatrix,
1687 const char *imPattern);
1688
1690extern char GEOS_DLL *GEOSRelateBoundaryNodeRule_r(
1691 GEOSContextHandle_t handle,
1692 const GEOSGeometry* g1,
1693 const GEOSGeometry* g2,
1694 int bnr);
1695
1696/* ========= Validity checking ========= */
1697
1704
1706extern char GEOS_DLL GEOSisValid_r(
1707 GEOSContextHandle_t handle,
1708 const GEOSGeometry* g);
1709
1711extern char GEOS_DLL *GEOSisValidReason_r(
1712 GEOSContextHandle_t handle,
1713 const GEOSGeometry* g);
1714
1716extern char GEOS_DLL GEOSisSimpleDetail_r(
1717 GEOSContextHandle_t handle,
1718 const GEOSGeometry* g,
1719 int findAllLocations,
1720 GEOSGeometry** location);
1721
1723extern char GEOS_DLL GEOSisValidDetail_r(
1724 GEOSContextHandle_t handle,
1725 const GEOSGeometry* g,
1726 int flags,
1727 char** reason,
1728 GEOSGeometry** location);
1729
1730/* ========== Make Valid ========== */
1731
1748
1751 GEOSContextHandle_t extHandle);
1752
1755 GEOSContextHandle_t handle,
1756 GEOSMakeValidParams* parms);
1757
1760 GEOSContextHandle_t handle,
1762 int style);
1763
1766 GEOSContextHandle_t handle,
1768 enum GEOSMakeValidMethods method);
1769
1772 GEOSContextHandle_t handle,
1773 const GEOSGeometry* g);
1774
1777 GEOSContextHandle_t handle,
1778 const GEOSGeometry* g,
1779 const GEOSMakeValidParams* makeValidParams);
1780
1783 GEOSContextHandle_t handle,
1784 const GEOSGeometry* g,
1785 double tolerance);
1786
1787/* ========== Geometry info ========== */
1788
1790/* Return NULL on exception, result must be freed by caller. */
1791extern char GEOS_DLL *GEOSGeomType_r(
1792 GEOSContextHandle_t handle,
1793 const GEOSGeometry* g);
1794
1796extern int GEOS_DLL GEOSGeomTypeId_r(
1797 GEOSContextHandle_t handle,
1798 const GEOSGeometry* g);
1799
1801extern int GEOS_DLL GEOSGetSRID_r(
1802 GEOSContextHandle_t handle,
1803 const GEOSGeometry* g);
1804
1806extern void GEOS_DLL GEOSSetSRID_r(
1807 GEOSContextHandle_t handle,
1808 GEOSGeometry* g, int SRID);
1809
1811extern void GEOS_DLL *GEOSGeom_getUserData_r(
1812 GEOSContextHandle_t handle,
1813 const GEOSGeometry* g);
1814
1816extern void GEOS_DLL GEOSGeom_setUserData_r(
1817 GEOSContextHandle_t handle,
1818 GEOSGeometry* g,
1819 void* userData);
1820
1822extern int GEOS_DLL GEOSGetNumGeometries_r(
1823 GEOSContextHandle_t handle,
1824 const GEOSGeometry* g);
1825
1827extern const GEOSGeometry GEOS_DLL *GEOSGetGeometryN_r(
1828 GEOSContextHandle_t handle,
1829 const GEOSGeometry* g, int n);
1830
1832extern int GEOS_DLL GEOSGetNumCurves_r(
1833 GEOSContextHandle_t handle,
1834 const GEOSGeometry* g);
1835
1837extern const GEOSGeometry GEOS_DLL *GEOSGetCurveN_r(
1838 GEOSContextHandle_t handle,
1839 const GEOSGeometry* g, int n);
1840
1842extern int GEOS_DLL GEOSNormalize_r(
1843 GEOSContextHandle_t handle,
1844 GEOSGeometry* g);
1845
1847extern int GEOS_DLL GEOSOrientPolygons_r(
1848 GEOSContextHandle_t handle,
1849 GEOSGeometry* g,
1850 int exteriorCW);
1851
1864
1867 GEOSContextHandle_t handle,
1868 const GEOSGeometry *g,
1869 double gridSize,
1870 int flags);
1871
1873extern double GEOS_DLL GEOSGeom_getPrecision_r(
1874 GEOSContextHandle_t handle,
1875 const GEOSGeometry *g);
1876
1879 GEOSContextHandle_t handle,
1880 const GEOSGeometry* g,
1881 const GEOSCurveToLineParams* params);
1882
1885 GEOSContextHandle_t extHandle,
1886 GEOSCurveToLineParams* params,
1887 double tolerance);
1888
1891 GEOSContextHandle_t extHandle,
1892 GEOSCurveToLineParams* params,
1893 double tolerance);
1894
1897 GEOSContextHandle_t handle,
1898 const GEOSGeometry* g,
1899 const GEOSLineToCurveParams* params);
1900
1903 GEOSContextHandle_t extHandle,
1904 GEOSLineToCurveParams* params,
1905 double tolerance);
1906
1909 GEOSContextHandle_t extHandle,
1910 GEOSLineToCurveParams* params,
1911 double tolerance);
1912
1915 GEOSContextHandle_t extHandle,
1916 GEOSLineToCurveParams* params,
1917 double tolerance);
1918
1920extern int GEOS_DLL GEOSGetNumInteriorRings_r(
1921 GEOSContextHandle_t handle,
1922 const GEOSGeometry* g);
1923
1925extern int GEOS_DLL GEOSGeomGetNumPoints_r(
1926 GEOSContextHandle_t handle,
1927 const GEOSGeometry* g);
1928
1930extern int GEOS_DLL GEOSGeomGetX_r(
1931 GEOSContextHandle_t handle,
1932 const GEOSGeometry *g,
1933 double *x);
1934
1936extern int GEOS_DLL GEOSGeomGetY_r(
1937 GEOSContextHandle_t handle,
1938 const GEOSGeometry *g,
1939 double *y);
1940
1942extern int GEOS_DLL GEOSGeomGetZ_r(
1943 GEOSContextHandle_t handle,
1944 const GEOSGeometry *g,
1945 double *z);
1946
1948extern int GEOS_DLL GEOSGeomGetM_r(
1949 GEOSContextHandle_t handle,
1950 const GEOSGeometry *g,
1951 double *m);
1952
1955 GEOSContextHandle_t handle,
1956 const GEOSGeometry* g, int n);
1957
1960 GEOSContextHandle_t handle,
1961 const GEOSGeometry* g);
1962
1964extern int GEOS_DLL GEOSGetNumCoordinates_r(
1965 GEOSContextHandle_t handle,
1966 const GEOSGeometry* g);
1967
1970 GEOSContextHandle_t handle,
1971 const GEOSGeometry* g);
1972
1974extern int GEOS_DLL GEOSGeom_getDimensions_r(
1975 GEOSContextHandle_t handle,
1976 const GEOSGeometry* g);
1977
1980 GEOSContextHandle_t handle,
1981 const GEOSGeometry* g);
1982
1984extern int GEOS_DLL GEOSGeom_getXMin_r(
1985 GEOSContextHandle_t handle,
1986 const GEOSGeometry* g,
1987 double* value);
1988
1990extern int GEOS_DLL GEOSGeom_getYMin_r(
1991 GEOSContextHandle_t handle,
1992 const GEOSGeometry* g,
1993 double* value);
1994
1996extern int GEOS_DLL GEOSGeom_getXMax_r(
1997 GEOSContextHandle_t handle,
1998 const GEOSGeometry* g,
1999 double* value);
2000
2002extern int GEOS_DLL GEOSGeom_getYMax_r(
2003 GEOSContextHandle_t handle,
2004 const GEOSGeometry* g,
2005 double* value);
2006
2008extern int GEOS_DLL GEOSGeom_getExtent_r(
2009 GEOSContextHandle_t handle,
2010 const GEOSGeometry* g,
2011 double* xmin,
2012 double* ymin,
2013 double* xmax,
2014 double* ymax);
2015
2018 GEOSContextHandle_t handle,
2019 const GEOSGeometry *g,
2020 int n);
2021
2024 GEOSContextHandle_t handle,
2025 const GEOSGeometry *g);
2026
2029 GEOSContextHandle_t handle,
2030 const GEOSGeometry *g);
2031
2032/* ========= Misc functions ========= */
2033
2035extern int GEOS_DLL GEOSArea_r(
2036 GEOSContextHandle_t handle,
2037 const GEOSGeometry* g,
2038 double *area);
2039
2041extern int GEOS_DLL GEOSLength_r(
2042 GEOSContextHandle_t handle,
2043 const GEOSGeometry* g,
2044 double *length);
2045
2047extern int GEOS_DLL GEOSDistance_r(
2048 GEOSContextHandle_t handle,
2049 const GEOSGeometry* g1,
2050 const GEOSGeometry* g2,
2051 double *dist);
2052
2054extern char GEOS_DLL GEOSDistanceWithin_r(
2055 GEOSContextHandle_t handle,
2056 const GEOSGeometry* g1,
2057 const GEOSGeometry* g2,
2058 double dist);
2059
2061extern int GEOS_DLL GEOSDistanceIndexed_r(
2062 GEOSContextHandle_t handle,
2063 const GEOSGeometry* g1,
2064 const GEOSGeometry* g2,
2065 double *dist);
2066
2068extern int GEOS_DLL GEOSHausdorffDistance_r(
2069 GEOSContextHandle_t handle,
2070 const GEOSGeometry *g1,
2071 const GEOSGeometry *g2,
2072 double *dist);
2073
2076 GEOSContextHandle_t handle,
2077 const GEOSGeometry *g1,
2078 const GEOSGeometry *g2,
2079 double *dist,
2080 double *p1x, double *p1y,
2081 double *p2x, double *p2y);
2082
2085 GEOSContextHandle_t handle,
2086 const GEOSGeometry *g1,
2087 const GEOSGeometry *g2,
2088 double densifyFrac, double *dist);
2089
2092 GEOSContextHandle_t handle,
2093 const GEOSGeometry *g1,
2094 const GEOSGeometry *g2,
2095 double densifyFrac, double* dist,
2096 double *p1x, double *p1y,
2097 double *p2x, double *p2y);
2098
2100extern int GEOS_DLL GEOSFrechetDistance_r(
2101 GEOSContextHandle_t handle,
2102 const GEOSGeometry *g1,
2103 const GEOSGeometry *g2,
2104 double *dist);
2105
2108 GEOSContextHandle_t handle,
2109 const GEOSGeometry *g1,
2110 const GEOSGeometry *g2,
2111 double densifyFrac,
2112 double *dist);
2113
2114
2116extern int GEOS_DLL GEOSHilbertCode_r(
2117 GEOSContextHandle_t handle,
2118 const GEOSGeometry *geom,
2119 const GEOSGeometry* extent,
2120 unsigned int level,
2121 unsigned int *code
2122);
2123
2125extern int GEOS_DLL GEOSGeomGetLength_r(
2126 GEOSContextHandle_t handle,
2127 const GEOSGeometry *g,
2128 double *length);
2129
2132 GEOSContextHandle_t handle,
2133 const GEOSGeometry* g1,
2134 const GEOSGeometry* g2);
2135
2138 GEOSContextHandle_t handle,
2139 const GEOSGeometry* g,
2140 GEOSTransformXYCallback callback,
2141 void* userdata);
2142
2145 GEOSContextHandle_t handle,
2146 const GEOSGeometry* g,
2147 GEOSTransformXYZCallback callback,
2148 void* userdata);
2149
2152 GEOSContextHandle_t handle,
2153 const GEOSGeometry* g,
2154 double eps,
2155 unsigned minPoints);
2156
2159 GEOSContextHandle_t handle,
2160 const GEOSGeometry* g,
2161 double d);
2162
2165 GEOSContextHandle_t handle,
2166 const GEOSGeometry* g);
2167
2170 GEOSContextHandle_t handle,
2171 const GEOSGeometry* g,
2172 double d);
2173
2176 GEOSContextHandle_t handle,
2177 const GEOSGeometry* g);
2178
2181
2183extern size_t GEOS_DLL GEOSClusterInfo_getClusterSize_r(GEOSContextHandle_t, const GEOSClusterInfo* clusters, size_t i);
2184
2187
2189extern const size_t GEOS_DLL* GEOSClusterInfo_getInputsForClusterN_r(GEOSContextHandle_t, const GEOSClusterInfo* clusters, size_t i);
2190
2193
2194/* ========= Algorithms ========= */
2195
2197extern int GEOS_DLL GEOSOrientationIndex_r(
2198 GEOSContextHandle_t handle,
2199 double Ax, double Ay,
2200 double Bx, double By,
2201 double Px, double Py);
2202
2203
2204/* ========== Reader and Writer APIs ========== */
2205
2206#ifndef GEOSWKTReader
2207
2213typedef struct GEOSWKTReader_t GEOSWKTReader;
2214
2220typedef struct GEOSWKTWriter_t GEOSWKTWriter;
2221
2227typedef struct GEOSWKBReader_t GEOSWKBReader;
2228
2234typedef struct GEOSWKBWriter_t GEOSWKBWriter;
2235
2241typedef struct GEOSGeoJSONReader_t GEOSGeoJSONReader;
2242
2248typedef struct GEOSGeoJSONWriter_t GEOSGeoJSONWriter;
2249
2250#endif
2251
2252/* ========== WKT Reader ========== */
2253
2256 GEOSContextHandle_t handle);
2257
2260 GEOSWKTReader* reader);
2261
2264 GEOSContextHandle_t handle,
2265 GEOSWKTReader* reader,
2266 const char *wkt);
2267
2270 GEOSContextHandle_t handle,
2271 GEOSWKTReader *reader,
2272 char doFix);
2273
2274
2275/* ========== WKT Writer ========== */
2276
2279 GEOSContextHandle_t handle);
2280
2282extern void GEOS_DLL GEOSWKTWriter_destroy_r(
2283 GEOSContextHandle_t handle,
2284 GEOSWKTWriter* writer);
2285
2287extern char GEOS_DLL *GEOSWKTWriter_write_r(
2288 GEOSContextHandle_t handle,
2289 GEOSWKTWriter* writer,
2290 const GEOSGeometry* g);
2291
2293extern void GEOS_DLL GEOSWKTWriter_setTrim_r(
2294 GEOSContextHandle_t handle,
2295 GEOSWKTWriter *writer,
2296 char trim);
2297
2300 GEOSContextHandle_t handle,
2301 GEOSWKTWriter *writer,
2302 int precision);
2303
2306 GEOSContextHandle_t handle,
2307 GEOSWKTWriter *writer,
2308 int dim);
2309
2312 GEOSContextHandle_t handle,
2313 GEOSWKTWriter *writer);
2314
2316extern void GEOS_DLL GEOSWKTWriter_setOld3D_r(
2317 GEOSContextHandle_t handle,
2318 GEOSWKTWriter *writer,
2319 int useOld3D);
2320
2330extern int GEOS_DLL GEOS_printDouble(
2331 double d,
2332 unsigned int precision,
2333 char *result
2334);
2335
2336/* ========== WKB Reader ========== */
2337
2340 GEOSContextHandle_t handle);
2341
2343extern void GEOS_DLL GEOSWKBReader_destroy_r(
2344 GEOSContextHandle_t handle,
2345 GEOSWKBReader* reader);
2346
2349 GEOSContextHandle_t handle,
2350 GEOSWKBReader *reader,
2351 char doFix);
2352
2355 GEOSContextHandle_t handle,
2356 GEOSWKBReader* reader,
2357 const unsigned char *wkb,
2358 size_t size);
2359
2362 GEOSContextHandle_t handle,
2363 GEOSWKBReader* reader,
2364 const unsigned char *hex,
2365 size_t size);
2366
2367
2368/* ========== WKB Writer ========== */
2369
2372 GEOSContextHandle_t handle);
2373
2375extern void GEOS_DLL GEOSWKBWriter_destroy_r(
2376 GEOSContextHandle_t handle,
2377 GEOSWKBWriter* writer);
2378
2380extern unsigned char GEOS_DLL *GEOSWKBWriter_write_r(
2381 GEOSContextHandle_t handle,
2382 GEOSWKBWriter* writer,
2383 const GEOSGeometry* g,
2384 size_t *size);
2385
2387extern unsigned char GEOS_DLL *GEOSWKBWriter_writeHEX_r(
2388 GEOSContextHandle_t handle,
2389 GEOSWKBWriter* writer,
2390 const GEOSGeometry* g,
2391 size_t *size);
2392
2395 GEOSContextHandle_t handle,
2396 const GEOSWKBWriter* writer);
2397
2400 GEOSContextHandle_t handle,
2401 GEOSWKBWriter* writer, int newDimension);
2402
2405 GEOSContextHandle_t handle,
2406 const GEOSWKBWriter* writer);
2407
2409extern void GEOS_DLL GEOSWKBWriter_setByteOrder_r(
2410 GEOSContextHandle_t handle,
2411 GEOSWKBWriter* writer,
2412 int byteOrder);
2413
2415extern int GEOS_DLL GEOSWKBWriter_getFlavor_r(
2416 GEOSContextHandle_t handle,
2417 const GEOSWKBWriter* writer);
2418
2420extern void GEOS_DLL GEOSWKBWriter_setFlavor_r(
2421 GEOSContextHandle_t handle,
2422 GEOSWKBWriter* writer,
2423 int flavor);
2424
2427 GEOSContextHandle_t handle,
2428 const GEOSWKBWriter* writer);
2429
2432 GEOSContextHandle_t handle,
2433 GEOSWKBWriter* writer, const char writeSRID);
2434
2435/* ========== GeoJSON Reader ========== */
2436
2439 GEOSContextHandle_t handle);
2440
2443 GEOSGeoJSONReader* reader);
2444
2447 GEOSContextHandle_t handle,
2448 GEOSGeoJSONReader* reader,
2449 const char *geojson);
2450
2451/* ========== GeoJSON Writer ========== */
2452
2455 GEOSContextHandle_t handle);
2456
2459 GEOSGeoJSONWriter* writer);
2460
2463 GEOSContextHandle_t handle,
2464 GEOSGeoJSONWriter* writer,
2465 const GEOSGeometry* g,
2466 int indent);
2467
2470 GEOSContextHandle_t handle,
2471 GEOSGeoJSONWriter *writer,
2472 int dim);
2473
2476 GEOSContextHandle_t handle,
2477 GEOSGeoJSONWriter *writer);
2478
2480extern void GEOS_DLL GEOSFree_r(
2481 GEOSContextHandle_t handle,
2482 void *buffer);
2483
2491extern const char GEOS_DLL *GEOSversion(void);
2492
2493/*
2494* External code to GEOS can define GEOS_USE_ONLY_R_API
2495* to strip the non-reentrant API functions from this header,
2496* leaving only the "_r" compatible variants.
2497*/
2498#ifndef GEOS_USE_ONLY_R_API
2499
2500/* ========== Initialization, cleanup ================================= */
2506
2519extern void GEOS_DLL initGEOS(
2520 GEOSMessageHandler notice_function,
2521 GEOSMessageHandler error_function);
2522
2528extern void GEOS_DLL finishGEOS(void);
2529
2539extern void GEOS_DLL GEOSFree(void *buffer);
2540
2542
2543/* ========= Coordinate Sequence functions ========= */
2549
2557extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_create(unsigned int size, unsigned int dims);
2558
2567extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_createWithDimensions(unsigned int size, int hasZ, int hasM);
2568
2579extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_copyFromBuffer(const double* buf, unsigned int size, int hasZ, int hasM);
2580
2592extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_copyFromArrays(const double* x, const double* y, const double* z, const double* m, unsigned int size);
2593
2604extern int GEOS_DLL GEOSCoordSeq_copyToBuffer(const GEOSCoordSequence* s, double* buf, int hasZ, int hasM);
2605
2617extern int GEOS_DLL GEOSCoordSeq_copyToArrays(const GEOSCoordSequence* s, double* x, double* y, double* z, double* m);
2618
2626
2633
2641extern char GEOS_DLL GEOSCoordSeq_hasZ(GEOSCoordSequence* s);
2642
2650extern char GEOS_DLL GEOSCoordSeq_hasM(GEOSCoordSequence* s);
2651
2661 unsigned int idx, double val);
2671 unsigned int idx, double val);
2681 unsigned int idx, double val);
2682
2692 unsigned int idx, double val);
2693
2705 unsigned int idx, double x, double y);
2718 unsigned int idx, double x, double y, double z);
2729 unsigned int idx, unsigned int dim, double val);
2730
2739extern int GEOS_DLL GEOSCoordSeq_getX(const GEOSCoordSequence* s,
2740 unsigned int idx, double *val);
2741
2750extern int GEOS_DLL GEOSCoordSeq_getY(const GEOSCoordSequence* s,
2751 unsigned int idx, double *val);
2752
2761extern int GEOS_DLL GEOSCoordSeq_getZ(const GEOSCoordSequence* s,
2762 unsigned int idx, double *val);
2763
2772extern int GEOS_DLL GEOSCoordSeq_getM(const GEOSCoordSequence* s,
2773 unsigned int idx, double *val);
2774
2785extern int GEOS_DLL GEOSCoordSeq_getXY(const GEOSCoordSequence* s,
2786 unsigned int idx, double *x, double *y);
2798extern int GEOS_DLL GEOSCoordSeq_getXYZ(const GEOSCoordSequence* s,
2799 unsigned int idx, double *x, double *y, double *z);
2809extern int GEOS_DLL GEOSCoordSeq_getOrdinate(const GEOSCoordSequence* s,
2810 unsigned int idx, unsigned int dim, double *val);
2811
2819extern int GEOS_DLL GEOSCoordSeq_getSize(
2820 const GEOSCoordSequence* s,
2821 unsigned int *size);
2822
2830extern int GEOS_DLL GEOSCoordSeq_getDimensions(
2831 const GEOSCoordSequence* s,
2832 unsigned int *dims);
2833
2843extern int GEOS_DLL GEOSCoordSeq_isCCW(
2844 const GEOSCoordSequence* s,
2845 char* is_ccw);
2846
2848
2849/* ========= Geometry Constructors ========= */
2855
2864
2874extern GEOSGeometry GEOS_DLL *GEOSGeom_createPointFromXY(double x, double y);
2875
2884
2893
2902
2911
2920
2935 GEOSGeometry* shell,
2936 GEOSGeometry** holes,
2937 unsigned int nholes);
2938
2947
2955
2965 unsigned int ncurves);
2966
2974
2989 GEOSGeometry* shell,
2990 GEOSGeometry** holes,
2991 unsigned int nholes);
2992
3000
3015 int type,
3016 GEOSGeometry** geoms,
3017 unsigned int ngeoms);
3018
3036 GEOSGeometry * collection,
3037 unsigned int * ngeoms);
3038
3048
3060 double xmin, double ymin,
3061 double xmax, double ymax);
3062
3070extern GEOSGeometry GEOS_DLL *GEOSGeom_clone(const GEOSGeometry* g);
3071
3077extern void GEOS_DLL GEOSGeom_destroy(GEOSGeometry* g);
3078
3080
3081/* ========== Geometry info ========== */
3086
3096extern char GEOS_DLL *GEOSGeomType(const GEOSGeometry* g);
3097
3104extern int GEOS_DLL GEOSGeomTypeId(const GEOSGeometry* g);
3105
3112extern int GEOS_DLL GEOSGetSRID(const GEOSGeometry* g);
3113
3124extern void GEOS_DLL *GEOSGeom_getUserData(const GEOSGeometry* g);
3125
3138extern int GEOS_DLL GEOSGetNumGeometries(const GEOSGeometry* g);
3139
3155extern const GEOSGeometry GEOS_DLL *GEOSGetGeometryN(
3156 const GEOSGeometry* g,
3157 int n);
3158
3167extern int GEOS_DLL GEOSGetNumCurves(const GEOSGeometry* g);
3168
3182extern const GEOSGeometry GEOS_DLL *GEOSGetCurveN(
3183 const GEOSGeometry* g,
3184 int n);
3185
3195extern double GEOS_DLL GEOSGeom_getPrecision(const GEOSGeometry *g);
3196
3204extern int GEOS_DLL GEOSGetNumInteriorRings(const GEOSGeometry* g);
3205
3216extern int GEOS_DLL GEOSGeomGetNumPoints(const GEOSGeometry* g);
3217
3226extern int GEOS_DLL GEOSGeomGetX(const GEOSGeometry *g, double *x);
3227
3236extern int GEOS_DLL GEOSGeomGetY(const GEOSGeometry *g, double *y);
3237
3247extern int GEOS_DLL GEOSGeomGetZ(const GEOSGeometry *g, double *z);
3248
3258extern int GEOS_DLL GEOSGeomGetM(const GEOSGeometry *g, double *m);
3259
3269extern const GEOSGeometry GEOS_DLL *GEOSGetInteriorRingN(
3270 const GEOSGeometry* g,
3271 int n);
3272
3281extern const GEOSGeometry GEOS_DLL *GEOSGetExteriorRing(
3282 const GEOSGeometry* g);
3283
3291extern int GEOS_DLL GEOSGetNumCoordinates(
3292 const GEOSGeometry* g);
3293
3304 const GEOSGeometry* g);
3305
3318extern int GEOS_DLL GEOSGeom_getDimensions(
3319 const GEOSGeometry* g);
3320
3334 const GEOSGeometry* g);
3335
3349extern int GEOS_DLL GEOSGeom_getXMin(const GEOSGeometry* g, double* value);
3350
3364extern int GEOS_DLL GEOSGeom_getYMin(const GEOSGeometry* g, double* value);
3365
3379extern int GEOS_DLL GEOSGeom_getXMax(const GEOSGeometry* g, double* value);
3380
3394extern int GEOS_DLL GEOSGeom_getYMax(const GEOSGeometry* g, double* value);
3395
3413extern int GEOS_DLL GEOSGeom_getExtent(
3414 const GEOSGeometry* g,
3415 double* xmin,
3416 double* ymin,
3417 double* xmax,
3418 double* ymax);
3419
3433extern GEOSGeometry GEOS_DLL *GEOSGeomGetPointN(const GEOSGeometry *g, int n);
3434
3448
3462
3471extern char GEOS_DLL GEOSisEmpty(const GEOSGeometry* g);
3472
3482extern char GEOS_DLL GEOSisRing(const GEOSGeometry* g);
3483
3490extern char GEOS_DLL GEOSHasZ(const GEOSGeometry* g);
3491
3499extern char GEOS_DLL GEOSHasM(const GEOSGeometry* g);
3500
3515extern char GEOS_DLL GEOSisClosed(const GEOSGeometry *g);
3516
3518
3519/* ==================================================================================== */
3524
3531extern void GEOS_DLL GEOSSetSRID(GEOSGeometry* g, int SRID);
3532
3540extern void GEOS_DLL GEOSGeom_setUserData(GEOSGeometry* g, void* userData);
3541
3565extern int GEOS_DLL GEOSNormalize(GEOSGeometry* g);
3566
3578extern int GEOS_DLL GEOSOrientPolygons(GEOSGeometry* g,
3579 int exteriorCW);
3580
3582
3583/* ========== Validity checking ============================================================ */
3589
3604extern char GEOS_DLL GEOSisSimple(const GEOSGeometry* g);
3605
3625extern char GEOS_DLL GEOSisSimpleDetail(
3626 const GEOSGeometry* g,
3627 int findAllLocations,
3628 GEOSGeometry** locations);
3629
3650extern char GEOS_DLL GEOSisValid(const GEOSGeometry* g);
3651
3667extern char GEOS_DLL *GEOSisValidReason(const GEOSGeometry *g);
3668
3689extern char GEOS_DLL GEOSisValidDetail(
3690 const GEOSGeometry* g,
3691 int flags,
3692 char** reason,
3693 GEOSGeometry** location);
3694
3713 const GEOSGeometry* g);
3714
3739 const GEOSGeometry* g,
3740 const GEOSMakeValidParams *makeValidParams);
3741
3751
3760
3771 enum GEOSMakeValidMethods method);
3772
3785 int keepCollapsed);
3786
3811extern int GEOS_DLL GEOSMinimumClearance(const GEOSGeometry* g, double* d);
3812
3830
3852 const GEOSGeometry* g,
3853 double tolerance);
3854
3856
3857/* ========= Metric functions ================================================== */
3862
3875extern int GEOS_DLL GEOSArea(
3876 const GEOSGeometry* g,
3877 double *area);
3878
3890extern int GEOS_DLL GEOSLength(
3891 const GEOSGeometry* g,
3892 double *length);
3893
3908extern int GEOS_DLL GEOSGeomGetLength(
3909 const GEOSGeometry *g,
3910 double *length);
3911
3913
3914/* ========== Distance functions ================================================ */
3920
3937extern int GEOS_DLL GEOSDistance(
3938 const GEOSGeometry* g1,
3939 const GEOSGeometry* g2,
3940 double *dist);
3941
3959extern char GEOS_DLL GEOSDistanceWithin(
3960 const GEOSGeometry* g1,
3961 const GEOSGeometry* g2,
3962 double dist);
3963
3983extern int GEOS_DLL GEOSDistanceIndexed(
3984 const GEOSGeometry* g1,
3985 const GEOSGeometry* g2,
3986 double *dist);
3987
4006 const GEOSGeometry* g1,
4007 const GEOSGeometry* g2);
4008
4026extern int GEOS_DLL GEOSHausdorffDistance(
4027 const GEOSGeometry *g1,
4028 const GEOSGeometry *g2,
4029 double *dist);
4030
4031
4053 const GEOSGeometry *g1,
4054 const GEOSGeometry *g2,
4055 double *dist,
4056 double *p1x, double *p1y,
4057 double *p2x, double *p2y);
4058
4059
4060
4082 const GEOSGeometry *g1,
4083 const GEOSGeometry *g2,
4084 double densifyFrac,
4085 double *dist);
4086
4113 const GEOSGeometry *g1,
4114 const GEOSGeometry *g2,
4115 double densifyFrac,
4116 double *dist,
4117 double* p1x, double* p1y,
4118 double* p2x, double* p2y);
4119
4139extern int GEOS_DLL GEOSFrechetDistance(
4140 const GEOSGeometry *g1,
4141 const GEOSGeometry *g2,
4142 double *dist);
4143
4166extern int GEOS_DLL GEOSFrechetDistanceDensify(
4167 const GEOSGeometry *g1,
4168 const GEOSGeometry *g2,
4169 double densifyFrac,
4170 double *dist);
4171
4173
4174/* ========== Linear referencing functions */
4180
4196extern double GEOS_DLL GEOSProject(const GEOSGeometry* line,
4197 const GEOSGeometry* point);
4198
4218extern GEOSGeometry GEOS_DLL *GEOSInterpolate(const GEOSGeometry* line,
4219 double d);
4220
4237extern double GEOS_DLL GEOSProjectNormalized(const GEOSGeometry* line,
4238 const GEOSGeometry* point);
4239
4261 const GEOSGeometry *line,
4262 double proportion);
4263
4265
4266/* ========== Overlay functions ========== */
4272
4293extern GEOSGeometry GEOS_DLL *GEOSIntersection(const GEOSGeometry* g1, const GEOSGeometry* g2);
4294
4309extern GEOSGeometry GEOS_DLL *GEOSIntersectionPrec(const GEOSGeometry* g1, const GEOSGeometry* g2, double gridSize);
4310
4332 const GEOSGeometry* ga,
4333 const GEOSGeometry* gb);
4334
4351 const GEOSGeometry* ga,
4352 const GEOSGeometry* gb,
4353 double gridSize);
4354
4377 const GEOSGeometry* ga,
4378 const GEOSGeometry* gb);
4379
4397 const GEOSGeometry* ga,
4398 const GEOSGeometry* gb,
4399 double gridSize);
4400
4421extern GEOSGeometry GEOS_DLL *GEOSUnion(
4422 const GEOSGeometry* ga,
4423 const GEOSGeometry* gb);
4424
4441 const GEOSGeometry* ga,
4442 const GEOSGeometry* gb,
4443 double gridSize);
4444
4466extern GEOSGeometry GEOS_DLL *GEOSUnaryUnion(const GEOSGeometry* g);
4467
4484 const GEOSGeometry* g,
4485 double gridSize);
4486
4508
4535 const GEOSGeometry* g,
4536 double xmin, double ymin,
4537 double xmax, double ymax);
4538
4573 const GEOSGeometry* g,
4574 double xmin, double ymin,
4575 double xmax, double ymax,
4576 unsigned nx, unsigned ny,
4577 int includeExterior);
4578
4602 const GEOSGeometry* g,
4603 double xmin, double ymin,
4604 double xmax, double ymax,
4605 unsigned nx, unsigned ny,
4606 float* buf);
4607
4632 const GEOSGeometry* g1,
4633 const GEOSGeometry* g2);
4635
4636/* ========== Clustering functions ========== */
4643static const size_t GEOS_CLUSTER_NONE = (size_t) -1;
4644
4646
4661extern GEOSClusterInfo GEOS_DLL* GEOSClusterDBSCAN(const GEOSGeometry* g, double eps, unsigned minPoints);
4662
4677extern GEOSClusterInfo GEOS_DLL* GEOSClusterGeometryDistance(const GEOSGeometry* g, double d);
4678
4693
4705extern GEOSClusterInfo GEOS_DLL* GEOSClusterEnvelopeDistance(const GEOSGeometry* g, double d);
4706
4718
4727extern size_t GEOS_DLL GEOSClusterInfo_getNumClusters(const GEOSClusterInfo* clusters);
4728
4738extern size_t GEOS_DLL GEOSClusterInfo_getClusterSize(const GEOSClusterInfo* clusters, size_t i );
4739
4749extern size_t GEOS_DLL* GEOSClusterInfo_getClustersForInputs(const GEOSClusterInfo* clusters);
4750
4759extern const size_t GEOS_DLL* GEOSClusterInfo_getInputsForClusterN(const GEOSClusterInfo* clusters, size_t i);
4760
4768extern void GEOS_DLL GEOSClusterInfo_destroy(GEOSClusterInfo* clusters);
4769
4771
4772/* ========== Buffer related functions ========== */
4777
4796extern GEOSGeometry GEOS_DLL *GEOSBuffer(const GEOSGeometry* g,
4797 double width, int quadsegs);
4798
4808
4815extern void GEOS_DLL GEOSBufferParams_destroy(GEOSBufferParams* parms);
4816
4826 int style);
4827
4837 int joinStyle);
4838
4852 double mitreLimit);
4853
4866 int quadSegs);
4867
4880 int singleSided);
4881
4899 const GEOSGeometry* g,
4900 const GEOSBufferParams* p,
4901 double width);
4902
4924 const GEOSGeometry* g,
4925 double width,
4926 int quadsegs,
4927 int endCapStyle,
4928 int joinStyle,
4929 double mitreLimit);
4930
4960 double width, int quadsegs, int joinStyle, double mitreLimit);
4961
4963
4964
4965/* ====================================================================== */
4971
4994
4995
5024extern int GEOS_DLL GEOSCoverageIsValid(
5025 const GEOSGeometry* input,
5026 double gapWidth,
5027 GEOSGeometry** invalidEdges);
5028
5064 const GEOSGeometry* input,
5065 double tolerance,
5066 int preserveBoundary);
5067
5077extern GEOSGeometry GEOS_DLL *GEOSCoverageEdges(const GEOSGeometry *input, int edgetype);
5078
5086extern GEOSCoverageCleanParams GEOS_DLL *
5088
5095extern void GEOS_DLL
5097 GEOSCoverageCleanParams* params);
5098
5119extern int GEOS_DLL
5122 double snappingDistance);
5123
5142extern int GEOS_DLL
5145 double gapMaximumWidth);
5146
5147/*
5148* Sets the overlap merge strategy to use, using one from \ref GEOSOverlapMerge.
5149* Overlaps are merged with an adjacent polygon chosen according to a specified merge strategy.
5150* The supported strategies are:
5151*
5152* * **Longest Border**: (default) merge with the polygon with longest shared border (GEOS_MERGE_LONGEST_BORDER.)
5153* * **Maximum/Minimum Area**: merge with the polygon with largest or smallest area (GEOS_MERGE_MAX_AREA, GEOS_MERGE_MIN_AREA.)
5154* * **Minimum Index**: merge with the polygon with the lowest index in the input array (GEOS_MERGE_MIN_INDEX.)
5155*
5156* This allows sorting the input according to some criteria to provide a priority
5157* for merging gaps.
5158*
5159* The default is GEOS_MERGE_LONGEST_BORDER.
5160*
5161* \see geos::coverage::CoverageCleaner::setGapMaximumWidth
5162* \param params The GEOSCoverageCleanParams to operate on
5163* \param overlapMergeStrategy One of \ref GEOSOverlapMerge strategies
5164* \return 0 on exception, 1 on success.
5165*
5166* \since 3.14
5167*/
5168extern int GEOS_DLL
5169GEOSCoverageCleanParams_setOverlapMergeStrategy(
5171 int overlapMergeStrategy);
5172
5203extern GEOSGeometry GEOS_DLL *
5205 const GEOSGeometry* input,
5206 const GEOSCoverageCleanParams* params
5207);
5208
5210extern GEOSGeometry GEOS_DLL *
5212 const GEOSGeometry* input);
5213
5214
5215
5216
5218
5219
5220/* ========== Construction Operations ========== */
5225
5239extern GEOSGeometry GEOS_DLL *GEOSEnvelope(const GEOSGeometry* g);
5240
5258extern GEOSGeometry GEOS_DLL *GEOSBoundary(const GEOSGeometry* g);
5259
5278extern GEOSGeometry GEOS_DLL *GEOSConvexHull(const GEOSGeometry* g);
5279
5319 const GEOSGeometry* g,
5320 double ratio,
5321 unsigned int allowHoles);
5322
5361 const GEOSGeometry* g,
5362 double length,
5363 unsigned int allowHoles);
5364
5409 const GEOSGeometry* g,
5410 double lengthRatio,
5411 unsigned int isTight,
5412 unsigned int isHolesAllowed);
5413
5443 const GEOSGeometry* g,
5444 unsigned int isOuter,
5445 double vertexNumFraction);
5446
5447
5457
5489 const GEOSGeometry* g,
5490 unsigned int isOuter,
5491 unsigned int parameterMode,
5492 double parameter);
5493
5514
5546 const GEOSGeometry* g,
5547 double tolerance);
5548
5588 const GEOSGeometry* obstacles,
5589 const GEOSGeometry* boundary,
5590 double tolerance);
5591
5611extern GEOSGeometry GEOS_DLL *GEOSMinimumWidth(const GEOSGeometry* g);
5612
5613
5630
5646extern GEOSGeometry GEOS_DLL *GEOSGetCentroid(const GEOSGeometry* g);
5647
5667 const GEOSGeometry* g,
5668 double* radius,
5669 GEOSGeometry** center);
5670
5691 const GEOSGeometry *g,
5692 double tolerance,
5693 int onlyEdges);
5694
5715 const GEOSGeometry *g);
5716
5727
5753 const GEOSGeometry *g,
5754 const GEOSGeometry *env,
5755 double tolerance,
5756 int flags);
5757
5759
5760/* ============================================================== */
5765
5782extern GEOSGeometry GEOS_DLL *GEOSNode(const GEOSGeometry* g);
5783
5784
5800extern GEOSGeometry GEOS_DLL *GEOSSplit(const GEOSGeometry* g, const GEOSGeometry* edge);
5801
5848 const GEOSGeometry * const geoms[],
5849 unsigned int ngeoms);
5850
5869 const GEOSGeometry * const geoms[],
5870 unsigned int ngeoms);
5871
5889 const GEOSGeometry * const geoms[],
5890 unsigned int ngeoms);
5891
5910 const GEOSGeometry* input,
5911 GEOSGeometry** cuts,
5912 GEOSGeometry** dangles,
5913 GEOSGeometry** invalid);
5914
5926extern GEOSGeometry GEOS_DLL *GEOSBuildArea(const GEOSGeometry* g);
5927
5929
5930/* ============================================================== */
5935
5955extern GEOSGeometry GEOS_DLL *GEOSDensify(
5956 const GEOSGeometry* g,
5957 double tolerance);
5958
5976extern GEOSGeometry GEOS_DLL *GEOSLineMerge(const GEOSGeometry* g);
5977
5994extern size_t GEOS_DLL *GEOSMinimumSpanningTree(const GEOSGeometry * const geoms[], unsigned int ngeoms);
5995
6015
6032 const GEOSGeometry* g,
6033 double start_fraction,
6034 double end_fraction);
6035
6050extern GEOSGeometry GEOS_DLL *GEOSReverse(const GEOSGeometry* g);
6051
6068 const GEOSGeometry* g,
6069 double tolerance);
6070
6090 const GEOSGeometry* g,
6091 double tolerance);
6092
6110 const GEOSGeometry* g);
6111
6130extern int GEOS_DLL GEOSHilbertCode(
6131 const GEOSGeometry *geom,
6132 const GEOSGeometry* extent,
6133 unsigned int level,
6134 unsigned int *code
6135);
6136
6155 const GEOSGeometry* g,
6156 GEOSTransformXYCallback callback,
6157 void* userdata);
6158
6177 const GEOSGeometry* g,
6178 GEOSTransformXYZCallback callback,
6179 void* userdata);
6180
6202extern GEOSGeometry GEOS_DLL *GEOSSnap(
6203 const GEOSGeometry* input,
6204 const GEOSGeometry* snap_target,
6205 double tolerance);
6206
6240 const GEOSGeometry *g,
6241 double gridSize,
6242 int flags);
6243
6245
6246/* ============================================================== */
6247
6252
6264 const GEOSGeometry* g,
6265 const GEOSCurveToLineParams* params);
6266
6267extern GEOSCurveToLineParams GEOS_DLL *GEOSCurveToLineParams_create();
6268
6269extern void GEOS_DLL GEOSCurveToLineParams_destroy(GEOSCurveToLineParams* params);
6270
6280 GEOSCurveToLineParams* params,
6281 double tolerance);
6282
6292 GEOSCurveToLineParams* params,
6293 double tolerance);
6294
6306 const GEOSGeometry* g,
6307 const GEOSLineToCurveParams* params);
6308
6309extern GEOSLineToCurveParams GEOS_DLL *GEOSLineToCurveParams_create();
6310
6311extern void GEOS_DLL GEOSLineToCurveParams_destroy(GEOSLineToCurveParams* params);
6312
6325 GEOSLineToCurveParams* params,
6326 double tolerance);
6327
6341 GEOSLineToCurveParams* params,
6342 double tolerance);
6343
6359 GEOSLineToCurveParams* params,
6360 double tolerance);
6361
6363
6364/* ============================================================== */
6369
6378extern char GEOS_DLL GEOSDisjoint(const GEOSGeometry* g1, const GEOSGeometry* g2);
6379
6389extern char GEOS_DLL GEOSTouches(const GEOSGeometry* g1, const GEOSGeometry* g2);
6390
6399extern char GEOS_DLL GEOSIntersects(const GEOSGeometry* g1, const GEOSGeometry* g2);
6400
6410extern char GEOS_DLL GEOSCrosses(const GEOSGeometry* g1, const GEOSGeometry* g2);
6411
6421extern char GEOS_DLL GEOSWithin(const GEOSGeometry* g1, const GEOSGeometry* g2);
6422
6432extern char GEOS_DLL GEOSContains(const GEOSGeometry* g1, const GEOSGeometry* g2);
6433
6443extern char GEOS_DLL GEOSOverlaps(const GEOSGeometry* g1, const GEOSGeometry* g2);
6444
6453extern char GEOS_DLL GEOSEquals(const GEOSGeometry* g1, const GEOSGeometry* g2);
6454
6465extern char GEOS_DLL GEOSCovers(const GEOSGeometry* g1, const GEOSGeometry* g2);
6466
6477extern char GEOS_DLL GEOSCoveredBy(const GEOSGeometry* g1, const GEOSGeometry* g2);
6478
6499extern char GEOS_DLL GEOSEqualsExact(
6500 const GEOSGeometry* g1,
6501 const GEOSGeometry* g2,
6502 double tolerance);
6503
6518extern char GEOS_DLL GEOSEqualsIdentical(
6519 const GEOSGeometry* g1,
6520 const GEOSGeometry* g2);
6521
6537extern char GEOS_DLL GEOSRelatePattern(
6538 const GEOSGeometry* g1,
6539 const GEOSGeometry* g2,
6540 const char *imPattern);
6541
6552extern char GEOS_DLL *GEOSRelate(
6553 const GEOSGeometry* g1,
6554 const GEOSGeometry* g2);
6555
6565extern char GEOS_DLL GEOSRelatePatternMatch(
6566 const char *intMatrix,
6567 const char *imPattern);
6568
6582extern char GEOS_DLL *GEOSRelateBoundaryNodeRule(
6583 const GEOSGeometry* g1,
6584 const GEOSGeometry* g2,
6585 int bnr);
6586
6588
6589/* ========== Prepared Geometry Binary predicates ========== */
6590
6602
6616extern const GEOSPreparedGeometry GEOS_DLL *GEOSPrepare(const GEOSGeometry* g);
6617
6626extern void GEOS_DLL GEOSPreparedGeom_destroy(const GEOSPreparedGeometry* g);
6627
6638extern char GEOS_DLL GEOSPreparedContains(
6639 const GEOSPreparedGeometry* pg1,
6640 const GEOSGeometry* g2);
6641
6653extern char GEOS_DLL GEOSPreparedContainsXY(
6654 const GEOSPreparedGeometry* pg1,
6655 double x,
6656 double y);
6657
6668extern char GEOS_DLL GEOSPreparedContainsProperly(
6669 const GEOSPreparedGeometry* pg1,
6670 const GEOSGeometry* g2);
6671
6682extern char GEOS_DLL GEOSPreparedCoveredBy(
6683 const GEOSPreparedGeometry* pg1,
6684 const GEOSGeometry* g2);
6685
6696extern char GEOS_DLL GEOSPreparedCovers(
6697 const GEOSPreparedGeometry* pg1,
6698 const GEOSGeometry* g2);
6699
6710extern char GEOS_DLL GEOSPreparedCrosses(
6711 const GEOSPreparedGeometry* pg1,
6712 const GEOSGeometry* g2);
6713
6724extern char GEOS_DLL GEOSPreparedDisjoint(
6725 const GEOSPreparedGeometry* pg1,
6726 const GEOSGeometry* g2);
6727
6738extern char GEOS_DLL GEOSPreparedIntersects(
6739 const GEOSPreparedGeometry* pg1,
6740 const GEOSGeometry* g2);
6741
6753extern char GEOS_DLL GEOSPreparedIntersectsXY(
6754 const GEOSPreparedGeometry* pg1,
6755 double x,
6756 double y);
6757
6768extern char GEOS_DLL GEOSPreparedOverlaps(
6769 const GEOSPreparedGeometry* pg1,
6770 const GEOSGeometry* g2);
6771
6782extern char GEOS_DLL GEOSPreparedTouches(
6783 const GEOSPreparedGeometry* pg1,
6784 const GEOSGeometry* g2);
6785
6796extern char GEOS_DLL GEOSPreparedWithin(
6797 const GEOSPreparedGeometry* pg1,
6798 const GEOSGeometry* g2);
6799
6813extern char GEOS_DLL * GEOSPreparedRelate(
6814 const GEOSPreparedGeometry* pg1,
6815 const GEOSGeometry* g2);
6816
6833extern char GEOS_DLL GEOSPreparedRelatePattern(
6834 const GEOSPreparedGeometry* pg1,
6835 const GEOSGeometry* g2,
6836 const char* imPattern);
6837
6851 const GEOSPreparedGeometry* pg1,
6852 const GEOSGeometry* g2);
6853
6867extern int GEOS_DLL GEOSPreparedDistance(
6868 const GEOSPreparedGeometry* pg1,
6869 const GEOSGeometry* g2,
6870 double *dist);
6871
6886extern char GEOS_DLL GEOSPreparedDistanceWithin(
6887 const GEOSPreparedGeometry* pg1,
6888 const GEOSGeometry* g2,
6889 double dist);
6890
6892
6893/* ========== STRtree functions ========== */
6899
6912extern GEOSSTRtree GEOS_DLL *GEOSSTRtree_create(size_t nodeCapacity);
6913
6926extern int GEOS_DLL GEOSSTRtree_build(GEOSSTRtree *tree);
6927
6940extern void GEOS_DLL GEOSSTRtree_insert(
6941 GEOSSTRtree *tree,
6942 const GEOSGeometry *g,
6943 void *item);
6944
6959extern void GEOS_DLL GEOSSTRtree_query(
6960 GEOSSTRtree *tree,
6961 const GEOSGeometry *g,
6962 GEOSQueryCallback callback,
6963 void *userdata);
6964
6979extern const GEOSGeometry GEOS_DLL *GEOSSTRtree_nearest(
6980 GEOSSTRtree *tree,
6981 const GEOSGeometry* geom);
6982
7003extern const void GEOS_DLL *GEOSSTRtree_nearest_generic(
7004 GEOSSTRtree *tree,
7005 const void* item,
7006 const GEOSGeometry* itemEnvelope,
7007 GEOSDistanceCallback distancefn,
7008 void* userdata);
7009
7020extern void GEOS_DLL GEOSSTRtree_iterate(
7021 GEOSSTRtree *tree,
7022 GEOSQueryCallback callback,
7023 void *userdata);
7024
7039extern char GEOS_DLL GEOSSTRtree_remove(
7040 GEOSSTRtree *tree,
7041 const GEOSGeometry *g,
7042 void *item);
7043
7054extern void GEOS_DLL GEOSSTRtree_destroy(GEOSSTRtree *tree);
7055
7057
7058/* ========== Algorithms ====================================================== */
7063
7082extern int GEOS_DLL GEOSSegmentIntersection(
7083 double ax0, double ay0,
7084 double ax1, double ay1,
7085 double bx0, double by0,
7086 double bx1, double by1,
7087 double* cx, double* cy);
7088
7104extern int GEOS_DLL GEOSOrientationIndex(
7105 double Ax, double Ay,
7106 double Bx, double By,
7107 double Px, double Py);
7108
7110
7111/* ========= Reader and Writer APIs ========= */
7112
7117/* ========= WKT Reader ========= */
7118
7125
7131extern void GEOS_DLL GEOSWKTReader_destroy(GEOSWKTReader* reader);
7132
7142 GEOSWKTReader* reader,
7143 const char *wkt);
7144
7154 GEOSWKTReader *reader,
7155 char doFix);
7156
7157/* ========= WKT Writer ========= */
7158
7165
7171extern void GEOS_DLL GEOSWKTWriter_destroy(
7172 GEOSWKTWriter* writer);
7173
7183extern char GEOS_DLL *GEOSWKTWriter_write(
7184 GEOSWKTWriter* writer,
7185 const GEOSGeometry* g);
7186
7201extern void GEOS_DLL GEOSWKTWriter_setTrim(
7202 GEOSWKTWriter *writer,
7203 char trim);
7204
7214 GEOSWKTWriter *writer,
7215 int precision);
7216
7226 GEOSWKTWriter *writer,
7227 int dim);
7228
7237
7248extern void GEOS_DLL GEOSWKTWriter_setOld3D(
7249 GEOSWKTWriter *writer,
7250 int useOld3D);
7252
7253/* ============================================================================== */
7258
7259/* ========== WKB Reader ========== */
7266
7272extern void GEOS_DLL GEOSWKBReader_destroy(
7273 GEOSWKBReader* reader);
7274
7284 GEOSWKBReader *reader,
7285 char doFix);
7286
7296 GEOSWKBReader* reader,
7297 const unsigned char *wkb,
7298 size_t size);
7299
7309 GEOSWKBReader* reader,
7310 const unsigned char *hex,
7311 size_t size);
7312
7313/* ========== WKB Writer ========== */
7314
7321
7327extern void GEOS_DLL GEOSWKBWriter_destroy(GEOSWKBWriter* writer);
7328
7338extern unsigned char GEOS_DLL *GEOSWKBWriter_write(
7339 GEOSWKBWriter* writer,
7340 const GEOSGeometry* g,
7341 size_t *size);
7342
7352extern unsigned char GEOS_DLL *GEOSWKBWriter_writeHEX(
7353 GEOSWKBWriter* writer,
7354 const GEOSGeometry* g,
7355 size_t *size);
7356
7366 const GEOSWKBWriter* writer);
7367
7376 GEOSWKBWriter* writer,
7377 int newDimension);
7378
7388extern int GEOS_DLL GEOSWKBWriter_getByteOrder(
7389 const GEOSWKBWriter* writer);
7390
7398extern void GEOS_DLL GEOSWKBWriter_setByteOrder(
7399 GEOSWKBWriter* writer,
7400 int byteOrder);
7401
7416extern int GEOS_DLL GEOSWKBWriter_getFlavor(
7417 const GEOSWKBWriter* writer);
7418
7427extern void GEOS_DLL GEOSWKBWriter_setFlavor(
7428 GEOSWKBWriter* writer,
7429 int flavor);
7430
7436extern char GEOS_DLL GEOSWKBWriter_getIncludeSRID(
7437 const GEOSWKBWriter* writer);
7438
7446extern void GEOS_DLL GEOSWKBWriter_setIncludeSRID(
7447 GEOSWKBWriter* writer,
7448 const char writeSRID);
7449
7451
7452/* ============================================================================= */
7457/* ========= GeoJSON Reader ========= */
7458
7466
7473extern void GEOS_DLL GEOSGeoJSONReader_destroy(GEOSGeoJSONReader* reader);
7474
7486 GEOSGeoJSONReader* reader,
7487 const char *geojson);
7488
7489/* ========= GeoJSON Writer ========= */
7490
7498
7505extern void GEOS_DLL GEOSGeoJSONWriter_destroy(GEOSGeoJSONWriter* writer);
7506
7518 GEOSGeoJSONWriter* writer,
7519 const GEOSGeometry* g,
7520 int indent);
7521
7531 GEOSGeoJSONWriter *writer,
7532 int dim);
7533
7542
7544
7545#endif /* #ifndef GEOS_USE_ONLY_R_API */
7546
7547/* ====================================================================== */
7548/* DEPRECATIONS */
7549/* ====================================================================== */
7550
7556
7561 const GEOSGeometry* g,
7562 double width, int quadsegs,
7563 int joinStyle, double mitreLimit,
7564 int leftSide);
7565
7570 GEOSContextHandle_t handle,
7571 const GEOSGeometry* g,
7572 double width, int quadsegs,
7573 int joinStyle, double mitreLimit,
7574 int leftSide);
7575
7581 GEOSMessageHandler notice_function,
7582 GEOSMessageHandler error_function);
7583
7587extern void GEOS_DLL finishGEOS_r(GEOSContextHandle_t handle);
7588
7593 GEOSContextHandle_t handle,
7594 const char *wkt);
7595
7599extern char GEOS_DLL *GEOSGeomToWKT_r(
7600 GEOSContextHandle_t handle,
7601 const GEOSGeometry* g);
7602
7606extern int GEOS_DLL GEOS_getWKBOutputDims_r(
7607 GEOSContextHandle_t handle);
7608
7612extern int GEOS_DLL GEOS_setWKBOutputDims_r(
7613 GEOSContextHandle_t handle,
7614 int newDims);
7615
7619extern int GEOS_DLL GEOS_getWKBByteOrder_r(
7620 GEOSContextHandle_t handle);
7621
7625extern int GEOS_DLL GEOS_setWKBByteOrder_r(
7626 GEOSContextHandle_t handle,
7627 int byteOrder);
7628
7633 GEOSContextHandle_t handle,
7634 const unsigned char *wkb,
7635 size_t size);
7636
7640extern unsigned char GEOS_DLL *GEOSGeomToWKB_buf_r(
7641 GEOSContextHandle_t handle,
7642 const GEOSGeometry* g,
7643 size_t *size);
7644
7649 GEOSContextHandle_t handle,
7650 const unsigned char *hex,
7651 size_t size);
7652
7656extern unsigned char GEOS_DLL *GEOSGeomToHEX_buf_r(
7657 GEOSContextHandle_t handle,
7658 const GEOSGeometry* g,
7659 size_t *size);
7660
7664extern GEOSGeometry GEOS_DLL *GEOSGeomFromWKT(const char *wkt);
7665
7669extern char GEOS_DLL *GEOSGeomToWKT(const GEOSGeometry* g);
7670
7674extern int GEOS_DLL GEOS_getWKBOutputDims(void);
7675
7679extern int GEOS_DLL GEOS_setWKBOutputDims(int newDims);
7680
7684extern int GEOS_DLL GEOS_getWKBByteOrder(void);
7685
7689extern int GEOS_DLL GEOS_setWKBByteOrder(int byteOrder);
7690
7694extern GEOSGeometry GEOS_DLL *GEOSGeomFromWKB_buf(const unsigned char *wkb, size_t size);
7695
7699extern unsigned char GEOS_DLL *GEOSGeomToWKB_buf(const GEOSGeometry* g, size_t *size);
7700
7704extern GEOSGeometry GEOS_DLL *GEOSGeomFromHEX_buf(const unsigned char *hex, size_t size);
7705
7709extern unsigned char GEOS_DLL *GEOSGeomToHEX_buf(const GEOSGeometry* g, size_t *size);
7710
7715
7720 GEOSContextHandle_t handle,
7721 const GEOSGeometry* g);
7722
7724
7725/* ====================================================================== */
7726/* END DEPRECATIONS */
7727/* ====================================================================== */
7728
7729
7730#ifdef __cplusplus
7731} // extern "C"
7732#endif
7733
7734#endif /* #ifndef GEOS_C_H_INCLUDED */
int GEOS_setWKBOutputDims_r(GEOSContextHandle_t handle, int newDims)
GEOSGeometry * GEOSMaximumInscribedCircle_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double tolerance)
int GEOSBufferParams_setEndCapStyle_r(GEOSContextHandle_t handle, GEOSBufferParams *p, int style)
char GEOSisEmpty_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
char GEOSisSimple(const GEOSGeometry *g)
void GEOSWKBWriter_setByteOrder(GEOSWKBWriter *writer, int byteOrder)
GEOSGeometry * GEOSIntersectionPrec_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double gridSize)
const GEOSCoordSequence * GEOSGeom_getCoordSeq(const GEOSGeometry *g)
int GEOSCoordSeq_setZ_r(GEOSContextHandle_t handle, GEOSCoordSequence *s, unsigned int idx, double val)
void GEOSGeom_setUserData_r(GEOSContextHandle_t handle, GEOSGeometry *g, void *userData)
GEOSGeometry * GEOSGeom_createEmptyPoint(void)
GEOSGeometry * GEOSReverse_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
int GEOS_getWKBOutputDims_r(GEOSContextHandle_t handle)
GEOSGeometry * GEOSGeom_createEmptyCompoundCurve_r(GEOSContextHandle_t handle)
GEOSGeometry * GEOSSplit(const GEOSGeometry *g, const GEOSGeometry *edge)
int GEOSGeomGetM(const GEOSGeometry *g, double *m)
GEOSGeometry * GEOSPolygonHullSimplify(const GEOSGeometry *g, unsigned int isOuter, double vertexNumFraction)
char GEOSisRing_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
int GEOSSTRtree_build_r(GEOSContextHandle_t handle, GEOSSTRtree *tree)
GEOSGeometry * GEOSGetCentroid(const GEOSGeometry *g)
void GEOSBufferParams_destroy_r(GEOSContextHandle_t handle, GEOSBufferParams *parms)
GEOSGeometry * GEOSCoverageCleanWithParams(const GEOSGeometry *input, const GEOSCoverageCleanParams *params)
GEOSGeometry * GEOSMinimumRotatedRectangle_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
size_t * GEOSMinimumSpanningTree(const GEOSGeometry *const geoms[], unsigned int ngeoms)
GEOSCoordSequence * GEOSCoordSeq_create(unsigned int size, unsigned int dims)
int GEOSLineToCurveParams_setMaxAngleDifferenceDegrees_r(GEOSContextHandle_t extHandle, GEOSLineToCurveParams *params, double tolerance)
char GEOSPreparedDistanceWithin(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2, double dist)
const GEOSGeometry * GEOSGetCurveN_r(GEOSContextHandle_t handle, const GEOSGeometry *g, int n)
GEOSGeometry * GEOSWKBReader_read_r(GEOSContextHandle_t handle, GEOSWKBReader *reader, const unsigned char *wkb, size_t size)
GEOSClusterInfo * GEOSClusterEnvelopeIntersects(const GEOSGeometry *g)
GEOSClusterEnvelopeIntersects.
char * GEOSGeomToWKT_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSBufferWithParams_r(GEOSContextHandle_t handle, const GEOSGeometry *g, const GEOSBufferParams *p, double width)
int GEOSBufferParams_setQuadrantSegments_r(GEOSContextHandle_t handle, GEOSBufferParams *p, int quadSegs)
GEOSGeometry * GEOSConcaveHull_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double ratio, unsigned int allowHoles)
GEOSGeometry * GEOSSubdivideByGrid(const GEOSGeometry *g, double xmin, double ymin, double xmax, double ymax, unsigned nx, unsigned ny, int includeExterior)
void GEOSSTRtree_iterate(GEOSSTRtree *tree, GEOSQueryCallback callback, void *userdata)
const GEOSGeometry * GEOSGetExteriorRing_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSCoordSequence * GEOSPreparedNearestPoints(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
void(*) typedef void(* GEOSMessageHandler_r)(const char *message, void *userdata)
Definition geos_c.h:118
GEOSGeometry * GEOSDelaunayTriangulation_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double tolerance, int onlyEdges)
int GEOSGeoJSONWriter_getOutputDimension_r(GEOSContextHandle_t handle, GEOSGeoJSONWriter *writer)
GEOSGeometry ** GEOSGeom_releaseCollection(GEOSGeometry *collection, unsigned int *ngeoms)
void * GEOSGeom_getUserData_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
struct GEOSGeoJSONReader_t GEOSGeoJSONReader
Definition geos_c.h:2241
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:203
char GEOSPreparedContainsProperly(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
void GEOSCoverageCleanParams_destroy(GEOSCoverageCleanParams *params)
void GEOSSTRtree_iterate_r(GEOSContextHandle_t handle, GEOSSTRtree *tree, GEOSQueryCallback callback, void *userdata)
GEOSGeometry * GEOSSplit_r(GEOSContextHandle_t handle, const GEOSGeometry *g, const GEOSGeometry *edge)
void GEOSContext_setLineToCurveParams_r(GEOSContextHandle_t extHandle, const GEOSLineToCurveParams *params)
int GEOS_printDouble(double d, unsigned int precision, char *result)
GEOSGeoJSONWriter * GEOSGeoJSONWriter_create_r(GEOSContextHandle_t handle)
int GEOSDistanceIndexed(const GEOSGeometry *g1, const GEOSGeometry *g2, double *dist)
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:319
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:2227
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:155
GEOSGeometry * GEOSGeomGetStartPoint_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
char GEOSRelatePatternMatch_r(GEOSContextHandle_t handle, const char *intMatrix, const char *imPattern)
void GEOSSTRtree_destroy(GEOSSTRtree *tree)
GEOSCoverageCleanParams * GEOSCoverageCleanParams_create_r(GEOSContextHandle_t extHandle)
GEOSGeometry * GEOSGeom_createCircularString_r(GEOSContextHandle_t handle, GEOSCoordSequence *s)
void GEOSBufferParams_destroy(GEOSBufferParams *parms)
const size_t * GEOSClusterInfo_getInputsForClusterN_r(GEOSContextHandle_t, const GEOSClusterInfo *clusters, size_t i)
int GEOSCoordSeq_setXY_r(GEOSContextHandle_t handle, GEOSCoordSequence *s, unsigned int idx, double x, double y)
GEOSGeomTypes
Definition geos_c.h:225
@ GEOS_MULTILINESTRING
Definition geos_c.h:237
@ GEOS_GEOMETRYCOLLECTION
Definition geos_c.h:241
@ GEOS_POINT
Definition geos_c.h:227
@ GEOS_MULTIPOLYGON
Definition geos_c.h:239
@ GEOS_LINEARRING
Definition geos_c.h:231
@ GEOS_POLYGON
Definition geos_c.h:233
@ GEOS_MULTIPOINT
Definition geos_c.h:235
@ GEOS_LINESTRING
Definition geos_c.h:229
GEOSGeometry * GEOSIntersectionPrec(const GEOSGeometry *g1, const GEOSGeometry *g2, double gridSize)
int GEOSGetNumInteriorRings(const GEOSGeometry *g)
void GEOSContext_setCurveToLineParams_r(GEOSContextHandle_t extHandle, const GEOSCurveToLineParams *params)
char GEOSSTRtree_remove_r(GEOSContextHandle_t handle, GEOSSTRtree *tree, const GEOSGeometry *g, void *item)
void GEOSSTRtree_query_r(GEOSContextHandle_t handle, GEOSSTRtree *tree, const GEOSGeometry *g, GEOSQueryCallback callback, void *userdata)
GEOSGeometry * GEOSGeom_setPrecision_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double gridSize, int flags)
char GEOSEqualsExact(const GEOSGeometry *g1, const GEOSGeometry *g2, double tolerance)
GEOSGeometry * GEOSDisjointSubsetUnion_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSGeom_createEmptyCircularString(void)
int GEOSCurveToLineParams_setMaxStepDegrees(GEOSCurveToLineParams *params, double tolerance)
GEOSMessageHandler_r GEOSContext_setNoticeMessageHandler_r(GEOSContextHandle_t extHandle, GEOSMessageHandler_r nf, void *userData)
int GEOSCoordSeq_getOrdinate(const GEOSCoordSequence *s, unsigned int idx, unsigned int dim, double *val)
void GEOSWKBReader_destroy_r(GEOSContextHandle_t handle, GEOSWKBReader *reader)
GEOSGeometry * GEOSCoverageEdges(const GEOSGeometry *input, int edgetype)
GEOSGeometry * GEOSBoundary(const GEOSGeometry *g)
GEOSGeometry * GEOSUnaryUnion_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
int GEOSDistanceIndexed_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double *dist)
char GEOSCoordSeq_hasM(GEOSCoordSequence *s)
void GEOSWKTReader_destroy(GEOSWKTReader *reader)
GEOSGeometry * GEOSMinimumWidth(const GEOSGeometry *g)
char * GEOSWKTWriter_write(GEOSWKTWriter *writer, const GEOSGeometry *g)
GEOSGeometry * GEOSTopologyPreserveSimplify(const GEOSGeometry *g, double tolerance)
void(* GEOSQueryCallback)(void *item, void *userdata)
Definition geos_c.h:300
int GEOSCoordSeq_getSize_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s, unsigned int *size)
GEOSGeometry * GEOSGeomFromWKT(const char *wkt)
GEOSGeometry * GEOSWKBReader_read(GEOSWKBReader *reader, const unsigned char *wkb, size_t size)
GEOSGeometry * GEOSCoverageSimplifyVW(const GEOSGeometry *input, double tolerance, int preserveBoundary)
char GEOSContains_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
double GEOSProject_r(GEOSContextHandle_t handle, const GEOSGeometry *line, const GEOSGeometry *point)
void GEOSGeom_destroy_r(GEOSContextHandle_t handle, GEOSGeometry *g)
int GEOSHausdorffDistanceDensifyWithPoints(const GEOSGeometry *g1, const GEOSGeometry *g2, double densifyFrac, double *dist, double *p1x, double *p1y, double *p2x, double *p2y)
GEOSGeometry * GEOSTopologyPreserveSimplify_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double tolerance)
GEOSGeometry * GEOSSingleSidedBuffer_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double width, int quadsegs, int joinStyle, double mitreLimit, int leftSide)
GEOSContextHandle_t GEOS_init_r(void)
struct GEOSGeom_t GEOSGeometry
Definition geos_c.h:140
char GEOSPreparedContainsXY_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, double x, double y)
GEOSGeometry * GEOSGeom_createRectangle(double xmin, double ymin, double xmax, double ymax)
GEOSGeometry * GEOSGeom_setPrecision(const GEOSGeometry *g, double gridSize, int flags)
const void * GEOSSTRtree_nearest_generic_r(GEOSContextHandle_t handle, GEOSSTRtree *tree, const void *item, const GEOSGeometry *itemEnvelope, GEOSDistanceCallback distancefn, void *userdata)
int GEOSCoordSeq_getM_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s, unsigned int idx, double *val)
int GEOSGeomTypeId(const GEOSGeometry *g)
int GEOSSTRtree_build(GEOSSTRtree *tree)
GEOSGeometry * GEOSPolygonize_full_r(GEOSContextHandle_t handle, const GEOSGeometry *input, GEOSGeometry **cuts, GEOSGeometry **dangles, GEOSGeometry **invalidRings)
char GEOSCoveredBy_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
int GEOSGetNumCoordinates_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
void GEOSWKTWriter_destroy(GEOSWKTWriter *writer)
int GEOSCoordSeq_getDimensions_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s, unsigned int *dims)
GEOSGeometry * GEOSGeom_createEmptyCollection_r(GEOSContextHandle_t handle, int type)
GEOSGeometry * GEOSGeom_createEmptyCircularString_r(GEOSContextHandle_t handle)
void GEOSWKBWriter_setOutputDimension(GEOSWKBWriter *writer, int newDimension)
GEOSGeometry * GEOSEnvelope(const GEOSGeometry *g)
GEOSGeometry * GEOSGeom_createPoint_r(GEOSContextHandle_t handle, GEOSCoordSequence *s)
GEOSGeometry * GEOSGeom_createEmptyCurvePolygon(void)
GEOSWKBFlavors
Definition geos_c.h:271
@ GEOS_WKB_ISO
Definition geos_c.h:275
@ GEOS_WKB_EXTENDED
Definition geos_c.h:273
GEOSGeometry * GEOSDensify(const GEOSGeometry *g, double tolerance)
GEOSGeometry * GEOSConstrainedDelaunayTriangulation_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
void GEOSWKBReader_setFixStructure_r(GEOSContextHandle_t handle, GEOSWKBReader *reader, char doFix)
void GEOSFree_r(GEOSContextHandle_t handle, void *buffer)
GEOSGeometry * GEOSGeom_extractUniquePoints(const GEOSGeometry *g)
int GEOSHausdorffDistance(const GEOSGeometry *g1, const GEOSGeometry *g2, double *dist)
int GEOSWKBWriter_getOutputDimension(const GEOSWKBWriter *writer)
void GEOSPreparedGeom_destroy_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *g)
char GEOSCoordSeq_hasZ_r(GEOSContextHandle_t handle, GEOSCoordSequence *s)
int GEOS_getWKBOutputDims(void)
GEOSGeometry * GEOSGeom_createPolygon_r(GEOSContextHandle_t handle, GEOSGeometry *shell, GEOSGeometry **holes, unsigned int nholes)
GEOSGeometry * GEOSGeomGetPointN(const GEOSGeometry *g, int n)
const char * GEOSversion(void)
const GEOSGeometry * GEOSGetExteriorRing(const GEOSGeometry *g)
int GEOSMakeValidParams_setMethod(GEOSMakeValidParams *p, enum GEOSMakeValidMethods method)
void initGEOS(GEOSMessageHandler notice_function, GEOSMessageHandler error_function)
GEOSGeometry * GEOSNode(const GEOSGeometry *g)
int GEOSOrientPolygons_r(GEOSContextHandle_t handle, GEOSGeometry *g, int exteriorCW)
int GEOSCoverageCleanParams_setGapMaximumWidth(GEOSCoverageCleanParams *params, double gapMaximumWidth)
GEOSGeometry * GEOSOffsetCurve_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double width, int quadsegs, int joinStyle, double mitreLimit)
GEOSSTRtree * GEOSSTRtree_create(size_t nodeCapacity)
GEOSGeometry * GEOSBoundary_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
struct GEOSCurveToLineParams_t GEOSCurveToLineParams
Definition geos_c.h:196
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:282
@ GEOS_MERGE_MIN_AREA
Definition geos_c.h:288
@ GEOS_MERGE_MIN_INDEX
Definition geos_c.h:290
@ GEOS_MERGE_LONGEST_BORDER
Definition geos_c.h:284
@ GEOS_MERGE_MAX_AREA
Definition geos_c.h:286
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:757
@ GEOSBUF_CAP_SQUARE
Definition geos_c.h:766
@ GEOSBUF_CAP_FLAT
Definition geos_c.h:763
@ GEOSBUF_CAP_ROUND
Definition geos_c.h:760
GEOSGeometry * GEOSConvexHull(const GEOSGeometry *g)
GEOSVoronoiFlags
Definition geos_c.h:5719
@ GEOS_VORONOI_PRESERVE_ORDER
Definition geos_c.h:5725
@ GEOS_VORONOI_ONLY_EDGES
Definition geos_c.h:5721
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:1700
@ GEOSVALID_ALLOW_SELFTOUCHING_RING_FORMING_HOLE
Definition geos_c.h:1702
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:2234
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:2220
char GEOSPreparedWithin_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
int GEOSSegmentIntersection(double ax0, double ay0, double ax1, double ay1, double bx0, double by0, double bx1, double by1, double *cx, double *cy)
int GEOSCoordSeq_setY(GEOSCoordSequence *s, unsigned int idx, double val)
void GEOSMakeValidParams_destroy_r(GEOSContextHandle_t handle, GEOSMakeValidParams *parms)
size_t * GEOSMinimumSpanningTree_r(GEOSContextHandle_t handle, const GEOSGeometry *const geoms[], unsigned int ngeoms)
char GEOSPreparedCovers(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
GEOSMessageHandler_r GEOSContext_setErrorMessageHandler_r(GEOSContextHandle_t extHandle, GEOSMessageHandler_r ef, void *userData)
GEOSGeometry ** GEOSGeom_releaseCollection_r(GEOSContextHandle_t handle, GEOSGeometry *collection, unsigned int *ngeoms)
GEOSGeometry * GEOSGeoJSONReader_readGeometry(GEOSGeoJSONReader *reader, const char *geojson)
GEOSGeometry * GEOSEnvelope_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
char GEOSEqualsIdentical(const GEOSGeometry *g1, const GEOSGeometry *g2)
GEOSGeometry * GEOSGeomFromHEX_buf(const unsigned char *hex, size_t size)
unsigned char * GEOSWKBWriter_writeHEX(GEOSWKBWriter *writer, const GEOSGeometry *g, size_t *size)
GEOSGeometry * GEOSInterpolate_r(GEOSContextHandle_t handle, const GEOSGeometry *line, double d)
GEOSGeometry * GEOSSharedPaths_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
int GEOSGeom_getExtent_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *xmin, double *ymin, double *xmax, double *ymax)
GEOSGeometry * GEOSWKTReader_read_r(GEOSContextHandle_t handle, GEOSWKTReader *reader, const char *wkt)
char GEOSPreparedRelatePattern(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2, const char *imPattern)
int GEOS_setWKBByteOrder(int byteOrder)
int GEOSCoverageIsValid_r(GEOSContextHandle_t extHandle, const GEOSGeometry *input, double gapWidth, GEOSGeometry **output)
int GEOSCoverageCleanParams_setGapMaximumWidth_r(GEOSContextHandle_t extHandle, GEOSCoverageCleanParams *params, double gapMaximumWidth)
void GEOSWKBReader_setFixStructure(GEOSWKBReader *reader, char doFix)
GEOSGeometry * GEOSInterpolate(const GEOSGeometry *line, double d)
char GEOSPreparedContains_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
GEOSGeometry * GEOSInterpolateNormalized_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double d)
int GEOSCoordSeq_getY_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s, unsigned int idx, double *val)
GEOSGeometry * GEOSGeomGetEndPoint(const GEOSGeometry *g)
GEOSGeometry * GEOSSnap_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double tolerance)
GEOSGeometry * GEOSPolygonize_full(const GEOSGeometry *input, GEOSGeometry **cuts, GEOSGeometry **dangles, GEOSGeometry **invalid)
char * GEOSRelateBoundaryNodeRule(const GEOSGeometry *g1, const GEOSGeometry *g2, int bnr)
double GEOSGeom_getPrecision(const GEOSGeometry *g)
GEOSGeometry * GEOSLargestEmptyCircle(const GEOSGeometry *obstacles, const GEOSGeometry *boundary, double tolerance)
char GEOSIntersects(const GEOSGeometry *g1, const GEOSGeometry *g2)
int GEOSCoordSeq_getDimensions(const GEOSCoordSequence *s, unsigned int *dims)
char GEOSPreparedCoveredBy(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
char GEOSCovers(const GEOSGeometry *g1, const GEOSGeometry *g2)
GEOSInterruptCallback * GEOS_interruptRegisterCallback(GEOSInterruptCallback *cb)
int GEOSGeom_getXMin_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *value)
int GEOSCoordSeq_getOrdinate_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s, unsigned int idx, unsigned int dim, double *val)
int GEOSCoordSeq_getXY(const GEOSCoordSequence *s, unsigned int idx, double *x, double *y)
GEOSGeometry * GEOSSimplify_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double tolerance)
GEOSGeometry * GEOSIntersection_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
int GEOSOrientPolygons(GEOSGeometry *g, int exteriorCW)
char GEOSOverlaps(const GEOSGeometry *g1, const GEOSGeometry *g2)
char GEOSHasM_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
void GEOSWKTWriter_setTrim_r(GEOSContextHandle_t handle, GEOSWKTWriter *writer, char trim)
GEOSGeometry * GEOSLineMergeDirected(const GEOSGeometry *g)
GEOSGeometry * GEOSMakeValidWithParams(const GEOSGeometry *g, const GEOSMakeValidParams *makeValidParams)
GEOSGeometry * GEOSGeomFromWKB_buf_r(GEOSContextHandle_t handle, const unsigned char *wkb, size_t size)
GEOSGeometry * GEOSPointOnSurface(const GEOSGeometry *g)
GEOSGeometry * GEOSUnaryUnionPrec(const GEOSGeometry *g, double gridSize)
void GEOSWKTWriter_setTrim(GEOSWKTWriter *writer, char trim)
GEOSGeometry * GEOSBuffer_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double width, int quadsegs)
GEOSGeometry * GEOSMinimumWidth_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSWKBReader_readHEX_r(GEOSContextHandle_t handle, GEOSWKBReader *reader, const unsigned char *hex, size_t size)
GEOSWKBByteOrders
Definition geos_c.h:255
@ GEOS_WKB_NDR
Definition geos_c.h:259
@ GEOS_WKB_XDR
Definition geos_c.h:257
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:2213
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:1657
@ GEOSRELATE_BNR_OGC
Definition geos_c.h:1661
@ GEOSRELATE_BNR_MULTIVALENT_ENDPOINT
Definition geos_c.h:1665
@ GEOSRELATE_BNR_ENDPOINT
Definition geos_c.h:1663
@ GEOSRELATE_BNR_MOD2
Definition geos_c.h:1659
@ GEOSRELATE_BNR_MONOVALENT_ENDPOINT
Definition geos_c.h:1667
const size_t * GEOSClusterInfo_getInputsForClusterN(const GEOSClusterInfo *clusters, size_t i)
GEOSClusterInfo_getInputsForClusterN.
GEOSGeometry * GEOSSymDifferencePrec_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double gridSize)
char * GEOSGeoJSONWriter_writeGeometry_r(GEOSContextHandle_t handle, GEOSGeoJSONWriter *writer, const GEOSGeometry *g, int indent)
int GEOSBufferParams_setSingleSided_r(GEOSContextHandle_t handle, GEOSBufferParams *p, int singleSided)
char GEOSCrosses(const GEOSGeometry *g1, const GEOSGeometry *g2)
GEOSGeometry * GEOSGeomGetStartPoint(const GEOSGeometry *g)
int() GEOSContextInterruptCallback(void *)
Definition geos_c.h:383
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:5451
@ GEOSHULL_PARAM_AREA_RATIO
Definition geos_c.h:5455
@ GEOSHULL_PARAM_VERTEX_RATIO
Definition geos_c.h:5453
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:773
@ GEOSBUF_JOIN_MITRE
Definition geos_c.h:783
@ GEOSBUF_JOIN_ROUND
Definition geos_c.h:778
@ GEOSBUF_JOIN_BEVEL
Definition geos_c.h:788
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)
void GEOS_interruptThread(void)
int GEOSCoordSeq_setZ(GEOSCoordSequence *s, unsigned int idx, double val)
int GEOSBufferParams_setMitreLimit(GEOSBufferParams *p, double mitreLimit)
int(* GEOSTransformXYCallback)(double *x, double *y, void *userdata)
Definition geos_c.h:338
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:189
int GEOSFrechetDistance_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double *dist)
char GEOSRelatePattern(const GEOSGeometry *g1, const GEOSGeometry *g2, const char *imPattern)
GEOSGeometry * GEOSBufferWithStyle_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double width, int quadsegs, int endCapStyle, int joinStyle, double mitreLimit)
char * GEOSRelate_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
GEOSGeometry * GEOSConvexHull_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
struct GEOSGeoJSONWriter_t GEOSGeoJSONWriter
Definition geos_c.h:2248
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:169
char GEOSPreparedCovers_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
GEOSGeometry * GEOSDifference_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
char GEOSCoordSeq_hasM_r(GEOSContextHandle_t handle, GEOSCoordSequence *s)
GEOSGeometry * GEOSLargestEmptyCircle_r(GEOSContextHandle_t handle, const GEOSGeometry *g, const GEOSGeometry *boundary, double tolerance)
int GEOSOrientationIndex_r(GEOSContextHandle_t handle, double Ax, double Ay, double Bx, double By, double Px, double Py)
GEOSGeometry * GEOSPolygonHullSimplify_r(GEOSContextHandle_t handle, const GEOSGeometry *g, unsigned int isOuter, double vertexNumFraction)
GEOSPrecisionRules
Definition geos_c.h:1856
@ GEOS_PREC_NO_TOPO
Definition geos_c.h:1860
@ GEOS_PREC_KEEP_COLLAPSED
Definition geos_c.h:1862
@ GEOS_PREC_VALID_OUTPUT
Definition geos_c.h:1858
int GEOSGetNumGeometries(const GEOSGeometry *g)
int GEOSCoordSeq_setM(GEOSCoordSequence *s, unsigned int idx, double val)
void * GEOSGeom_getUserData(const GEOSGeometry *g)
char GEOSCoordSeq_hasZ(GEOSCoordSequence *s)
int GEOSGetNumCoordinates(const GEOSGeometry *g)
struct GEOSMakeValidParams_t GEOSMakeValidParams
Definition geos_c.h:183
char GEOSRelatePatternMatch(const char *intMatrix, const char *imPattern)
void GEOS_finish_r(GEOSContextHandle_t handle)
GEOSMakeValidMethods
Definition geos_c.h:1737
@ GEOS_MAKE_VALID_LINEWORK
Definition geos_c.h:1741
@ GEOS_MAKE_VALID_STRUCTURE
Definition geos_c.h:1746
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)
void() GEOSInterruptCallback(void)
Definition geos_c.h:373
GEOSGeometry * GEOSGeom_createPoint(GEOSCoordSequence *s)
int GEOS_getWKBByteOrder_r(GEOSContextHandle_t handle)
char GEOSPreparedTouches(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
char GEOSWKBWriter_getIncludeSRID(const GEOSWKBWriter *writer)
GEOSGeometry * GEOSCoverageClean(const GEOSGeometry *input)
GEOSGeometry * GEOSSnap(const GEOSGeometry *input, const GEOSGeometry *snap_target, double tolerance)
GEOSWKBWriter * GEOSWKBWriter_create(void)
struct GEOSSTRtree_t GEOSSTRtree
Definition geos_c.h:162
GEOSCoordSequence * GEOSCoordSeq_create_r(GEOSContextHandle_t handle, unsigned int size, unsigned int dims)
GEOSCoordSequence * GEOSNearestPoints(const GEOSGeometry *g1, const GEOSGeometry *g2)
GEOSGeometry * GEOSSymDifferencePrec(const GEOSGeometry *ga, const GEOSGeometry *gb, double gridSize)
int 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:176
void GEOSClusterInfo_destroy(GEOSClusterInfo *clusters)
GEOSClusterInfo_destroy.
void GEOSWKTWriter_setRoundingPrecision_r(GEOSContextHandle_t handle, GEOSWKTWriter *writer, int precision)
const void * GEOSSTRtree_nearest_generic(GEOSSTRtree *tree, const void *item, const GEOSGeometry *itemEnvelope, GEOSDistanceCallback distancefn, void *userdata)
int GEOSGeom_getYMax(const GEOSGeometry *g, double *value)
int GEOSHausdorffDistanceDensify_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double densifyFrac, double *dist)
double GEOSProject(const GEOSGeometry *line, const GEOSGeometry *point)
int(* GEOSTransformXYZCallback)(double *x, double *y, double *z, void *userdata)
Definition geos_c.h:357
char * GEOSWKTWriter_write_r(GEOSContextHandle_t handle, GEOSWKTWriter *writer, const GEOSGeometry *g)
GEOSCoordSequence * GEOSCoordSeq_clone_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s)
GEOSGeometry * GEOSDifferencePrec(const GEOSGeometry *ga, const GEOSGeometry *gb, double gridSize)
GEOSGeometry * GEOSUnaryUnion(const GEOSGeometry *g)
struct GEOSPrepGeom_t GEOSPreparedGeometry
Definition geos_c.h:147