GEOS 3.14.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 <[email protected]>
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 14
65#endif
66#ifndef GEOS_VERSION_PATCH
67#define GEOS_VERSION_PATCH 0dev
68#endif
69#ifndef GEOS_VERSION
70#define GEOS_VERSION "3.14.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 20
78#define GEOS_CAPI_VERSION_PATCH 0
79#define GEOS_CAPI_VERSION "3.14.0dev-CAPI-1.20.0"
80
81#define GEOS_CAPI_FIRST_INTERFACE GEOS_CAPI_VERSION_MAJOR
82#define GEOS_CAPI_LAST_INTERFACE (GEOS_CAPI_VERSION_MAJOR+GEOS_CAPI_VERSION_MINOR)
83
86#include <geos/export.h>
87
88
95typedef struct GEOSContextHandle_HS *GEOSContextHandle_t;
96
105typedef void (*GEOSMessageHandler)(GEOS_PRINTF_FORMAT const char *fmt, ...)
106 GEOS_PRINTF_FORMAT_ATTR(1, 2);
107
118typedef void (*GEOSMessageHandler_r)(const char *message, void *userdata);
119
120/*
121* When we're included by geos_c.cpp, these types are #defined to the
122* C++ definitions via preprocessor. We don't touch them to allow the
123* compiler to cross-check the declarations. However, for all "normal"
124* C-API users, we need to define these types as "opaque" struct pointers, as
125* those clients don't have access to the original C++ headers, by design.
126*/
127#ifndef GEOSGeometry
128
140typedef struct GEOSGeom_t GEOSGeometry;
141
147typedef struct GEOSPrepGeom_t GEOSPreparedGeometry;
148
155typedef struct GEOSCoordSeq_t GEOSCoordSequence;
156
162typedef struct GEOSSTRtree_t GEOSSTRtree;
163
169typedef struct GEOSBufParams_t GEOSBufferParams;
170
176typedef struct GEOSCoverageCleanParams_t GEOSCoverageCleanParams;
177
183typedef struct GEOSMakeValidParams_t GEOSMakeValidParams;
184
189typedef struct GEOSClusterInfo_t GEOSClusterInfo;
190
191#endif
192
195/*
196* These are compatibility definitions for source compatibility
197* with GEOS 2.X clients relying on that type.
198*/
199typedef GEOSGeometry* GEOSGeom;
200typedef GEOSCoordSequence* GEOSCoordSeq;
201
228 GEOS_CIRCULARSTRING,
229 GEOS_COMPOUNDCURVE,
230 GEOS_CURVEPOLYGON,
231 GEOS_MULTICURVE,
232 GEOS_MULTISURFACE,
233};
234
247
263
271typedef void (*GEOSQueryCallback)(void *item, void *userdata);
272
290typedef int (*GEOSDistanceCallback)(
291 const void* item1,
292 const void* item2,
293 double* distance,
294 void* userdata);
295
296
310 double* x,
311 double* y,
312 void* userdata);
313
314
329 double* x,
330 double* y,
331 double* z,
332 void* userdata);
333
334
335/* ========== Interruption ========== */
336
345typedef void (GEOSInterruptCallback)(void);
346
356
361extern void GEOS_DLL GEOS_interruptRequest(void);
362
367extern void GEOS_DLL GEOS_interruptCancel(void);
368
369/* ========== Initialization and Cleanup ========== */
370
379extern GEOSContextHandle_t GEOS_DLL GEOS_init_r(void);
380
388extern void GEOS_DLL GEOS_finish_r(GEOSContextHandle_t handle);
389
399 GEOSContextHandle_t extHandle,
401
413 GEOSContextHandle_t extHandle,
415
426 GEOSContextHandle_t extHandle,
428 void *userData);
429
442 GEOSContextHandle_t extHandle,
444 void *userData);
445
446/* ========== Coordinate Sequence functions ========== */
447
450 GEOSContextHandle_t handle,
451 unsigned int size,
452 unsigned int dims);
453
456 GEOSContextHandle_t handle,
457 unsigned int size,
458 int hasZ,
459 int hasM);
460
463 GEOSContextHandle_t handle,
464 const double* buf,
465 unsigned int size,
466 int hasZ,
467 int hasM);
468
471 GEOSContextHandle_t handle,
472 const double* x,
473 const double* y,
474 const double* z,
475 const double* m,
476 unsigned int size);
477
479extern int GEOS_DLL GEOSCoordSeq_copyToBuffer_r(
480 GEOSContextHandle_t handle,
481 const GEOSCoordSequence* s,
482 double* buf,
483 int hasZ,
484 int hasM);
485
487extern int GEOS_DLL GEOSCoordSeq_copyToArrays_r(
488 GEOSContextHandle_t handle,
489 const GEOSCoordSequence* s,
490 double* x,
491 double* y,
492 double* z,
493 double* m);
494
497 GEOSContextHandle_t handle,
498 const GEOSCoordSequence* s);
499
501extern void GEOS_DLL GEOSCoordSeq_destroy_r(
502 GEOSContextHandle_t handle,
504
506extern char GEOS_DLL GEOSCoordSeq_hasZ_r(
507 GEOSContextHandle_t handle,
509
511extern char GEOS_DLL GEOSCoordSeq_hasM_r(
512 GEOSContextHandle_t handle,
514
516extern int GEOS_DLL GEOSCoordSeq_setX_r(
517 GEOSContextHandle_t handle,
518 GEOSCoordSequence* s, unsigned int idx,
519 double val);
520
522extern int GEOS_DLL GEOSCoordSeq_setY_r(
523 GEOSContextHandle_t handle,
524 GEOSCoordSequence* s, unsigned int idx,
525 double val);
526
528extern int GEOS_DLL GEOSCoordSeq_setZ_r(
529 GEOSContextHandle_t handle,
530 GEOSCoordSequence* s, unsigned int idx,
531 double val);
532
534extern int GEOS_DLL GEOSCoordSeq_setM_r(
535 GEOSContextHandle_t handle,
536 GEOSCoordSequence* s, unsigned int idx,
537 double val);
538
540extern int GEOS_DLL GEOSCoordSeq_setXY_r(
541 GEOSContextHandle_t handle,
542 GEOSCoordSequence* s, unsigned int idx,
543 double x, double y);
544
546extern int GEOS_DLL GEOSCoordSeq_setXYZ_r(
547 GEOSContextHandle_t handle,
548 GEOSCoordSequence* s, unsigned int idx,
549 double x, double y, double z);
550
552extern int GEOS_DLL GEOSCoordSeq_setOrdinate_r(
553 GEOSContextHandle_t handle,
555 unsigned int idx,
556 unsigned int dim, double val);
557
559extern int GEOS_DLL GEOSCoordSeq_getX_r(
560 GEOSContextHandle_t handle,
561 const GEOSCoordSequence* s,
562 unsigned int idx, double *val);
563
565extern int GEOS_DLL GEOSCoordSeq_getY_r(
566 GEOSContextHandle_t handle,
567 const GEOSCoordSequence* s,
568 unsigned int idx, double *val);
569
571extern int GEOS_DLL GEOSCoordSeq_getZ_r(
572 GEOSContextHandle_t handle,
573 const GEOSCoordSequence* s,
574 unsigned int idx, double *val);
575
577extern int GEOS_DLL GEOSCoordSeq_getM_r(
578 GEOSContextHandle_t handle,
579 const GEOSCoordSequence* s,
580 unsigned int idx, double *val);
581
583extern int GEOS_DLL GEOSCoordSeq_getXY_r(
584 GEOSContextHandle_t handle,
585 const GEOSCoordSequence* s,
586 unsigned int idx,
587 double *x, double *y);
588
590extern int GEOS_DLL GEOSCoordSeq_getXYZ_r(
591 GEOSContextHandle_t handle,
592 const GEOSCoordSequence* s,
593 unsigned int idx,
594 double *x, double *y, double *z);
595
597extern int GEOS_DLL GEOSCoordSeq_getOrdinate_r(
598 GEOSContextHandle_t handle,
599 const GEOSCoordSequence* s,
600 unsigned int idx,
601 unsigned int dim, double *val);
602
604extern int GEOS_DLL GEOSCoordSeq_getSize_r(
605 GEOSContextHandle_t handle,
606 const GEOSCoordSequence* s,
607 unsigned int *size);
608
611 GEOSContextHandle_t handle,
612 const GEOSCoordSequence* s,
613 unsigned int *dims);
614
616extern int GEOS_DLL GEOSCoordSeq_isCCW_r(
617 GEOSContextHandle_t handle,
618 const GEOSCoordSequence* s,
619 char* is_ccw);
620
621/* ========= Linear referencing functions ========= */
622
624extern double GEOS_DLL GEOSProject_r(
625 GEOSContextHandle_t handle,
626 const GEOSGeometry *line,
627 const GEOSGeometry *point);
628
631 GEOSContextHandle_t handle,
632 const GEOSGeometry *line,
633 double d);
634
636extern double GEOS_DLL GEOSProjectNormalized_r(
637 GEOSContextHandle_t handle,
638 const GEOSGeometry *g,
639 const GEOSGeometry *p);
640
643 GEOSContextHandle_t handle,
644 const GEOSGeometry *g,
645 double d);
646
647/* ========== Buffer related functions ========== */
648
650extern GEOSGeometry GEOS_DLL *GEOSBuffer_r(
651 GEOSContextHandle_t handle,
652 const GEOSGeometry* g,
653 double width, int quadsegs);
654
670
692
695 GEOSContextHandle_t handle);
696
698extern void GEOS_DLL GEOSBufferParams_destroy_r(
699 GEOSContextHandle_t handle,
700 GEOSBufferParams* parms);
701
704 GEOSContextHandle_t handle,
706 int style);
707
710 GEOSContextHandle_t handle,
712 int joinStyle);
713
716 GEOSContextHandle_t handle,
718 double mitreLimit);
719
722 GEOSContextHandle_t handle,
724 int quadSegs);
725
728 GEOSContextHandle_t handle,
730 int singleSided);
731
734 GEOSContextHandle_t handle,
735 const GEOSGeometry* g,
736 const GEOSBufferParams* p,
737 double width);
738
741 GEOSContextHandle_t handle,
742 const GEOSGeometry* g,
743 double width, int quadsegs, int endCapStyle,
744 int joinStyle, double mitreLimit);
745
748 GEOSContextHandle_t handle,
749 const GEOSGeometry* g,
750 double tolerance);
751
754 GEOSContextHandle_t handle,
755 const GEOSGeometry* g, double width, int quadsegs,
756 int joinStyle, double mitreLimit);
757
758
759/* ========= Geometry Constructors ========= */
760
763 GEOSContextHandle_t handle,
765
768 GEOSContextHandle_t handle,
769 double x, double y);
770
773 GEOSContextHandle_t handle);
774
777 GEOSContextHandle_t handle,
779
782 GEOSContextHandle_t handle,
784
787 GEOSContextHandle_t handle);
788
791 GEOSContextHandle_t handle);
792
795 GEOSContextHandle_t handle,
796 GEOSGeometry* shell,
797 GEOSGeometry** holes,
798 unsigned int nholes);
799
802 GEOSContextHandle_t handle,
803 int type,
804 GEOSGeometry* *geoms,
805 unsigned int ngeoms);
806
809 GEOSContextHandle_t handle,
810 GEOSGeometry * collection,
811 unsigned int * ngeoms);
812
815 GEOSContextHandle_t handle, int type);
816
819 GEOSContextHandle_t handle,
820 double xmin, double ymin,
821 double xmax, double ymax);
822
825 GEOSContextHandle_t handle,
826 const GEOSGeometry* g);
827
830 GEOSContextHandle_t handle,
832
835 GEOSContextHandle_t handle);
836
839 GEOSContextHandle_t handle,
840 GEOSGeometry** curves,
841 unsigned int ncurves);
842
845 GEOSContextHandle_t handle);
846
849 GEOSContextHandle_t handle,
850 GEOSGeometry* shell,
851 GEOSGeometry** holes,
852 unsigned int nholes);
853
856 GEOSContextHandle_t handle);
857
858/* ========= Memory management ========= */
859
861extern void GEOS_DLL GEOSGeom_destroy_r(
862 GEOSContextHandle_t handle,
863 GEOSGeometry* g);
864
865/* ========= Coverages ========= */
866
868extern GEOSGeometry GEOS_DLL *
870 GEOSContextHandle_t handle,
871 const GEOSGeometry* g);
872
874extern int GEOS_DLL
876 GEOSContextHandle_t extHandle,
877 const GEOSGeometry* input,
878 double gapWidth,
879 GEOSGeometry** output);
880
882extern GEOSGeometry GEOS_DLL *
884 GEOSContextHandle_t extHandle,
885 const GEOSGeometry* input,
886 double tolerance,
887 int preserveBoundary);
888
890extern GEOSCoverageCleanParams GEOS_DLL *
892 GEOSContextHandle_t extHandle);
893
895extern void GEOS_DLL
897 GEOSContextHandle_t extHandle,
899
901extern int GEOS_DLL
903 GEOSContextHandle_t extHandle,
905 double snappingDistance);
906
908extern int GEOS_DLL
910 GEOSContextHandle_t extHandle,
912 double gapMaximumWidth);
913
915extern int GEOS_DLL
917 GEOSContextHandle_t extHandle,
919 int overlapMergeStrategy);
920
922extern GEOSGeometry GEOS_DLL *
924 GEOSContextHandle_t extHandle,
925 const GEOSGeometry* input,
926 const GEOSCoverageCleanParams* params);
927
929extern GEOSGeometry GEOS_DLL *
931 GEOSContextHandle_t extHandle,
932 const GEOSGeometry* input);
933
934/* ========= Topology Operations ========= */
935
938 GEOSContextHandle_t handle,
939 const GEOSGeometry* g);
940
943 GEOSContextHandle_t handle,
944 const GEOSGeometry* g1,
945 const GEOSGeometry* g2);
946
949 GEOSContextHandle_t handle,
950 const GEOSGeometry* g1,
951 const GEOSGeometry* g2,
952 double gridSize);
953
956 GEOSContextHandle_t handle,
957 const GEOSGeometry* g);
958
961 GEOSContextHandle_t handle,
962 const GEOSGeometry* g,
963 double ratio,
964 unsigned int allowHoles);
965
968 GEOSContextHandle_t handle,
969 const GEOSGeometry* g,
970 double ratio,
971 unsigned int allowHoles);
972
975 GEOSContextHandle_t handle,
976 const GEOSGeometry* g,
977 unsigned int isOuter,
978 double vertexNumFraction);
979
982 GEOSContextHandle_t handle,
983 const GEOSGeometry* g,
984 unsigned int isOuter,
985 unsigned int parameterMode,
986 double parameter);
987
990 GEOSContextHandle_t handle,
991 const GEOSGeometry* g,
992 double lengthRatio,
993 unsigned int isTight,
994 unsigned int isHolesAllowed);
995
998 GEOSContextHandle_t handle,
999 const GEOSGeometry* g);
1000
1003 GEOSContextHandle_t handle,
1004 const GEOSGeometry* g,
1005 double tolerance);
1006
1009 GEOSContextHandle_t handle,
1010 const GEOSGeometry* g,
1011 const GEOSGeometry* boundary,
1012 double tolerance);
1013
1016 GEOSContextHandle_t handle,
1017 const GEOSGeometry* g);
1018
1021 GEOSContextHandle_t handle,
1022 const GEOSGeometry* g);
1023
1025extern int GEOS_DLL GEOSMinimumClearance_r(
1026 GEOSContextHandle_t handle,
1027 const GEOSGeometry* g,
1028 double* distance);
1029
1032 GEOSContextHandle_t handle,
1033 const GEOSGeometry* g1,
1034 const GEOSGeometry* g2);
1035
1038 GEOSContextHandle_t handle,
1039 const GEOSGeometry* g1,
1040 const GEOSGeometry* g2,
1041 double gridSize);
1042
1045 GEOSContextHandle_t handle,
1046 const GEOSGeometry* g1,
1047 const GEOSGeometry* g2);
1048
1051 GEOSContextHandle_t handle,
1052 const GEOSGeometry* g1,
1053 const GEOSGeometry* g2,
1054 double gridSize);
1055
1058 GEOSContextHandle_t handle,
1059 const GEOSGeometry* g);
1060
1062extern GEOSGeometry GEOS_DLL *GEOSUnion_r(
1063 GEOSContextHandle_t handle,
1064 const GEOSGeometry* g1,
1065 const GEOSGeometry* g2);
1066
1069 GEOSContextHandle_t handle,
1070 const GEOSGeometry* g1,
1071 const GEOSGeometry* g2,
1072 double gridSize);
1073
1076 GEOSContextHandle_t handle,
1077 const GEOSGeometry* g);
1078
1081 GEOSContextHandle_t handle,
1082 const GEOSGeometry* g,
1083 double gridSize);
1084
1087 GEOSContextHandle_t handle,
1088 const GEOSGeometry* g);
1089
1092 GEOSContextHandle_t handle,
1093 const GEOSGeometry* g);
1094
1097 GEOSContextHandle_t handle,
1098 const GEOSGeometry* g);
1099
1102 GEOSContextHandle_t handle,
1103 const GEOSGeometry* g,
1104 double* radius,
1105 GEOSGeometry** center);
1106
1108extern GEOSGeometry GEOS_DLL *GEOSNode_r(
1109 GEOSContextHandle_t handle,
1110 const GEOSGeometry* g);
1111
1114 GEOSContextHandle_t handle,
1115 const GEOSGeometry* g,
1116 double xmin, double ymin,
1117 double xmax, double ymax);
1118
1121 GEOSContextHandle_t handle,
1122 const GEOSGeometry *const geoms[],
1123 unsigned int ngeoms);
1124
1127 GEOSContextHandle_t handle,
1128 const GEOSGeometry *const geoms[],
1129 unsigned int ngems);
1130
1133 GEOSContextHandle_t handle,
1134 const GEOSGeometry * const geoms[],
1135 unsigned int ngeoms);
1136
1139 GEOSContextHandle_t handle,
1140 const GEOSGeometry* input,
1141 GEOSGeometry** cuts,
1142 GEOSGeometry** dangles,
1143 GEOSGeometry** invalidRings);
1144
1147 GEOSContextHandle_t handle,
1148 const GEOSGeometry* g);
1149
1152 GEOSContextHandle_t handle,
1153 const GEOSGeometry* g);
1154
1157 GEOSContextHandle_t handle,
1158 const GEOSGeometry* g);
1159
1162 GEOSContextHandle_t handle,
1163 const GEOSGeometry* g,
1164 double start_fraction,
1165 double end_fdraction);
1166
1169 GEOSContextHandle_t handle,
1170 const GEOSGeometry* g);
1171
1174 GEOSContextHandle_t handle,
1175 const GEOSGeometry* g,
1176 double tolerance);
1177
1180 GEOSContextHandle_t handle,
1181 const GEOSGeometry* g, double tolerance);
1182
1185 GEOSContextHandle_t handle,
1186 const GEOSGeometry* g);
1187
1190 GEOSContextHandle_t handle,
1191 const GEOSGeometry* g1,
1192 const GEOSGeometry* g2);
1193
1195extern GEOSGeometry GEOS_DLL *GEOSSnap_r(
1196 GEOSContextHandle_t handle,
1197 const GEOSGeometry* g1,
1198 const GEOSGeometry* g2,
1199 double tolerance);
1200
1203 GEOSContextHandle_t handle,
1204 const GEOSGeometry *g,
1205 double tolerance,
1206 int onlyEdges);
1207
1210 GEOSContextHandle_t handle,
1211 const GEOSGeometry *g);
1212
1215 GEOSContextHandle_t extHandle,
1216 const GEOSGeometry *g,
1217 const GEOSGeometry *env,
1218 double tolerance,
1219 int flags);
1220
1222extern int GEOS_DLL GEOSSegmentIntersection_r(
1223 GEOSContextHandle_t extHandle,
1224 double ax0, double ay0,
1225 double ax1, double ay1,
1226 double bx0, double by0,
1227 double bx1, double by1,
1228 double* cx, double* cy);
1229
1230/* ========= Binary predicates ========= */
1231
1233extern char GEOS_DLL GEOSDisjoint_r(
1234 GEOSContextHandle_t handle,
1235 const GEOSGeometry* g1,
1236 const GEOSGeometry* g2);
1237
1239extern char GEOS_DLL GEOSTouches_r(
1240 GEOSContextHandle_t handle,
1241 const GEOSGeometry* g1,
1242 const GEOSGeometry* g2);
1243
1245extern char GEOS_DLL GEOSIntersects_r(
1246 GEOSContextHandle_t handle,
1247 const GEOSGeometry* g1,
1248 const GEOSGeometry* g2);
1249
1251extern char GEOS_DLL GEOSCrosses_r(
1252 GEOSContextHandle_t handle,
1253 const GEOSGeometry* g1,
1254 const GEOSGeometry* g2);
1255
1257extern char GEOS_DLL GEOSWithin_r(
1258 GEOSContextHandle_t handle,
1259 const GEOSGeometry* g1,
1260 const GEOSGeometry* g2);
1261
1263extern char GEOS_DLL GEOSContains_r(
1264 GEOSContextHandle_t handle,
1265 const GEOSGeometry* g1,
1266 const GEOSGeometry* g2);
1267
1269extern char GEOS_DLL GEOSOverlaps_r(
1270 GEOSContextHandle_t handle,
1271 const GEOSGeometry* g1,
1272 const GEOSGeometry* g2);
1273
1275extern char GEOS_DLL GEOSEquals_r(
1276 GEOSContextHandle_t handle,
1277 const GEOSGeometry* g1,
1278 const GEOSGeometry* g2);
1279
1281extern char GEOS_DLL GEOSEqualsExact_r(
1282 GEOSContextHandle_t handle,
1283 const GEOSGeometry* g1,
1284 const GEOSGeometry* g2,
1285 double tolerance);
1286
1288extern char GEOS_DLL GEOSEqualsIdentical_r(
1289 GEOSContextHandle_t handle,
1290 const GEOSGeometry* g1,
1291 const GEOSGeometry* g2);
1292
1294extern char GEOS_DLL GEOSCovers_r(
1295 GEOSContextHandle_t handle,
1296 const GEOSGeometry* g1,
1297 const GEOSGeometry* g2);
1298
1300extern char GEOS_DLL GEOSCoveredBy_r(
1301 GEOSContextHandle_t handle,
1302 const GEOSGeometry* g1,
1303 const GEOSGeometry* g2);
1304
1305/* ========= Prepared Geometry Binary Predicates ========== */
1306
1309 GEOSContextHandle_t handle,
1310 const GEOSGeometry* g);
1311
1313extern void GEOS_DLL GEOSPreparedGeom_destroy_r(
1314 GEOSContextHandle_t handle,
1315 const GEOSPreparedGeometry* g);
1316
1318extern char GEOS_DLL GEOSPreparedContains_r(
1319 GEOSContextHandle_t handle,
1320 const GEOSPreparedGeometry* pg1,
1321 const GEOSGeometry* g2);
1322
1324extern char GEOS_DLL GEOSPreparedContainsXY_r(
1325 GEOSContextHandle_t handle,
1326 const GEOSPreparedGeometry* pg1,
1327 double x,
1328 double y);
1329
1332 GEOSContextHandle_t handle,
1333 const GEOSPreparedGeometry* pg1,
1334 const GEOSGeometry* g2);
1335
1337extern char GEOS_DLL GEOSPreparedCoveredBy_r(
1338 GEOSContextHandle_t handle,
1339 const GEOSPreparedGeometry* pg1,
1340 const GEOSGeometry* g2);
1341
1343extern char GEOS_DLL GEOSPreparedCovers_r(
1344 GEOSContextHandle_t handle,
1345 const GEOSPreparedGeometry* pg1,
1346 const GEOSGeometry* g2);
1347
1349extern char GEOS_DLL GEOSPreparedCrosses_r(
1350 GEOSContextHandle_t handle,
1351 const GEOSPreparedGeometry* pg1,
1352 const GEOSGeometry* g2);
1353
1355extern char GEOS_DLL GEOSPreparedDisjoint_r(
1356 GEOSContextHandle_t handle,
1357 const GEOSPreparedGeometry* pg1,
1358 const GEOSGeometry* g2);
1359
1361extern char GEOS_DLL GEOSPreparedIntersects_r(
1362 GEOSContextHandle_t handle,
1363 const GEOSPreparedGeometry* pg1,
1364 const GEOSGeometry* g2);
1365
1367extern char GEOS_DLL GEOSPreparedIntersectsXY_r(
1368 GEOSContextHandle_t handle,
1369 const GEOSPreparedGeometry* pg1,
1370 double x,
1371 double y);
1372
1374extern char GEOS_DLL GEOSPreparedOverlaps_r(
1375 GEOSContextHandle_t handle,
1376 const GEOSPreparedGeometry* pg1,
1377 const GEOSGeometry* g2);
1378
1380extern char GEOS_DLL GEOSPreparedTouches_r(
1381 GEOSContextHandle_t handle,
1382 const GEOSPreparedGeometry* pg1,
1383 const GEOSGeometry* g2);
1384
1386extern char GEOS_DLL GEOSPreparedWithin_r(
1387 GEOSContextHandle_t handle,
1388 const GEOSPreparedGeometry* pg1,
1389 const GEOSGeometry* g2);
1390
1392extern char GEOS_DLL * GEOSPreparedRelate_r(
1393 GEOSContextHandle_t handle,
1394 const GEOSPreparedGeometry* pg1,
1395 const GEOSGeometry* g2);
1396
1398extern char GEOS_DLL GEOSPreparedRelatePattern_r(
1399 GEOSContextHandle_t handle,
1400 const GEOSPreparedGeometry* pg1,
1401 const GEOSGeometry* g2,
1402 const char* im);
1403
1406 GEOSContextHandle_t handle,
1407 const GEOSPreparedGeometry* pg1,
1408 const GEOSGeometry* g2);
1409
1411extern int GEOS_DLL GEOSPreparedDistance_r(
1412 GEOSContextHandle_t handle,
1413 const GEOSPreparedGeometry* pg1,
1414 const GEOSGeometry* g2, double *dist);
1415
1417extern char GEOS_DLL GEOSPreparedDistanceWithin_r(
1418 GEOSContextHandle_t handle,
1419 const GEOSPreparedGeometry* pg1,
1420 const GEOSGeometry* g2, double dist);
1421
1422/* ========== STRtree ========== */
1423
1426 GEOSContextHandle_t handle,
1427 size_t nodeCapacity);
1428
1430extern int GEOS_DLL GEOSSTRtree_build_r(
1431 GEOSContextHandle_t handle,
1432 GEOSSTRtree *tree);
1433
1435extern void GEOS_DLL GEOSSTRtree_insert_r(
1436 GEOSContextHandle_t handle,
1437 GEOSSTRtree *tree,
1438 const GEOSGeometry *g,
1439 void *item);
1440
1442extern void GEOS_DLL GEOSSTRtree_query_r(
1443 GEOSContextHandle_t handle,
1444 GEOSSTRtree *tree,
1445 const GEOSGeometry *g,
1446 GEOSQueryCallback callback,
1447 void *userdata);
1448
1451 GEOSContextHandle_t handle,
1452 GEOSSTRtree *tree,
1453 const GEOSGeometry* geom);
1454
1456extern const void GEOS_DLL *GEOSSTRtree_nearest_generic_r(
1457 GEOSContextHandle_t handle,
1458 GEOSSTRtree *tree,
1459 const void* item,
1460 const GEOSGeometry* itemEnvelope,
1461 GEOSDistanceCallback distancefn,
1462 void* userdata);
1463
1465extern void GEOS_DLL GEOSSTRtree_iterate_r(
1466 GEOSContextHandle_t handle,
1467 GEOSSTRtree *tree,
1468 GEOSQueryCallback callback,
1469 void *userdata);
1470
1472extern char GEOS_DLL GEOSSTRtree_remove_r(
1473 GEOSContextHandle_t handle,
1474 GEOSSTRtree *tree,
1475 const GEOSGeometry *g,
1476 void *item);
1477
1479extern void GEOS_DLL GEOSSTRtree_destroy_r(
1480 GEOSContextHandle_t handle,
1481 GEOSSTRtree *tree);
1482
1483
1484/* ========= Unary predicate ========= */
1485
1487extern char GEOS_DLL GEOSisEmpty_r(
1488 GEOSContextHandle_t handle,
1489 const GEOSGeometry* g);
1490
1492extern char GEOS_DLL GEOSisSimple_r(
1493 GEOSContextHandle_t handle,
1494 const GEOSGeometry* g);
1495
1497extern char GEOS_DLL GEOSisRing_r(
1498 GEOSContextHandle_t handle,
1499 const GEOSGeometry* g);
1500
1502extern char GEOS_DLL GEOSHasZ_r(
1503 GEOSContextHandle_t handle,
1504 const GEOSGeometry* g);
1505
1507extern char GEOS_DLL GEOSHasM_r(
1508 GEOSContextHandle_t handle,
1509 const GEOSGeometry* g);
1510
1512extern char GEOS_DLL GEOSisClosed_r(
1513 GEOSContextHandle_t handle,
1514 const GEOSGeometry *g);
1515
1516/* ========== Dimensionally Extended 9 Intersection Model ========== */
1517
1534
1536extern char GEOS_DLL GEOSRelatePattern_r(
1537 GEOSContextHandle_t handle,
1538 const GEOSGeometry* g1,
1539 const GEOSGeometry* g2,
1540 const char *imPattern);
1541
1543extern char GEOS_DLL *GEOSRelate_r(
1544 GEOSContextHandle_t handle,
1545 const GEOSGeometry* g1,
1546 const GEOSGeometry* g2);
1547
1549extern char GEOS_DLL GEOSRelatePatternMatch_r(
1550 GEOSContextHandle_t handle,
1551 const char *intMatrix,
1552 const char *imPattern);
1553
1555extern char GEOS_DLL *GEOSRelateBoundaryNodeRule_r(
1556 GEOSContextHandle_t handle,
1557 const GEOSGeometry* g1,
1558 const GEOSGeometry* g2,
1559 int bnr);
1560
1561/* ========= Validity checking ========= */
1562
1569
1571extern char GEOS_DLL GEOSisValid_r(
1572 GEOSContextHandle_t handle,
1573 const GEOSGeometry* g);
1574
1576extern char GEOS_DLL *GEOSisValidReason_r(
1577 GEOSContextHandle_t handle,
1578 const GEOSGeometry* g);
1579
1581extern char GEOS_DLL GEOSisValidDetail_r(
1582 GEOSContextHandle_t handle,
1583 const GEOSGeometry* g,
1584 int flags,
1585 char** reason,
1586 GEOSGeometry** location);
1587
1588/* ========== Make Valid ========== */
1589
1606
1609 GEOSContextHandle_t extHandle);
1610
1613 GEOSContextHandle_t handle,
1614 GEOSMakeValidParams* parms);
1615
1618 GEOSContextHandle_t handle,
1620 int style);
1621
1624 GEOSContextHandle_t handle,
1626 enum GEOSMakeValidMethods method);
1627
1630 GEOSContextHandle_t handle,
1631 const GEOSGeometry* g);
1632
1635 GEOSContextHandle_t handle,
1636 const GEOSGeometry* g,
1637 const GEOSMakeValidParams* makeValidParams);
1638
1641 GEOSContextHandle_t handle,
1642 const GEOSGeometry* g,
1643 double tolerance);
1644
1645/* ========== Geometry info ========== */
1646
1648/* Return NULL on exception, result must be freed by caller. */
1649extern char GEOS_DLL *GEOSGeomType_r(
1650 GEOSContextHandle_t handle,
1651 const GEOSGeometry* g);
1652
1654extern int GEOS_DLL GEOSGeomTypeId_r(
1655 GEOSContextHandle_t handle,
1656 const GEOSGeometry* g);
1657
1659extern int GEOS_DLL GEOSGetSRID_r(
1660 GEOSContextHandle_t handle,
1661 const GEOSGeometry* g);
1662
1664extern void GEOS_DLL GEOSSetSRID_r(
1665 GEOSContextHandle_t handle,
1666 GEOSGeometry* g, int SRID);
1667
1669extern void GEOS_DLL *GEOSGeom_getUserData_r(
1670 GEOSContextHandle_t handle,
1671 const GEOSGeometry* g);
1672
1674extern void GEOS_DLL GEOSGeom_setUserData_r(
1675 GEOSContextHandle_t handle,
1676 GEOSGeometry* g,
1677 void* userData);
1678
1680extern int GEOS_DLL GEOSGetNumGeometries_r(
1681 GEOSContextHandle_t handle,
1682 const GEOSGeometry* g);
1683
1685extern const GEOSGeometry GEOS_DLL *GEOSGetGeometryN_r(
1686 GEOSContextHandle_t handle,
1687 const GEOSGeometry* g, int n);
1688
1690extern int GEOS_DLL GEOSNormalize_r(
1691 GEOSContextHandle_t handle,
1692 GEOSGeometry* g);
1693
1695extern int GEOS_DLL GEOSOrientPolygons_r(
1696 GEOSContextHandle_t handle,
1697 GEOSGeometry* g,
1698 int exteriorCW);
1699
1712
1715 GEOSContextHandle_t handle,
1716 const GEOSGeometry *g,
1717 double gridSize,
1718 int flags);
1719
1721extern double GEOS_DLL GEOSGeom_getPrecision_r(
1722 GEOSContextHandle_t handle,
1723 const GEOSGeometry *g);
1724
1726extern int GEOS_DLL GEOSGetNumInteriorRings_r(
1727 GEOSContextHandle_t handle,
1728 const GEOSGeometry* g);
1729
1731extern int GEOS_DLL GEOSGeomGetNumPoints_r(
1732 GEOSContextHandle_t handle,
1733 const GEOSGeometry* g);
1734
1736extern int GEOS_DLL GEOSGeomGetX_r(
1737 GEOSContextHandle_t handle,
1738 const GEOSGeometry *g,
1739 double *x);
1740
1742extern int GEOS_DLL GEOSGeomGetY_r(
1743 GEOSContextHandle_t handle,
1744 const GEOSGeometry *g,
1745 double *y);
1746
1748extern int GEOS_DLL GEOSGeomGetZ_r(
1749 GEOSContextHandle_t handle,
1750 const GEOSGeometry *g,
1751 double *z);
1752
1754extern int GEOS_DLL GEOSGeomGetM_r(
1755 GEOSContextHandle_t handle,
1756 const GEOSGeometry *g,
1757 double *m);
1758
1761 GEOSContextHandle_t handle,
1762 const GEOSGeometry* g, int n);
1763
1766 GEOSContextHandle_t handle,
1767 const GEOSGeometry* g);
1768
1770extern int GEOS_DLL GEOSGetNumCoordinates_r(
1771 GEOSContextHandle_t handle,
1772 const GEOSGeometry* g);
1773
1776 GEOSContextHandle_t handle,
1777 const GEOSGeometry* g);
1778
1780extern int GEOS_DLL GEOSGeom_getDimensions_r(
1781 GEOSContextHandle_t handle,
1782 const GEOSGeometry* g);
1783
1786 GEOSContextHandle_t handle,
1787 const GEOSGeometry* g);
1788
1790extern int GEOS_DLL GEOSGeom_getXMin_r(
1791 GEOSContextHandle_t handle,
1792 const GEOSGeometry* g,
1793 double* value);
1794
1796extern int GEOS_DLL GEOSGeom_getYMin_r(
1797 GEOSContextHandle_t handle,
1798 const GEOSGeometry* g,
1799 double* value);
1800
1802extern int GEOS_DLL GEOSGeom_getXMax_r(
1803 GEOSContextHandle_t handle,
1804 const GEOSGeometry* g,
1805 double* value);
1806
1808extern int GEOS_DLL GEOSGeom_getYMax_r(
1809 GEOSContextHandle_t handle,
1810 const GEOSGeometry* g,
1811 double* value);
1812
1814extern int GEOS_DLL GEOSGeom_getExtent_r(
1815 GEOSContextHandle_t handle,
1816 const GEOSGeometry* g,
1817 double* xmin,
1818 double* ymin,
1819 double* xmax,
1820 double* ymax);
1821
1824 GEOSContextHandle_t handle,
1825 const GEOSGeometry *g,
1826 int n);
1827
1830 GEOSContextHandle_t handle,
1831 const GEOSGeometry *g);
1832
1835 GEOSContextHandle_t handle,
1836 const GEOSGeometry *g);
1837
1838/* ========= Misc functions ========= */
1839
1841extern int GEOS_DLL GEOSArea_r(
1842 GEOSContextHandle_t handle,
1843 const GEOSGeometry* g,
1844 double *area);
1845
1847extern int GEOS_DLL GEOSLength_r(
1848 GEOSContextHandle_t handle,
1849 const GEOSGeometry* g,
1850 double *length);
1851
1853extern int GEOS_DLL GEOSDistance_r(
1854 GEOSContextHandle_t handle,
1855 const GEOSGeometry* g1,
1856 const GEOSGeometry* g2,
1857 double *dist);
1858
1860extern char GEOS_DLL GEOSDistanceWithin_r(
1861 GEOSContextHandle_t handle,
1862 const GEOSGeometry* g1,
1863 const GEOSGeometry* g2,
1864 double dist);
1865
1867extern int GEOS_DLL GEOSDistanceIndexed_r(
1868 GEOSContextHandle_t handle,
1869 const GEOSGeometry* g1,
1870 const GEOSGeometry* g2,
1871 double *dist);
1872
1874extern int GEOS_DLL GEOSHausdorffDistance_r(
1875 GEOSContextHandle_t handle,
1876 const GEOSGeometry *g1,
1877 const GEOSGeometry *g2,
1878 double *dist);
1879
1882 GEOSContextHandle_t handle,
1883 const GEOSGeometry *g1,
1884 const GEOSGeometry *g2,
1885 double densifyFrac, double *dist);
1886
1888extern int GEOS_DLL GEOSFrechetDistance_r(
1889 GEOSContextHandle_t handle,
1890 const GEOSGeometry *g1,
1891 const GEOSGeometry *g2,
1892 double *dist);
1893
1896 GEOSContextHandle_t handle,
1897 const GEOSGeometry *g1,
1898 const GEOSGeometry *g2,
1899 double densifyFrac,
1900 double *dist);
1901
1902
1904extern int GEOS_DLL GEOSHilbertCode_r(
1905 GEOSContextHandle_t handle,
1906 const GEOSGeometry *geom,
1907 const GEOSGeometry* extent,
1908 unsigned int level,
1909 unsigned int *code
1910);
1911
1913extern int GEOS_DLL GEOSGeomGetLength_r(
1914 GEOSContextHandle_t handle,
1915 const GEOSGeometry *g,
1916 double *length);
1917
1920 GEOSContextHandle_t handle,
1921 const GEOSGeometry* g1,
1922 const GEOSGeometry* g2);
1923
1926 GEOSContextHandle_t handle,
1927 const GEOSGeometry* g,
1928 GEOSTransformXYCallback callback,
1929 void* userdata);
1930
1933 GEOSContextHandle_t handle,
1934 const GEOSGeometry* g,
1935 GEOSTransformXYZCallback callback,
1936 void* userdata);
1937
1940 GEOSContextHandle_t handle,
1941 const GEOSGeometry* g,
1942 double eps,
1943 unsigned minPoints);
1944
1947 GEOSContextHandle_t handle,
1948 const GEOSGeometry* g,
1949 double d);
1950
1953 GEOSContextHandle_t handle,
1954 const GEOSGeometry* g);
1955
1958 GEOSContextHandle_t handle,
1959 const GEOSGeometry* g,
1960 double d);
1961
1964 GEOSContextHandle_t handle,
1965 const GEOSGeometry* g);
1966
1969
1971extern size_t GEOS_DLL GEOSClusterInfo_getClusterSize_r(GEOSContextHandle_t, const GEOSClusterInfo* clusters, size_t i);
1972
1975
1977extern const size_t GEOS_DLL* GEOSClusterInfo_getInputsForClusterN_r(GEOSContextHandle_t, const GEOSClusterInfo* clusters, size_t i);
1978
1981
1982/* ========= Algorithms ========= */
1983
1985extern int GEOS_DLL GEOSOrientationIndex_r(
1986 GEOSContextHandle_t handle,
1987 double Ax, double Ay,
1988 double Bx, double By,
1989 double Px, double Py);
1990
1991
1992/* ========== Reader and Writer APIs ========== */
1993
1994#ifndef GEOSWKTReader
1995
2001typedef struct GEOSWKTReader_t GEOSWKTReader;
2002
2008typedef struct GEOSWKTWriter_t GEOSWKTWriter;
2009
2015typedef struct GEOSWKBReader_t GEOSWKBReader;
2016
2022typedef struct GEOSWKBWriter_t GEOSWKBWriter;
2023
2029typedef struct GEOSGeoJSONReader_t GEOSGeoJSONReader;
2030
2036typedef struct GEOSGeoJSONWriter_t GEOSGeoJSONWriter;
2037
2038#endif
2039
2040/* ========== WKT Reader ========== */
2041
2044 GEOSContextHandle_t handle);
2045
2048 GEOSWKTReader* reader);
2049
2052 GEOSContextHandle_t handle,
2053 GEOSWKTReader* reader,
2054 const char *wkt);
2055
2058 GEOSContextHandle_t handle,
2059 GEOSWKTReader *reader,
2060 char doFix);
2061
2062
2063/* ========== WKT Writer ========== */
2064
2067 GEOSContextHandle_t handle);
2068
2070extern void GEOS_DLL GEOSWKTWriter_destroy_r(
2071 GEOSContextHandle_t handle,
2072 GEOSWKTWriter* writer);
2073
2075extern char GEOS_DLL *GEOSWKTWriter_write_r(
2076 GEOSContextHandle_t handle,
2077 GEOSWKTWriter* writer,
2078 const GEOSGeometry* g);
2079
2081extern void GEOS_DLL GEOSWKTWriter_setTrim_r(
2082 GEOSContextHandle_t handle,
2083 GEOSWKTWriter *writer,
2084 char trim);
2085
2088 GEOSContextHandle_t handle,
2089 GEOSWKTWriter *writer,
2090 int precision);
2091
2094 GEOSContextHandle_t handle,
2095 GEOSWKTWriter *writer,
2096 int dim);
2097
2100 GEOSContextHandle_t handle,
2101 GEOSWKTWriter *writer);
2102
2104extern void GEOS_DLL GEOSWKTWriter_setOld3D_r(
2105 GEOSContextHandle_t handle,
2106 GEOSWKTWriter *writer,
2107 int useOld3D);
2108
2118extern int GEOS_DLL GEOS_printDouble(
2119 double d,
2120 unsigned int precision,
2121 char *result
2122);
2123
2124/* ========== WKB Reader ========== */
2125
2128 GEOSContextHandle_t handle);
2129
2131extern void GEOS_DLL GEOSWKBReader_destroy_r(
2132 GEOSContextHandle_t handle,
2133 GEOSWKBReader* reader);
2134
2137 GEOSContextHandle_t handle,
2138 GEOSWKBReader *reader,
2139 char doFix);
2140
2143 GEOSContextHandle_t handle,
2144 GEOSWKBReader* reader,
2145 const unsigned char *wkb,
2146 size_t size);
2147
2150 GEOSContextHandle_t handle,
2151 GEOSWKBReader* reader,
2152 const unsigned char *hex,
2153 size_t size);
2154
2155
2156/* ========== WKB Writer ========== */
2157
2160 GEOSContextHandle_t handle);
2161
2163extern void GEOS_DLL GEOSWKBWriter_destroy_r(
2164 GEOSContextHandle_t handle,
2165 GEOSWKBWriter* writer);
2166
2168extern unsigned char GEOS_DLL *GEOSWKBWriter_write_r(
2169 GEOSContextHandle_t handle,
2170 GEOSWKBWriter* writer,
2171 const GEOSGeometry* g,
2172 size_t *size);
2173
2175extern unsigned char GEOS_DLL *GEOSWKBWriter_writeHEX_r(
2176 GEOSContextHandle_t handle,
2177 GEOSWKBWriter* writer,
2178 const GEOSGeometry* g,
2179 size_t *size);
2180
2183 GEOSContextHandle_t handle,
2184 const GEOSWKBWriter* writer);
2185
2188 GEOSContextHandle_t handle,
2189 GEOSWKBWriter* writer, int newDimension);
2190
2193 GEOSContextHandle_t handle,
2194 const GEOSWKBWriter* writer);
2195
2197extern void GEOS_DLL GEOSWKBWriter_setByteOrder_r(
2198 GEOSContextHandle_t handle,
2199 GEOSWKBWriter* writer,
2200 int byteOrder);
2201
2203extern int GEOS_DLL GEOSWKBWriter_getFlavor_r(
2204 GEOSContextHandle_t handle,
2205 const GEOSWKBWriter* writer);
2206
2208extern void GEOS_DLL GEOSWKBWriter_setFlavor_r(
2209 GEOSContextHandle_t handle,
2210 GEOSWKBWriter* writer,
2211 int flavor);
2212
2215 GEOSContextHandle_t handle,
2216 const GEOSWKBWriter* writer);
2217
2220 GEOSContextHandle_t handle,
2221 GEOSWKBWriter* writer, const char writeSRID);
2222
2223/* ========== GeoJSON Reader ========== */
2224
2227 GEOSContextHandle_t handle);
2228
2231 GEOSGeoJSONReader* reader);
2232
2235 GEOSContextHandle_t handle,
2236 GEOSGeoJSONReader* reader,
2237 const char *geojson);
2238
2239/* ========== GeoJSON Writer ========== */
2240
2243 GEOSContextHandle_t handle);
2244
2247 GEOSGeoJSONWriter* writer);
2248
2251 GEOSContextHandle_t handle,
2252 GEOSGeoJSONWriter* writer,
2253 const GEOSGeometry* g,
2254 int indent);
2255
2258 GEOSContextHandle_t handle,
2259 GEOSGeoJSONWriter *writer,
2260 int dim);
2261
2264 GEOSContextHandle_t handle,
2265 GEOSGeoJSONWriter *writer);
2266
2268extern void GEOS_DLL GEOSFree_r(
2269 GEOSContextHandle_t handle,
2270 void *buffer);
2271
2279extern const char GEOS_DLL *GEOSversion(void);
2280
2281/*
2282* External code to GEOS can define GEOS_USE_ONLY_R_API
2283* to strip the non-reentrant API functions from this header,
2284* leaving only the "_r" compatible variants.
2285*/
2286#ifndef GEOS_USE_ONLY_R_API
2287
2288/* ========== Initialization, cleanup ================================= */
2294
2307extern void GEOS_DLL initGEOS(
2308 GEOSMessageHandler notice_function,
2309 GEOSMessageHandler error_function);
2310
2316extern void GEOS_DLL finishGEOS(void);
2317
2327extern void GEOS_DLL GEOSFree(void *buffer);
2328
2330
2331/* ========= Coordinate Sequence functions ========= */
2337
2345extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_create(unsigned int size, unsigned int dims);
2346
2355extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_createWithDimensions(unsigned int size, int hasZ, int hasM);
2356
2367extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_copyFromBuffer(const double* buf, unsigned int size, int hasZ, int hasM);
2368
2380extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_copyFromArrays(const double* x, const double* y, const double* z, const double* m, unsigned int size);
2381
2392extern int GEOS_DLL GEOSCoordSeq_copyToBuffer(const GEOSCoordSequence* s, double* buf, int hasZ, int hasM);
2393
2405extern int GEOS_DLL GEOSCoordSeq_copyToArrays(const GEOSCoordSequence* s, double* x, double* y, double* z, double* m);
2406
2414
2421
2429extern char GEOS_DLL GEOSCoordSeq_hasZ(GEOSCoordSequence* s);
2430
2438extern char GEOS_DLL GEOSCoordSeq_hasM(GEOSCoordSequence* s);
2439
2449 unsigned int idx, double val);
2459 unsigned int idx, double val);
2469 unsigned int idx, double val);
2470
2480 unsigned int idx, double val);
2481
2493 unsigned int idx, double x, double y);
2506 unsigned int idx, double x, double y, double z);
2517 unsigned int idx, unsigned int dim, double val);
2518
2527extern int GEOS_DLL GEOSCoordSeq_getX(const GEOSCoordSequence* s,
2528 unsigned int idx, double *val);
2529
2538extern int GEOS_DLL GEOSCoordSeq_getY(const GEOSCoordSequence* s,
2539 unsigned int idx, double *val);
2540
2549extern int GEOS_DLL GEOSCoordSeq_getZ(const GEOSCoordSequence* s,
2550 unsigned int idx, double *val);
2551
2560extern int GEOS_DLL GEOSCoordSeq_getM(const GEOSCoordSequence* s,
2561 unsigned int idx, double *val);
2562
2573extern int GEOS_DLL GEOSCoordSeq_getXY(const GEOSCoordSequence* s,
2574 unsigned int idx, double *x, double *y);
2586extern int GEOS_DLL GEOSCoordSeq_getXYZ(const GEOSCoordSequence* s,
2587 unsigned int idx, double *x, double *y, double *z);
2597extern int GEOS_DLL GEOSCoordSeq_getOrdinate(const GEOSCoordSequence* s,
2598 unsigned int idx, unsigned int dim, double *val);
2599
2607extern int GEOS_DLL GEOSCoordSeq_getSize(
2608 const GEOSCoordSequence* s,
2609 unsigned int *size);
2610
2618extern int GEOS_DLL GEOSCoordSeq_getDimensions(
2619 const GEOSCoordSequence* s,
2620 unsigned int *dims);
2621
2631extern int GEOS_DLL GEOSCoordSeq_isCCW(
2632 const GEOSCoordSequence* s,
2633 char* is_ccw);
2634
2636
2637/* ========= Geometry Constructors ========= */
2643
2652
2662extern GEOSGeometry GEOS_DLL *GEOSGeom_createPointFromXY(double x, double y);
2663
2672
2681
2690
2699
2708
2723 GEOSGeometry* shell,
2724 GEOSGeometry** holes,
2725 unsigned int nholes);
2726
2735
2743
2753 unsigned int ncurves);
2754
2762
2777 GEOSGeometry* shell,
2778 GEOSGeometry** holes,
2779 unsigned int nholes);
2780
2788
2803 int type,
2804 GEOSGeometry** geoms,
2805 unsigned int ngeoms);
2806
2824 GEOSGeometry * collection,
2825 unsigned int * ngeoms);
2826
2836
2848 double xmin, double ymin,
2849 double xmax, double ymax);
2850
2858extern GEOSGeometry GEOS_DLL *GEOSGeom_clone(const GEOSGeometry* g);
2859
2865extern void GEOS_DLL GEOSGeom_destroy(GEOSGeometry* g);
2866
2868
2869/* ========== Geometry info ========== */
2874
2884extern char GEOS_DLL *GEOSGeomType(const GEOSGeometry* g);
2885
2892extern int GEOS_DLL GEOSGeomTypeId(const GEOSGeometry* g);
2893
2900extern int GEOS_DLL GEOSGetSRID(const GEOSGeometry* g);
2901
2912extern void GEOS_DLL *GEOSGeom_getUserData(const GEOSGeometry* g);
2913
2926extern int GEOS_DLL GEOSGetNumGeometries(const GEOSGeometry* g);
2927
2943extern const GEOSGeometry GEOS_DLL *GEOSGetGeometryN(
2944 const GEOSGeometry* g,
2945 int n);
2946
2956extern double GEOS_DLL GEOSGeom_getPrecision(const GEOSGeometry *g);
2957
2965extern int GEOS_DLL GEOSGetNumInteriorRings(const GEOSGeometry* g);
2966
2974extern int GEOS_DLL GEOSGeomGetNumPoints(const GEOSGeometry* g);
2975
2984extern int GEOS_DLL GEOSGeomGetX(const GEOSGeometry *g, double *x);
2985
2994extern int GEOS_DLL GEOSGeomGetY(const GEOSGeometry *g, double *y);
2995
3005extern int GEOS_DLL GEOSGeomGetZ(const GEOSGeometry *g, double *z);
3006
3016extern int GEOS_DLL GEOSGeomGetM(const GEOSGeometry *g, double *m);
3017
3027extern const GEOSGeometry GEOS_DLL *GEOSGetInteriorRingN(
3028 const GEOSGeometry* g,
3029 int n);
3030
3039extern const GEOSGeometry GEOS_DLL *GEOSGetExteriorRing(
3040 const GEOSGeometry* g);
3041
3049extern int GEOS_DLL GEOSGetNumCoordinates(
3050 const GEOSGeometry* g);
3051
3062 const GEOSGeometry* g);
3063
3076extern int GEOS_DLL GEOSGeom_getDimensions(
3077 const GEOSGeometry* g);
3078
3091 const GEOSGeometry* g);
3092
3101extern int GEOS_DLL GEOSGeom_getXMin(const GEOSGeometry* g, double* value);
3102
3111extern int GEOS_DLL GEOSGeom_getYMin(const GEOSGeometry* g, double* value);
3112
3121extern int GEOS_DLL GEOSGeom_getXMax(const GEOSGeometry* g, double* value);
3122
3131extern int GEOS_DLL GEOSGeom_getYMax(const GEOSGeometry* g, double* value);
3132
3146extern int GEOS_DLL GEOSGeom_getExtent(
3147 const GEOSGeometry* g,
3148 double* xmin,
3149 double* ymin,
3150 double* xmax,
3151 double* ymax);
3152
3162extern GEOSGeometry GEOS_DLL *GEOSGeomGetPointN(const GEOSGeometry *g, int n);
3163
3173
3183
3184
3193extern char GEOS_DLL GEOSisEmpty(const GEOSGeometry* g);
3194
3203extern char GEOS_DLL GEOSisRing(const GEOSGeometry* g);
3204
3211extern char GEOS_DLL GEOSHasZ(const GEOSGeometry* g);
3212
3220extern char GEOS_DLL GEOSHasM(const GEOSGeometry* g);
3221
3230extern char GEOS_DLL GEOSisClosed(const GEOSGeometry *g);
3231
3233
3234/* ==================================================================================== */
3239
3246extern void GEOS_DLL GEOSSetSRID(GEOSGeometry* g, int SRID);
3247
3255extern void GEOS_DLL GEOSGeom_setUserData(GEOSGeometry* g, void* userData);
3256
3276extern int GEOS_DLL GEOSNormalize(GEOSGeometry* g);
3277
3288extern int GEOS_DLL GEOSOrientPolygons(GEOSGeometry* g,
3289 int exteriorCW);
3290
3292
3293/* ========== Validity checking ============================================================ */
3299
3307extern char GEOS_DLL GEOSisSimple(const GEOSGeometry* g);
3308
3322extern char GEOS_DLL GEOSisValid(const GEOSGeometry* g);
3323
3333extern char GEOS_DLL *GEOSisValidReason(const GEOSGeometry *g);
3334
3349extern char GEOS_DLL GEOSisValidDetail(
3350 const GEOSGeometry* g,
3351 int flags,
3352 char** reason,
3353 GEOSGeometry** location);
3354
3363 const GEOSGeometry* g);
3364
3379 const GEOSGeometry* g,
3380 const GEOSMakeValidParams *makeValidParams);
3381
3391
3400
3411 enum GEOSMakeValidMethods method);
3412
3425 int keepCollapsed);
3426
3446extern int GEOS_DLL GEOSMinimumClearance(const GEOSGeometry* g, double* d);
3447
3460
3479 const GEOSGeometry* g,
3480 double tolerance);
3481
3483
3484/* ========= Metric functions ================================================== */
3489
3497extern int GEOS_DLL GEOSArea(
3498 const GEOSGeometry* g,
3499 double *area);
3500
3508extern int GEOS_DLL GEOSLength(
3509 const GEOSGeometry* g,
3510 double *length);
3511
3521extern int GEOS_DLL GEOSGeomGetLength(
3522 const GEOSGeometry *g,
3523 double *length);
3524
3526
3527/* ========== Distance functions ================================================ */
3533
3542extern int GEOS_DLL GEOSDistance(
3543 const GEOSGeometry* g1,
3544 const GEOSGeometry* g2,
3545 double *dist);
3546
3557extern char GEOS_DLL GEOSDistanceWithin(
3558 const GEOSGeometry* g1,
3559 const GEOSGeometry* g2,
3560 double dist);
3561
3575extern int GEOS_DLL GEOSDistanceIndexed(
3576 const GEOSGeometry* g1,
3577 const GEOSGeometry* g2,
3578 double *dist);
3579
3592 const GEOSGeometry* g1,
3593 const GEOSGeometry* g2);
3594
3606extern int GEOS_DLL GEOSHausdorffDistance(
3607 const GEOSGeometry *g1,
3608 const GEOSGeometry *g2,
3609 double *dist);
3610
3626 const GEOSGeometry *g1,
3627 const GEOSGeometry *g2,
3628 double densifyFrac,
3629 double *dist);
3630
3644extern int GEOS_DLL GEOSFrechetDistance(
3645 const GEOSGeometry *g1,
3646 const GEOSGeometry *g2,
3647 double *dist);
3648
3665extern int GEOS_DLL GEOSFrechetDistanceDensify(
3666 const GEOSGeometry *g1,
3667 const GEOSGeometry *g2,
3668 double densifyFrac,
3669 double *dist);
3670
3672
3673/* ========== Linear referencing functions */
3679
3689extern double GEOS_DLL GEOSProject(const GEOSGeometry* line,
3690 const GEOSGeometry* point);
3691
3703extern GEOSGeometry GEOS_DLL *GEOSInterpolate(const GEOSGeometry* line,
3704 double d);
3705
3716extern double GEOS_DLL GEOSProjectNormalized(const GEOSGeometry* line,
3717 const GEOSGeometry* point);
3718
3729 const GEOSGeometry *line,
3730 double proportion);
3731
3733
3734/* ========== Overlay functions ========== */
3740
3751extern GEOSGeometry GEOS_DLL *GEOSIntersection(const GEOSGeometry* g1, const GEOSGeometry* g2);
3752
3767extern GEOSGeometry GEOS_DLL *GEOSIntersectionPrec(const GEOSGeometry* g1, const GEOSGeometry* g2, double gridSize);
3768
3780 const GEOSGeometry* ga,
3781 const GEOSGeometry* gb);
3782
3799 const GEOSGeometry* ga,
3800 const GEOSGeometry* gb,
3801 double gridSize);
3802
3815 const GEOSGeometry* ga,
3816 const GEOSGeometry* gb);
3817
3835 const GEOSGeometry* ga,
3836 const GEOSGeometry* gb,
3837 double gridSize);
3838
3849extern GEOSGeometry GEOS_DLL *GEOSUnion(
3850 const GEOSGeometry* ga,
3851 const GEOSGeometry* gb);
3852
3869 const GEOSGeometry* ga,
3870 const GEOSGeometry* gb,
3871 double gridSize);
3872
3884extern GEOSGeometry GEOS_DLL *GEOSUnaryUnion(const GEOSGeometry* g);
3885
3902 const GEOSGeometry* g,
3903 double gridSize);
3904
3916
3933 const GEOSGeometry* g,
3934 double xmin, double ymin,
3935 double xmax, double ymax);
3936
3956 const GEOSGeometry* g1,
3957 const GEOSGeometry* g2);
3959
3960/* ========== Clustering functions ========== */
3968static const size_t GEOS_CLUSTER_NONE = (size_t) -1;
3969
3971
3981extern GEOSClusterInfo GEOS_DLL* GEOSClusterDBSCAN(const GEOSGeometry* g, double eps, unsigned minPoints);
3982
3992extern GEOSClusterInfo GEOS_DLL* GEOSClusterGeometryDistance(const GEOSGeometry* g, double d);
3993
4003
4013extern GEOSClusterInfo GEOS_DLL* GEOSClusterEnvelopeDistance(const GEOSGeometry* g, double d);
4014
4024
4033extern size_t GEOS_DLL GEOSClusterInfo_getNumClusters(const GEOSClusterInfo* clusters);
4034
4044extern size_t GEOS_DLL GEOSClusterInfo_getClusterSize(const GEOSClusterInfo* clusters, size_t i );
4045
4055extern size_t GEOS_DLL* GEOSClusterInfo_getClustersForInputs(const GEOSClusterInfo* clusters);
4056
4065extern const size_t GEOS_DLL* GEOSClusterInfo_getInputsForClusterN(const GEOSClusterInfo* clusters, size_t i);
4066
4074extern void GEOS_DLL GEOSClusterInfo_destroy(GEOSClusterInfo* clusters);
4075
4077
4078/* ========== Buffer related functions ========== */
4083
4095extern GEOSGeometry GEOS_DLL *GEOSBuffer(const GEOSGeometry* g,
4096 double width, int quadsegs);
4097
4107
4114extern void GEOS_DLL GEOSBufferParams_destroy(GEOSBufferParams* parms);
4115
4125 int style);
4126
4136 int joinStyle);
4137
4151 double mitreLimit);
4152
4165 int quadSegs);
4166
4179 int singleSided);
4180
4192 const GEOSGeometry* g,
4193 const GEOSBufferParams* p,
4194 double width);
4195
4210 const GEOSGeometry* g,
4211 double width,
4212 int quadsegs,
4213 int endCapStyle,
4214 int joinStyle,
4215 double mitreLimit);
4216
4240 double width, int quadsegs, int joinStyle, double mitreLimit);
4241
4243
4244
4245/* ====================================================================== */
4251
4264
4265
4289extern int GEOS_DLL GEOSCoverageIsValid(
4290 const GEOSGeometry* input,
4291 double gapWidth,
4292 GEOSGeometry** invalidEdges);
4293
4320 const GEOSGeometry* input,
4321 double tolerance,
4322 int preserveBoundary);
4323
4332extern GEOSCoverageCleanParams GEOS_DLL *
4334
4341extern void GEOS_DLL
4343 GEOSCoverageCleanParams* params);
4344
4365extern int GEOS_DLL
4368 double snappingDistance);
4369
4388extern int GEOS_DLL
4391 double gapMaximumWidth);
4392
4407
4408/*
4409* Sets the overlap merge strategy to use, using one from \ref GEOSOverlapMerge.
4410* Overlaps are merged with an adjacent polygon chosen according to a specified merge strategy.
4411* The supported strategies are:
4412*
4413* * **Longest Border**: (default) merge with the polygon with longest shared border (GEOS_MERGE_LONGEST_BORDER.)
4414* * **Maximum/Minimum Area**: merge with the polygon with largest or smallest area (GEOS_MERGE_MAX_AREA, GEOS_MERGE_MIN_AREA.)
4415* * **Minimum Index**: merge with the polygon with the lowest index in the input array (GEOS_MERGE_MIN_INDEX.)
4416*
4417* This allows sorting the input according to some criteria to provide a priority
4418* for merging gaps.
4419*
4420* The default is GEOS_MERGE_LONGEST_BORDER.
4421*
4422* \see geos::coverage::CoverageCleaner::setGapMaximumWidth
4423* \param params The GEOSCoverageCleanParams to operate on
4424* \param overlapMergeStrategy One of \ref GEOSOverlapMerge strategies
4425* \return 0 on exception, 1 on success.
4426*
4427* \since 3.14
4428*/
4429extern int GEOS_DLL
4430GEOSCoverageCleanParams_setOverlapMergeStrategy(
4432 int overlapMergeStrategy);
4433
4455extern GEOSGeometry GEOS_DLL *
4457 const GEOSGeometry* input,
4458 const GEOSCoverageCleanParams* params
4459);
4460
4462extern GEOSGeometry GEOS_DLL *
4464 const GEOSGeometry* input);
4465
4466
4467
4468
4470
4471
4472/* ========== Construction Operations ========== */
4477
4486extern GEOSGeometry GEOS_DLL *GEOSEnvelope(const GEOSGeometry* g);
4487
4501extern GEOSGeometry GEOS_DLL *GEOSBoundary(const GEOSGeometry* g);
4502
4512extern GEOSGeometry GEOS_DLL *GEOSConvexHull(const GEOSGeometry* g);
4513
4545 const GEOSGeometry* g,
4546 double ratio,
4547 unsigned int allowHoles);
4548
4579 const GEOSGeometry* g,
4580 double length,
4581 unsigned int allowHoles);
4582
4622 const GEOSGeometry* g,
4623 double lengthRatio,
4624 unsigned int isTight,
4625 unsigned int isHolesAllowed);
4626
4647 const GEOSGeometry* g,
4648 unsigned int isOuter,
4649 double vertexNumFraction);
4650
4651
4661
4684 const GEOSGeometry* g,
4685 unsigned int isOuter,
4686 unsigned int parameterMode,
4687 double parameter);
4688
4703
4729 const GEOSGeometry* g,
4730 double tolerance);
4731
4766 const GEOSGeometry* obstacles,
4767 const GEOSGeometry* boundary,
4768 double tolerance);
4769
4783extern GEOSGeometry GEOS_DLL *GEOSMinimumWidth(const GEOSGeometry* g);
4784
4785
4796
4806extern GEOSGeometry GEOS_DLL *GEOSGetCentroid(const GEOSGeometry* g);
4807
4821 const GEOSGeometry* g,
4822 double* radius,
4823 GEOSGeometry** center);
4824
4839 const GEOSGeometry *g,
4840 double tolerance,
4841 int onlyEdges);
4842
4855 const GEOSGeometry *g);
4856
4867
4889 const GEOSGeometry *g,
4890 const GEOSGeometry *env,
4891 double tolerance,
4892 int flags);
4893
4895
4896/* ============================================================== */
4901
4912extern GEOSGeometry GEOS_DLL *GEOSNode(const GEOSGeometry* g);
4913
4957 const GEOSGeometry * const geoms[],
4958 unsigned int ngeoms);
4959
4975 const GEOSGeometry * const geoms[],
4976 unsigned int ngeoms);
4977
4992 const GEOSGeometry * const geoms[],
4993 unsigned int ngeoms);
4994
5010 const GEOSGeometry* input,
5011 GEOSGeometry** cuts,
5012 GEOSGeometry** dangles,
5013 GEOSGeometry** invalid);
5014
5026extern GEOSGeometry GEOS_DLL *GEOSBuildArea(const GEOSGeometry* g);
5027
5029
5030/* ============================================================== */
5035
5049extern GEOSGeometry GEOS_DLL *GEOSDensify(
5050 const GEOSGeometry* g,
5051 double tolerance);
5052
5064extern GEOSGeometry GEOS_DLL *GEOSLineMerge(const GEOSGeometry* g);
5065
5080
5093 const GEOSGeometry* g,
5094 double start_fraction,
5095 double end_fraction);
5096
5107extern GEOSGeometry GEOS_DLL *GEOSReverse(const GEOSGeometry* g);
5108
5124 const GEOSGeometry* g,
5125 double tolerance);
5126
5144 const GEOSGeometry* g,
5145 double tolerance);
5146
5158 const GEOSGeometry* g);
5159
5175extern int GEOS_DLL GEOSHilbertCode(
5176 const GEOSGeometry *geom,
5177 const GEOSGeometry* extent,
5178 unsigned int level,
5179 unsigned int *code
5180);
5181
5197 const GEOSGeometry* g,
5198 GEOSTransformXYCallback callback,
5199 void* userdata);
5200
5216 const GEOSGeometry* g,
5217 GEOSTransformXYZCallback callback,
5218 void* userdata);
5219
5241extern GEOSGeometry GEOS_DLL *GEOSSnap(
5242 const GEOSGeometry* input,
5243 const GEOSGeometry* snap_target,
5244 double tolerance);
5245
5276 const GEOSGeometry *g,
5277 double gridSize,
5278 int flags);
5279
5281
5282/* ============================================================== */
5287
5296extern char GEOS_DLL GEOSDisjoint(const GEOSGeometry* g1, const GEOSGeometry* g2);
5297
5307extern char GEOS_DLL GEOSTouches(const GEOSGeometry* g1, const GEOSGeometry* g2);
5308
5317extern char GEOS_DLL GEOSIntersects(const GEOSGeometry* g1, const GEOSGeometry* g2);
5318
5328extern char GEOS_DLL GEOSCrosses(const GEOSGeometry* g1, const GEOSGeometry* g2);
5329
5339extern char GEOS_DLL GEOSWithin(const GEOSGeometry* g1, const GEOSGeometry* g2);
5340
5350extern char GEOS_DLL GEOSContains(const GEOSGeometry* g1, const GEOSGeometry* g2);
5351
5361extern char GEOS_DLL GEOSOverlaps(const GEOSGeometry* g1, const GEOSGeometry* g2);
5362
5371extern char GEOS_DLL GEOSEquals(const GEOSGeometry* g1, const GEOSGeometry* g2);
5372
5383extern char GEOS_DLL GEOSCovers(const GEOSGeometry* g1, const GEOSGeometry* g2);
5384
5395extern char GEOS_DLL GEOSCoveredBy(const GEOSGeometry* g1, const GEOSGeometry* g2);
5396
5414extern char GEOS_DLL GEOSEqualsExact(
5415 const GEOSGeometry* g1,
5416 const GEOSGeometry* g2,
5417 double tolerance);
5418
5431extern char GEOS_DLL GEOSEqualsIdentical(
5432 const GEOSGeometry* g1,
5433 const GEOSGeometry* g2);
5434
5450extern char GEOS_DLL GEOSRelatePattern(
5451 const GEOSGeometry* g1,
5452 const GEOSGeometry* g2,
5453 const char *imPattern);
5454
5465extern char GEOS_DLL *GEOSRelate(
5466 const GEOSGeometry* g1,
5467 const GEOSGeometry* g2);
5468
5478extern char GEOS_DLL GEOSRelatePatternMatch(
5479 const char *intMatrix,
5480 const char *imPattern);
5481
5495extern char GEOS_DLL *GEOSRelateBoundaryNodeRule(
5496 const GEOSGeometry* g1,
5497 const GEOSGeometry* g2,
5498 int bnr);
5499
5501
5502/* ========== Prepared Geometry Binary predicates ========== */
5503
5515
5529extern const GEOSPreparedGeometry GEOS_DLL *GEOSPrepare(const GEOSGeometry* g);
5530
5539extern void GEOS_DLL GEOSPreparedGeom_destroy(const GEOSPreparedGeometry* g);
5540
5551extern char GEOS_DLL GEOSPreparedContains(
5552 const GEOSPreparedGeometry* pg1,
5553 const GEOSGeometry* g2);
5554
5566extern char GEOS_DLL GEOSPreparedContainsXY(
5567 const GEOSPreparedGeometry* pg1,
5568 double x,
5569 double y);
5570
5581extern char GEOS_DLL GEOSPreparedContainsProperly(
5582 const GEOSPreparedGeometry* pg1,
5583 const GEOSGeometry* g2);
5584
5595extern char GEOS_DLL GEOSPreparedCoveredBy(
5596 const GEOSPreparedGeometry* pg1,
5597 const GEOSGeometry* g2);
5598
5609extern char GEOS_DLL GEOSPreparedCovers(
5610 const GEOSPreparedGeometry* pg1,
5611 const GEOSGeometry* g2);
5612
5623extern char GEOS_DLL GEOSPreparedCrosses(
5624 const GEOSPreparedGeometry* pg1,
5625 const GEOSGeometry* g2);
5626
5637extern char GEOS_DLL GEOSPreparedDisjoint(
5638 const GEOSPreparedGeometry* pg1,
5639 const GEOSGeometry* g2);
5640
5651extern char GEOS_DLL GEOSPreparedIntersects(
5652 const GEOSPreparedGeometry* pg1,
5653 const GEOSGeometry* g2);
5654
5666extern char GEOS_DLL GEOSPreparedIntersectsXY(
5667 const GEOSPreparedGeometry* pg1,
5668 double x,
5669 double y);
5670
5681extern char GEOS_DLL GEOSPreparedOverlaps(
5682 const GEOSPreparedGeometry* pg1,
5683 const GEOSGeometry* g2);
5684
5695extern char GEOS_DLL GEOSPreparedTouches(
5696 const GEOSPreparedGeometry* pg1,
5697 const GEOSGeometry* g2);
5698
5709extern char GEOS_DLL GEOSPreparedWithin(
5710 const GEOSPreparedGeometry* pg1,
5711 const GEOSGeometry* g2);
5712
5726extern char GEOS_DLL * GEOSPreparedRelate(
5727 const GEOSPreparedGeometry* pg1,
5728 const GEOSGeometry* g2);
5729
5746extern char GEOS_DLL GEOSPreparedRelatePattern(
5747 const GEOSPreparedGeometry* pg1,
5748 const GEOSGeometry* g2,
5749 const char* imPattern);
5750
5764 const GEOSPreparedGeometry* pg1,
5765 const GEOSGeometry* g2);
5766
5780extern int GEOS_DLL GEOSPreparedDistance(
5781 const GEOSPreparedGeometry* pg1,
5782 const GEOSGeometry* g2,
5783 double *dist);
5784
5799extern char GEOS_DLL GEOSPreparedDistanceWithin(
5800 const GEOSPreparedGeometry* pg1,
5801 const GEOSGeometry* g2,
5802 double dist);
5803
5805
5806/* ========== STRtree functions ========== */
5812
5825extern GEOSSTRtree GEOS_DLL *GEOSSTRtree_create(size_t nodeCapacity);
5826
5839extern int GEOS_DLL GEOSSTRtree_build(GEOSSTRtree *tree);
5840
5853extern void GEOS_DLL GEOSSTRtree_insert(
5854 GEOSSTRtree *tree,
5855 const GEOSGeometry *g,
5856 void *item);
5857
5872extern void GEOS_DLL GEOSSTRtree_query(
5873 GEOSSTRtree *tree,
5874 const GEOSGeometry *g,
5875 GEOSQueryCallback callback,
5876 void *userdata);
5877
5892extern const GEOSGeometry GEOS_DLL *GEOSSTRtree_nearest(
5893 GEOSSTRtree *tree,
5894 const GEOSGeometry* geom);
5895
5916extern const void GEOS_DLL *GEOSSTRtree_nearest_generic(
5917 GEOSSTRtree *tree,
5918 const void* item,
5919 const GEOSGeometry* itemEnvelope,
5920 GEOSDistanceCallback distancefn,
5921 void* userdata);
5922
5933extern void GEOS_DLL GEOSSTRtree_iterate(
5934 GEOSSTRtree *tree,
5935 GEOSQueryCallback callback,
5936 void *userdata);
5937
5952extern char GEOS_DLL GEOSSTRtree_remove(
5953 GEOSSTRtree *tree,
5954 const GEOSGeometry *g,
5955 void *item);
5956
5967extern void GEOS_DLL GEOSSTRtree_destroy(GEOSSTRtree *tree);
5968
5970
5971/* ========== Algorithms ====================================================== */
5976
5995extern int GEOS_DLL GEOSSegmentIntersection(
5996 double ax0, double ay0,
5997 double ax1, double ay1,
5998 double bx0, double by0,
5999 double bx1, double by1,
6000 double* cx, double* cy);
6001
6017extern int GEOS_DLL GEOSOrientationIndex(
6018 double Ax, double Ay,
6019 double Bx, double By,
6020 double Px, double Py);
6021
6023
6024/* ========= Reader and Writer APIs ========= */
6025
6030/* ========= WKT Reader ========= */
6031
6038
6044extern void GEOS_DLL GEOSWKTReader_destroy(GEOSWKTReader* reader);
6045
6055 GEOSWKTReader* reader,
6056 const char *wkt);
6057
6067 GEOSWKTReader *reader,
6068 char doFix);
6069
6070/* ========= WKT Writer ========= */
6071
6078
6084extern void GEOS_DLL GEOSWKTWriter_destroy(
6085 GEOSWKTWriter* writer);
6086
6096extern char GEOS_DLL *GEOSWKTWriter_write(
6097 GEOSWKTWriter* writer,
6098 const GEOSGeometry* g);
6099
6114extern void GEOS_DLL GEOSWKTWriter_setTrim(
6115 GEOSWKTWriter *writer,
6116 char trim);
6117
6127 GEOSWKTWriter *writer,
6128 int precision);
6129
6139 GEOSWKTWriter *writer,
6140 int dim);
6141
6150
6161extern void GEOS_DLL GEOSWKTWriter_setOld3D(
6162 GEOSWKTWriter *writer,
6163 int useOld3D);
6165
6166/* ============================================================================== */
6171
6172/* ========== WKB Reader ========== */
6179
6185extern void GEOS_DLL GEOSWKBReader_destroy(
6186 GEOSWKBReader* reader);
6187
6197 GEOSWKBReader *reader,
6198 char doFix);
6199
6209 GEOSWKBReader* reader,
6210 const unsigned char *wkb,
6211 size_t size);
6212
6222 GEOSWKBReader* reader,
6223 const unsigned char *hex,
6224 size_t size);
6225
6226/* ========== WKB Writer ========== */
6227
6234
6240extern void GEOS_DLL GEOSWKBWriter_destroy(GEOSWKBWriter* writer);
6241
6251extern unsigned char GEOS_DLL *GEOSWKBWriter_write(
6252 GEOSWKBWriter* writer,
6253 const GEOSGeometry* g,
6254 size_t *size);
6255
6265extern unsigned char GEOS_DLL *GEOSWKBWriter_writeHEX(
6266 GEOSWKBWriter* writer,
6267 const GEOSGeometry* g,
6268 size_t *size);
6269
6279 const GEOSWKBWriter* writer);
6280
6289 GEOSWKBWriter* writer,
6290 int newDimension);
6291
6301extern int GEOS_DLL GEOSWKBWriter_getByteOrder(
6302 const GEOSWKBWriter* writer);
6303
6311extern void GEOS_DLL GEOSWKBWriter_setByteOrder(
6312 GEOSWKBWriter* writer,
6313 int byteOrder);
6314
6329extern int GEOS_DLL GEOSWKBWriter_getFlavor(
6330 const GEOSWKBWriter* writer);
6331
6340extern void GEOS_DLL GEOSWKBWriter_setFlavor(
6341 GEOSWKBWriter* writer,
6342 int flavor);
6343
6349extern char GEOS_DLL GEOSWKBWriter_getIncludeSRID(
6350 const GEOSWKBWriter* writer);
6351
6359extern void GEOS_DLL GEOSWKBWriter_setIncludeSRID(
6360 GEOSWKBWriter* writer,
6361 const char writeSRID);
6362
6364
6365/* ============================================================================= */
6370/* ========= GeoJSON Reader ========= */
6371
6379
6386extern void GEOS_DLL GEOSGeoJSONReader_destroy(GEOSGeoJSONReader* reader);
6387
6399 GEOSGeoJSONReader* reader,
6400 const char *geojson);
6401
6402/* ========= GeoJSON Writer ========= */
6403
6411
6418extern void GEOS_DLL GEOSGeoJSONWriter_destroy(GEOSGeoJSONWriter* writer);
6419
6431 GEOSGeoJSONWriter* writer,
6432 const GEOSGeometry* g,
6433 int indent);
6434
6444 GEOSGeoJSONWriter *writer,
6445 int dim);
6446
6455
6457
6458#endif /* #ifndef GEOS_USE_ONLY_R_API */
6459
6460/* ====================================================================== */
6461/* DEPRECATIONS */
6462/* ====================================================================== */
6463
6469
6474 const GEOSGeometry* g,
6475 double width, int quadsegs,
6476 int joinStyle, double mitreLimit,
6477 int leftSide);
6478
6483 GEOSContextHandle_t handle,
6484 const GEOSGeometry* g,
6485 double width, int quadsegs,
6486 int joinStyle, double mitreLimit,
6487 int leftSide);
6488
6494 GEOSMessageHandler notice_function,
6495 GEOSMessageHandler error_function);
6496
6500extern void GEOS_DLL finishGEOS_r(GEOSContextHandle_t handle);
6501
6506 GEOSContextHandle_t handle,
6507 const char *wkt);
6508
6512extern char GEOS_DLL *GEOSGeomToWKT_r(
6513 GEOSContextHandle_t handle,
6514 const GEOSGeometry* g);
6515
6519extern int GEOS_DLL GEOS_getWKBOutputDims_r(
6520 GEOSContextHandle_t handle);
6521
6525extern int GEOS_DLL GEOS_setWKBOutputDims_r(
6526 GEOSContextHandle_t handle,
6527 int newDims);
6528
6532extern int GEOS_DLL GEOS_getWKBByteOrder_r(
6533 GEOSContextHandle_t handle);
6534
6538extern int GEOS_DLL GEOS_setWKBByteOrder_r(
6539 GEOSContextHandle_t handle,
6540 int byteOrder);
6541
6546 GEOSContextHandle_t handle,
6547 const unsigned char *wkb,
6548 size_t size);
6549
6553extern unsigned char GEOS_DLL *GEOSGeomToWKB_buf_r(
6554 GEOSContextHandle_t handle,
6555 const GEOSGeometry* g,
6556 size_t *size);
6557
6562 GEOSContextHandle_t handle,
6563 const unsigned char *hex,
6564 size_t size);
6565
6569extern unsigned char GEOS_DLL *GEOSGeomToHEX_buf_r(
6570 GEOSContextHandle_t handle,
6571 const GEOSGeometry* g,
6572 size_t *size);
6573
6577extern GEOSGeometry GEOS_DLL *GEOSGeomFromWKT(const char *wkt);
6578
6582extern char GEOS_DLL *GEOSGeomToWKT(const GEOSGeometry* g);
6583
6587extern int GEOS_DLL GEOS_getWKBOutputDims(void);
6588
6592extern int GEOS_DLL GEOS_setWKBOutputDims(int newDims);
6593
6597extern int GEOS_DLL GEOS_getWKBByteOrder(void);
6598
6602extern int GEOS_DLL GEOS_setWKBByteOrder(int byteOrder);
6603
6607extern GEOSGeometry GEOS_DLL *GEOSGeomFromWKB_buf(const unsigned char *wkb, size_t size);
6608
6612extern unsigned char GEOS_DLL *GEOSGeomToWKB_buf(const GEOSGeometry* g, size_t *size);
6613
6617extern GEOSGeometry GEOS_DLL *GEOSGeomFromHEX_buf(const unsigned char *hex, size_t size);
6618
6622extern unsigned char GEOS_DLL *GEOSGeomToHEX_buf(const GEOSGeometry* g, size_t *size);
6623
6628
6633 GEOSContextHandle_t handle,
6634 const GEOSGeometry* g);
6635
6637
6638/* ====================================================================== */
6639/* END DEPRECATIONS */
6640/* ====================================================================== */
6641
6642
6643#ifdef __cplusplus
6644} // extern "C"
6645#endif
6646
6647#endif /* #ifndef GEOS_C_H_INCLUDED */
int GEOS_setWKBOutputDims_r(GEOSContextHandle_t handle, int newDims)
GEOSGeometry * GEOSMaximumInscribedCircle_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double tolerance)
int GEOSBufferParams_setEndCapStyle_r(GEOSContextHandle_t handle, GEOSBufferParams *p, int style)
char GEOSisEmpty_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
char GEOSisSimple(const GEOSGeometry *g)
void GEOSWKBWriter_setByteOrder(GEOSWKBWriter *writer, int byteOrder)
GEOSGeometry * GEOSIntersectionPrec_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double gridSize)
const GEOSCoordSequence * GEOSGeom_getCoordSeq(const GEOSGeometry *g)
int GEOSCoordSeq_setZ_r(GEOSContextHandle_t handle, GEOSCoordSequence *s, unsigned int idx, double val)
void GEOSGeom_setUserData_r(GEOSContextHandle_t handle, GEOSGeometry *g, void *userData)
GEOSGeometry * GEOSGeom_createEmptyPoint(void)
GEOSGeometry * GEOSReverse_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
int GEOS_getWKBOutputDims_r(GEOSContextHandle_t handle)
GEOSGeometry * GEOSGeom_createEmptyCompoundCurve_r(GEOSContextHandle_t handle)
int GEOSGeomGetM(const GEOSGeometry *g, double *m)
GEOSGeometry * GEOSPolygonHullSimplify(const GEOSGeometry *g, unsigned int isOuter, double vertexNumFraction)
char GEOSisRing_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
int GEOSSTRtree_build_r(GEOSContextHandle_t handle, GEOSSTRtree *tree)
GEOSGeometry * GEOSGetCentroid(const GEOSGeometry *g)
void GEOSBufferParams_destroy_r(GEOSContextHandle_t handle, GEOSBufferParams *parms)
GEOSGeometry * GEOSCoverageCleanWithParams(const GEOSGeometry *input, const GEOSCoverageCleanParams *params)
GEOSGeometry * GEOSMinimumRotatedRectangle_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSCoordSequence * GEOSCoordSeq_create(unsigned int size, unsigned int dims)
char GEOSPreparedDistanceWithin(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2, double dist)
GEOSGeometry * GEOSWKBReader_read_r(GEOSContextHandle_t handle, GEOSWKBReader *reader, const unsigned char *wkb, size_t size)
GEOSClusterInfo * GEOSClusterEnvelopeIntersects(const GEOSGeometry *g)
GEOSClusterEnvelopeIntersects.
char * GEOSGeomToWKT_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSBufferWithParams_r(GEOSContextHandle_t handle, const GEOSGeometry *g, const GEOSBufferParams *p, double width)
int GEOSBufferParams_setQuadrantSegments_r(GEOSContextHandle_t handle, GEOSBufferParams *p, int quadSegs)
GEOSGeometry * GEOSConcaveHull_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double ratio, unsigned int allowHoles)
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:2029
int GEOSCoverageCleanParams_setOverlapMergeStrategy_r(GEOSContextHandle_t extHandle, GEOSCoverageCleanParams *params, int overlapMergeStrategy)
char GEOSRelatePattern_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, const char *imPattern)
int GEOS_getWKBByteOrder(void)
void GEOSWKBReader_destroy(GEOSWKBReader *reader)
char GEOSPreparedContainsProperly(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
void GEOSCoverageCleanParams_destroy(GEOSCoverageCleanParams *params)
void GEOSSTRtree_iterate_r(GEOSContextHandle_t handle, GEOSSTRtree *tree, GEOSQueryCallback callback, void *userdata)
int GEOS_printDouble(double d, unsigned int precision, char *result)
GEOSGeoJSONWriter * GEOSGeoJSONWriter_create_r(GEOSContextHandle_t handle)
int GEOSDistanceIndexed(const GEOSGeometry *g1, const GEOSGeometry *g2, double *dist)
int GEOSGeom_getDimensions_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSClusterInfo * GEOSClusterEnvelopeDistance(const GEOSGeometry *g, double d)
GEOSClusterEnvelopeDistance.
int GEOSCoordSeq_getZ(const GEOSCoordSequence *s, unsigned int idx, double *val)
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:290
GEOSGeometry * GEOSPolygonize_valid(const GEOSGeometry *const geoms[], unsigned int ngeoms)
GEOSWKTReader * GEOSWKTReader_create(void)
struct GEOSWKBReader_t GEOSWKBReader
Definition geos_c.h:2015
char GEOSHasM(const GEOSGeometry *g)
GEOSGeometry * GEOSConcaveHullByLength_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double ratio, unsigned int allowHoles)
void GEOSGeom_destroy(GEOSGeometry *g)
int GEOS_setWKBByteOrder_r(GEOSContextHandle_t handle, int byteOrder)
GEOSGeometry * GEOSClipByRect(const GEOSGeometry *g, double xmin, double ymin, double xmax, double ymax)
GEOSGeometry * GEOSCoverageSimplifyVW_r(GEOSContextHandle_t extHandle, const GEOSGeometry *input, double tolerance, int preserveBoundary)
void(* GEOSMessageHandler)(GEOS_PRINTF_FORMAT const char *fmt,...) GEOS_PRINTF_FORMAT_ATTR(1
Definition geos_c.h:105
int GEOSDistance_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double *dist)
int GEOSGeomGetM_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *m)
char GEOSTouches(const GEOSGeometry *g1, const GEOSGeometry *g2)
struct GEOSCoordSeq_t GEOSCoordSequence
Definition geos_c.h:155
GEOSGeometry * GEOSGeomGetStartPoint_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
char GEOSRelatePatternMatch_r(GEOSContextHandle_t handle, const char *intMatrix, const char *imPattern)
void GEOSSTRtree_destroy(GEOSSTRtree *tree)
GEOSCoverageCleanParams * GEOSCoverageCleanParams_create_r(GEOSContextHandle_t extHandle)
GEOSGeometry * GEOSGeom_createCircularString_r(GEOSContextHandle_t handle, GEOSCoordSequence *s)
void GEOSBufferParams_destroy(GEOSBufferParams *parms)
const size_t * GEOSClusterInfo_getInputsForClusterN_r(GEOSContextHandle_t, const GEOSClusterInfo *clusters, size_t i)
int GEOSCoordSeq_setXY_r(GEOSContextHandle_t handle, GEOSCoordSequence *s, unsigned int idx, double x, double y)
GEOSGeomTypes
Definition geos_c.h:211
@ GEOS_MULTILINESTRING
Definition geos_c.h:223
@ GEOS_GEOMETRYCOLLECTION
Definition geos_c.h:227
@ GEOS_POINT
Definition geos_c.h:213
@ GEOS_MULTIPOLYGON
Definition geos_c.h:225
@ GEOS_LINEARRING
Definition geos_c.h:217
@ GEOS_POLYGON
Definition geos_c.h:219
@ GEOS_MULTIPOINT
Definition geos_c.h:221
@ GEOS_LINESTRING
Definition geos_c.h:215
GEOSGeometry * GEOSIntersectionPrec(const GEOSGeometry *g1, const GEOSGeometry *g2, double gridSize)
int GEOSGetNumInteriorRings(const GEOSGeometry *g)
char GEOSSTRtree_remove_r(GEOSContextHandle_t handle, GEOSSTRtree *tree, const GEOSGeometry *g, void *item)
void GEOSSTRtree_query_r(GEOSContextHandle_t handle, GEOSSTRtree *tree, const GEOSGeometry *g, GEOSQueryCallback callback, void *userdata)
GEOSGeometry * GEOSGeom_setPrecision_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double gridSize, int flags)
char GEOSEqualsExact(const GEOSGeometry *g1, const GEOSGeometry *g2, double tolerance)
GEOSGeometry * GEOSDisjointSubsetUnion_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSMessageHandler_r GEOSContext_setNoticeMessageHandler_r(GEOSContextHandle_t extHandle, GEOSMessageHandler_r nf, void *userData)
int GEOSCoordSeq_getOrdinate(const GEOSCoordSequence *s, unsigned int idx, unsigned int dim, double *val)
void GEOSWKBReader_destroy_r(GEOSContextHandle_t handle, GEOSWKBReader *reader)
GEOSGeometry * GEOSBoundary(const GEOSGeometry *g)
GEOSGeometry * GEOSUnaryUnion_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
int GEOSDistanceIndexed_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double *dist)
char GEOSCoordSeq_hasM(GEOSCoordSequence *s)
void GEOSWKTReader_destroy(GEOSWKTReader *reader)
GEOSGeometry * GEOSMinimumWidth(const GEOSGeometry *g)
char * GEOSWKTWriter_write(GEOSWKTWriter *writer, const GEOSGeometry *g)
GEOSGeometry * GEOSTopologyPreserveSimplify(const GEOSGeometry *g, double tolerance)
void(* GEOSQueryCallback)(void *item, void *userdata)
Definition geos_c.h:271
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)
GEOSGeometry * GEOSTopologyPreserveSimplify_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double tolerance)
GEOSGeometry * GEOSSingleSidedBuffer_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double width, int quadsegs, int joinStyle, double mitreLimit, int leftSide)
GEOSContextHandle_t GEOS_init_r(void)
struct GEOSGeom_t GEOSGeometry
Definition geos_c.h:140
char GEOSPreparedContainsXY_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, double x, double y)
GEOSGeometry * GEOSGeom_createRectangle(double xmin, double ymin, double xmax, double ymax)
GEOSGeometry * GEOSGeom_setPrecision(const GEOSGeometry *g, double gridSize, int flags)
const void * GEOSSTRtree_nearest_generic_r(GEOSContextHandle_t handle, GEOSSTRtree *tree, const void *item, const GEOSGeometry *itemEnvelope, GEOSDistanceCallback distancefn, void *userdata)
int GEOSCoordSeq_getM_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s, unsigned int idx, double *val)
int GEOSGeomTypeId(const GEOSGeometry *g)
int GEOSSTRtree_build(GEOSSTRtree *tree)
GEOSGeometry * GEOSPolygonize_full_r(GEOSContextHandle_t handle, const GEOSGeometry *input, GEOSGeometry **cuts, GEOSGeometry **dangles, GEOSGeometry **invalidRings)
char GEOSCoveredBy_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
int GEOSGetNumCoordinates_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
void GEOSWKTWriter_destroy(GEOSWKTWriter *writer)
int GEOSCoordSeq_getDimensions_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s, unsigned int *dims)
GEOSGeometry * GEOSGeom_createEmptyCollection_r(GEOSContextHandle_t handle, int type)
GEOSGeometry * GEOSGeom_createEmptyCircularString_r(GEOSContextHandle_t handle)
void GEOSWKBWriter_setOutputDimension(GEOSWKBWriter *writer, int newDimension)
GEOSGeometry * GEOSEnvelope(const GEOSGeometry *g)
GEOSGeometry * GEOSGeom_createPoint_r(GEOSContextHandle_t handle, GEOSCoordSequence *s)
GEOSWKBFlavors
Definition geos_c.h:257
@ GEOS_WKB_ISO
Definition geos_c.h:261
@ GEOS_WKB_EXTENDED
Definition geos_c.h:259
GEOSGeometry * GEOSDensify(const GEOSGeometry *g, double tolerance)
GEOSGeometry * GEOSConstrainedDelaunayTriangulation_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
void GEOSWKBReader_setFixStructure_r(GEOSContextHandle_t handle, GEOSWKBReader *reader, char doFix)
void GEOSFree_r(GEOSContextHandle_t handle, void *buffer)
GEOSGeometry * GEOSGeom_extractUniquePoints(const GEOSGeometry *g)
int GEOSHausdorffDistance(const GEOSGeometry *g1, const GEOSGeometry *g2, double *dist)
int GEOSWKBWriter_getOutputDimension(const GEOSWKBWriter *writer)
void GEOSPreparedGeom_destroy_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *g)
char GEOSCoordSeq_hasZ_r(GEOSContextHandle_t handle, GEOSCoordSequence *s)
int GEOS_getWKBOutputDims(void)
GEOSGeometry * GEOSGeom_createPolygon_r(GEOSContextHandle_t handle, GEOSGeometry *shell, GEOSGeometry **holes, unsigned int nholes)
GEOSGeometry * GEOSGeomGetPointN(const GEOSGeometry *g, int n)
const char * GEOSversion(void)
const GEOSGeometry * GEOSGetExteriorRing(const GEOSGeometry *g)
int GEOSMakeValidParams_setMethod(GEOSMakeValidParams *p, enum GEOSMakeValidMethods method)
void initGEOS(GEOSMessageHandler notice_function, GEOSMessageHandler error_function)
GEOSGeometry * GEOSNode(const GEOSGeometry *g)
int GEOSOrientPolygons_r(GEOSContextHandle_t handle, GEOSGeometry *g, int exteriorCW)
int GEOSCoverageCleanParams_setGapMaximumWidth(GEOSCoverageCleanParams *params, double gapMaximumWidth)
GEOSGeometry * GEOSOffsetCurve_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double width, int quadsegs, int joinStyle, double mitreLimit)
GEOSSTRtree * GEOSSTRtree_create(size_t nodeCapacity)
GEOSGeometry * GEOSBoundary_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
int GEOSFrechetDistanceDensify_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double densifyFrac, double *dist)
char GEOSPreparedRelatePattern_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2, const char *im)
char GEOSPreparedIntersects_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
GEOSGeometry * GEOSGeom_createLinearRing_r(GEOSContextHandle_t handle, GEOSCoordSequence *s)
char GEOSCrosses_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
char GEOSEquals(const GEOSGeometry *g1, const GEOSGeometry *g2)
int GEOSGeom_getYMin(const GEOSGeometry *g, double *value)
int GEOSGeomGetX(const GEOSGeometry *g, double *x)
GEOSOverlapMerge
Definition geos_c.h:4397
@ GEOS_MERGE_MIN_AREA
Definition geos_c.h:4403
@ GEOS_MERGE_MIN_INDEX
Definition geos_c.h:4405
@ GEOS_MERGE_LONGEST_BORDER
Definition geos_c.h:4399
@ GEOS_MERGE_MAX_AREA
Definition geos_c.h:4401
char GEOSPreparedDistanceWithin_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2, double dist)
void GEOSSTRtree_query(GEOSSTRtree *tree, const GEOSGeometry *g, GEOSQueryCallback callback, void *userdata)
GEOSGeometry * GEOSOffsetCurve(const GEOSGeometry *g, double width, int quadsegs, int joinStyle, double mitreLimit)
GEOSGeometry * GEOSCoverageUnion_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
void GEOS_interruptCancel(void)
void GEOSMakeValidParams_destroy(GEOSMakeValidParams *parms)
int GEOSGeomGetY(const GEOSGeometry *g, double *y)
GEOSGeometry * GEOSLineMergeDirected_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
size_t * GEOSClusterInfo_getClustersForInputs_r(GEOSContextHandle_t, const GEOSClusterInfo *clusters)
int GEOSFrechetDistance(const GEOSGeometry *g1, const GEOSGeometry *g2, double *dist)
void GEOSWKTReader_setFixStructure_r(GEOSContextHandle_t handle, GEOSWKTReader *reader, char doFix)
GEOSWKTWriter * GEOSWKTWriter_create_r(GEOSContextHandle_t handle)
GEOSGeometry * GEOSGeomGetPointN_r(GEOSContextHandle_t handle, const GEOSGeometry *g, int n)
void GEOSClusterInfo_destroy_r(GEOSContextHandle_t, GEOSClusterInfo *info)
GEOSGeometry * GEOSDifference(const GEOSGeometry *ga, const GEOSGeometry *gb)
GEOSGeometry * GEOSGeom_createLineString_r(GEOSContextHandle_t handle, GEOSCoordSequence *s)
GEOSGeometry * GEOSPolygonizer_getCutEdges_r(GEOSContextHandle_t handle, const GEOSGeometry *const geoms[], unsigned int ngeoms)
int GEOSMinimumClearance(const GEOSGeometry *g, double *d)
size_t GEOSClusterInfo_getNumClusters_r(GEOSContextHandle_t, const GEOSClusterInfo *clusters)
GEOSGeometry * GEOSDelaunayTriangulation(const GEOSGeometry *g, double tolerance, int onlyEdges)
GEOSGeometry * GEOSGeom_createCurvePolygon_r(GEOSContextHandle_t handle, GEOSGeometry *shell, GEOSGeometry **holes, unsigned int nholes)
char GEOSSTRtree_remove(GEOSSTRtree *tree, const GEOSGeometry *g, void *item)
GEOSGeometry * GEOSBufferWithParams(const GEOSGeometry *g, const GEOSBufferParams *p, double width)
GEOSMessageHandler GEOSContext_setNoticeHandler_r(GEOSContextHandle_t extHandle, GEOSMessageHandler nf)
int GEOSCoordSeq_getXYZ(const GEOSCoordSequence *s, unsigned int idx, double *x, double *y, double *z)
char GEOSisValidDetail_r(GEOSContextHandle_t handle, const GEOSGeometry *g, int flags, char **reason, GEOSGeometry **location)
GEOSMakeValidParams * GEOSMakeValidParams_create(void)
GEOSGeometry * GEOSGeom_createEmptyLineString_r(GEOSContextHandle_t handle)
char * GEOSGeomType_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSMinimumClearanceLine(const GEOSGeometry *g)
void GEOSGeoJSONWriter_setOutputDimension(GEOSGeoJSONWriter *writer, int dim)
char * GEOSRelateBoundaryNodeRule_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, int bnr)
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:659
@ GEOSBUF_CAP_SQUARE
Definition geos_c.h:668
@ GEOSBUF_CAP_FLAT
Definition geos_c.h:665
@ GEOSBUF_CAP_ROUND
Definition geos_c.h:662
GEOSGeometry * GEOSConvexHull(const GEOSGeometry *g)
GEOSVoronoiFlags
Definition geos_c.h:4859
@ GEOS_VORONOI_PRESERVE_ORDER
Definition geos_c.h:4865
@ GEOS_VORONOI_ONLY_EDGES
Definition geos_c.h:4861
GEOSGeometry * GEOSCoverageUnion(const GEOSGeometry *g)
int GEOSCoordSeq_setY_r(GEOSContextHandle_t handle, GEOSCoordSequence *s, unsigned int idx, double val)
int GEOSMakeValidParams_setMethod_r(GEOSContextHandle_t handle, GEOSMakeValidParams *p, enum GEOSMakeValidMethods method)
unsigned char * GEOSWKBWriter_write_r(GEOSContextHandle_t handle, GEOSWKBWriter *writer, const GEOSGeometry *g, size_t *size)
GEOSGeometry * GEOSSymDifference_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
void GEOSPreparedGeom_destroy(const GEOSPreparedGeometry *g)
GEOSGeometry * GEOSNode_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
int GEOSBufferParams_setJoinStyle(GEOSBufferParams *p, int joinStyle)
void GEOSCoordSeq_destroy(GEOSCoordSequence *s)
GEOSGeometry * GEOSGeomFromWKT_r(GEOSContextHandle_t handle, const char *wkt)
GEOSGeoJSONReader * GEOSGeoJSONReader_create(void)
int GEOSCoordSeq_setOrdinate(GEOSCoordSequence *s, unsigned int idx, unsigned int dim, double val)
char GEOSPreparedIntersectsXY(const GEOSPreparedGeometry *pg1, double x, double y)
int GEOSBufferParams_setMitreLimit_r(GEOSContextHandle_t handle, GEOSBufferParams *p, double mitreLimit)
char GEOSContains(const GEOSGeometry *g1, const GEOSGeometry *g2)
void GEOSCoverageCleanParams_destroy_r(GEOSContextHandle_t extHandle, GEOSCoverageCleanParams *params)
GEOSGeometry * GEOSGeom_transformXYZ_r(GEOSContextHandle_t handle, const GEOSGeometry *g, GEOSTransformXYZCallback callback, void *userdata)
char GEOSPreparedIntersectsXY_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, double x, double y)
GEOSGeometry * GEOSBufferWithStyle(const GEOSGeometry *g, double width, int quadsegs, int endCapStyle, int joinStyle, double mitreLimit)
GEOSGeometry * GEOSGeom_transformXY_r(GEOSContextHandle_t handle, const GEOSGeometry *g, GEOSTransformXYCallback callback, void *userdata)
GEOSGeometry * GEOSBuildArea(const GEOSGeometry *g)
GEOSClusterInfo * GEOSClusterEnvelopeDistance_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double d)
GEOSValidFlags
Definition geos_c.h:1565
@ GEOSVALID_ALLOW_SELFTOUCHING_RING_FORMING_HOLE
Definition geos_c.h:1567
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:2022
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:2008
char GEOSPreparedWithin_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
int GEOSSegmentIntersection(double ax0, double ay0, double ax1, double ay1, double bx0, double by0, double bx1, double by1, double *cx, double *cy)
int GEOSCoordSeq_setY(GEOSCoordSequence *s, unsigned int idx, double val)
void GEOSMakeValidParams_destroy_r(GEOSContextHandle_t handle, GEOSMakeValidParams *parms)
char GEOSPreparedCovers(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
GEOSMessageHandler_r GEOSContext_setErrorMessageHandler_r(GEOSContextHandle_t extHandle, GEOSMessageHandler_r ef, void *userData)
GEOSGeometry ** GEOSGeom_releaseCollection_r(GEOSContextHandle_t handle, GEOSGeometry *collection, unsigned int *ngeoms)
GEOSGeometry * GEOSGeoJSONReader_readGeometry(GEOSGeoJSONReader *reader, const char *geojson)
GEOSGeometry * GEOSEnvelope_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
char GEOSEqualsIdentical(const GEOSGeometry *g1, const GEOSGeometry *g2)
GEOSGeometry * GEOSGeomFromHEX_buf(const unsigned char *hex, size_t size)
unsigned char * GEOSWKBWriter_writeHEX(GEOSWKBWriter *writer, const GEOSGeometry *g, size_t *size)
GEOSGeometry * GEOSInterpolate_r(GEOSContextHandle_t handle, const GEOSGeometry *line, double d)
GEOSGeometry * GEOSSharedPaths_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
int GEOSGeom_getExtent_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *xmin, double *ymin, double *xmax, double *ymax)
GEOSGeometry * GEOSWKTReader_read_r(GEOSContextHandle_t handle, GEOSWKTReader *reader, const char *wkt)
char GEOSPreparedRelatePattern(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2, const char *imPattern)
int GEOS_setWKBByteOrder(int byteOrder)
int GEOSCoverageIsValid_r(GEOSContextHandle_t extHandle, const GEOSGeometry *input, double gapWidth, GEOSGeometry **output)
int GEOSCoverageCleanParams_setGapMaximumWidth_r(GEOSContextHandle_t extHandle, GEOSCoverageCleanParams *params, double gapMaximumWidth)
void GEOSWKBReader_setFixStructure(GEOSWKBReader *reader, char doFix)
GEOSGeometry * GEOSInterpolate(const GEOSGeometry *line, double d)
char GEOSPreparedContains_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
GEOSGeometry * GEOSInterpolateNormalized_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double d)
int GEOSCoordSeq_getY_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s, unsigned int idx, double *val)
GEOSGeometry * GEOSGeomGetEndPoint(const GEOSGeometry *g)
GEOSGeometry * GEOSSnap_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double tolerance)
GEOSGeometry * GEOSPolygonize_full(const GEOSGeometry *input, GEOSGeometry **cuts, GEOSGeometry **dangles, GEOSGeometry **invalid)
char * GEOSRelateBoundaryNodeRule(const GEOSGeometry *g1, const GEOSGeometry *g2, int bnr)
double GEOSGeom_getPrecision(const GEOSGeometry *g)
GEOSGeometry * GEOSLargestEmptyCircle(const GEOSGeometry *obstacles, const GEOSGeometry *boundary, double tolerance)
char GEOSIntersects(const GEOSGeometry *g1, const GEOSGeometry *g2)
int GEOSCoordSeq_getDimensions(const GEOSCoordSequence *s, unsigned int *dims)
char GEOSPreparedCoveredBy(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
char GEOSCovers(const GEOSGeometry *g1, const GEOSGeometry *g2)
GEOSInterruptCallback * GEOS_interruptRegisterCallback(GEOSInterruptCallback *cb)
int GEOSGeom_getXMin_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *value)
int GEOSCoordSeq_getOrdinate_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s, unsigned int idx, unsigned int dim, double *val)
int GEOSCoordSeq_getXY(const GEOSCoordSequence *s, unsigned int idx, double *x, double *y)
GEOSGeometry * GEOSSimplify_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double tolerance)
GEOSGeometry * GEOSIntersection_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
int GEOSOrientPolygons(GEOSGeometry *g, int exteriorCW)
char GEOSOverlaps(const GEOSGeometry *g1, const GEOSGeometry *g2)
char GEOSHasM_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
void GEOSWKTWriter_setTrim_r(GEOSContextHandle_t handle, GEOSWKTWriter *writer, char trim)
GEOSGeometry * GEOSLineMergeDirected(const GEOSGeometry *g)
GEOSGeometry * GEOSMakeValidWithParams(const GEOSGeometry *g, const GEOSMakeValidParams *makeValidParams)
GEOSGeometry * GEOSGeomFromWKB_buf_r(GEOSContextHandle_t handle, const unsigned char *wkb, size_t size)
GEOSGeometry * GEOSPointOnSurface(const GEOSGeometry *g)
GEOSGeometry * GEOSUnaryUnionPrec(const GEOSGeometry *g, double gridSize)
void GEOSWKTWriter_setTrim(GEOSWKTWriter *writer, char trim)
GEOSGeometry * GEOSBuffer_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double width, int quadsegs)
GEOSGeometry * GEOSMinimumWidth_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSWKBReader_readHEX_r(GEOSContextHandle_t handle, GEOSWKBReader *reader, const unsigned char *hex, size_t size)
GEOSWKBByteOrders
Definition geos_c.h:241
@ GEOS_WKB_NDR
Definition geos_c.h:245
@ GEOS_WKB_XDR
Definition geos_c.h:243
GEOSGeometry * GEOSVoronoiDiagram_r(GEOSContextHandle_t extHandle, const GEOSGeometry *g, const GEOSGeometry *env, double tolerance, int flags)
void GEOSWKBWriter_setIncludeSRID_r(GEOSContextHandle_t handle, GEOSWKBWriter *writer, const char writeSRID)
GEOSClusterInfo * GEOSClusterDBSCAN_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double eps, unsigned minPoints)
GEOSGeometry * GEOSConstrainedDelaunayTriangulation(const GEOSGeometry *g)
int GEOSCoordSeq_copyToArrays(const GEOSCoordSequence *s, double *x, double *y, double *z, double *m)
GEOSGeometry * GEOSMinimumBoundingCircle(const GEOSGeometry *g, double *radius, GEOSGeometry **center)
GEOSGeometry * GEOSSymDifference(const GEOSGeometry *ga, const GEOSGeometry *gb)
char GEOSDistanceWithin_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double dist)
GEOSGeometry * GEOSMakeValidWithParams_r(GEOSContextHandle_t handle, const GEOSGeometry *g, const GEOSMakeValidParams *makeValidParams)
struct GEOSWKTReader_t GEOSWKTReader
Definition geos_c.h:2001
GEOSCoordSequence * GEOSNearestPoints_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
GEOSGeometry * GEOSPolygonize(const GEOSGeometry *const geoms[], unsigned int ngeoms)
char GEOSPreparedCoveredBy_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
GEOSGeometry * GEOSDisjointSubsetUnion(const GEOSGeometry *g)
GEOSGeometry * GEOSGeom_createPointFromXY(double x, double y)
GEOSGeometry * GEOSRemoveRepeatedPoints(const GEOSGeometry *g, double tolerance)
GEOSGeometry * GEOSVoronoiDiagram(const GEOSGeometry *g, const GEOSGeometry *env, double tolerance, int flags)
GEOSGeometry * GEOSGeom_createPolygon(GEOSGeometry *shell, GEOSGeometry **holes, unsigned int nholes)
void GEOSWKBWriter_setOutputDimension_r(GEOSContextHandle_t handle, GEOSWKBWriter *writer, int newDimension)
void GEOSSetSRID_r(GEOSContextHandle_t handle, GEOSGeometry *g, int SRID)
void GEOSWKTReader_destroy_r(GEOSContextHandle_t handle, GEOSWKTReader *reader)
void GEOSSTRtree_destroy_r(GEOSContextHandle_t handle, GEOSSTRtree *tree)
char * GEOSGeomType(const GEOSGeometry *g)
char GEOSPreparedDisjoint(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
GEOSGeometry * GEOSGeom_createEmptyPoint_r(GEOSContextHandle_t handle)
GEOSRelateBoundaryNodeRules
Definition geos_c.h:1522
@ GEOSRELATE_BNR_OGC
Definition geos_c.h:1526
@ GEOSRELATE_BNR_MULTIVALENT_ENDPOINT
Definition geos_c.h:1530
@ GEOSRELATE_BNR_ENDPOINT
Definition geos_c.h:1528
@ GEOSRELATE_BNR_MOD2
Definition geos_c.h:1524
@ GEOSRELATE_BNR_MONOVALENT_ENDPOINT
Definition geos_c.h:1532
const size_t * GEOSClusterInfo_getInputsForClusterN(const GEOSClusterInfo *clusters, size_t i)
GEOSClusterInfo_getInputsForClusterN.
GEOSGeometry * GEOSSymDifferencePrec_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double gridSize)
char * GEOSGeoJSONWriter_writeGeometry_r(GEOSContextHandle_t handle, GEOSGeoJSONWriter *writer, const GEOSGeometry *g, int indent)
int GEOSBufferParams_setSingleSided_r(GEOSContextHandle_t handle, GEOSBufferParams *p, int singleSided)
char GEOSCrosses(const GEOSGeometry *g1, const GEOSGeometry *g2)
GEOSGeometry * GEOSGeomGetStartPoint(const GEOSGeometry *g)
int GEOSMakeValidParams_setKeepCollapsed_r(GEOSContextHandle_t handle, GEOSMakeValidParams *p, int style)
int GEOSCoordSeq_setOrdinate_r(GEOSContextHandle_t handle, GEOSCoordSequence *s, unsigned int idx, unsigned int dim, double val)
void GEOSSetSRID(GEOSGeometry *g, int SRID)
GEOSGeometry * GEOSGeoJSONReader_readGeometry_r(GEOSContextHandle_t handle, GEOSGeoJSONReader *reader, const char *geojson)
char * GEOSGeoJSONWriter_writeGeometry(GEOSGeoJSONWriter *writer, const GEOSGeometry *g, int indent)
GEOSGeometry * GEOSGeom_createLineString(GEOSCoordSequence *s)
unsigned char * GEOSWKBWriter_write(GEOSWKBWriter *writer, const GEOSGeometry *g, size_t *size)
GEOSGeometry * 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:4655
@ GEOSHULL_PARAM_AREA_RATIO
Definition geos_c.h:4659
@ GEOSHULL_PARAM_VERTEX_RATIO
Definition geos_c.h:4657
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:675
@ GEOSBUF_JOIN_MITRE
Definition geos_c.h:685
@ GEOSBUF_JOIN_ROUND
Definition geos_c.h:680
@ GEOSBUF_JOIN_BEVEL
Definition geos_c.h:690
GEOSGeometry * GEOSGeom_createEmptyCollection(int type)
GEOSGeometry * GEOSIntersection(const GEOSGeometry *g1, const GEOSGeometry *g2)
int GEOSWKBWriter_getByteOrder_r(GEOSContextHandle_t handle, const GEOSWKBWriter *writer)
int GEOSGeom_getXMax_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *value)
void GEOSWKBWriter_destroy(GEOSWKBWriter *writer)
char GEOSEquals_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
int GEOSCoverageCleanParams_setSnappingDistance_r(GEOSContextHandle_t extHandle, GEOSCoverageCleanParams *params, double snappingDistance)
int GEOSGeom_getXMin(const GEOSGeometry *g, double *value)
char GEOSCovers_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
int GEOSGeomGetLength(const GEOSGeometry *g, double *length)
char GEOSOverlaps_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
int GEOSLength_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *length)
const GEOSGeometry * GEOSSTRtree_nearest(GEOSSTRtree *tree, const GEOSGeometry *geom)
GEOSClusterInfo * GEOSClusterGeometryIntersects(const GEOSGeometry *g)
GEOSClusterGeometryIntersects.
unsigned char * GEOSGeomToHEX_buf(const GEOSGeometry *g, size_t *size)
GEOSCoordSequence * GEOSCoordSeq_copyFromBuffer_r(GEOSContextHandle_t handle, const double *buf, unsigned int size, int hasZ, int hasM)
GEOSWKBReader * GEOSWKBReader_create_r(GEOSContextHandle_t handle)
char 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)
int GEOSNormalize(GEOSGeometry *g)
unsigned char * GEOSGeomToWKB_buf(const GEOSGeometry *g, size_t *size)
int GEOSGetNumGeometries_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
char GEOSEqualsExact_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double tolerance)
GEOSGeometry * GEOSMinimumBoundingCircle_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *radius, GEOSGeometry **center)
int GEOSWKTWriter_getOutputDimension(GEOSWKTWriter *writer)
char GEOSTouches_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
GEOSGeometry * GEOSWKTReader_read(GEOSWKTReader *reader, const char *wkt)
GEOSGeometry * GEOSUnaryUnionPrec_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double gridSize)
int GEOSCoordSeq_getM(const GEOSCoordSequence *s, unsigned int idx, double *val)
int GEOSArea_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *area)
double GEOSGeom_getPrecision_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
void GEOSWKTWriter_setOutputDimension(GEOSWKTWriter *writer, int dim)
GEOSCoordSequence * GEOSCoordSeq_copyFromArrays(const double *x, const double *y, const double *z, const double *m, unsigned int size)
GEOSWKBReader * GEOSWKBReader_create(void)
int GEOSCoordSeq_getY(const GEOSCoordSequence *s, unsigned int idx, double *val)
int GEOSCoordSeq_setZ(GEOSCoordSequence *s, unsigned int idx, double val)
int GEOSBufferParams_setMitreLimit(GEOSBufferParams *p, double mitreLimit)
int(* GEOSTransformXYCallback)(double *x, double *y, void *userdata)
Definition geos_c.h:309
void GEOSWKTWriter_setOld3D(GEOSWKTWriter *writer, int useOld3D)
int GEOSGeom_getExtent(const GEOSGeometry *g, double *xmin, double *ymin, double *xmax, double *ymax)
int GEOSCoordSeq_copyToArrays_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s, double *x, double *y, double *z, double *m)
char GEOSWithin(const GEOSGeometry *g1, const GEOSGeometry *g2)
int GEOSNormalize_r(GEOSContextHandle_t handle, GEOSGeometry *g)
void GEOSWKBWriter_destroy_r(GEOSContextHandle_t handle, GEOSWKBWriter *writer)
GEOSCoordSequence * GEOSCoordSeq_createWithDimensions(unsigned int size, int hasZ, int hasM)
int GEOSCoverageCleanParams_setSnappingDistance(GEOSCoverageCleanParams *params, double snappingDistance)
int GEOSDistance(const GEOSGeometry *g1, const GEOSGeometry *g2, double *dist)
GEOSGeometry * GEOSGeom_createEmptyPolygon(void)
void finishGEOS_r(GEOSContextHandle_t handle)
char GEOSisClosed(const GEOSGeometry *g)
GEOSGeometry * GEOSPolygonHullSimplifyMode(const GEOSGeometry *g, unsigned int isOuter, unsigned int parameterMode, double parameter)
int GEOSGeom_getCoordinateDimension(const GEOSGeometry *g)
size_t GEOSClusterInfo_getClusterSize(const GEOSClusterInfo *clusters, size_t i)
GEOSClusterInfo_getSize.
struct GEOSClusterInfo_t GEOSClusterInfo
Definition geos_c.h:189
int GEOSFrechetDistance_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double *dist)
char GEOSRelatePattern(const GEOSGeometry *g1, const GEOSGeometry *g2, const char *imPattern)
GEOSGeometry * GEOSBufferWithStyle_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double width, int quadsegs, int endCapStyle, int joinStyle, double mitreLimit)
char * GEOSRelate_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
GEOSGeometry * GEOSConvexHull_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
struct GEOSGeoJSONWriter_t GEOSGeoJSONWriter
Definition geos_c.h:2036
unsigned char * GEOSGeomToWKB_buf_r(GEOSContextHandle_t handle, const GEOSGeometry *g, size_t *size)
GEOSGeometry * GEOSSingleSidedBuffer(const GEOSGeometry *g, double width, int quadsegs, int joinStyle, double mitreLimit, int leftSide)
GEOSGeometry * GEOSUnionCascaded(const GEOSGeometry *g)
char GEOSPreparedTouches_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
GEOSMessageHandler GEOSContext_setErrorHandler_r(GEOSContextHandle_t extHandle, GEOSMessageHandler ef)
int GEOSCoordSeq_setXYZ(GEOSCoordSequence *s, unsigned int idx, double x, double y, double z)
size_t * GEOSClusterInfo_getClustersForInputs(const GEOSClusterInfo *clusters)
GEOSClusterInfo_getClustersForInputs.
GEOSGeometry * GEOSCoverageClean_r(GEOSContextHandle_t extHandle, const GEOSGeometry *input)
int GEOSWKTWriter_getOutputDimension_r(GEOSContextHandle_t handle, GEOSWKTWriter *writer)
double GEOSProjectNormalized(const GEOSGeometry *line, const GEOSGeometry *point)
GEOSGeometry * GEOSGeom_createEmptyCircularString()
int GEOSGeom_getYMin_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *value)
GEOSGeometry * GEOSGeom_clone_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
const GEOSPreparedGeometry * GEOSPrepare_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSMinimumClearanceLine_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
void GEOSGeom_setUserData(GEOSGeometry *g, void *userData)
GEOSGeometry * GEOSGeom_createCollection(int type, GEOSGeometry **geoms, unsigned int ngeoms)
void GEOSGeoJSONReader_destroy(GEOSGeoJSONReader *reader)
GEOSGeometry * GEOSGetCentroid_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSCoordSequence * GEOSCoordSeq_copyFromBuffer(const double *buf, unsigned int size, int hasZ, int hasM)
int GEOSGeomGetNumPoints(const GEOSGeometry *g)
void GEOSGeoJSONWriter_destroy(GEOSGeoJSONWriter *writer)
GEOSGeometry * GEOSGeom_transformXY(const GEOSGeometry *g, GEOSTransformXYCallback callback, void *userdata)
size_t GEOSClusterInfo_getNumClusters(const GEOSClusterInfo *clusters)
GEOSClusterInfo_getNumClusters.
double GEOSProjectNormalized_r(GEOSContextHandle_t handle, const GEOSGeometry *g, const GEOSGeometry *p)
char GEOSPreparedCrosses(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
int GEOSGeomGetNumPoints_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
char * GEOSisValidReason_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSPolygonize_valid_r(GEOSContextHandle_t handle, const GEOSGeometry *const geoms[], unsigned int ngems)
GEOSGeometry * GEOSGeom_createCurvePolygon(GEOSGeometry *shell, GEOSGeometry **holes, unsigned int nholes)
GEOSGeometry * GEOSLineSubstring(const GEOSGeometry *g, double start_fraction, double end_fraction)
char GEOSPreparedIntersects(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
char GEOSWithin_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
GEOSClusterInfo * GEOSClusterDBSCAN(const GEOSGeometry *g, double eps, unsigned minPoints)
GEOSClusterDBSCAN.
GEOSGeometry * GEOSConcaveHullOfPolygons_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double lengthRatio, unsigned int isTight, unsigned int isHolesAllowed)
int GEOS_setWKBOutputDims(int newDims)
const GEOSCoordSequence * GEOSGeom_getCoordSeq_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSPointOnSurface_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSGeom_createEmptyCurvePolygon()
int GEOSFrechetDistanceDensify(const GEOSGeometry *g1, const GEOSGeometry *g2, double densifyFrac, double *dist)
struct GEOSBufParams_t GEOSBufferParams
Definition geos_c.h:169
char GEOSPreparedCovers_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
GEOSGeometry * GEOSDifference_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
char GEOSCoordSeq_hasM_r(GEOSContextHandle_t handle, GEOSCoordSequence *s)
GEOSGeometry * GEOSLargestEmptyCircle_r(GEOSContextHandle_t handle, const GEOSGeometry *g, const GEOSGeometry *boundary, double tolerance)
int GEOSOrientationIndex_r(GEOSContextHandle_t handle, double Ax, double Ay, double Bx, double By, double Px, double Py)
GEOSGeometry * GEOSPolygonHullSimplify_r(GEOSContextHandle_t handle, const GEOSGeometry *g, unsigned int isOuter, double vertexNumFraction)
GEOSPrecisionRules
Definition geos_c.h:1704
@ GEOS_PREC_NO_TOPO
Definition geos_c.h:1708
@ GEOS_PREC_KEEP_COLLAPSED
Definition geos_c.h:1710
@ GEOS_PREC_VALID_OUTPUT
Definition geos_c.h:1706
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:1595
@ GEOS_MAKE_VALID_LINEWORK
Definition geos_c.h:1599
@ GEOS_MAKE_VALID_STRUCTURE
Definition geos_c.h:1604
GEOSGeometry * GEOSWKBReader_readHEX(GEOSWKBReader *reader, const unsigned char *hex, size_t size)
int GEOSGeom_getYMax_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *value)
GEOSGeometry * GEOSGeom_createEmptyLineString(void)
const GEOSGeometry * GEOSGetInteriorRingN_r(GEOSContextHandle_t handle, const GEOSGeometry *g, int n)
GEOSGeometry * GEOSInterpolateNormalized(const GEOSGeometry *line, double proportion)
GEOSGeometry * GEOSGeom_createEmptyCompoundCurve()
GEOSGeometry * GEOSGeom_clone(const GEOSGeometry *g)
void GEOSGeoJSONWriter_destroy_r(GEOSContextHandle_t handle, GEOSGeoJSONWriter *writer)
int GEOSBufferParams_setSingleSided(GEOSBufferParams *p, int singleSided)
const GEOSGeometry * GEOSGetInteriorRingN(const GEOSGeometry *g, int n)
int GEOSGeomGetZ_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *z)
GEOSGeometry * GEOSUnionPrec_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double gridSize)
GEOSGeometry * GEOSGeom_createPointFromXY_r(GEOSContextHandle_t handle, double x, double y)
char GEOSEqualsIdentical_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
GEOSClusterInfo * GEOSClusterGeometryDistance(const GEOSGeometry *g, double d)
GEOSClusterGeometryDistance.
GEOSClusterInfo * GEOSClusterEnvelopeIntersects_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
void GEOSWKTWriter_destroy_r(GEOSContextHandle_t handle, GEOSWKTWriter *writer)
const GEOSPreparedGeometry * GEOSPrepare(const GEOSGeometry *g)
int GEOSWKBWriter_getByteOrder(const GEOSWKBWriter *writer)
char GEOSPreparedOverlaps(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
char GEOSHasZ_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
int GEOSCoordSeq_setM_r(GEOSContextHandle_t handle, GEOSCoordSequence *s, unsigned int idx, double val)
GEOSGeometry * GEOSUnion(const GEOSGeometry *ga, const GEOSGeometry *gb)
void GEOSGeoJSONReader_destroy_r(GEOSContextHandle_t handle, GEOSGeoJSONReader *reader)
GEOSGeometry * GEOSSimplify(const GEOSGeometry *g, double tolerance)
void GEOSSTRtree_insert(GEOSSTRtree *tree, const GEOSGeometry *g, void *item)
char GEOSisSimple_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSWKBWriter * GEOSWKBWriter_create_r(GEOSContextHandle_t handle)
char GEOSDistanceWithin(const GEOSGeometry *g1, const GEOSGeometry *g2, double dist)
int GEOSCoordSeq_setXYZ_r(GEOSContextHandle_t handle, GEOSCoordSequence *s, unsigned int idx, double x, double y, double z)
int GEOSGeomGetX_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *x)
unsigned char * GEOSGeomToHEX_buf_r(GEOSContextHandle_t handle, const GEOSGeometry *g, size_t *size)
char GEOSPreparedWithin(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
char GEOSHasZ(const GEOSGeometry *g)
int GEOSWKBWriter_getOutputDimension_r(GEOSContextHandle_t handle, const GEOSWKBWriter *writer)
int GEOSBufferParams_setQuadrantSegments(GEOSBufferParams *p, int quadSegs)
void GEOS_interruptRequest(void)
char GEOSWKBWriter_getIncludeSRID_r(GEOSContextHandle_t handle, const GEOSWKBWriter *writer)
void finishGEOS(void)
int GEOSLength(const GEOSGeometry *g, double *length)
GEOSGeometry * GEOSConcaveHull(const GEOSGeometry *g, double ratio, unsigned int allowHoles)
int GEOSCoordSeq_getZ_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s, unsigned int idx, double *val)
int GEOSBufferParams_setEndCapStyle(GEOSBufferParams *p, int style)
GEOSGeometry * GEOSUnionCascaded_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
int GEOSGetSRID(const GEOSGeometry *g)
GEOSGeometry * GEOSBuffer(const GEOSGeometry *g, double width, int quadsegs)
unsigned char * GEOSWKBWriter_writeHEX_r(GEOSContextHandle_t handle, GEOSWKBWriter *writer, const GEOSGeometry *g, size_t *size)
void GEOSWKTWriter_setRoundingPrecision(GEOSWKTWriter *writer, int precision)
char GEOSisClosed_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
char * GEOSisValidReason(const GEOSGeometry *g)
void GEOSGeoJSONWriter_setOutputDimension_r(GEOSContextHandle_t handle, GEOSGeoJSONWriter *writer, int dim)
int GEOSBufferParams_setJoinStyle_r(GEOSContextHandle_t handle, GEOSBufferParams *p, int joinStyle)
char GEOSisRing(const GEOSGeometry *g)
int GEOSCoordSeq_getXY_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s, unsigned int idx, double *x, double *y)
char GEOSPreparedContainsXY(const GEOSPreparedGeometry *pg1, double x, double y)
const GEOSGeometry * GEOSGetGeometryN_r(GEOSContextHandle_t handle, const GEOSGeometry *g, int n)
int GEOSCoordSeq_getX_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s, unsigned int idx, double *val)
int GEOSPreparedDistance_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2, double *dist)
GEOSWKTWriter * GEOSWKTWriter_create(void)
char * GEOSPreparedRelate_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
int GEOSSegmentIntersection_r(GEOSContextHandle_t extHandle, double ax0, double ay0, double ax1, double ay1, double bx0, double by0, double bx1, double by1, double *cx, double *cy)
char GEOSisValid(const GEOSGeometry *g)
char GEOSCoveredBy(const GEOSGeometry *g1, const GEOSGeometry *g2)
int GEOSGeom_getDimensions(const GEOSGeometry *g)
char GEOSPreparedDisjoint_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
int GEOSHausdorffDistance_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double *dist)
GEOSGeometry * GEOSGeom_createCircularString(GEOSCoordSequence *s)
void GEOSWKBWriter_setIncludeSRID(GEOSWKBWriter *writer, const char writeSRID)
GEOSGeometry * GEOSBuildArea_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
char GEOSisEmpty(const GEOSGeometry *g)
GEOSCoverageCleanParams * GEOSCoverageCleanParams_create()
const GEOSGeometry * GEOSGetGeometryN(const GEOSGeometry *g, int n)
int GEOSMinimumClearance_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *distance)
int GEOSHilbertCode(const GEOSGeometry *geom, const GEOSGeometry *extent, unsigned int level, unsigned int *code)
GEOSGeometry * GEOSConcaveHullByLength(const GEOSGeometry *g, double length, unsigned int allowHoles)
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:345
GEOSGeometry * GEOSGeom_createPoint(GEOSCoordSequence *s)
int GEOS_getWKBByteOrder_r(GEOSContextHandle_t handle)
char GEOSPreparedTouches(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
char GEOSWKBWriter_getIncludeSRID(const GEOSWKBWriter *writer)
GEOSGeometry * GEOSCoverageClean(const GEOSGeometry *input)
GEOSGeometry * GEOSSnap(const GEOSGeometry *input, const GEOSGeometry *snap_target, double tolerance)
GEOSWKBWriter * GEOSWKBWriter_create(void)
struct GEOSSTRtree_t GEOSSTRtree
Definition geos_c.h:162
GEOSCoordSequence * GEOSCoordSeq_create_r(GEOSContextHandle_t handle, unsigned int size, unsigned int dims)
GEOSCoordSequence * GEOSNearestPoints(const GEOSGeometry *g1, const GEOSGeometry *g2)
GEOSGeometry * GEOSSymDifferencePrec(const GEOSGeometry *ga, const GEOSGeometry *gb, double gridSize)
int GEOSGeom_getXMax(const GEOSGeometry *g, double *value)
GEOSGeometry * GEOSRemoveRepeatedPoints_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double tolerance)
GEOSGeometry * GEOSGeom_extractUniquePoints_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
void GEOSFree(void *buffer)
GEOSBufferParams * GEOSBufferParams_create_r(GEOSContextHandle_t handle)
int GEOSCoordSeq_getX(const GEOSCoordSequence *s, unsigned int idx, double *val)
char * GEOSPreparedRelate(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
GEOSGeometry * GEOSDifferencePrec_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double gridSize)
char * GEOSGeomToWKT(const GEOSGeometry *g)
GEOSGeometry * GEOSSharedPaths(const GEOSGeometry *g1, const GEOSGeometry *g2)
int GEOSArea(const GEOSGeometry *g, double *area)
int GEOSGeomGetLength_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *length)
char GEOSPreparedCrosses_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
GEOSGeometry * GEOSGeom_createCompoundCurve(GEOSGeometry **curves, unsigned int ncurves)
int GEOSGeomGetY_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *y)
int GEOSCoordSeq_isCCW_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s, char *is_ccw)
char GEOSisValid_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
void GEOSSTRtree_insert_r(GEOSContextHandle_t handle, GEOSSTRtree *tree, const GEOSGeometry *g, void *item)
GEOSCoordSequence * GEOSCoordSeq_copyFromArrays_r(GEOSContextHandle_t handle, const double *x, const double *y, const double *z, const double *m, unsigned int size)
int GEOSCoordSeq_setX_r(GEOSContextHandle_t handle, GEOSCoordSequence *s, unsigned int idx, double val)
GEOSGeometry * GEOSLineMerge_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
char GEOSisValidDetail(const GEOSGeometry *g, int flags, char **reason, GEOSGeometry **location)
GEOSGeometry * GEOSPolygonize_r(GEOSContextHandle_t handle, const GEOSGeometry *const geoms[], unsigned int ngeoms)
GEOSGeometry * GEOSLineMerge(const GEOSGeometry *g)
GEOSGeometry * GEOSGeom_createEmptyCurvePolygon_r(GEOSContextHandle_t handle)
size_t GEOSClusterInfo_getClusterSize_r(GEOSContextHandle_t, const GEOSClusterInfo *clusters, size_t i)
GEOSGeometry * GEOSGeom_createLinearRing(GEOSCoordSequence *s)
struct GEOSCoverageCleanParams_t GEOSCoverageCleanParams
Definition geos_c.h:176
void GEOSClusterInfo_destroy(GEOSClusterInfo *clusters)
GEOSClusterInfo_destroy.
void GEOSWKTWriter_setRoundingPrecision_r(GEOSContextHandle_t handle, GEOSWKTWriter *writer, int precision)
const void * GEOSSTRtree_nearest_generic(GEOSSTRtree *tree, const void *item, const GEOSGeometry *itemEnvelope, GEOSDistanceCallback distancefn, void *userdata)
int GEOSGeom_getYMax(const GEOSGeometry *g, double *value)
int GEOSHausdorffDistanceDensify_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double densifyFrac, double *dist)
double GEOSProject(const GEOSGeometry *line, const GEOSGeometry *point)
int(* GEOSTransformXYZCallback)(double *x, double *y, double *z, void *userdata)
Definition geos_c.h:328
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