GEOS 3.13.1
geos_c.h
Go to the documentation of this file.
1/************************************************************************
2 *
3 * C-Wrapper for GEOS library
4 *
5 * Copyright (C) 2010 2011 Sandro Santilli <strk@kbt.io>
6 * Copyright (C) 2005 Refractions Research Inc.
7 *
8 * This is free software; you can redistribute and/or modify it under
9 * the terms of the GNU Lesser General Public Licence as published
10 * by the Free Software Foundation.
11 * See the COPYING file for more information.
12 ***********************************************************************/
13
40#ifndef GEOS_C_H_INCLUDED
41#define GEOS_C_H_INCLUDED
42
43#ifndef __cplusplus
44# include <stddef.h> /* for size_t definition */
45#else
46# include <cstddef>
47using std::size_t;
48#endif
49
50#ifdef __cplusplus
51extern "C" {
52#endif
53
54/* ====================================================================== */
55/* Version */
56/* ====================================================================== */
57
60#ifndef GEOS_VERSION_MAJOR
61#define GEOS_VERSION_MAJOR 3
62#endif
63#ifndef GEOS_VERSION_MINOR
64#define GEOS_VERSION_MINOR 13
65#endif
66#ifndef GEOS_VERSION_PATCH
67#define GEOS_VERSION_PATCH 1
68#endif
69#ifndef GEOS_VERSION
70#define GEOS_VERSION "3.13.1"
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 19
78#define GEOS_CAPI_VERSION_PATCH 2
79#define GEOS_CAPI_VERSION "3.13.1-CAPI-1.19.2"
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 GEOSMakeValidParams_t GEOSMakeValidParams;
177
178#endif
179
182/*
183* These are compatibility definitions for source compatibility
184* with GEOS 2.X clients relying on that type.
185*/
186typedef GEOSGeometry* GEOSGeom;
187typedef GEOSCoordSequence* GEOSCoordSeq;
188
215 GEOS_CIRCULARSTRING,
216 GEOS_COMPOUNDCURVE,
217 GEOS_CURVEPOLYGON,
218 GEOS_MULTICURVE,
219 GEOS_MULTISURFACE,
220};
221
234
250
258typedef void (*GEOSQueryCallback)(void *item, void *userdata);
259
277typedef int (*GEOSDistanceCallback)(
278 const void* item1,
279 const void* item2,
280 double* distance,
281 void* userdata);
282
283
297 double* x,
298 double* y,
299 void* userdata);
300
301
302/* ========== Interruption ========== */
303
312typedef void (GEOSInterruptCallback)(void);
313
323
328extern void GEOS_DLL GEOS_interruptRequest(void);
329
334extern void GEOS_DLL GEOS_interruptCancel(void);
335
336/* ========== Initialization and Cleanup ========== */
337
346extern GEOSContextHandle_t GEOS_DLL GEOS_init_r(void);
347
355extern void GEOS_DLL GEOS_finish_r(GEOSContextHandle_t handle);
356
366 GEOSContextHandle_t extHandle,
368
380 GEOSContextHandle_t extHandle,
382
393 GEOSContextHandle_t extHandle,
395 void *userData);
396
409 GEOSContextHandle_t extHandle,
411 void *userData);
412
413/* ========== Coordinate Sequence functions ========== */
414
417 GEOSContextHandle_t handle,
418 unsigned int size,
419 unsigned int dims);
420
423 GEOSContextHandle_t handle,
424 const double* buf,
425 unsigned int size,
426 int hasZ,
427 int hasM);
428
431 GEOSContextHandle_t handle,
432 const double* x,
433 const double* y,
434 const double* z,
435 const double* m,
436 unsigned int size);
437
439extern int GEOS_DLL GEOSCoordSeq_copyToBuffer_r(
440 GEOSContextHandle_t handle,
441 const GEOSCoordSequence* s,
442 double* buf,
443 int hasZ,
444 int hasM);
445
447extern int GEOS_DLL GEOSCoordSeq_copyToArrays_r(
448 GEOSContextHandle_t handle,
449 const GEOSCoordSequence* s,
450 double* x,
451 double* y,
452 double* z,
453 double* m);
454
457 GEOSContextHandle_t handle,
458 const GEOSCoordSequence* s);
459
461extern void GEOS_DLL GEOSCoordSeq_destroy_r(
462 GEOSContextHandle_t handle,
464
466extern int GEOS_DLL GEOSCoordSeq_setX_r(
467 GEOSContextHandle_t handle,
468 GEOSCoordSequence* s, unsigned int idx,
469 double val);
470
472extern int GEOS_DLL GEOSCoordSeq_setY_r(
473 GEOSContextHandle_t handle,
474 GEOSCoordSequence* s, unsigned int idx,
475 double val);
476
478extern int GEOS_DLL GEOSCoordSeq_setZ_r(
479 GEOSContextHandle_t handle,
480 GEOSCoordSequence* s, unsigned int idx,
481 double val);
482
484extern int GEOS_DLL GEOSCoordSeq_setXY_r(
485 GEOSContextHandle_t handle,
486 GEOSCoordSequence* s, unsigned int idx,
487 double x, double y);
488
490extern int GEOS_DLL GEOSCoordSeq_setXYZ_r(
491 GEOSContextHandle_t handle,
492 GEOSCoordSequence* s, unsigned int idx,
493 double x, double y, double z);
494
496extern int GEOS_DLL GEOSCoordSeq_setOrdinate_r(
497 GEOSContextHandle_t handle,
499 unsigned int idx,
500 unsigned int dim, double val);
501
503extern int GEOS_DLL GEOSCoordSeq_getX_r(
504 GEOSContextHandle_t handle,
505 const GEOSCoordSequence* s,
506 unsigned int idx, double *val);
507
509extern int GEOS_DLL GEOSCoordSeq_getY_r(
510 GEOSContextHandle_t handle,
511 const GEOSCoordSequence* s,
512 unsigned int idx, double *val);
513
515extern int GEOS_DLL GEOSCoordSeq_getZ_r(
516 GEOSContextHandle_t handle,
517 const GEOSCoordSequence* s,
518 unsigned int idx, double *val);
519
521extern int GEOS_DLL GEOSCoordSeq_getXY_r(
522 GEOSContextHandle_t handle,
523 const GEOSCoordSequence* s,
524 unsigned int idx,
525 double *x, double *y);
526
528extern int GEOS_DLL GEOSCoordSeq_getXYZ_r(
529 GEOSContextHandle_t handle,
530 const GEOSCoordSequence* s,
531 unsigned int idx,
532 double *x, double *y, double *z);
533
535extern int GEOS_DLL GEOSCoordSeq_getOrdinate_r(
536 GEOSContextHandle_t handle,
537 const GEOSCoordSequence* s,
538 unsigned int idx,
539 unsigned int dim, double *val);
540
542extern int GEOS_DLL GEOSCoordSeq_getSize_r(
543 GEOSContextHandle_t handle,
544 const GEOSCoordSequence* s,
545 unsigned int *size);
546
549 GEOSContextHandle_t handle,
550 const GEOSCoordSequence* s,
551 unsigned int *dims);
552
554extern int GEOS_DLL GEOSCoordSeq_isCCW_r(
555 GEOSContextHandle_t handle,
556 const GEOSCoordSequence* s,
557 char* is_ccw);
558
559/* ========= Linear referencing functions ========= */
560
562extern double GEOS_DLL GEOSProject_r(
563 GEOSContextHandle_t handle,
564 const GEOSGeometry *line,
565 const GEOSGeometry *point);
566
569 GEOSContextHandle_t handle,
570 const GEOSGeometry *line,
571 double d);
572
574extern double GEOS_DLL GEOSProjectNormalized_r(
575 GEOSContextHandle_t handle,
576 const GEOSGeometry *g,
577 const GEOSGeometry *p);
578
581 GEOSContextHandle_t handle,
582 const GEOSGeometry *g,
583 double d);
584
585/* ========== Buffer related functions ========== */
586
588extern GEOSGeometry GEOS_DLL *GEOSBuffer_r(
589 GEOSContextHandle_t handle,
590 const GEOSGeometry* g,
591 double width, int quadsegs);
592
608
630
633 GEOSContextHandle_t handle);
634
636extern void GEOS_DLL GEOSBufferParams_destroy_r(
637 GEOSContextHandle_t handle,
638 GEOSBufferParams* parms);
639
642 GEOSContextHandle_t handle,
644 int style);
645
648 GEOSContextHandle_t handle,
650 int joinStyle);
651
654 GEOSContextHandle_t handle,
656 double mitreLimit);
657
660 GEOSContextHandle_t handle,
662 int quadSegs);
663
666 GEOSContextHandle_t handle,
668 int singleSided);
669
672 GEOSContextHandle_t handle,
673 const GEOSGeometry* g,
674 const GEOSBufferParams* p,
675 double width);
676
679 GEOSContextHandle_t handle,
680 const GEOSGeometry* g,
681 double width, int quadsegs, int endCapStyle,
682 int joinStyle, double mitreLimit);
683
686 GEOSContextHandle_t handle,
687 const GEOSGeometry* g,
688 double tolerance);
689
692 GEOSContextHandle_t handle,
693 const GEOSGeometry* g, double width, int quadsegs,
694 int joinStyle, double mitreLimit);
695
696
697/* ========= Geometry Constructors ========= */
698
701 GEOSContextHandle_t handle,
703
706 GEOSContextHandle_t handle,
707 double x, double y);
708
711 GEOSContextHandle_t handle);
712
715 GEOSContextHandle_t handle,
717
720 GEOSContextHandle_t handle,
722
725 GEOSContextHandle_t handle);
726
729 GEOSContextHandle_t handle);
730
733 GEOSContextHandle_t handle,
734 GEOSGeometry* shell,
735 GEOSGeometry** holes,
736 unsigned int nholes);
737
740 GEOSContextHandle_t handle,
741 int type,
742 GEOSGeometry* *geoms,
743 unsigned int ngeoms);
744
747 GEOSContextHandle_t handle,
748 GEOSGeometry * collection,
749 unsigned int * ngeoms);
750
753 GEOSContextHandle_t handle, int type);
754
757 GEOSContextHandle_t handle,
758 double xmin, double ymin,
759 double xmax, double ymax);
760
763 GEOSContextHandle_t handle,
764 const GEOSGeometry* g);
765
768 GEOSContextHandle_t handle,
770
773 GEOSContextHandle_t handle);
774
777 GEOSContextHandle_t handle,
778 GEOSGeometry** curves,
779 unsigned int ncurves);
780
783 GEOSContextHandle_t handle);
784
787 GEOSContextHandle_t handle,
788 GEOSGeometry* shell,
789 GEOSGeometry** holes,
790 unsigned int nholes);
791
794 GEOSContextHandle_t handle);
795
796/* ========= Memory management ========= */
797
799extern void GEOS_DLL GEOSGeom_destroy_r(
800 GEOSContextHandle_t handle,
801 GEOSGeometry* g);
802
803/* ========= Coverages ========= */
804
806extern GEOSGeometry GEOS_DLL *
808 GEOSContextHandle_t handle,
809 const GEOSGeometry* g);
810
812extern int GEOS_DLL
814 GEOSContextHandle_t extHandle,
815 const GEOSGeometry* input,
816 double gapWidth,
817 GEOSGeometry** output);
818
820extern GEOSGeometry GEOS_DLL *
822 GEOSContextHandle_t extHandle,
823 const GEOSGeometry* input,
824 double tolerance,
825 int preserveBoundary);
826
827/* ========= Topology Operations ========= */
828
831 GEOSContextHandle_t handle,
832 const GEOSGeometry* g);
833
836 GEOSContextHandle_t handle,
837 const GEOSGeometry* g1,
838 const GEOSGeometry* g2);
839
842 GEOSContextHandle_t handle,
843 const GEOSGeometry* g1,
844 const GEOSGeometry* g2,
845 double gridSize);
846
849 GEOSContextHandle_t handle,
850 const GEOSGeometry* g);
851
854 GEOSContextHandle_t handle,
855 const GEOSGeometry* g,
856 double ratio,
857 unsigned int allowHoles);
858
861 GEOSContextHandle_t handle,
862 const GEOSGeometry* g,
863 double ratio,
864 unsigned int allowHoles);
865
868 GEOSContextHandle_t handle,
869 const GEOSGeometry* g,
870 unsigned int isOuter,
871 double vertexNumFraction);
872
875 GEOSContextHandle_t handle,
876 const GEOSGeometry* g,
877 unsigned int isOuter,
878 unsigned int parameterMode,
879 double parameter);
880
883 GEOSContextHandle_t handle,
884 const GEOSGeometry* g,
885 double lengthRatio,
886 unsigned int isTight,
887 unsigned int isHolesAllowed);
888
891 GEOSContextHandle_t handle,
892 const GEOSGeometry* g);
893
896 GEOSContextHandle_t handle,
897 const GEOSGeometry* g,
898 double tolerance);
899
902 GEOSContextHandle_t handle,
903 const GEOSGeometry* g,
904 const GEOSGeometry* boundary,
905 double tolerance);
906
909 GEOSContextHandle_t handle,
910 const GEOSGeometry* g);
911
914 GEOSContextHandle_t handle,
915 const GEOSGeometry* g);
916
918extern int GEOS_DLL GEOSMinimumClearance_r(
919 GEOSContextHandle_t handle,
920 const GEOSGeometry* g,
921 double* distance);
922
925 GEOSContextHandle_t handle,
926 const GEOSGeometry* g1,
927 const GEOSGeometry* g2);
928
931 GEOSContextHandle_t handle,
932 const GEOSGeometry* g1,
933 const GEOSGeometry* g2,
934 double gridSize);
935
938 GEOSContextHandle_t handle,
939 const GEOSGeometry* g1,
940 const GEOSGeometry* g2);
941
944 GEOSContextHandle_t handle,
945 const GEOSGeometry* g1,
946 const GEOSGeometry* g2,
947 double gridSize);
948
951 GEOSContextHandle_t handle,
952 const GEOSGeometry* g);
953
955extern GEOSGeometry GEOS_DLL *GEOSUnion_r(
956 GEOSContextHandle_t handle,
957 const GEOSGeometry* g1,
958 const GEOSGeometry* g2);
959
962 GEOSContextHandle_t handle,
963 const GEOSGeometry* g1,
964 const GEOSGeometry* g2,
965 double gridSize);
966
969 GEOSContextHandle_t handle,
970 const GEOSGeometry* g);
971
974 GEOSContextHandle_t handle,
975 const GEOSGeometry* g,
976 double gridSize);
977
980 GEOSContextHandle_t handle,
981 const GEOSGeometry* g);
982
985 GEOSContextHandle_t handle,
986 const GEOSGeometry* g);
987
990 GEOSContextHandle_t handle,
991 const GEOSGeometry* g);
992
995 GEOSContextHandle_t handle,
996 const GEOSGeometry* g,
997 double* radius,
998 GEOSGeometry** center);
999
1001extern GEOSGeometry GEOS_DLL *GEOSNode_r(
1002 GEOSContextHandle_t handle,
1003 const GEOSGeometry* g);
1004
1007 GEOSContextHandle_t handle,
1008 const GEOSGeometry* g,
1009 double xmin, double ymin,
1010 double xmax, double ymax);
1011
1014 GEOSContextHandle_t handle,
1015 const GEOSGeometry *const geoms[],
1016 unsigned int ngeoms);
1017
1020 GEOSContextHandle_t handle,
1021 const GEOSGeometry *const geoms[],
1022 unsigned int ngems);
1023
1026 GEOSContextHandle_t handle,
1027 const GEOSGeometry * const geoms[],
1028 unsigned int ngeoms);
1029
1032 GEOSContextHandle_t handle,
1033 const GEOSGeometry* input,
1034 GEOSGeometry** cuts,
1035 GEOSGeometry** dangles,
1036 GEOSGeometry** invalidRings);
1037
1040 GEOSContextHandle_t handle,
1041 const GEOSGeometry* g);
1042
1045 GEOSContextHandle_t handle,
1046 const GEOSGeometry* g);
1047
1050 GEOSContextHandle_t handle,
1051 const GEOSGeometry* g);
1052
1055 GEOSContextHandle_t handle,
1056 const GEOSGeometry* g,
1057 double start_fraction,
1058 double end_fdraction);
1059
1062 GEOSContextHandle_t handle,
1063 const GEOSGeometry* g);
1064
1067 GEOSContextHandle_t handle,
1068 const GEOSGeometry* g,
1069 double tolerance);
1070
1073 GEOSContextHandle_t handle,
1074 const GEOSGeometry* g, double tolerance);
1075
1078 GEOSContextHandle_t handle,
1079 const GEOSGeometry* g);
1080
1083 GEOSContextHandle_t handle,
1084 const GEOSGeometry* g1,
1085 const GEOSGeometry* g2);
1086
1088extern GEOSGeometry GEOS_DLL *GEOSSnap_r(
1089 GEOSContextHandle_t handle,
1090 const GEOSGeometry* g1,
1091 const GEOSGeometry* g2,
1092 double tolerance);
1093
1096 GEOSContextHandle_t handle,
1097 const GEOSGeometry *g,
1098 double tolerance,
1099 int onlyEdges);
1100
1103 GEOSContextHandle_t handle,
1104 const GEOSGeometry *g);
1105
1108 GEOSContextHandle_t extHandle,
1109 const GEOSGeometry *g,
1110 const GEOSGeometry *env,
1111 double tolerance,
1112 int flags);
1113
1115extern int GEOS_DLL GEOSSegmentIntersection_r(
1116 GEOSContextHandle_t extHandle,
1117 double ax0, double ay0,
1118 double ax1, double ay1,
1119 double bx0, double by0,
1120 double bx1, double by1,
1121 double* cx, double* cy);
1122
1123/* ========= Binary predicates ========= */
1124
1126extern char GEOS_DLL GEOSDisjoint_r(
1127 GEOSContextHandle_t handle,
1128 const GEOSGeometry* g1,
1129 const GEOSGeometry* g2);
1130
1132extern char GEOS_DLL GEOSTouches_r(
1133 GEOSContextHandle_t handle,
1134 const GEOSGeometry* g1,
1135 const GEOSGeometry* g2);
1136
1138extern char GEOS_DLL GEOSIntersects_r(
1139 GEOSContextHandle_t handle,
1140 const GEOSGeometry* g1,
1141 const GEOSGeometry* g2);
1142
1144extern char GEOS_DLL GEOSCrosses_r(
1145 GEOSContextHandle_t handle,
1146 const GEOSGeometry* g1,
1147 const GEOSGeometry* g2);
1148
1150extern char GEOS_DLL GEOSWithin_r(
1151 GEOSContextHandle_t handle,
1152 const GEOSGeometry* g1,
1153 const GEOSGeometry* g2);
1154
1156extern char GEOS_DLL GEOSContains_r(
1157 GEOSContextHandle_t handle,
1158 const GEOSGeometry* g1,
1159 const GEOSGeometry* g2);
1160
1162extern char GEOS_DLL GEOSOverlaps_r(
1163 GEOSContextHandle_t handle,
1164 const GEOSGeometry* g1,
1165 const GEOSGeometry* g2);
1166
1168extern char GEOS_DLL GEOSEquals_r(
1169 GEOSContextHandle_t handle,
1170 const GEOSGeometry* g1,
1171 const GEOSGeometry* g2);
1172
1174extern char GEOS_DLL GEOSEqualsExact_r(
1175 GEOSContextHandle_t handle,
1176 const GEOSGeometry* g1,
1177 const GEOSGeometry* g2,
1178 double tolerance);
1179
1181extern char GEOS_DLL GEOSEqualsIdentical_r(
1182 GEOSContextHandle_t handle,
1183 const GEOSGeometry* g1,
1184 const GEOSGeometry* g2);
1185
1187extern char GEOS_DLL GEOSCovers_r(
1188 GEOSContextHandle_t handle,
1189 const GEOSGeometry* g1,
1190 const GEOSGeometry* g2);
1191
1193extern char GEOS_DLL GEOSCoveredBy_r(
1194 GEOSContextHandle_t handle,
1195 const GEOSGeometry* g1,
1196 const GEOSGeometry* g2);
1197
1198/* ========= Prepared Geometry Binary Predicates ========== */
1199
1202 GEOSContextHandle_t handle,
1203 const GEOSGeometry* g);
1204
1206extern void GEOS_DLL GEOSPreparedGeom_destroy_r(
1207 GEOSContextHandle_t handle,
1208 const GEOSPreparedGeometry* g);
1209
1211extern char GEOS_DLL GEOSPreparedContains_r(
1212 GEOSContextHandle_t handle,
1213 const GEOSPreparedGeometry* pg1,
1214 const GEOSGeometry* g2);
1215
1217extern char GEOS_DLL GEOSPreparedContainsXY_r(
1218 GEOSContextHandle_t handle,
1219 const GEOSPreparedGeometry* pg1,
1220 double x,
1221 double y);
1222
1225 GEOSContextHandle_t handle,
1226 const GEOSPreparedGeometry* pg1,
1227 const GEOSGeometry* g2);
1228
1230extern char GEOS_DLL GEOSPreparedCoveredBy_r(
1231 GEOSContextHandle_t handle,
1232 const GEOSPreparedGeometry* pg1,
1233 const GEOSGeometry* g2);
1234
1236extern char GEOS_DLL GEOSPreparedCovers_r(
1237 GEOSContextHandle_t handle,
1238 const GEOSPreparedGeometry* pg1,
1239 const GEOSGeometry* g2);
1240
1242extern char GEOS_DLL GEOSPreparedCrosses_r(
1243 GEOSContextHandle_t handle,
1244 const GEOSPreparedGeometry* pg1,
1245 const GEOSGeometry* g2);
1246
1248extern char GEOS_DLL GEOSPreparedDisjoint_r(
1249 GEOSContextHandle_t handle,
1250 const GEOSPreparedGeometry* pg1,
1251 const GEOSGeometry* g2);
1252
1254extern char GEOS_DLL GEOSPreparedIntersects_r(
1255 GEOSContextHandle_t handle,
1256 const GEOSPreparedGeometry* pg1,
1257 const GEOSGeometry* g2);
1258
1260extern char GEOS_DLL GEOSPreparedIntersectsXY_r(
1261 GEOSContextHandle_t handle,
1262 const GEOSPreparedGeometry* pg1,
1263 double x,
1264 double y);
1265
1267extern char GEOS_DLL GEOSPreparedOverlaps_r(
1268 GEOSContextHandle_t handle,
1269 const GEOSPreparedGeometry* pg1,
1270 const GEOSGeometry* g2);
1271
1273extern char GEOS_DLL GEOSPreparedTouches_r(
1274 GEOSContextHandle_t handle,
1275 const GEOSPreparedGeometry* pg1,
1276 const GEOSGeometry* g2);
1277
1279extern char GEOS_DLL GEOSPreparedWithin_r(
1280 GEOSContextHandle_t handle,
1281 const GEOSPreparedGeometry* pg1,
1282 const GEOSGeometry* g2);
1283
1285extern char GEOS_DLL * GEOSPreparedRelate_r(
1286 GEOSContextHandle_t handle,
1287 const GEOSPreparedGeometry* pg1,
1288 const GEOSGeometry* g2);
1289
1291extern char GEOS_DLL GEOSPreparedRelatePattern_r(
1292 GEOSContextHandle_t handle,
1293 const GEOSPreparedGeometry* pg1,
1294 const GEOSGeometry* g2,
1295 const char* im);
1296
1299 GEOSContextHandle_t handle,
1300 const GEOSPreparedGeometry* pg1,
1301 const GEOSGeometry* g2);
1302
1304extern int GEOS_DLL GEOSPreparedDistance_r(
1305 GEOSContextHandle_t handle,
1306 const GEOSPreparedGeometry* pg1,
1307 const GEOSGeometry* g2, double *dist);
1308
1310extern char GEOS_DLL GEOSPreparedDistanceWithin_r(
1311 GEOSContextHandle_t handle,
1312 const GEOSPreparedGeometry* pg1,
1313 const GEOSGeometry* g2, double dist);
1314
1315/* ========== STRtree ========== */
1316
1319 GEOSContextHandle_t handle,
1320 size_t nodeCapacity);
1321
1323extern int GEOS_DLL GEOSSTRtree_build_r(
1324 GEOSContextHandle_t handle,
1325 GEOSSTRtree *tree);
1326
1328extern void GEOS_DLL GEOSSTRtree_insert_r(
1329 GEOSContextHandle_t handle,
1330 GEOSSTRtree *tree,
1331 const GEOSGeometry *g,
1332 void *item);
1333
1335extern void GEOS_DLL GEOSSTRtree_query_r(
1336 GEOSContextHandle_t handle,
1337 GEOSSTRtree *tree,
1338 const GEOSGeometry *g,
1339 GEOSQueryCallback callback,
1340 void *userdata);
1341
1344 GEOSContextHandle_t handle,
1345 GEOSSTRtree *tree,
1346 const GEOSGeometry* geom);
1347
1349extern const void GEOS_DLL *GEOSSTRtree_nearest_generic_r(
1350 GEOSContextHandle_t handle,
1351 GEOSSTRtree *tree,
1352 const void* item,
1353 const GEOSGeometry* itemEnvelope,
1354 GEOSDistanceCallback distancefn,
1355 void* userdata);
1356
1358extern void GEOS_DLL GEOSSTRtree_iterate_r(
1359 GEOSContextHandle_t handle,
1360 GEOSSTRtree *tree,
1361 GEOSQueryCallback callback,
1362 void *userdata);
1363
1365extern char GEOS_DLL GEOSSTRtree_remove_r(
1366 GEOSContextHandle_t handle,
1367 GEOSSTRtree *tree,
1368 const GEOSGeometry *g,
1369 void *item);
1370
1372extern void GEOS_DLL GEOSSTRtree_destroy_r(
1373 GEOSContextHandle_t handle,
1374 GEOSSTRtree *tree);
1375
1376
1377/* ========= Unary predicate ========= */
1378
1380extern char GEOS_DLL GEOSisEmpty_r(
1381 GEOSContextHandle_t handle,
1382 const GEOSGeometry* g);
1383
1385extern char GEOS_DLL GEOSisSimple_r(
1386 GEOSContextHandle_t handle,
1387 const GEOSGeometry* g);
1388
1390extern char GEOS_DLL GEOSisRing_r(
1391 GEOSContextHandle_t handle,
1392 const GEOSGeometry* g);
1393
1395extern char GEOS_DLL GEOSHasZ_r(
1396 GEOSContextHandle_t handle,
1397 const GEOSGeometry* g);
1398
1400extern char GEOS_DLL GEOSHasM_r(
1401 GEOSContextHandle_t handle,
1402 const GEOSGeometry* g);
1403
1405extern char GEOS_DLL GEOSisClosed_r(
1406 GEOSContextHandle_t handle,
1407 const GEOSGeometry *g);
1408
1409/* ========== Dimensionally Extended 9 Intersection Model ========== */
1410
1427
1429extern char GEOS_DLL GEOSRelatePattern_r(
1430 GEOSContextHandle_t handle,
1431 const GEOSGeometry* g1,
1432 const GEOSGeometry* g2,
1433 const char *imPattern);
1434
1436extern char GEOS_DLL *GEOSRelate_r(
1437 GEOSContextHandle_t handle,
1438 const GEOSGeometry* g1,
1439 const GEOSGeometry* g2);
1440
1442extern char GEOS_DLL GEOSRelatePatternMatch_r(
1443 GEOSContextHandle_t handle,
1444 const char *intMatrix,
1445 const char *imPattern);
1446
1448extern char GEOS_DLL *GEOSRelateBoundaryNodeRule_r(
1449 GEOSContextHandle_t handle,
1450 const GEOSGeometry* g1,
1451 const GEOSGeometry* g2,
1452 int bnr);
1453
1454/* ========= Validity checking ========= */
1455
1462
1464extern char GEOS_DLL GEOSisValid_r(
1465 GEOSContextHandle_t handle,
1466 const GEOSGeometry* g);
1467
1469extern char GEOS_DLL *GEOSisValidReason_r(
1470 GEOSContextHandle_t handle,
1471 const GEOSGeometry* g);
1472
1474extern char GEOS_DLL GEOSisValidDetail_r(
1475 GEOSContextHandle_t handle,
1476 const GEOSGeometry* g,
1477 int flags,
1478 char** reason,
1479 GEOSGeometry** location);
1480
1481/* ========== Make Valid ========== */
1482
1499
1502 GEOSContextHandle_t extHandle);
1503
1506 GEOSContextHandle_t handle,
1507 GEOSMakeValidParams* parms);
1508
1511 GEOSContextHandle_t handle,
1513 int style);
1514
1517 GEOSContextHandle_t handle,
1519 enum GEOSMakeValidMethods method);
1520
1523 GEOSContextHandle_t handle,
1524 const GEOSGeometry* g);
1525
1528 GEOSContextHandle_t handle,
1529 const GEOSGeometry* g,
1530 const GEOSMakeValidParams* makeValidParams);
1531
1534 GEOSContextHandle_t handle,
1535 const GEOSGeometry* g,
1536 double tolerance);
1537
1538/* ========== Geometry info ========== */
1539
1541/* Return NULL on exception, result must be freed by caller. */
1542extern char GEOS_DLL *GEOSGeomType_r(
1543 GEOSContextHandle_t handle,
1544 const GEOSGeometry* g);
1545
1547extern int GEOS_DLL GEOSGeomTypeId_r(
1548 GEOSContextHandle_t handle,
1549 const GEOSGeometry* g);
1550
1552extern int GEOS_DLL GEOSGetSRID_r(
1553 GEOSContextHandle_t handle,
1554 const GEOSGeometry* g);
1555
1557extern void GEOS_DLL GEOSSetSRID_r(
1558 GEOSContextHandle_t handle,
1559 GEOSGeometry* g, int SRID);
1560
1562extern void GEOS_DLL *GEOSGeom_getUserData_r(
1563 GEOSContextHandle_t handle,
1564 const GEOSGeometry* g);
1565
1567extern void GEOS_DLL GEOSGeom_setUserData_r(
1568 GEOSContextHandle_t handle,
1569 GEOSGeometry* g,
1570 void* userData);
1571
1573extern int GEOS_DLL GEOSGetNumGeometries_r(
1574 GEOSContextHandle_t handle,
1575 const GEOSGeometry* g);
1576
1578extern const GEOSGeometry GEOS_DLL *GEOSGetGeometryN_r(
1579 GEOSContextHandle_t handle,
1580 const GEOSGeometry* g, int n);
1581
1583extern int GEOS_DLL GEOSNormalize_r(
1584 GEOSContextHandle_t handle,
1585 GEOSGeometry* g);
1586
1588extern int GEOS_DLL GEOSOrientPolygons_r(
1589 GEOSContextHandle_t handle,
1590 GEOSGeometry* g,
1591 int exteriorCW);
1592
1605
1608 GEOSContextHandle_t handle,
1609 const GEOSGeometry *g,
1610 double gridSize,
1611 int flags);
1612
1614extern double GEOS_DLL GEOSGeom_getPrecision_r(
1615 GEOSContextHandle_t handle,
1616 const GEOSGeometry *g);
1617
1619extern int GEOS_DLL GEOSGetNumInteriorRings_r(
1620 GEOSContextHandle_t handle,
1621 const GEOSGeometry* g);
1622
1624extern int GEOS_DLL GEOSGeomGetNumPoints_r(
1625 GEOSContextHandle_t handle,
1626 const GEOSGeometry* g);
1627
1629extern int GEOS_DLL GEOSGeomGetX_r(
1630 GEOSContextHandle_t handle,
1631 const GEOSGeometry *g,
1632 double *x);
1633
1635extern int GEOS_DLL GEOSGeomGetY_r(
1636 GEOSContextHandle_t handle,
1637 const GEOSGeometry *g,
1638 double *y);
1639
1641extern int GEOS_DLL GEOSGeomGetZ_r(
1642 GEOSContextHandle_t handle,
1643 const GEOSGeometry *g,
1644 double *z);
1645
1647extern int GEOS_DLL GEOSGeomGetM_r(
1648 GEOSContextHandle_t handle,
1649 const GEOSGeometry *g,
1650 double *m);
1651
1654 GEOSContextHandle_t handle,
1655 const GEOSGeometry* g, int n);
1656
1659 GEOSContextHandle_t handle,
1660 const GEOSGeometry* g);
1661
1663extern int GEOS_DLL GEOSGetNumCoordinates_r(
1664 GEOSContextHandle_t handle,
1665 const GEOSGeometry* g);
1666
1669 GEOSContextHandle_t handle,
1670 const GEOSGeometry* g);
1671
1673extern int GEOS_DLL GEOSGeom_getDimensions_r(
1674 GEOSContextHandle_t handle,
1675 const GEOSGeometry* g);
1676
1679 GEOSContextHandle_t handle,
1680 const GEOSGeometry* g);
1681
1683extern int GEOS_DLL GEOSGeom_getXMin_r(
1684 GEOSContextHandle_t handle,
1685 const GEOSGeometry* g,
1686 double* value);
1687
1689extern int GEOS_DLL GEOSGeom_getYMin_r(
1690 GEOSContextHandle_t handle,
1691 const GEOSGeometry* g,
1692 double* value);
1693
1695extern int GEOS_DLL GEOSGeom_getXMax_r(
1696 GEOSContextHandle_t handle,
1697 const GEOSGeometry* g,
1698 double* value);
1699
1701extern int GEOS_DLL GEOSGeom_getYMax_r(
1702 GEOSContextHandle_t handle,
1703 const GEOSGeometry* g,
1704 double* value);
1705
1707extern int GEOS_DLL GEOSGeom_getExtent_r(
1708 GEOSContextHandle_t handle,
1709 const GEOSGeometry* g,
1710 double* xmin,
1711 double* ymin,
1712 double* xmax,
1713 double* ymax);
1714
1717 GEOSContextHandle_t handle,
1718 const GEOSGeometry *g,
1719 int n);
1720
1723 GEOSContextHandle_t handle,
1724 const GEOSGeometry *g);
1725
1728 GEOSContextHandle_t handle,
1729 const GEOSGeometry *g);
1730
1731/* ========= Misc functions ========= */
1732
1734extern int GEOS_DLL GEOSArea_r(
1735 GEOSContextHandle_t handle,
1736 const GEOSGeometry* g,
1737 double *area);
1738
1740extern int GEOS_DLL GEOSLength_r(
1741 GEOSContextHandle_t handle,
1742 const GEOSGeometry* g,
1743 double *length);
1744
1746extern int GEOS_DLL GEOSDistance_r(
1747 GEOSContextHandle_t handle,
1748 const GEOSGeometry* g1,
1749 const GEOSGeometry* g2,
1750 double *dist);
1751
1753extern char GEOS_DLL GEOSDistanceWithin_r(
1754 GEOSContextHandle_t handle,
1755 const GEOSGeometry* g1,
1756 const GEOSGeometry* g2,
1757 double dist);
1758
1760extern int GEOS_DLL GEOSDistanceIndexed_r(
1761 GEOSContextHandle_t handle,
1762 const GEOSGeometry* g1,
1763 const GEOSGeometry* g2,
1764 double *dist);
1765
1767extern int GEOS_DLL GEOSHausdorffDistance_r(
1768 GEOSContextHandle_t handle,
1769 const GEOSGeometry *g1,
1770 const GEOSGeometry *g2,
1771 double *dist);
1772
1775 GEOSContextHandle_t handle,
1776 const GEOSGeometry *g1,
1777 const GEOSGeometry *g2,
1778 double densifyFrac, double *dist);
1779
1781extern int GEOS_DLL GEOSFrechetDistance_r(
1782 GEOSContextHandle_t handle,
1783 const GEOSGeometry *g1,
1784 const GEOSGeometry *g2,
1785 double *dist);
1786
1789 GEOSContextHandle_t handle,
1790 const GEOSGeometry *g1,
1791 const GEOSGeometry *g2,
1792 double densifyFrac,
1793 double *dist);
1794
1795
1797extern int GEOS_DLL GEOSHilbertCode_r(
1798 GEOSContextHandle_t handle,
1799 const GEOSGeometry *geom,
1800 const GEOSGeometry* extent,
1801 unsigned int level,
1802 unsigned int *code
1803);
1804
1806extern int GEOS_DLL GEOSGeomGetLength_r(
1807 GEOSContextHandle_t handle,
1808 const GEOSGeometry *g,
1809 double *length);
1810
1813 GEOSContextHandle_t handle,
1814 const GEOSGeometry* g1,
1815 const GEOSGeometry* g2);
1816
1819 GEOSContextHandle_t handle,
1820 const GEOSGeometry* g,
1821 GEOSTransformXYCallback callback,
1822 void* userdata);
1823
1824/* ========= Algorithms ========= */
1825
1827extern int GEOS_DLL GEOSOrientationIndex_r(
1828 GEOSContextHandle_t handle,
1829 double Ax, double Ay,
1830 double Bx, double By,
1831 double Px, double Py);
1832
1833
1834/* ========== Reader and Writer APIs ========== */
1835
1836#ifndef GEOSWKTReader
1837
1843typedef struct GEOSWKTReader_t GEOSWKTReader;
1844
1850typedef struct GEOSWKTWriter_t GEOSWKTWriter;
1851
1857typedef struct GEOSWKBReader_t GEOSWKBReader;
1858
1864typedef struct GEOSWKBWriter_t GEOSWKBWriter;
1865
1871typedef struct GEOSGeoJSONReader_t GEOSGeoJSONReader;
1872
1878typedef struct GEOSGeoJSONWriter_t GEOSGeoJSONWriter;
1879
1880#endif
1881
1882/* ========== WKT Reader ========== */
1883
1886 GEOSContextHandle_t handle);
1887
1890 GEOSWKTReader* reader);
1891
1894 GEOSContextHandle_t handle,
1895 GEOSWKTReader* reader,
1896 const char *wkt);
1897
1900 GEOSContextHandle_t handle,
1901 GEOSWKTReader *reader,
1902 char doFix);
1903
1904/* ========== WKT Writer ========== */
1905
1908 GEOSContextHandle_t handle);
1909
1911extern void GEOS_DLL GEOSWKTWriter_destroy_r(
1912 GEOSContextHandle_t handle,
1913 GEOSWKTWriter* writer);
1914
1916extern char GEOS_DLL *GEOSWKTWriter_write_r(
1917 GEOSContextHandle_t handle,
1918 GEOSWKTWriter* writer,
1919 const GEOSGeometry* g);
1920
1922extern void GEOS_DLL GEOSWKTWriter_setTrim_r(
1923 GEOSContextHandle_t handle,
1924 GEOSWKTWriter *writer,
1925 char trim);
1926
1929 GEOSContextHandle_t handle,
1930 GEOSWKTWriter *writer,
1931 int precision);
1932
1935 GEOSContextHandle_t handle,
1936 GEOSWKTWriter *writer,
1937 int dim);
1938
1941 GEOSContextHandle_t handle,
1942 GEOSWKTWriter *writer);
1943
1945extern void GEOS_DLL GEOSWKTWriter_setOld3D_r(
1946 GEOSContextHandle_t handle,
1947 GEOSWKTWriter *writer,
1948 int useOld3D);
1949
1959extern int GEOS_DLL GEOS_printDouble(
1960 double d,
1961 unsigned int precision,
1962 char *result
1963);
1964
1965/* ========== WKB Reader ========== */
1966
1969 GEOSContextHandle_t handle);
1970
1972extern void GEOS_DLL GEOSWKBReader_destroy_r(
1973 GEOSContextHandle_t handle,
1974 GEOSWKBReader* reader);
1975
1978 GEOSContextHandle_t handle,
1979 GEOSWKBReader *reader,
1980 char doFix);
1981
1984 GEOSContextHandle_t handle,
1985 GEOSWKBReader* reader,
1986 const unsigned char *wkb,
1987 size_t size);
1988
1991 GEOSContextHandle_t handle,
1992 GEOSWKBReader* reader,
1993 const unsigned char *hex,
1994 size_t size);
1995
1996
1997/* ========== WKB Writer ========== */
1998
2001 GEOSContextHandle_t handle);
2002
2004extern void GEOS_DLL GEOSWKBWriter_destroy_r(
2005 GEOSContextHandle_t handle,
2006 GEOSWKBWriter* writer);
2007
2009extern unsigned char GEOS_DLL *GEOSWKBWriter_write_r(
2010 GEOSContextHandle_t handle,
2011 GEOSWKBWriter* writer,
2012 const GEOSGeometry* g,
2013 size_t *size);
2014
2016extern unsigned char GEOS_DLL *GEOSWKBWriter_writeHEX_r(
2017 GEOSContextHandle_t handle,
2018 GEOSWKBWriter* writer,
2019 const GEOSGeometry* g,
2020 size_t *size);
2021
2024 GEOSContextHandle_t handle,
2025 const GEOSWKBWriter* writer);
2026
2029 GEOSContextHandle_t handle,
2030 GEOSWKBWriter* writer, int newDimension);
2031
2034 GEOSContextHandle_t handle,
2035 const GEOSWKBWriter* writer);
2036
2038extern void GEOS_DLL GEOSWKBWriter_setByteOrder_r(
2039 GEOSContextHandle_t handle,
2040 GEOSWKBWriter* writer,
2041 int byteOrder);
2042
2044extern int GEOS_DLL GEOSWKBWriter_getFlavor_r(
2045 GEOSContextHandle_t handle,
2046 const GEOSWKBWriter* writer);
2047
2049extern void GEOS_DLL GEOSWKBWriter_setFlavor_r(
2050 GEOSContextHandle_t handle,
2051 GEOSWKBWriter* writer,
2052 int flavor);
2053
2056 GEOSContextHandle_t handle,
2057 const GEOSWKBWriter* writer);
2058
2061 GEOSContextHandle_t handle,
2062 GEOSWKBWriter* writer, const char writeSRID);
2063
2064/* ========== GeoJSON Reader ========== */
2065
2068 GEOSContextHandle_t handle);
2069
2072 GEOSGeoJSONReader* reader);
2073
2076 GEOSContextHandle_t handle,
2077 GEOSGeoJSONReader* reader,
2078 const char *geojson);
2079
2080/* ========== GeoJSON Writer ========== */
2081
2084 GEOSContextHandle_t handle);
2085
2088 GEOSGeoJSONWriter* writer);
2089
2092 GEOSContextHandle_t handle,
2093 GEOSGeoJSONWriter* writer,
2094 const GEOSGeometry* g,
2095 int indent);
2096
2098extern void GEOS_DLL GEOSFree_r(
2099 GEOSContextHandle_t handle,
2100 void *buffer);
2101
2109extern const char GEOS_DLL *GEOSversion(void);
2110
2111/*
2112* External code to GEOS can define GEOS_USE_ONLY_R_API
2113* to strip the non-reentrant API functions from this header,
2114* leaving only the "_r" compatible variants.
2115*/
2116#ifndef GEOS_USE_ONLY_R_API
2117
2118/* ========== Initialization, cleanup ================================= */
2124
2137extern void GEOS_DLL initGEOS(
2138 GEOSMessageHandler notice_function,
2139 GEOSMessageHandler error_function);
2140
2146extern void GEOS_DLL finishGEOS(void);
2147
2157extern void GEOS_DLL GEOSFree(void *buffer);
2158
2160
2161/* ========= Coordinate Sequence functions ========= */
2167
2175extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_create(unsigned int size, unsigned int dims);
2176
2187extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_copyFromBuffer(const double* buf, unsigned int size, int hasZ, int hasM);
2188
2200extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_copyFromArrays(const double* x, const double* y, const double* z, const double* m, unsigned int size);
2201
2212extern int GEOS_DLL GEOSCoordSeq_copyToBuffer(const GEOSCoordSequence* s, double* buf, int hasZ, int hasM);
2213
2225extern int GEOS_DLL GEOSCoordSeq_copyToArrays(const GEOSCoordSequence* s, double* x, double* y, double* z, double* m);
2226
2234
2241
2251 unsigned int idx, double val);
2261 unsigned int idx, double val);
2271 unsigned int idx, double val);
2283 unsigned int idx, double x, double y);
2296 unsigned int idx, double x, double y, double z);
2307 unsigned int idx, unsigned int dim, double val);
2308
2317extern int GEOS_DLL GEOSCoordSeq_getX(const GEOSCoordSequence* s,
2318 unsigned int idx, double *val);
2319
2328extern int GEOS_DLL GEOSCoordSeq_getY(const GEOSCoordSequence* s,
2329 unsigned int idx, double *val);
2338extern int GEOS_DLL GEOSCoordSeq_getZ(const GEOSCoordSequence* s,
2339 unsigned int idx, double *val);
2350extern int GEOS_DLL GEOSCoordSeq_getXY(const GEOSCoordSequence* s,
2351 unsigned int idx, double *x, double *y);
2363extern int GEOS_DLL GEOSCoordSeq_getXYZ(const GEOSCoordSequence* s,
2364 unsigned int idx, double *x, double *y, double *z);
2374extern int GEOS_DLL GEOSCoordSeq_getOrdinate(const GEOSCoordSequence* s,
2375 unsigned int idx, unsigned int dim, double *val);
2376
2384extern int GEOS_DLL GEOSCoordSeq_getSize(
2385 const GEOSCoordSequence* s,
2386 unsigned int *size);
2387
2395extern int GEOS_DLL GEOSCoordSeq_getDimensions(
2396 const GEOSCoordSequence* s,
2397 unsigned int *dims);
2398
2408extern int GEOS_DLL GEOSCoordSeq_isCCW(
2409 const GEOSCoordSequence* s,
2410 char* is_ccw);
2411
2413
2414/* ========= Geometry Constructors ========= */
2420
2429
2439extern GEOSGeometry GEOS_DLL *GEOSGeom_createPointFromXY(double x, double y);
2440
2449
2458
2467
2476
2485
2500 GEOSGeometry* shell,
2501 GEOSGeometry** holes,
2502 unsigned int nholes);
2503
2512
2520
2530 unsigned int ncurves);
2531
2539
2554 GEOSGeometry* shell,
2555 GEOSGeometry** holes,
2556 unsigned int nholes);
2557
2565
2580 int type,
2581 GEOSGeometry** geoms,
2582 unsigned int ngeoms);
2583
2601 GEOSGeometry * collection,
2602 unsigned int * ngeoms);
2603
2613
2625 double xmin, double ymin,
2626 double xmax, double ymax);
2627
2635extern GEOSGeometry GEOS_DLL *GEOSGeom_clone(const GEOSGeometry* g);
2636
2642extern void GEOS_DLL GEOSGeom_destroy(GEOSGeometry* g);
2643
2645
2646/* ========== Geometry info ========== */
2651
2661extern char GEOS_DLL *GEOSGeomType(const GEOSGeometry* g);
2662
2669extern int GEOS_DLL GEOSGeomTypeId(const GEOSGeometry* g);
2670
2677extern int GEOS_DLL GEOSGetSRID(const GEOSGeometry* g);
2678
2689extern void GEOS_DLL *GEOSGeom_getUserData(const GEOSGeometry* g);
2690
2703extern int GEOS_DLL GEOSGetNumGeometries(const GEOSGeometry* g);
2704
2720extern const GEOSGeometry GEOS_DLL *GEOSGetGeometryN(
2721 const GEOSGeometry* g,
2722 int n);
2723
2733extern double GEOS_DLL GEOSGeom_getPrecision(const GEOSGeometry *g);
2734
2742extern int GEOS_DLL GEOSGetNumInteriorRings(const GEOSGeometry* g);
2743
2751extern int GEOS_DLL GEOSGeomGetNumPoints(const GEOSGeometry* g);
2752
2761extern int GEOS_DLL GEOSGeomGetX(const GEOSGeometry *g, double *x);
2762
2771extern int GEOS_DLL GEOSGeomGetY(const GEOSGeometry *g, double *y);
2772
2782extern int GEOS_DLL GEOSGeomGetZ(const GEOSGeometry *g, double *z);
2783
2793extern int GEOS_DLL GEOSGeomGetM(const GEOSGeometry *g, double *m);
2794
2804extern const GEOSGeometry GEOS_DLL *GEOSGetInteriorRingN(
2805 const GEOSGeometry* g,
2806 int n);
2807
2816extern const GEOSGeometry GEOS_DLL *GEOSGetExteriorRing(
2817 const GEOSGeometry* g);
2818
2826extern int GEOS_DLL GEOSGetNumCoordinates(
2827 const GEOSGeometry* g);
2828
2839 const GEOSGeometry* g);
2840
2853extern int GEOS_DLL GEOSGeom_getDimensions(
2854 const GEOSGeometry* g);
2855
2868 const GEOSGeometry* g);
2869
2878extern int GEOS_DLL GEOSGeom_getXMin(const GEOSGeometry* g, double* value);
2879
2888extern int GEOS_DLL GEOSGeom_getYMin(const GEOSGeometry* g, double* value);
2889
2898extern int GEOS_DLL GEOSGeom_getXMax(const GEOSGeometry* g, double* value);
2899
2908extern int GEOS_DLL GEOSGeom_getYMax(const GEOSGeometry* g, double* value);
2909
2923extern int GEOS_DLL GEOSGeom_getExtent(
2924 const GEOSGeometry* g,
2925 double* xmin,
2926 double* ymin,
2927 double* xmax,
2928 double* ymax);
2929
2939extern GEOSGeometry GEOS_DLL *GEOSGeomGetPointN(const GEOSGeometry *g, int n);
2940
2950
2960
2961
2970extern char GEOS_DLL GEOSisEmpty(const GEOSGeometry* g);
2971
2980extern char GEOS_DLL GEOSisRing(const GEOSGeometry* g);
2981
2988extern char GEOS_DLL GEOSHasZ(const GEOSGeometry* g);
2989
2997extern char GEOS_DLL GEOSHasM(const GEOSGeometry* g);
2998
3007extern char GEOS_DLL GEOSisClosed(const GEOSGeometry *g);
3008
3010
3011/* ==================================================================================== */
3016
3023extern void GEOS_DLL GEOSSetSRID(GEOSGeometry* g, int SRID);
3024
3032extern void GEOS_DLL GEOSGeom_setUserData(GEOSGeometry* g, void* userData);
3033
3053extern int GEOS_DLL GEOSNormalize(GEOSGeometry* g);
3054
3065extern int GEOS_DLL GEOSOrientPolygons(GEOSGeometry* g,
3066 int exteriorCW);
3067
3069
3070/* ========== Validity checking ============================================================ */
3076
3084extern char GEOS_DLL GEOSisSimple(const GEOSGeometry* g);
3085
3099extern char GEOS_DLL GEOSisValid(const GEOSGeometry* g);
3100
3110extern char GEOS_DLL *GEOSisValidReason(const GEOSGeometry *g);
3111
3126extern char GEOS_DLL GEOSisValidDetail(
3127 const GEOSGeometry* g,
3128 int flags,
3129 char** reason,
3130 GEOSGeometry** location);
3131
3140 const GEOSGeometry* g);
3141
3156 const GEOSGeometry* g,
3157 const GEOSMakeValidParams *makeValidParams);
3158
3168
3177
3188 enum GEOSMakeValidMethods method);
3189
3202 int keepCollapsed);
3203
3223extern int GEOS_DLL GEOSMinimumClearance(const GEOSGeometry* g, double* d);
3224
3237
3256 const GEOSGeometry* g,
3257 double tolerance);
3258
3260
3261/* ========= Metric functions ================================================== */
3266
3274extern int GEOS_DLL GEOSArea(
3275 const GEOSGeometry* g,
3276 double *area);
3277
3285extern int GEOS_DLL GEOSLength(
3286 const GEOSGeometry* g,
3287 double *length);
3288
3298extern int GEOS_DLL GEOSGeomGetLength(
3299 const GEOSGeometry *g,
3300 double *length);
3301
3303
3304/* ========== Distance functions ================================================ */
3310
3319extern int GEOS_DLL GEOSDistance(
3320 const GEOSGeometry* g1,
3321 const GEOSGeometry* g2,
3322 double *dist);
3323
3334extern char GEOS_DLL GEOSDistanceWithin(
3335 const GEOSGeometry* g1,
3336 const GEOSGeometry* g2,
3337 double dist);
3338
3352extern int GEOS_DLL GEOSDistanceIndexed(
3353 const GEOSGeometry* g1,
3354 const GEOSGeometry* g2,
3355 double *dist);
3356
3369 const GEOSGeometry* g1,
3370 const GEOSGeometry* g2);
3371
3383extern int GEOS_DLL GEOSHausdorffDistance(
3384 const GEOSGeometry *g1,
3385 const GEOSGeometry *g2,
3386 double *dist);
3387
3403 const GEOSGeometry *g1,
3404 const GEOSGeometry *g2,
3405 double densifyFrac,
3406 double *dist);
3407
3421extern int GEOS_DLL GEOSFrechetDistance(
3422 const GEOSGeometry *g1,
3423 const GEOSGeometry *g2,
3424 double *dist);
3425
3442extern int GEOS_DLL GEOSFrechetDistanceDensify(
3443 const GEOSGeometry *g1,
3444 const GEOSGeometry *g2,
3445 double densifyFrac,
3446 double *dist);
3447
3449
3450/* ========== Linear referencing functions */
3456
3466extern double GEOS_DLL GEOSProject(const GEOSGeometry* line,
3467 const GEOSGeometry* point);
3468
3480extern GEOSGeometry GEOS_DLL *GEOSInterpolate(const GEOSGeometry* line,
3481 double d);
3482
3493extern double GEOS_DLL GEOSProjectNormalized(const GEOSGeometry* line,
3494 const GEOSGeometry* point);
3495
3506 const GEOSGeometry *line,
3507 double proportion);
3508
3510
3511/* ========== Overlay functions ========== */
3517
3528extern GEOSGeometry GEOS_DLL *GEOSIntersection(const GEOSGeometry* g1, const GEOSGeometry* g2);
3529
3544extern GEOSGeometry GEOS_DLL *GEOSIntersectionPrec(const GEOSGeometry* g1, const GEOSGeometry* g2, double gridSize);
3545
3557 const GEOSGeometry* ga,
3558 const GEOSGeometry* gb);
3559
3576 const GEOSGeometry* ga,
3577 const GEOSGeometry* gb,
3578 double gridSize);
3579
3592 const GEOSGeometry* ga,
3593 const GEOSGeometry* gb);
3594
3612 const GEOSGeometry* ga,
3613 const GEOSGeometry* gb,
3614 double gridSize);
3615
3626extern GEOSGeometry GEOS_DLL *GEOSUnion(
3627 const GEOSGeometry* ga,
3628 const GEOSGeometry* gb);
3629
3646 const GEOSGeometry* ga,
3647 const GEOSGeometry* gb,
3648 double gridSize);
3649
3661extern GEOSGeometry GEOS_DLL *GEOSUnaryUnion(const GEOSGeometry* g);
3662
3679 const GEOSGeometry* g,
3680 double gridSize);
3681
3693
3710 const GEOSGeometry* g,
3711 double xmin, double ymin,
3712 double xmax, double ymax);
3713
3733 const GEOSGeometry* g1,
3734 const GEOSGeometry* g2);
3735
3737
3738/* ========== Buffer related functions ========== */
3743
3755extern GEOSGeometry GEOS_DLL *GEOSBuffer(const GEOSGeometry* g,
3756 double width, int quadsegs);
3757
3767
3774extern void GEOS_DLL GEOSBufferParams_destroy(GEOSBufferParams* parms);
3775
3785 int style);
3786
3796 int joinStyle);
3797
3811 double mitreLimit);
3812
3825 int quadSegs);
3826
3839 int singleSided);
3840
3852 const GEOSGeometry* g,
3853 const GEOSBufferParams* p,
3854 double width);
3855
3870 const GEOSGeometry* g,
3871 double width,
3872 int quadsegs,
3873 int endCapStyle,
3874 int joinStyle,
3875 double mitreLimit);
3876
3900 double width, int quadsegs, int joinStyle, double mitreLimit);
3901
3903
3904
3905/* ====================================================================== */
3911
3924
3925
3949extern int GEOS_DLL GEOSCoverageIsValid(
3950 const GEOSGeometry* input,
3951 double gapWidth,
3952 GEOSGeometry** invalidEdges);
3953
3980 const GEOSGeometry* input,
3981 double tolerance,
3982 int preserveBoundary);
3983
3985
3986/* ========== Construction Operations ========== */
3991
4000extern GEOSGeometry GEOS_DLL *GEOSEnvelope(const GEOSGeometry* g);
4001
4015extern GEOSGeometry GEOS_DLL *GEOSBoundary(const GEOSGeometry* g);
4016
4026extern GEOSGeometry GEOS_DLL *GEOSConvexHull(const GEOSGeometry* g);
4027
4059 const GEOSGeometry* g,
4060 double ratio,
4061 unsigned int allowHoles);
4062
4093 const GEOSGeometry* g,
4094 double length,
4095 unsigned int allowHoles);
4096
4136 const GEOSGeometry* g,
4137 double lengthRatio,
4138 unsigned int isTight,
4139 unsigned int isHolesAllowed);
4140
4161 const GEOSGeometry* g,
4162 unsigned int isOuter,
4163 double vertexNumFraction);
4164
4165
4175
4198 const GEOSGeometry* g,
4199 unsigned int isOuter,
4200 unsigned int parameterMode,
4201 double parameter);
4202
4217
4243 const GEOSGeometry* g,
4244 double tolerance);
4245
4280 const GEOSGeometry* obstacles,
4281 const GEOSGeometry* boundary,
4282 double tolerance);
4283
4297extern GEOSGeometry GEOS_DLL *GEOSMinimumWidth(const GEOSGeometry* g);
4298
4299
4310
4320extern GEOSGeometry GEOS_DLL *GEOSGetCentroid(const GEOSGeometry* g);
4321
4335 const GEOSGeometry* g,
4336 double* radius,
4337 GEOSGeometry** center);
4338
4353 const GEOSGeometry *g,
4354 double tolerance,
4355 int onlyEdges);
4356
4369 const GEOSGeometry *g);
4370
4381
4403 const GEOSGeometry *g,
4404 const GEOSGeometry *env,
4405 double tolerance,
4406 int flags);
4407
4409
4410/* ============================================================== */
4415
4426extern GEOSGeometry GEOS_DLL *GEOSNode(const GEOSGeometry* g);
4427
4471 const GEOSGeometry * const geoms[],
4472 unsigned int ngeoms);
4473
4489 const GEOSGeometry * const geoms[],
4490 unsigned int ngeoms);
4491
4506 const GEOSGeometry * const geoms[],
4507 unsigned int ngeoms);
4508
4524 const GEOSGeometry* input,
4525 GEOSGeometry** cuts,
4526 GEOSGeometry** dangles,
4527 GEOSGeometry** invalid);
4528
4540extern GEOSGeometry GEOS_DLL *GEOSBuildArea(const GEOSGeometry* g);
4541
4543
4544/* ============================================================== */
4549
4563extern GEOSGeometry GEOS_DLL *GEOSDensify(
4564 const GEOSGeometry* g,
4565 double tolerance);
4566
4578extern GEOSGeometry GEOS_DLL *GEOSLineMerge(const GEOSGeometry* g);
4579
4594
4607 const GEOSGeometry* g,
4608 double start_fraction,
4609 double end_fraction);
4610
4621extern GEOSGeometry GEOS_DLL *GEOSReverse(const GEOSGeometry* g);
4622
4638 const GEOSGeometry* g,
4639 double tolerance);
4640
4658 const GEOSGeometry* g,
4659 double tolerance);
4660
4672 const GEOSGeometry* g);
4673
4689extern int GEOS_DLL GEOSHilbertCode(
4690 const GEOSGeometry *geom,
4691 const GEOSGeometry* extent,
4692 unsigned int level,
4693 unsigned int *code
4694);
4695
4711 const GEOSGeometry* g,
4712 GEOSTransformXYCallback callback,
4713 void* userdata);
4714
4736extern GEOSGeometry GEOS_DLL *GEOSSnap(
4737 const GEOSGeometry* input,
4738 const GEOSGeometry* snap_target,
4739 double tolerance);
4740
4771 const GEOSGeometry *g,
4772 double gridSize,
4773 int flags);
4774
4776
4777/* ============================================================== */
4782
4791extern char GEOS_DLL GEOSDisjoint(const GEOSGeometry* g1, const GEOSGeometry* g2);
4792
4802extern char GEOS_DLL GEOSTouches(const GEOSGeometry* g1, const GEOSGeometry* g2);
4803
4812extern char GEOS_DLL GEOSIntersects(const GEOSGeometry* g1, const GEOSGeometry* g2);
4813
4823extern char GEOS_DLL GEOSCrosses(const GEOSGeometry* g1, const GEOSGeometry* g2);
4824
4834extern char GEOS_DLL GEOSWithin(const GEOSGeometry* g1, const GEOSGeometry* g2);
4835
4844extern char GEOS_DLL GEOSContains(const GEOSGeometry* g1, const GEOSGeometry* g2);
4845
4855extern char GEOS_DLL GEOSOverlaps(const GEOSGeometry* g1, const GEOSGeometry* g2);
4856
4865extern char GEOS_DLL GEOSEquals(const GEOSGeometry* g1, const GEOSGeometry* g2);
4866
4877extern char GEOS_DLL GEOSCovers(const GEOSGeometry* g1, const GEOSGeometry* g2);
4878
4889extern char GEOS_DLL GEOSCoveredBy(const GEOSGeometry* g1, const GEOSGeometry* g2);
4890
4908extern char GEOS_DLL GEOSEqualsExact(
4909 const GEOSGeometry* g1,
4910 const GEOSGeometry* g2,
4911 double tolerance);
4912
4925extern char GEOS_DLL GEOSEqualsIdentical(
4926 const GEOSGeometry* g1,
4927 const GEOSGeometry* g2);
4928
4945extern char GEOS_DLL GEOSRelatePattern(
4946 const GEOSGeometry* g1,
4947 const GEOSGeometry* g2,
4948 const char *imPattern);
4949
4960extern char GEOS_DLL *GEOSRelate(
4961 const GEOSGeometry* g1,
4962 const GEOSGeometry* g2);
4963
4973extern char GEOS_DLL GEOSRelatePatternMatch(
4974 const char *intMatrix,
4975 const char *imPattern);
4976
4990extern char GEOS_DLL *GEOSRelateBoundaryNodeRule(
4991 const GEOSGeometry* g1,
4992 const GEOSGeometry* g2,
4993 int bnr);
4994
4996
4997/* ========== Prepared Geometry Binary predicates ========== */
4998
5010
5024extern const GEOSPreparedGeometry GEOS_DLL *GEOSPrepare(const GEOSGeometry* g);
5025
5034extern void GEOS_DLL GEOSPreparedGeom_destroy(const GEOSPreparedGeometry* g);
5035
5046extern char GEOS_DLL GEOSPreparedContains(
5047 const GEOSPreparedGeometry* pg1,
5048 const GEOSGeometry* g2);
5049
5061extern char GEOS_DLL GEOSPreparedContainsXY(
5062 const GEOSPreparedGeometry* pg1,
5063 double x,
5064 double y);
5065
5076extern char GEOS_DLL GEOSPreparedContainsProperly(
5077 const GEOSPreparedGeometry* pg1,
5078 const GEOSGeometry* g2);
5079
5090extern char GEOS_DLL GEOSPreparedCoveredBy(
5091 const GEOSPreparedGeometry* pg1,
5092 const GEOSGeometry* g2);
5093
5104extern char GEOS_DLL GEOSPreparedCovers(
5105 const GEOSPreparedGeometry* pg1,
5106 const GEOSGeometry* g2);
5107
5118extern char GEOS_DLL GEOSPreparedCrosses(
5119 const GEOSPreparedGeometry* pg1,
5120 const GEOSGeometry* g2);
5121
5132extern char GEOS_DLL GEOSPreparedDisjoint(
5133 const GEOSPreparedGeometry* pg1,
5134 const GEOSGeometry* g2);
5135
5146extern char GEOS_DLL GEOSPreparedIntersects(
5147 const GEOSPreparedGeometry* pg1,
5148 const GEOSGeometry* g2);
5149
5161extern char GEOS_DLL GEOSPreparedIntersectsXY(
5162 const GEOSPreparedGeometry* pg1,
5163 double x,
5164 double y);
5165
5176extern char GEOS_DLL GEOSPreparedOverlaps(
5177 const GEOSPreparedGeometry* pg1,
5178 const GEOSGeometry* g2);
5179
5190extern char GEOS_DLL GEOSPreparedTouches(
5191 const GEOSPreparedGeometry* pg1,
5192 const GEOSGeometry* g2);
5193
5204extern char GEOS_DLL GEOSPreparedWithin(
5205 const GEOSPreparedGeometry* pg1,
5206 const GEOSGeometry* g2);
5207
5221extern char GEOS_DLL * GEOSPreparedRelate(
5222 const GEOSPreparedGeometry* pg1,
5223 const GEOSGeometry* g2);
5224
5241extern char GEOS_DLL GEOSPreparedRelatePattern(
5242 const GEOSPreparedGeometry* pg1,
5243 const GEOSGeometry* g2,
5244 const char* imPattern);
5245
5259 const GEOSPreparedGeometry* pg1,
5260 const GEOSGeometry* g2);
5261
5275extern int GEOS_DLL GEOSPreparedDistance(
5276 const GEOSPreparedGeometry* pg1,
5277 const GEOSGeometry* g2,
5278 double *dist);
5279
5294extern char GEOS_DLL GEOSPreparedDistanceWithin(
5295 const GEOSPreparedGeometry* pg1,
5296 const GEOSGeometry* g2,
5297 double dist);
5298
5300
5301/* ========== STRtree functions ========== */
5307
5320extern GEOSSTRtree GEOS_DLL *GEOSSTRtree_create(size_t nodeCapacity);
5321
5334extern int GEOS_DLL GEOSSTRtree_build(GEOSSTRtree *tree);
5335
5348extern void GEOS_DLL GEOSSTRtree_insert(
5349 GEOSSTRtree *tree,
5350 const GEOSGeometry *g,
5351 void *item);
5352
5367extern void GEOS_DLL GEOSSTRtree_query(
5368 GEOSSTRtree *tree,
5369 const GEOSGeometry *g,
5370 GEOSQueryCallback callback,
5371 void *userdata);
5372
5387extern const GEOSGeometry GEOS_DLL *GEOSSTRtree_nearest(
5388 GEOSSTRtree *tree,
5389 const GEOSGeometry* geom);
5390
5411extern const void GEOS_DLL *GEOSSTRtree_nearest_generic(
5412 GEOSSTRtree *tree,
5413 const void* item,
5414 const GEOSGeometry* itemEnvelope,
5415 GEOSDistanceCallback distancefn,
5416 void* userdata);
5417
5428extern void GEOS_DLL GEOSSTRtree_iterate(
5429 GEOSSTRtree *tree,
5430 GEOSQueryCallback callback,
5431 void *userdata);
5432
5447extern char GEOS_DLL GEOSSTRtree_remove(
5448 GEOSSTRtree *tree,
5449 const GEOSGeometry *g,
5450 void *item);
5451
5462extern void GEOS_DLL GEOSSTRtree_destroy(GEOSSTRtree *tree);
5463
5465
5466/* ========== Algorithms ====================================================== */
5471
5490extern int GEOS_DLL GEOSSegmentIntersection(
5491 double ax0, double ay0,
5492 double ax1, double ay1,
5493 double bx0, double by0,
5494 double bx1, double by1,
5495 double* cx, double* cy);
5496
5512extern int GEOS_DLL GEOSOrientationIndex(
5513 double Ax, double Ay,
5514 double Bx, double By,
5515 double Px, double Py);
5516
5518
5519/* ========= Reader and Writer APIs ========= */
5520
5525/* ========= WKT Reader ========= */
5526
5533
5539extern void GEOS_DLL GEOSWKTReader_destroy(GEOSWKTReader* reader);
5540
5550 GEOSWKTReader* reader,
5551 const char *wkt);
5552
5562 GEOSWKTReader *reader,
5563 char doFix);
5564
5565/* ========= WKT Writer ========= */
5566
5573
5579extern void GEOS_DLL GEOSWKTWriter_destroy(
5580 GEOSWKTWriter* writer);
5581
5591extern char GEOS_DLL *GEOSWKTWriter_write(
5592 GEOSWKTWriter* writer,
5593 const GEOSGeometry* g);
5594
5609extern void GEOS_DLL GEOSWKTWriter_setTrim(
5610 GEOSWKTWriter *writer,
5611 char trim);
5612
5622 GEOSWKTWriter *writer,
5623 int precision);
5624
5634 GEOSWKTWriter *writer,
5635 int dim);
5636
5645
5656extern void GEOS_DLL GEOSWKTWriter_setOld3D(
5657 GEOSWKTWriter *writer,
5658 int useOld3D);
5660
5661/* ============================================================================== */
5666
5667/* ========== WKB Reader ========== */
5674
5680extern void GEOS_DLL GEOSWKBReader_destroy(
5681 GEOSWKBReader* reader);
5682
5692 GEOSWKBReader *reader,
5693 char doFix);
5694
5704 GEOSWKBReader* reader,
5705 const unsigned char *wkb,
5706 size_t size);
5707
5717 GEOSWKBReader* reader,
5718 const unsigned char *hex,
5719 size_t size);
5720
5721/* ========== WKB Writer ========== */
5722
5729
5735extern void GEOS_DLL GEOSWKBWriter_destroy(GEOSWKBWriter* writer);
5736
5746extern unsigned char GEOS_DLL *GEOSWKBWriter_write(
5747 GEOSWKBWriter* writer,
5748 const GEOSGeometry* g,
5749 size_t *size);
5750
5760extern unsigned char GEOS_DLL *GEOSWKBWriter_writeHEX(
5761 GEOSWKBWriter* writer,
5762 const GEOSGeometry* g,
5763 size_t *size);
5764
5774 const GEOSWKBWriter* writer);
5775
5784 GEOSWKBWriter* writer,
5785 int newDimension);
5786
5796extern int GEOS_DLL GEOSWKBWriter_getByteOrder(
5797 const GEOSWKBWriter* writer);
5798
5806extern void GEOS_DLL GEOSWKBWriter_setByteOrder(
5807 GEOSWKBWriter* writer,
5808 int byteOrder);
5809
5824extern int GEOS_DLL GEOSWKBWriter_getFlavor(
5825 const GEOSWKBWriter* writer);
5826
5835extern void GEOS_DLL GEOSWKBWriter_setFlavor(
5836 GEOSWKBWriter* writer,
5837 int flavor);
5838
5844extern char GEOS_DLL GEOSWKBWriter_getIncludeSRID(
5845 const GEOSWKBWriter* writer);
5846
5854extern void GEOS_DLL GEOSWKBWriter_setIncludeSRID(
5855 GEOSWKBWriter* writer,
5856 const char writeSRID);
5857
5859
5860/* ============================================================================= */
5865/* ========= GeoJSON Reader ========= */
5866
5874
5881extern void GEOS_DLL GEOSGeoJSONReader_destroy(GEOSGeoJSONReader* reader);
5882
5894 GEOSGeoJSONReader* reader,
5895 const char *geojson);
5896
5897/* ========= GeoJSON Writer ========= */
5898
5906
5913extern void GEOS_DLL GEOSGeoJSONWriter_destroy(GEOSGeoJSONWriter* writer);
5914
5926 GEOSGeoJSONWriter* writer,
5927 const GEOSGeometry* g,
5928 int indent);
5929
5931
5932#endif /* #ifndef GEOS_USE_ONLY_R_API */
5933
5934/* ====================================================================== */
5935/* DEPRECATIONS */
5936/* ====================================================================== */
5937
5943
5948 const GEOSGeometry* g,
5949 double width, int quadsegs,
5950 int joinStyle, double mitreLimit,
5951 int leftSide);
5952
5957 GEOSContextHandle_t handle,
5958 const GEOSGeometry* g,
5959 double width, int quadsegs,
5960 int joinStyle, double mitreLimit,
5961 int leftSide);
5962
5968 GEOSMessageHandler notice_function,
5969 GEOSMessageHandler error_function);
5970
5974extern void GEOS_DLL finishGEOS_r(GEOSContextHandle_t handle);
5975
5980 GEOSContextHandle_t handle,
5981 const char *wkt);
5982
5986extern char GEOS_DLL *GEOSGeomToWKT_r(
5987 GEOSContextHandle_t handle,
5988 const GEOSGeometry* g);
5989
5993extern int GEOS_DLL GEOS_getWKBOutputDims_r(
5994 GEOSContextHandle_t handle);
5995
5999extern int GEOS_DLL GEOS_setWKBOutputDims_r(
6000 GEOSContextHandle_t handle,
6001 int newDims);
6002
6006extern int GEOS_DLL GEOS_getWKBByteOrder_r(
6007 GEOSContextHandle_t handle);
6008
6012extern int GEOS_DLL GEOS_setWKBByteOrder_r(
6013 GEOSContextHandle_t handle,
6014 int byteOrder);
6015
6020 GEOSContextHandle_t handle,
6021 const unsigned char *wkb,
6022 size_t size);
6023
6027extern unsigned char GEOS_DLL *GEOSGeomToWKB_buf_r(
6028 GEOSContextHandle_t handle,
6029 const GEOSGeometry* g,
6030 size_t *size);
6031
6036 GEOSContextHandle_t handle,
6037 const unsigned char *hex,
6038 size_t size);
6039
6043extern unsigned char GEOS_DLL *GEOSGeomToHEX_buf_r(
6044 GEOSContextHandle_t handle,
6045 const GEOSGeometry* g,
6046 size_t *size);
6047
6051extern GEOSGeometry GEOS_DLL *GEOSGeomFromWKT(const char *wkt);
6052
6056extern char GEOS_DLL *GEOSGeomToWKT(const GEOSGeometry* g);
6057
6061extern int GEOS_DLL GEOS_getWKBOutputDims(void);
6062
6066extern int GEOS_DLL GEOS_setWKBOutputDims(int newDims);
6067
6071extern int GEOS_DLL GEOS_getWKBByteOrder(void);
6072
6076extern int GEOS_DLL GEOS_setWKBByteOrder(int byteOrder);
6077
6081extern GEOSGeometry GEOS_DLL *GEOSGeomFromWKB_buf(const unsigned char *wkb, size_t size);
6082
6086extern unsigned char GEOS_DLL *GEOSGeomToWKB_buf(const GEOSGeometry* g, size_t *size);
6087
6091extern GEOSGeometry GEOS_DLL *GEOSGeomFromHEX_buf(const unsigned char *hex, size_t size);
6092
6096extern unsigned char GEOS_DLL *GEOSGeomToHEX_buf(const GEOSGeometry* g, size_t *size);
6097
6102
6107 GEOSContextHandle_t handle,
6108 const GEOSGeometry* g);
6109
6111
6112/* ====================================================================== */
6113/* END DEPRECATIONS */
6114/* ====================================================================== */
6115
6116
6117#ifdef __cplusplus
6118} // extern "C"
6119#endif
6120
6121#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 * 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)
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)
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:1871
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 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)
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:277
GEOSGeometry * GEOSPolygonize_valid(const GEOSGeometry *const geoms[], unsigned int ngeoms)
GEOSWKTReader * GEOSWKTReader_create(void)
struct GEOSWKBReader_t GEOSWKBReader
Definition geos_c.h:1857
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)
GEOSGeometry * GEOSGeom_createCircularString_r(GEOSContextHandle_t handle, GEOSCoordSequence *s)
void GEOSBufferParams_destroy(GEOSBufferParams *parms)
int GEOSCoordSeq_setXY_r(GEOSContextHandle_t handle, GEOSCoordSequence *s, unsigned int idx, double x, double y)
GEOSGeomTypes
Definition geos_c.h:198
@ GEOS_MULTILINESTRING
Definition geos_c.h:210
@ GEOS_GEOMETRYCOLLECTION
Definition geos_c.h:214
@ GEOS_POINT
Definition geos_c.h:200
@ GEOS_MULTIPOLYGON
Definition geos_c.h:212
@ GEOS_LINEARRING
Definition geos_c.h:204
@ GEOS_POLYGON
Definition geos_c.h:206
@ GEOS_MULTIPOINT
Definition geos_c.h:208
@ GEOS_LINESTRING
Definition geos_c.h:202
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)
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:258
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 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:244
@ GEOS_WKB_ISO
Definition geos_c.h:248
@ GEOS_WKB_EXTENDED
Definition geos_c.h:246
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)
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)
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)
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)
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)
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)
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)
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)
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)
GEOSBufCapStyles
Definition geos_c.h:597
@ GEOSBUF_CAP_SQUARE
Definition geos_c.h:606
@ GEOSBUF_CAP_FLAT
Definition geos_c.h:603
@ GEOSBUF_CAP_ROUND
Definition geos_c.h:600
GEOSGeometry * GEOSConvexHull(const GEOSGeometry *g)
GEOSVoronoiFlags
Definition geos_c.h:4373
@ GEOS_VORONOI_PRESERVE_ORDER
Definition geos_c.h:4379
@ GEOS_VORONOI_ONLY_EDGES
Definition geos_c.h:4375
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)
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)
GEOSValidFlags
Definition geos_c.h:1458
@ GEOSVALID_ALLOW_SELFTOUCHING_RING_FORMING_HOLE
Definition geos_c.h:1460
void GEOSWKBWriter_setByteOrder_r(GEOSContextHandle_t handle, GEOSWKBWriter *writer, int byteOrder)
GEOSBufferParams * GEOSBufferParams_create(void)
struct GEOSWKBWriter_t GEOSWKBWriter
Definition geos_c.h:1864
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:1850
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)
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:228
@ GEOS_WKB_NDR
Definition geos_c.h:232
@ GEOS_WKB_XDR
Definition geos_c.h:230
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)
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:1843
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:1415
@ GEOSRELATE_BNR_OGC
Definition geos_c.h:1419
@ GEOSRELATE_BNR_MULTIVALENT_ENDPOINT
Definition geos_c.h:1423
@ GEOSRELATE_BNR_ENDPOINT
Definition geos_c.h:1421
@ GEOSRELATE_BNR_MOD2
Definition geos_c.h:1417
@ GEOSRELATE_BNR_MONOVALENT_ENDPOINT
Definition geos_c.h:1425
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:4169
@ GEOSHULL_PARAM_AREA_RATIO
Definition geos_c.h:4173
@ GEOSHULL_PARAM_VERTEX_RATIO
Definition geos_c.h:4171
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:613
@ GEOSBUF_JOIN_MITRE
Definition geos_c.h:623
@ GEOSBUF_JOIN_ROUND
Definition geos_c.h:618
@ GEOSBUF_JOIN_BEVEL
Definition geos_c.h:628
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 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)
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)
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 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:296
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)
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)
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:1878
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)
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)
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)
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)
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:1597
@ GEOS_PREC_NO_TOPO
Definition geos_c.h:1601
@ GEOS_PREC_KEEP_COLLAPSED
Definition geos_c.h:1603
@ GEOS_PREC_VALID_OUTPUT
Definition geos_c.h:1599
int GEOSGetNumGeometries(const GEOSGeometry *g)
void * GEOSGeom_getUserData(const GEOSGeometry *g)
int GEOSGetNumCoordinates(const GEOSGeometry *g)
struct GEOSMakeValidParams_t GEOSMakeValidParams
Definition geos_c.h:176
char GEOSRelatePatternMatch(const char *intMatrix, const char *imPattern)
void GEOS_finish_r(GEOSContextHandle_t handle)
GEOSMakeValidMethods
Definition geos_c.h:1488
@ GEOS_MAKE_VALID_LINEWORK
Definition geos_c.h:1492
@ GEOS_MAKE_VALID_STRUCTURE
Definition geos_c.h:1497
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)
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)
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)
int GEOSBufferParams_setJoinStyle_r(GEOSContextHandle_t handle, GEOSBufferParams *p, int joinStyle)
char GEOSisRing(const GEOSGeometry *g)
int GEOSCoordSeq_getXY_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s, unsigned int idx, double *x, double *y)
char GEOSPreparedContainsXY(const GEOSPreparedGeometry *pg1, double x, double y)
const GEOSGeometry * GEOSGetGeometryN_r(GEOSContextHandle_t handle, const GEOSGeometry *g, int n)
int GEOSCoordSeq_getX_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s, unsigned int idx, double *val)
int GEOSPreparedDistance_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2, double *dist)
GEOSWKTWriter * GEOSWKTWriter_create(void)
char * GEOSPreparedRelate_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
int GEOSSegmentIntersection_r(GEOSContextHandle_t extHandle, double ax0, double ay0, double ax1, double ay1, double bx0, double by0, double bx1, double by1, double *cx, double *cy)
char GEOSisValid(const GEOSGeometry *g)
char GEOSCoveredBy(const GEOSGeometry *g1, const GEOSGeometry *g2)
int GEOSGeom_getDimensions(const GEOSGeometry *g)
char GEOSPreparedDisjoint_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
int GEOSHausdorffDistance_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double *dist)
GEOSGeometry * GEOSGeom_createCircularString(GEOSCoordSequence *s)
void GEOSWKBWriter_setIncludeSRID(GEOSWKBWriter *writer, const char writeSRID)
GEOSGeometry * GEOSBuildArea_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
char GEOSisEmpty(const GEOSGeometry *g)
const GEOSGeometry * GEOSGetGeometryN(const GEOSGeometry *g, int n)
int GEOSMinimumClearance_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *distance)
int GEOSHilbertCode(const GEOSGeometry *geom, const GEOSGeometry *extent, unsigned int level, unsigned int *code)
GEOSGeometry * GEOSConcaveHullByLength(const GEOSGeometry *g, double length, unsigned int allowHoles)
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:312
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 * 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)
GEOSGeometry * GEOSGeom_createLinearRing(GEOSCoordSequence *s)
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)
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