GEOS 3.12.0
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 12
65#endif
66#ifndef GEOS_VERSION_PATCH
67#define GEOS_VERSION_PATCH 0
68#endif
69#ifndef GEOS_VERSION
70#define GEOS_VERSION "3.12.0"
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 18
78#define GEOS_CAPI_VERSION_PATCH 0
79#define GEOS_CAPI_VERSION "3.12.0-CAPI-1.18.0"
80
81#define GEOS_CAPI_FIRST_INTERFACE GEOS_CAPI_VERSION_MAJOR
82#define GEOS_CAPI_LAST_INTERFACE (GEOS_CAPI_VERSION_MAJOR+GEOS_CAPI_VERSION_MINOR)
83
86#include <geos/export.h>
87
88
95typedef struct GEOSContextHandle_HS *GEOSContextHandle_t;
96
105typedef void (*GEOSMessageHandler)(const char *fmt, ...);
106
117typedef void (*GEOSMessageHandler_r)(const char *message, void *userdata);
118
119/*
120* When we're included by geos_c.cpp, these types are #defined to the
121* C++ definitions via preprocessor. We don't touch them to allow the
122* compiler to cross-check the declarations. However, for all "normal"
123* C-API users, we need to define these types as "opaque" struct pointers, as
124* those clients don't have access to the original C++ headers, by design.
125*/
126#ifndef GEOSGeometry
127
139typedef struct GEOSGeom_t GEOSGeometry;
140
146typedef struct GEOSPrepGeom_t GEOSPreparedGeometry;
147
154typedef struct GEOSCoordSeq_t GEOSCoordSequence;
155
161typedef struct GEOSSTRtree_t GEOSSTRtree;
162
168typedef struct GEOSBufParams_t GEOSBufferParams;
169
175typedef struct GEOSMakeValidParams_t GEOSMakeValidParams;
176
177#endif
178
181/*
182* These are compatibility definitions for source compatibility
183* with GEOS 2.X clients relying on that type.
184*/
185typedef GEOSGeometry* GEOSGeom;
186typedef GEOSCoordSequence* GEOSCoordSeq;
187
215
226 GEOS_WKB_NDR = 1
228
242 GEOS_WKB_ISO = 2
244
252typedef void (*GEOSQueryCallback)(void *item, void *userdata);
253
271typedef int (*GEOSDistanceCallback)(
272 const void* item1,
273 const void* item2,
274 double* distance,
275 void* userdata);
276
277
291 double* x,
292 double* y,
293 void* userdata);
294
295
296/* ========== Interruption ========== */
297
306typedef void (GEOSInterruptCallback)(void);
307
317
322extern void GEOS_DLL GEOS_interruptRequest(void);
323
328extern void GEOS_DLL GEOS_interruptCancel(void);
329
330/* ========== Initialization and Cleanup ========== */
331
340extern GEOSContextHandle_t GEOS_DLL GEOS_init_r(void);
341
349extern void GEOS_DLL GEOS_finish_r(GEOSContextHandle_t handle);
350
360 GEOSContextHandle_t extHandle,
362
374 GEOSContextHandle_t extHandle,
376
387 GEOSContextHandle_t extHandle,
389 void *userData);
390
403 GEOSContextHandle_t extHandle,
405 void *userData);
406
407/* ========== Coordinate Sequence functions ========== */
408
411 GEOSContextHandle_t handle,
412 unsigned int size,
413 unsigned int dims);
414
417 GEOSContextHandle_t handle,
418 const double* buf,
419 unsigned int size,
420 int hasZ,
421 int hasM);
422
425 GEOSContextHandle_t handle,
426 const double* x,
427 const double* y,
428 const double* z,
429 const double* m,
430 unsigned int size);
431
433extern int GEOS_DLL GEOSCoordSeq_copyToBuffer_r(
434 GEOSContextHandle_t handle,
435 const GEOSCoordSequence* s,
436 double* buf,
437 int hasZ,
438 int hasM);
439
441extern int GEOS_DLL GEOSCoordSeq_copyToArrays_r(
442 GEOSContextHandle_t handle,
443 const GEOSCoordSequence* s,
444 double* x,
445 double* y,
446 double* z,
447 double* m);
448
451 GEOSContextHandle_t handle,
452 const GEOSCoordSequence* s);
453
455extern void GEOS_DLL GEOSCoordSeq_destroy_r(
456 GEOSContextHandle_t handle,
458
460extern int GEOS_DLL GEOSCoordSeq_setX_r(
461 GEOSContextHandle_t handle,
462 GEOSCoordSequence* s, unsigned int idx,
463 double val);
464
466extern int GEOS_DLL GEOSCoordSeq_setY_r(
467 GEOSContextHandle_t handle,
468 GEOSCoordSequence* s, unsigned int idx,
469 double val);
470
472extern int GEOS_DLL GEOSCoordSeq_setZ_r(
473 GEOSContextHandle_t handle,
474 GEOSCoordSequence* s, unsigned int idx,
475 double val);
476
478extern int GEOS_DLL GEOSCoordSeq_setXY_r(
479 GEOSContextHandle_t handle,
480 GEOSCoordSequence* s, unsigned int idx,
481 double x, double y);
482
484extern int GEOS_DLL GEOSCoordSeq_setXYZ_r(
485 GEOSContextHandle_t handle,
486 GEOSCoordSequence* s, unsigned int idx,
487 double x, double y, double z);
488
490extern int GEOS_DLL GEOSCoordSeq_setOrdinate_r(
491 GEOSContextHandle_t handle,
493 unsigned int idx,
494 unsigned int dim, double val);
495
497extern int GEOS_DLL GEOSCoordSeq_getX_r(
498 GEOSContextHandle_t handle,
499 const GEOSCoordSequence* s,
500 unsigned int idx, double *val);
501
503extern int GEOS_DLL GEOSCoordSeq_getY_r(
504 GEOSContextHandle_t handle,
505 const GEOSCoordSequence* s,
506 unsigned int idx, double *val);
507
509extern int GEOS_DLL GEOSCoordSeq_getZ_r(
510 GEOSContextHandle_t handle,
511 const GEOSCoordSequence* s,
512 unsigned int idx, double *val);
513
515extern int GEOS_DLL GEOSCoordSeq_getXY_r(
516 GEOSContextHandle_t handle,
517 const GEOSCoordSequence* s,
518 unsigned int idx,
519 double *x, double *y);
520
522extern int GEOS_DLL GEOSCoordSeq_getXYZ_r(
523 GEOSContextHandle_t handle,
524 const GEOSCoordSequence* s,
525 unsigned int idx,
526 double *x, double *y, double *z);
527
529extern int GEOS_DLL GEOSCoordSeq_getOrdinate_r(
530 GEOSContextHandle_t handle,
531 const GEOSCoordSequence* s,
532 unsigned int idx,
533 unsigned int dim, double *val);
534
536extern int GEOS_DLL GEOSCoordSeq_getSize_r(
537 GEOSContextHandle_t handle,
538 const GEOSCoordSequence* s,
539 unsigned int *size);
540
543 GEOSContextHandle_t handle,
544 const GEOSCoordSequence* s,
545 unsigned int *dims);
546
548extern int GEOS_DLL GEOSCoordSeq_isCCW_r(
549 GEOSContextHandle_t handle,
550 const GEOSCoordSequence* s,
551 char* is_ccw);
552
553/* ========= Linear referencing functions ========= */
554
556extern double GEOS_DLL GEOSProject_r(
557 GEOSContextHandle_t handle,
558 const GEOSGeometry *line,
559 const GEOSGeometry *point);
560
563 GEOSContextHandle_t handle,
564 const GEOSGeometry *line,
565 double d);
566
568extern double GEOS_DLL GEOSProjectNormalized_r(
569 GEOSContextHandle_t handle,
570 const GEOSGeometry *g,
571 const GEOSGeometry *p);
572
575 GEOSContextHandle_t handle,
576 const GEOSGeometry *g,
577 double d);
578
579/* ========== Buffer related functions ========== */
580
582extern GEOSGeometry GEOS_DLL *GEOSBuffer_r(
583 GEOSContextHandle_t handle,
584 const GEOSGeometry* g,
585 double width, int quadsegs);
586
592
595
598
602
624
627 GEOSContextHandle_t handle);
628
630extern void GEOS_DLL GEOSBufferParams_destroy_r(
631 GEOSContextHandle_t handle,
632 GEOSBufferParams* parms);
633
636 GEOSContextHandle_t handle,
638 int style);
639
642 GEOSContextHandle_t handle,
644 int joinStyle);
645
648 GEOSContextHandle_t handle,
650 double mitreLimit);
651
654 GEOSContextHandle_t handle,
656 int quadSegs);
657
660 GEOSContextHandle_t handle,
662 int singleSided);
663
666 GEOSContextHandle_t handle,
667 const GEOSGeometry* g,
668 const GEOSBufferParams* p,
669 double width);
670
673 GEOSContextHandle_t handle,
674 const GEOSGeometry* g,
675 double width, int quadsegs, int endCapStyle,
676 int joinStyle, double mitreLimit);
677
680 GEOSContextHandle_t handle,
681 const GEOSGeometry* g,
682 double tolerance);
683
686 GEOSContextHandle_t handle,
687 const GEOSGeometry* g, double width, int quadsegs,
688 int joinStyle, double mitreLimit);
689
690
691/* ========= Geometry Constructors ========= */
692
695 GEOSContextHandle_t handle,
697
700 GEOSContextHandle_t handle,
701 double x, double y);
702
705 GEOSContextHandle_t handle);
706
709 GEOSContextHandle_t handle,
711
714 GEOSContextHandle_t handle,
716
719 GEOSContextHandle_t handle);
720
723 GEOSContextHandle_t handle);
724
727 GEOSContextHandle_t handle,
728 GEOSGeometry* shell,
729 GEOSGeometry** holes,
730 unsigned int nholes);
731
734 GEOSContextHandle_t handle,
735 int type,
736 GEOSGeometry* *geoms,
737 unsigned int ngeoms);
738
741 GEOSContextHandle_t handle,
742 GEOSGeometry * collection,
743 unsigned int * ngeoms);
744
747 GEOSContextHandle_t handle, int type);
748
751 GEOSContextHandle_t handle,
752 double xmin, double ymin,
753 double xmax, double ymax);
754
757 GEOSContextHandle_t handle,
758 const GEOSGeometry* g);
759
760/* ========= Memory management ========= */
761
763extern void GEOS_DLL GEOSGeom_destroy_r(
764 GEOSContextHandle_t handle,
765 GEOSGeometry* g);
766
767/* ========= Coverages ========= */
768
770extern GEOSGeometry GEOS_DLL *
772 GEOSContextHandle_t handle,
773 const GEOSGeometry* g);
774
776extern int GEOS_DLL
778 GEOSContextHandle_t extHandle,
779 const GEOSGeometry* input,
780 double gapWidth,
781 GEOSGeometry** output);
782
784extern GEOSGeometry GEOS_DLL *
786 GEOSContextHandle_t extHandle,
787 const GEOSGeometry* input,
788 double tolerance,
789 int preserveBoundary);
790
791/* ========= Topology Operations ========= */
792
795 GEOSContextHandle_t handle,
796 const GEOSGeometry* g);
797
800 GEOSContextHandle_t handle,
801 const GEOSGeometry* g1,
802 const GEOSGeometry* g2);
803
806 GEOSContextHandle_t handle,
807 const GEOSGeometry* g1,
808 const GEOSGeometry* g2,
809 double gridSize);
810
813 GEOSContextHandle_t handle,
814 const GEOSGeometry* g);
815
818 GEOSContextHandle_t handle,
819 const GEOSGeometry* g,
820 double ratio,
821 unsigned int allowHoles);
822
825 GEOSContextHandle_t handle,
826 const GEOSGeometry* g,
827 double ratio,
828 unsigned int allowHoles);
829
832 GEOSContextHandle_t handle,
833 const GEOSGeometry* g,
834 unsigned int isOuter,
835 double vertexNumFraction);
836
839 GEOSContextHandle_t handle,
840 const GEOSGeometry* g,
841 unsigned int isOuter,
842 unsigned int parameterMode,
843 double parameter);
844
847 GEOSContextHandle_t handle,
848 const GEOSGeometry* g,
849 double lengthRatio,
850 unsigned int isTight,
851 unsigned int isHolesAllowed);
852
855 GEOSContextHandle_t handle,
856 const GEOSGeometry* g);
857
860 GEOSContextHandle_t handle,
861 const GEOSGeometry* g,
862 double tolerance);
863
866 GEOSContextHandle_t handle,
867 const GEOSGeometry* g,
868 const GEOSGeometry* boundary,
869 double tolerance);
870
873 GEOSContextHandle_t handle,
874 const GEOSGeometry* g);
875
878 GEOSContextHandle_t handle,
879 const GEOSGeometry* g);
880
882extern int GEOS_DLL GEOSMinimumClearance_r(
883 GEOSContextHandle_t handle,
884 const GEOSGeometry* g,
885 double* distance);
886
889 GEOSContextHandle_t handle,
890 const GEOSGeometry* g1,
891 const GEOSGeometry* g2);
892
895 GEOSContextHandle_t handle,
896 const GEOSGeometry* g1,
897 const GEOSGeometry* g2,
898 double gridSize);
899
902 GEOSContextHandle_t handle,
903 const GEOSGeometry* g1,
904 const GEOSGeometry* g2);
905
908 GEOSContextHandle_t handle,
909 const GEOSGeometry* g1,
910 const GEOSGeometry* g2,
911 double gridSize);
912
915 GEOSContextHandle_t handle,
916 const GEOSGeometry* g);
917
919extern GEOSGeometry GEOS_DLL *GEOSUnion_r(
920 GEOSContextHandle_t handle,
921 const GEOSGeometry* g1,
922 const GEOSGeometry* g2);
923
926 GEOSContextHandle_t handle,
927 const GEOSGeometry* g1,
928 const GEOSGeometry* g2,
929 double gridSize);
930
933 GEOSContextHandle_t handle,
934 const GEOSGeometry* g);
935
938 GEOSContextHandle_t handle,
939 const GEOSGeometry* g,
940 double gridSize);
941
944 GEOSContextHandle_t handle,
945 const GEOSGeometry* g);
946
949 GEOSContextHandle_t handle,
950 const GEOSGeometry* g);
951
954 GEOSContextHandle_t handle,
955 const GEOSGeometry* g);
956
959 GEOSContextHandle_t handle,
960 const GEOSGeometry* g,
961 double* radius,
962 GEOSGeometry** center);
963
965extern GEOSGeometry GEOS_DLL *GEOSNode_r(
966 GEOSContextHandle_t handle,
967 const GEOSGeometry* g);
968
971 GEOSContextHandle_t handle,
972 const GEOSGeometry* g,
973 double xmin, double ymin,
974 double xmax, double ymax);
975
978 GEOSContextHandle_t handle,
979 const GEOSGeometry *const geoms[],
980 unsigned int ngeoms);
981
984 GEOSContextHandle_t handle,
985 const GEOSGeometry *const geoms[],
986 unsigned int ngems);
987
990 GEOSContextHandle_t handle,
991 const GEOSGeometry * const geoms[],
992 unsigned int ngeoms);
993
996 GEOSContextHandle_t handle,
997 const GEOSGeometry* input,
998 GEOSGeometry** cuts,
999 GEOSGeometry** dangles,
1000 GEOSGeometry** invalidRings);
1001
1004 GEOSContextHandle_t handle,
1005 const GEOSGeometry* g);
1006
1009 GEOSContextHandle_t handle,
1010 const GEOSGeometry* g);
1011
1014 GEOSContextHandle_t handle,
1015 const GEOSGeometry* g);
1016
1019 GEOSContextHandle_t handle,
1020 const GEOSGeometry* g,
1021 double start_fraction,
1022 double end_fdraction);
1023
1026 GEOSContextHandle_t handle,
1027 const GEOSGeometry* g);
1028
1031 GEOSContextHandle_t handle,
1032 const GEOSGeometry* g,
1033 double tolerance);
1034
1037 GEOSContextHandle_t handle,
1038 const GEOSGeometry* g, double tolerance);
1039
1042 GEOSContextHandle_t handle,
1043 const GEOSGeometry* g);
1044
1047 GEOSContextHandle_t handle,
1048 const GEOSGeometry* g1,
1049 const GEOSGeometry* g2);
1050
1052extern GEOSGeometry GEOS_DLL *GEOSSnap_r(
1053 GEOSContextHandle_t handle,
1054 const GEOSGeometry* g1,
1055 const GEOSGeometry* g2,
1056 double tolerance);
1057
1060 GEOSContextHandle_t handle,
1061 const GEOSGeometry *g,
1062 double tolerance,
1063 int onlyEdges);
1064
1067 GEOSContextHandle_t handle,
1068 const GEOSGeometry *g);
1069
1072 GEOSContextHandle_t extHandle,
1073 const GEOSGeometry *g,
1074 const GEOSGeometry *env,
1075 double tolerance,
1076 int flags);
1077
1079extern int GEOS_DLL GEOSSegmentIntersection_r(
1080 GEOSContextHandle_t extHandle,
1081 double ax0, double ay0,
1082 double ax1, double ay1,
1083 double bx0, double by0,
1084 double bx1, double by1,
1085 double* cx, double* cy);
1086
1087/* ========= Binary predicates ========= */
1088
1090extern char GEOS_DLL GEOSDisjoint_r(
1091 GEOSContextHandle_t handle,
1092 const GEOSGeometry* g1,
1093 const GEOSGeometry* g2);
1094
1096extern char GEOS_DLL GEOSTouches_r(
1097 GEOSContextHandle_t handle,
1098 const GEOSGeometry* g1,
1099 const GEOSGeometry* g2);
1100
1102extern char GEOS_DLL GEOSIntersects_r(
1103 GEOSContextHandle_t handle,
1104 const GEOSGeometry* g1,
1105 const GEOSGeometry* g2);
1106
1108extern char GEOS_DLL GEOSCrosses_r(
1109 GEOSContextHandle_t handle,
1110 const GEOSGeometry* g1,
1111 const GEOSGeometry* g2);
1112
1114extern char GEOS_DLL GEOSWithin_r(
1115 GEOSContextHandle_t handle,
1116 const GEOSGeometry* g1,
1117 const GEOSGeometry* g2);
1118
1120extern char GEOS_DLL GEOSContains_r(
1121 GEOSContextHandle_t handle,
1122 const GEOSGeometry* g1,
1123 const GEOSGeometry* g2);
1124
1126extern char GEOS_DLL GEOSOverlaps_r(
1127 GEOSContextHandle_t handle,
1128 const GEOSGeometry* g1,
1129 const GEOSGeometry* g2);
1130
1132extern char GEOS_DLL GEOSEquals_r(
1133 GEOSContextHandle_t handle,
1134 const GEOSGeometry* g1,
1135 const GEOSGeometry* g2);
1136
1138extern char GEOS_DLL GEOSEqualsExact_r(
1139 GEOSContextHandle_t handle,
1140 const GEOSGeometry* g1,
1141 const GEOSGeometry* g2,
1142 double tolerance);
1143
1145extern char GEOS_DLL GEOSEqualsIdentical_r(
1146 GEOSContextHandle_t handle,
1147 const GEOSGeometry* g1,
1148 const GEOSGeometry* g2);
1149
1151extern char GEOS_DLL GEOSCovers_r(
1152 GEOSContextHandle_t handle,
1153 const GEOSGeometry* g1,
1154 const GEOSGeometry* g2);
1155
1157extern char GEOS_DLL GEOSCoveredBy_r(
1158 GEOSContextHandle_t handle,
1159 const GEOSGeometry* g1,
1160 const GEOSGeometry* g2);
1161
1162/* ========= Prepared Geometry Binary Predicates ========== */
1163
1166 GEOSContextHandle_t handle,
1167 const GEOSGeometry* g);
1168
1170extern void GEOS_DLL GEOSPreparedGeom_destroy_r(
1171 GEOSContextHandle_t handle,
1172 const GEOSPreparedGeometry* g);
1173
1175extern char GEOS_DLL GEOSPreparedContains_r(
1176 GEOSContextHandle_t handle,
1177 const GEOSPreparedGeometry* pg1,
1178 const GEOSGeometry* g2);
1179
1181extern char GEOS_DLL GEOSPreparedContainsXY_r(
1182 GEOSContextHandle_t handle,
1183 const GEOSPreparedGeometry* pg1,
1184 double x,
1185 double y);
1186
1189 GEOSContextHandle_t handle,
1190 const GEOSPreparedGeometry* pg1,
1191 const GEOSGeometry* g2);
1192
1194extern char GEOS_DLL GEOSPreparedCoveredBy_r(
1195 GEOSContextHandle_t handle,
1196 const GEOSPreparedGeometry* pg1,
1197 const GEOSGeometry* g2);
1198
1200extern char GEOS_DLL GEOSPreparedCovers_r(
1201 GEOSContextHandle_t handle,
1202 const GEOSPreparedGeometry* pg1,
1203 const GEOSGeometry* g2);
1204
1206extern char GEOS_DLL GEOSPreparedCrosses_r(
1207 GEOSContextHandle_t handle,
1208 const GEOSPreparedGeometry* pg1,
1209 const GEOSGeometry* g2);
1210
1212extern char GEOS_DLL GEOSPreparedDisjoint_r(
1213 GEOSContextHandle_t handle,
1214 const GEOSPreparedGeometry* pg1,
1215 const GEOSGeometry* g2);
1216
1218extern char GEOS_DLL GEOSPreparedIntersects_r(
1219 GEOSContextHandle_t handle,
1220 const GEOSPreparedGeometry* pg1,
1221 const GEOSGeometry* g2);
1222
1224extern char GEOS_DLL GEOSPreparedIntersectsXY_r(
1225 GEOSContextHandle_t handle,
1226 const GEOSPreparedGeometry* pg1,
1227 double x,
1228 double y);
1229
1231extern char GEOS_DLL GEOSPreparedOverlaps_r(
1232 GEOSContextHandle_t handle,
1233 const GEOSPreparedGeometry* pg1,
1234 const GEOSGeometry* g2);
1235
1237extern char GEOS_DLL GEOSPreparedTouches_r(
1238 GEOSContextHandle_t handle,
1239 const GEOSPreparedGeometry* pg1,
1240 const GEOSGeometry* g2);
1241
1243extern char GEOS_DLL GEOSPreparedWithin_r(
1244 GEOSContextHandle_t handle,
1245 const GEOSPreparedGeometry* pg1,
1246 const GEOSGeometry* g2);
1247
1250 GEOSContextHandle_t handle,
1251 const GEOSPreparedGeometry* pg1,
1252 const GEOSGeometry* g2);
1253
1255extern int GEOS_DLL GEOSPreparedDistance_r(
1256 GEOSContextHandle_t handle,
1257 const GEOSPreparedGeometry* pg1,
1258 const GEOSGeometry* g2, double *dist);
1259
1261extern char GEOS_DLL GEOSPreparedDistanceWithin_r(
1262 GEOSContextHandle_t handle,
1263 const GEOSPreparedGeometry* pg1,
1264 const GEOSGeometry* g2, double dist);
1265
1266/* ========== STRtree ========== */
1267
1270 GEOSContextHandle_t handle,
1271 size_t nodeCapacity);
1272
1274extern int GEOS_DLL GEOSSTRtree_build_r(
1275 GEOSContextHandle_t handle,
1276 GEOSSTRtree *tree);
1277
1279extern void GEOS_DLL GEOSSTRtree_insert_r(
1280 GEOSContextHandle_t handle,
1281 GEOSSTRtree *tree,
1282 const GEOSGeometry *g,
1283 void *item);
1284
1286extern void GEOS_DLL GEOSSTRtree_query_r(
1287 GEOSContextHandle_t handle,
1288 GEOSSTRtree *tree,
1289 const GEOSGeometry *g,
1290 GEOSQueryCallback callback,
1291 void *userdata);
1292
1295 GEOSContextHandle_t handle,
1296 GEOSSTRtree *tree,
1297 const GEOSGeometry* geom);
1298
1300extern const void GEOS_DLL *GEOSSTRtree_nearest_generic_r(
1301 GEOSContextHandle_t handle,
1302 GEOSSTRtree *tree,
1303 const void* item,
1304 const GEOSGeometry* itemEnvelope,
1305 GEOSDistanceCallback distancefn,
1306 void* userdata);
1307
1309extern void GEOS_DLL GEOSSTRtree_iterate_r(
1310 GEOSContextHandle_t handle,
1311 GEOSSTRtree *tree,
1312 GEOSQueryCallback callback,
1313 void *userdata);
1314
1316extern char GEOS_DLL GEOSSTRtree_remove_r(
1317 GEOSContextHandle_t handle,
1318 GEOSSTRtree *tree,
1319 const GEOSGeometry *g,
1320 void *item);
1321
1323extern void GEOS_DLL GEOSSTRtree_destroy_r(
1324 GEOSContextHandle_t handle,
1325 GEOSSTRtree *tree);
1326
1327
1328/* ========= Unary predicate ========= */
1329
1331extern char GEOS_DLL GEOSisEmpty_r(
1332 GEOSContextHandle_t handle,
1333 const GEOSGeometry* g);
1334
1336extern char GEOS_DLL GEOSisSimple_r(
1337 GEOSContextHandle_t handle,
1338 const GEOSGeometry* g);
1339
1341extern char GEOS_DLL GEOSisRing_r(
1342 GEOSContextHandle_t handle,
1343 const GEOSGeometry* g);
1344
1346extern char GEOS_DLL GEOSHasZ_r(
1347 GEOSContextHandle_t handle,
1348 const GEOSGeometry* g);
1349
1351extern char GEOS_DLL GEOSHasM_r(
1352 GEOSContextHandle_t handle,
1353 const GEOSGeometry* g);
1354
1356extern char GEOS_DLL GEOSisClosed_r(
1357 GEOSContextHandle_t handle,
1358 const GEOSGeometry *g);
1359
1360/* ========== Dimensionally Extended 9 Intersection Model ========== */
1361
1378
1380extern char GEOS_DLL GEOSRelatePattern_r(
1381 GEOSContextHandle_t handle,
1382 const GEOSGeometry* g1,
1383 const GEOSGeometry* g2,
1384 const char *pat);
1385
1387extern char GEOS_DLL *GEOSRelate_r(
1388 GEOSContextHandle_t handle,
1389 const GEOSGeometry* g1,
1390 const GEOSGeometry* g2);
1391
1393extern char GEOS_DLL GEOSRelatePatternMatch_r(
1394 GEOSContextHandle_t handle,
1395 const char *mat,
1396 const char *pat);
1397
1399extern char GEOS_DLL *GEOSRelateBoundaryNodeRule_r(
1400 GEOSContextHandle_t handle,
1401 const GEOSGeometry* g1,
1402 const GEOSGeometry* g2,
1403 int bnr);
1404
1405/* ========= Validity checking ========= */
1406
1409{
1413
1415extern char GEOS_DLL GEOSisValid_r(
1416 GEOSContextHandle_t handle,
1417 const GEOSGeometry* g);
1418
1420extern char GEOS_DLL *GEOSisValidReason_r(
1421 GEOSContextHandle_t handle,
1422 const GEOSGeometry* g);
1423
1425extern char GEOS_DLL GEOSisValidDetail_r(
1426 GEOSContextHandle_t handle,
1427 const GEOSGeometry* g,
1428 int flags,
1429 char** reason,
1430 GEOSGeometry** location);
1431
1432/* ========== Make Valid ========== */
1433
1450
1453 GEOSContextHandle_t extHandle);
1454
1457 GEOSContextHandle_t handle,
1458 GEOSMakeValidParams* parms);
1459
1462 GEOSContextHandle_t handle,
1464 int style);
1465
1468 GEOSContextHandle_t handle,
1470 enum GEOSMakeValidMethods method);
1471
1474 GEOSContextHandle_t handle,
1475 const GEOSGeometry* g);
1476
1479 GEOSContextHandle_t handle,
1480 const GEOSGeometry* g,
1481 const GEOSMakeValidParams* makeValidParams);
1482
1485 GEOSContextHandle_t handle,
1486 const GEOSGeometry* g,
1487 double tolerance);
1488
1489/* ========== Geometry info ========== */
1490
1492/* Return NULL on exception, result must be freed by caller. */
1493extern char GEOS_DLL *GEOSGeomType_r(
1494 GEOSContextHandle_t handle,
1495 const GEOSGeometry* g);
1496
1498extern int GEOS_DLL GEOSGeomTypeId_r(
1499 GEOSContextHandle_t handle,
1500 const GEOSGeometry* g);
1501
1503extern int GEOS_DLL GEOSGetSRID_r(
1504 GEOSContextHandle_t handle,
1505 const GEOSGeometry* g);
1506
1508extern void GEOS_DLL GEOSSetSRID_r(
1509 GEOSContextHandle_t handle,
1510 GEOSGeometry* g, int SRID);
1511
1513extern void GEOS_DLL *GEOSGeom_getUserData_r(
1514 GEOSContextHandle_t handle,
1515 const GEOSGeometry* g);
1516
1518extern void GEOS_DLL GEOSGeom_setUserData_r(
1519 GEOSContextHandle_t handle,
1520 GEOSGeometry* g,
1521 void* userData);
1522
1524extern int GEOS_DLL GEOSGetNumGeometries_r(
1525 GEOSContextHandle_t handle,
1526 const GEOSGeometry* g);
1527
1529extern const GEOSGeometry GEOS_DLL *GEOSGetGeometryN_r(
1530 GEOSContextHandle_t handle,
1531 const GEOSGeometry* g, int n);
1532
1534extern int GEOS_DLL GEOSNormalize_r(
1535 GEOSContextHandle_t handle,
1536 GEOSGeometry* g);
1537
1539extern int GEOS_DLL GEOSOrientPolygons_r(
1540 GEOSContextHandle_t handle,
1541 GEOSGeometry* g,
1542 int exteriorCW);
1543
1556
1559 GEOSContextHandle_t handle,
1560 const GEOSGeometry *g,
1561 double gridSize,
1562 int flags);
1563
1565extern double GEOS_DLL GEOSGeom_getPrecision_r(
1566 GEOSContextHandle_t handle,
1567 const GEOSGeometry *g);
1568
1570extern int GEOS_DLL GEOSGetNumInteriorRings_r(
1571 GEOSContextHandle_t handle,
1572 const GEOSGeometry* g);
1573
1575extern int GEOS_DLL GEOSGeomGetNumPoints_r(
1576 GEOSContextHandle_t handle,
1577 const GEOSGeometry* g);
1578
1580extern int GEOS_DLL GEOSGeomGetX_r(
1581 GEOSContextHandle_t handle,
1582 const GEOSGeometry *g,
1583 double *x);
1584
1586extern int GEOS_DLL GEOSGeomGetY_r(
1587 GEOSContextHandle_t handle,
1588 const GEOSGeometry *g,
1589 double *y);
1590
1592extern int GEOS_DLL GEOSGeomGetZ_r(
1593 GEOSContextHandle_t handle,
1594 const GEOSGeometry *g,
1595 double *z);
1596
1598extern int GEOS_DLL GEOSGeomGetM_r(
1599 GEOSContextHandle_t handle,
1600 const GEOSGeometry *g,
1601 double *m);
1602
1605 GEOSContextHandle_t handle,
1606 const GEOSGeometry* g, int n);
1607
1610 GEOSContextHandle_t handle,
1611 const GEOSGeometry* g);
1612
1614extern int GEOS_DLL GEOSGetNumCoordinates_r(
1615 GEOSContextHandle_t handle,
1616 const GEOSGeometry* g);
1617
1620 GEOSContextHandle_t handle,
1621 const GEOSGeometry* g);
1622
1624extern int GEOS_DLL GEOSGeom_getDimensions_r(
1625 GEOSContextHandle_t handle,
1626 const GEOSGeometry* g);
1627
1630 GEOSContextHandle_t handle,
1631 const GEOSGeometry* g);
1632
1634extern int GEOS_DLL GEOSGeom_getXMin_r(
1635 GEOSContextHandle_t handle,
1636 const GEOSGeometry* g,
1637 double* value);
1638
1640extern int GEOS_DLL GEOSGeom_getYMin_r(
1641 GEOSContextHandle_t handle,
1642 const GEOSGeometry* g,
1643 double* value);
1644
1646extern int GEOS_DLL GEOSGeom_getXMax_r(
1647 GEOSContextHandle_t handle,
1648 const GEOSGeometry* g,
1649 double* value);
1650
1652extern int GEOS_DLL GEOSGeom_getYMax_r(
1653 GEOSContextHandle_t handle,
1654 const GEOSGeometry* g,
1655 double* value);
1656
1658extern int GEOS_DLL GEOSGeom_getExtent_r(
1659 GEOSContextHandle_t handle,
1660 const GEOSGeometry* g,
1661 double* xmin,
1662 double* ymin,
1663 double* xmax,
1664 double* ymax);
1665
1668 GEOSContextHandle_t handle,
1669 const GEOSGeometry *g,
1670 int n);
1671
1674 GEOSContextHandle_t handle,
1675 const GEOSGeometry *g);
1676
1679 GEOSContextHandle_t handle,
1680 const GEOSGeometry *g);
1681
1682/* ========= Misc functions ========= */
1683
1685extern int GEOS_DLL GEOSArea_r(
1686 GEOSContextHandle_t handle,
1687 const GEOSGeometry* g,
1688 double *area);
1689
1691extern int GEOS_DLL GEOSLength_r(
1692 GEOSContextHandle_t handle,
1693 const GEOSGeometry* g,
1694 double *length);
1695
1697extern int GEOS_DLL GEOSDistance_r(
1698 GEOSContextHandle_t handle,
1699 const GEOSGeometry* g1,
1700 const GEOSGeometry* g2,
1701 double *dist);
1702
1704extern char GEOS_DLL GEOSDistanceWithin_r(
1705 GEOSContextHandle_t handle,
1706 const GEOSGeometry* g1,
1707 const GEOSGeometry* g2,
1708 double dist);
1709
1711extern int GEOS_DLL GEOSDistanceIndexed_r(
1712 GEOSContextHandle_t handle,
1713 const GEOSGeometry* g1,
1714 const GEOSGeometry* g2,
1715 double *dist);
1716
1718extern int GEOS_DLL GEOSHausdorffDistance_r(
1719 GEOSContextHandle_t handle,
1720 const GEOSGeometry *g1,
1721 const GEOSGeometry *g2,
1722 double *dist);
1723
1726 GEOSContextHandle_t handle,
1727 const GEOSGeometry *g1,
1728 const GEOSGeometry *g2,
1729 double densifyFrac, double *dist);
1730
1732extern int GEOS_DLL GEOSFrechetDistance_r(
1733 GEOSContextHandle_t handle,
1734 const GEOSGeometry *g1,
1735 const GEOSGeometry *g2,
1736 double *dist);
1737
1740 GEOSContextHandle_t handle,
1741 const GEOSGeometry *g1,
1742 const GEOSGeometry *g2,
1743 double densifyFrac,
1744 double *dist);
1745
1746
1748extern int GEOS_DLL GEOSHilbertCode_r(
1749 GEOSContextHandle_t handle,
1750 const GEOSGeometry *geom,
1751 const GEOSGeometry* extent,
1752 unsigned int level,
1753 unsigned int *code
1754);
1755
1757extern int GEOS_DLL GEOSGeomGetLength_r(
1758 GEOSContextHandle_t handle,
1759 const GEOSGeometry *g,
1760 double *length);
1761
1764 GEOSContextHandle_t handle,
1765 const GEOSGeometry* g1,
1766 const GEOSGeometry* g2);
1767
1770 GEOSContextHandle_t handle,
1771 const GEOSGeometry* g,
1772 GEOSTransformXYCallback callback,
1773 void* userdata);
1774
1775/* ========= Algorithms ========= */
1776
1778extern int GEOS_DLL GEOSOrientationIndex_r(
1779 GEOSContextHandle_t handle,
1780 double Ax, double Ay,
1781 double Bx, double By,
1782 double Px, double Py);
1783
1784
1785/* ========== Reader and Writer APIs ========== */
1786
1787#ifndef GEOSWKTReader
1788
1794typedef struct GEOSWKTReader_t GEOSWKTReader;
1795
1801typedef struct GEOSWKTWriter_t GEOSWKTWriter;
1802
1808typedef struct GEOSWKBReader_t GEOSWKBReader;
1809
1815typedef struct GEOSWKBWriter_t GEOSWKBWriter;
1816
1822typedef struct GEOSGeoJSONReader_t GEOSGeoJSONReader;
1823
1829typedef struct GEOSGeoJSONWriter_t GEOSGeoJSONWriter;
1830
1831#endif
1832
1833/* ========== WKT Reader ========== */
1834
1837 GEOSContextHandle_t handle);
1838
1841 GEOSWKTReader* reader);
1842
1845 GEOSContextHandle_t handle,
1846 GEOSWKTReader* reader,
1847 const char *wkt);
1848
1851 GEOSContextHandle_t handle,
1852 GEOSWKTReader *reader,
1853 char doFix);
1854
1855/* ========== WKT Writer ========== */
1856
1859 GEOSContextHandle_t handle);
1860
1862extern void GEOS_DLL GEOSWKTWriter_destroy_r(
1863 GEOSContextHandle_t handle,
1864 GEOSWKTWriter* writer);
1865
1867extern char GEOS_DLL *GEOSWKTWriter_write_r(
1868 GEOSContextHandle_t handle,
1869 GEOSWKTWriter* writer,
1870 const GEOSGeometry* g);
1871
1873extern void GEOS_DLL GEOSWKTWriter_setTrim_r(
1874 GEOSContextHandle_t handle,
1875 GEOSWKTWriter *writer,
1876 char trim);
1877
1880 GEOSContextHandle_t handle,
1881 GEOSWKTWriter *writer,
1882 int precision);
1883
1886 GEOSContextHandle_t handle,
1887 GEOSWKTWriter *writer,
1888 int dim);
1889
1892 GEOSContextHandle_t handle,
1893 GEOSWKTWriter *writer);
1894
1896extern void GEOS_DLL GEOSWKTWriter_setOld3D_r(
1897 GEOSContextHandle_t handle,
1898 GEOSWKTWriter *writer,
1899 int useOld3D);
1900
1901/* ========== WKB Reader ========== */
1902
1905 GEOSContextHandle_t handle);
1906
1908extern void GEOS_DLL GEOSWKBReader_destroy_r(
1909 GEOSContextHandle_t handle,
1910 GEOSWKBReader* reader);
1911
1914 GEOSContextHandle_t handle,
1915 GEOSWKBReader *reader,
1916 char doFix);
1917
1920 GEOSContextHandle_t handle,
1921 GEOSWKBReader* reader,
1922 const unsigned char *wkb,
1923 size_t size);
1924
1927 GEOSContextHandle_t handle,
1928 GEOSWKBReader* reader,
1929 const unsigned char *hex,
1930 size_t size);
1931
1932
1933/* ========== WKB Writer ========== */
1934
1937 GEOSContextHandle_t handle);
1938
1940extern void GEOS_DLL GEOSWKBWriter_destroy_r(
1941 GEOSContextHandle_t handle,
1942 GEOSWKBWriter* writer);
1943
1945extern unsigned char GEOS_DLL *GEOSWKBWriter_write_r(
1946 GEOSContextHandle_t handle,
1947 GEOSWKBWriter* writer,
1948 const GEOSGeometry* g,
1949 size_t *size);
1950
1952extern unsigned char GEOS_DLL *GEOSWKBWriter_writeHEX_r(
1953 GEOSContextHandle_t handle,
1954 GEOSWKBWriter* writer,
1955 const GEOSGeometry* g,
1956 size_t *size);
1957
1960 GEOSContextHandle_t handle,
1961 const GEOSWKBWriter* writer);
1962
1965 GEOSContextHandle_t handle,
1966 GEOSWKBWriter* writer, int newDimension);
1967
1970 GEOSContextHandle_t handle,
1971 const GEOSWKBWriter* writer);
1972
1974extern void GEOS_DLL GEOSWKBWriter_setByteOrder_r(
1975 GEOSContextHandle_t handle,
1976 GEOSWKBWriter* writer,
1977 int byteOrder);
1978
1980extern int GEOS_DLL GEOSWKBWriter_getFlavor_r(
1981 GEOSContextHandle_t handle,
1982 const GEOSWKBWriter* writer);
1983
1985extern void GEOS_DLL GEOSWKBWriter_setFlavor_r(
1986 GEOSContextHandle_t handle,
1987 GEOSWKBWriter* writer,
1988 int flavor);
1989
1992 GEOSContextHandle_t handle,
1993 const GEOSWKBWriter* writer);
1994
1997 GEOSContextHandle_t handle,
1998 GEOSWKBWriter* writer, const char writeSRID);
1999
2000/* ========== GeoJSON Reader ========== */
2001
2004 GEOSContextHandle_t handle);
2005
2008 GEOSGeoJSONReader* reader);
2009
2012 GEOSContextHandle_t handle,
2013 GEOSGeoJSONReader* reader,
2014 const char *geojson);
2015
2016/* ========== GeoJSON Writer ========== */
2017
2020 GEOSContextHandle_t handle);
2021
2024 GEOSGeoJSONWriter* writer);
2025
2028 GEOSContextHandle_t handle,
2029 GEOSGeoJSONWriter* writer,
2030 const GEOSGeometry* g,
2031 int indent);
2032
2034extern void GEOS_DLL GEOSFree_r(
2035 GEOSContextHandle_t handle,
2036 void *buffer);
2037
2045extern const char GEOS_DLL *GEOSversion(void);
2046
2047/*
2048* External code to GEOS can define GEOS_USE_ONLY_R_API
2049* to strip the non-reentrant API functions from this header,
2050* leaving only the "_r" compatible variants.
2051*/
2052#ifndef GEOS_USE_ONLY_R_API
2053
2054/* ========== Initialization, cleanup ================================= */
2060
2073extern void GEOS_DLL initGEOS(
2074 GEOSMessageHandler notice_function,
2075 GEOSMessageHandler error_function);
2076
2082extern void GEOS_DLL finishGEOS(void);
2083
2091extern void GEOS_DLL GEOSFree(void *buffer);
2092
2094
2095/* ========= Coordinate Sequence functions ========= */
2101
2109extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_create(unsigned int size, unsigned int dims);
2110
2121extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_copyFromBuffer(const double* buf, unsigned int size, int hasZ, int hasM);
2122
2134extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_copyFromArrays(const double* x, const double* y, const double* z, const double* m, unsigned int size);
2135
2146extern int GEOS_DLL GEOSCoordSeq_copyToBuffer(const GEOSCoordSequence* s, double* buf, int hasZ, int hasM);
2147
2159extern int GEOS_DLL GEOSCoordSeq_copyToArrays(const GEOSCoordSequence* s, double* x, double* y, double* z, double* m);
2160
2168
2175
2185 unsigned int idx, double val);
2195 unsigned int idx, double val);
2205 unsigned int idx, double val);
2217 unsigned int idx, double x, double y);
2230 unsigned int idx, double x, double y, double z);
2241 unsigned int idx, unsigned int dim, double val);
2242
2251extern int GEOS_DLL GEOSCoordSeq_getX(const GEOSCoordSequence* s,
2252 unsigned int idx, double *val);
2253
2262extern int GEOS_DLL GEOSCoordSeq_getY(const GEOSCoordSequence* s,
2263 unsigned int idx, double *val);
2272extern int GEOS_DLL GEOSCoordSeq_getZ(const GEOSCoordSequence* s,
2273 unsigned int idx, double *val);
2284extern int GEOS_DLL GEOSCoordSeq_getXY(const GEOSCoordSequence* s,
2285 unsigned int idx, double *x, double *y);
2297extern int GEOS_DLL GEOSCoordSeq_getXYZ(const GEOSCoordSequence* s,
2298 unsigned int idx, double *x, double *y, double *z);
2308extern int GEOS_DLL GEOSCoordSeq_getOrdinate(const GEOSCoordSequence* s,
2309 unsigned int idx, unsigned int dim, double *val);
2310
2318extern int GEOS_DLL GEOSCoordSeq_getSize(
2319 const GEOSCoordSequence* s,
2320 unsigned int *size);
2321
2329extern int GEOS_DLL GEOSCoordSeq_getDimensions(
2330 const GEOSCoordSequence* s,
2331 unsigned int *dims);
2332
2342extern int GEOS_DLL GEOSCoordSeq_isCCW(
2343 const GEOSCoordSequence* s,
2344 char* is_ccw);
2345
2347
2348/* ========= Geometry Constructors ========= */
2354
2363
2373extern GEOSGeometry GEOS_DLL *GEOSGeom_createPointFromXY(double x, double y);
2374
2383
2392
2401
2410
2419
2434 GEOSGeometry* shell,
2435 GEOSGeometry** holes,
2436 unsigned int nholes);
2437
2452 int type,
2453 GEOSGeometry** geoms,
2454 unsigned int ngeoms);
2455
2473 GEOSGeometry * collection,
2474 unsigned int * ngeoms);
2475
2485
2497 double xmin, double ymin,
2498 double xmax, double ymax);
2499
2507extern GEOSGeometry GEOS_DLL *GEOSGeom_clone(const GEOSGeometry* g);
2508
2514extern void GEOS_DLL GEOSGeom_destroy(GEOSGeometry* g);
2515
2517
2518/* ========== Geometry info ========== */
2523
2533extern char GEOS_DLL *GEOSGeomType(const GEOSGeometry* g);
2534
2541extern int GEOS_DLL GEOSGeomTypeId(const GEOSGeometry* g);
2542
2549extern int GEOS_DLL GEOSGetSRID(const GEOSGeometry* g);
2550
2561extern void GEOS_DLL *GEOSGeom_getUserData(const GEOSGeometry* g);
2562
2573extern int GEOS_DLL GEOSGetNumGeometries(const GEOSGeometry* g);
2574
2590extern const GEOSGeometry GEOS_DLL *GEOSGetGeometryN(
2591 const GEOSGeometry* g,
2592 int n);
2593
2603extern double GEOS_DLL GEOSGeom_getPrecision(const GEOSGeometry *g);
2604
2612extern int GEOS_DLL GEOSGetNumInteriorRings(const GEOSGeometry* g);
2613
2621extern int GEOS_DLL GEOSGeomGetNumPoints(const GEOSGeometry* g);
2622
2631extern int GEOS_DLL GEOSGeomGetX(const GEOSGeometry *g, double *x);
2632
2641extern int GEOS_DLL GEOSGeomGetY(const GEOSGeometry *g, double *y);
2642
2652extern int GEOS_DLL GEOSGeomGetZ(const GEOSGeometry *g, double *z);
2653
2663extern int GEOS_DLL GEOSGeomGetM(const GEOSGeometry *g, double *m);
2664
2674extern const GEOSGeometry GEOS_DLL *GEOSGetInteriorRingN(
2675 const GEOSGeometry* g,
2676 int n);
2677
2686extern const GEOSGeometry GEOS_DLL *GEOSGetExteriorRing(
2687 const GEOSGeometry* g);
2688
2696extern int GEOS_DLL GEOSGetNumCoordinates(
2697 const GEOSGeometry* g);
2698
2709 const GEOSGeometry* g);
2710
2723extern int GEOS_DLL GEOSGeom_getDimensions(
2724 const GEOSGeometry* g);
2725
2738 const GEOSGeometry* g);
2739
2748extern int GEOS_DLL GEOSGeom_getXMin(const GEOSGeometry* g, double* value);
2749
2758extern int GEOS_DLL GEOSGeom_getYMin(const GEOSGeometry* g, double* value);
2759
2768extern int GEOS_DLL GEOSGeom_getXMax(const GEOSGeometry* g, double* value);
2769
2778extern int GEOS_DLL GEOSGeom_getYMax(const GEOSGeometry* g, double* value);
2779
2793extern int GEOS_DLL GEOSGeom_getExtent(
2794 const GEOSGeometry* g,
2795 double* xmin,
2796 double* ymin,
2797 double* xmax,
2798 double* ymax);
2799
2809extern GEOSGeometry GEOS_DLL *GEOSGeomGetPointN(const GEOSGeometry *g, int n);
2810
2820
2830
2831
2840extern char GEOS_DLL GEOSisEmpty(const GEOSGeometry* g);
2841
2850extern char GEOS_DLL GEOSisRing(const GEOSGeometry* g);
2851
2858extern char GEOS_DLL GEOSHasZ(const GEOSGeometry* g);
2859
2867extern char GEOS_DLL GEOSHasM(const GEOSGeometry* g);
2868
2877extern char GEOS_DLL GEOSisClosed(const GEOSGeometry *g);
2878
2880
2881/* ==================================================================================== */
2886
2893extern void GEOS_DLL GEOSSetSRID(GEOSGeometry* g, int SRID);
2894
2902extern void GEOS_DLL GEOSGeom_setUserData(GEOSGeometry* g, void* userData);
2903
2923extern int GEOS_DLL GEOSNormalize(GEOSGeometry* g);
2924
2934extern int GEOS_DLL GEOSOrientPolygons(GEOSGeometry* g,
2935 int exteriorCW);
2936
2938
2939/* ========== Validity checking ============================================================ */
2945
2953extern char GEOS_DLL GEOSisSimple(const GEOSGeometry* g);
2954
2968extern char GEOS_DLL GEOSisValid(const GEOSGeometry* g);
2969
2979extern char GEOS_DLL *GEOSisValidReason(const GEOSGeometry *g);
2980
2995extern char GEOS_DLL GEOSisValidDetail(
2996 const GEOSGeometry* g,
2997 int flags,
2998 char** reason,
2999 GEOSGeometry** location);
3000
3009 const GEOSGeometry* g);
3010
3025 const GEOSGeometry* g,
3026 const GEOSMakeValidParams *makeValidParams);
3027
3037
3046
3057 enum GEOSMakeValidMethods method);
3058
3071 int keepCollapsed);
3072
3092extern int GEOS_DLL GEOSMinimumClearance(const GEOSGeometry* g, double* d);
3093
3106
3125 const GEOSGeometry* g,
3126 double tolerance);
3127
3129
3130/* ========= Metric functions ================================================== */
3135
3143extern int GEOS_DLL GEOSArea(
3144 const GEOSGeometry* g,
3145 double *area);
3146
3154extern int GEOS_DLL GEOSLength(
3155 const GEOSGeometry* g,
3156 double *length);
3157
3167extern int GEOS_DLL GEOSGeomGetLength(
3168 const GEOSGeometry *g,
3169 double *length);
3170
3172
3173/* ========== Distance functions ================================================ */
3179
3188extern int GEOS_DLL GEOSDistance(
3189 const GEOSGeometry* g1,
3190 const GEOSGeometry* g2,
3191 double *dist);
3192
3203extern char GEOS_DLL GEOSDistanceWithin(
3204 const GEOSGeometry* g1,
3205 const GEOSGeometry* g2,
3206 double dist);
3207
3221extern int GEOS_DLL GEOSDistanceIndexed(
3222 const GEOSGeometry* g1,
3223 const GEOSGeometry* g2,
3224 double *dist);
3225
3238 const GEOSGeometry* g1,
3239 const GEOSGeometry* g2);
3240
3252extern int GEOS_DLL GEOSHausdorffDistance(
3253 const GEOSGeometry *g1,
3254 const GEOSGeometry *g2,
3255 double *dist);
3256
3272 const GEOSGeometry *g1,
3273 const GEOSGeometry *g2,
3274 double densifyFrac,
3275 double *dist);
3276
3290extern int GEOS_DLL GEOSFrechetDistance(
3291 const GEOSGeometry *g1,
3292 const GEOSGeometry *g2,
3293 double *dist);
3294
3311extern int GEOS_DLL GEOSFrechetDistanceDensify(
3312 const GEOSGeometry *g1,
3313 const GEOSGeometry *g2,
3314 double densifyFrac,
3315 double *dist);
3316
3318
3319/* ========== Linear referencing functions */
3325
3335extern double GEOS_DLL GEOSProject(const GEOSGeometry* line,
3336 const GEOSGeometry* point);
3337
3349extern GEOSGeometry GEOS_DLL *GEOSInterpolate(const GEOSGeometry* line,
3350 double d);
3351
3362extern double GEOS_DLL GEOSProjectNormalized(const GEOSGeometry* line,
3363 const GEOSGeometry* point);
3364
3375 const GEOSGeometry *line,
3376 double proportion);
3377
3379
3380/* ========== Overlay functions ========== */
3386
3397extern GEOSGeometry GEOS_DLL *GEOSIntersection(const GEOSGeometry* g1, const GEOSGeometry* g2);
3398
3413extern GEOSGeometry GEOS_DLL *GEOSIntersectionPrec(const GEOSGeometry* g1, const GEOSGeometry* g2, double gridSize);
3414
3426 const GEOSGeometry* ga,
3427 const GEOSGeometry* gb);
3428
3445 const GEOSGeometry* ga,
3446 const GEOSGeometry* gb,
3447 double gridSize);
3448
3461 const GEOSGeometry* ga,
3462 const GEOSGeometry* gb);
3463
3481 const GEOSGeometry* ga,
3482 const GEOSGeometry* gb,
3483 double gridSize);
3484
3495extern GEOSGeometry GEOS_DLL *GEOSUnion(
3496 const GEOSGeometry* ga,
3497 const GEOSGeometry* gb);
3498
3515 const GEOSGeometry* ga,
3516 const GEOSGeometry* gb,
3517 double gridSize);
3518
3530extern GEOSGeometry GEOS_DLL *GEOSUnaryUnion(const GEOSGeometry* g);
3531
3548 const GEOSGeometry* g,
3549 double gridSize);
3550
3562
3579 const GEOSGeometry* g,
3580 double xmin, double ymin,
3581 double xmax, double ymax);
3582
3602 const GEOSGeometry* g1,
3603 const GEOSGeometry* g2);
3604
3606
3607/* ========== Buffer related functions ========== */
3612
3624extern GEOSGeometry GEOS_DLL *GEOSBuffer(const GEOSGeometry* g,
3625 double width, int quadsegs);
3626
3636
3643extern void GEOS_DLL GEOSBufferParams_destroy(GEOSBufferParams* parms);
3644
3654 int style);
3655
3665 int joinStyle);
3666
3680 double mitreLimit);
3681
3694 int quadSegs);
3695
3708 int singleSided);
3709
3721 const GEOSGeometry* g,
3722 const GEOSBufferParams* p,
3723 double width);
3724
3739 const GEOSGeometry* g,
3740 double width,
3741 int quadsegs,
3742 int endCapStyle,
3743 int joinStyle,
3744 double mitreLimit);
3745
3769 double width, int quadsegs, int joinStyle, double mitreLimit);
3770
3772
3773
3774/* ====================================================================== */
3780
3793
3794
3818extern int GEOS_DLL GEOSCoverageIsValid(
3819 const GEOSGeometry* input,
3820 double gapWidth,
3821 GEOSGeometry** invalidEdges);
3822
3849 const GEOSGeometry* input,
3850 double tolerance,
3851 int preserveBoundary);
3852
3854
3855/* ========== Construction Operations ========== */
3860
3869extern GEOSGeometry GEOS_DLL *GEOSEnvelope(const GEOSGeometry* g);
3870
3884extern GEOSGeometry GEOS_DLL *GEOSBoundary(const GEOSGeometry* g);
3885
3895extern GEOSGeometry GEOS_DLL *GEOSConvexHull(const GEOSGeometry* g);
3896
3928 const GEOSGeometry* g,
3929 double ratio,
3930 unsigned int allowHoles);
3931
3962 const GEOSGeometry* g,
3963 double length,
3964 unsigned int allowHoles);
3965
4005 const GEOSGeometry* g,
4006 double lengthRatio,
4007 unsigned int isTight,
4008 unsigned int isHolesAllowed);
4009
4030 const GEOSGeometry* g,
4031 unsigned int isOuter,
4032 double vertexNumFraction);
4033
4034
4044
4067 const GEOSGeometry* g,
4068 unsigned int isOuter,
4069 unsigned int parameterMode,
4070 double parameter);
4071
4086
4112 const GEOSGeometry* g,
4113 double tolerance);
4114
4144 const GEOSGeometry* obstacles,
4145 const GEOSGeometry* boundary,
4146 double tolerance);
4147
4161extern GEOSGeometry GEOS_DLL *GEOSMinimumWidth(const GEOSGeometry* g);
4162
4163
4174
4184extern GEOSGeometry GEOS_DLL *GEOSGetCentroid(const GEOSGeometry* g);
4185
4199 const GEOSGeometry* g,
4200 double* radius,
4201 GEOSGeometry** center);
4202
4217 const GEOSGeometry *g,
4218 double tolerance,
4219 int onlyEdges);
4220
4233 const GEOSGeometry *g);
4234
4237{
4245
4267 const GEOSGeometry *g,
4268 const GEOSGeometry *env,
4269 double tolerance,
4270 int flags);
4271
4273
4274/* ============================================================== */
4279
4290extern GEOSGeometry GEOS_DLL *GEOSNode(const GEOSGeometry* g);
4291
4335 const GEOSGeometry * const geoms[],
4336 unsigned int ngeoms);
4337
4353 const GEOSGeometry * const geoms[],
4354 unsigned int ngeoms);
4355
4370 const GEOSGeometry * const geoms[],
4371 unsigned int ngeoms);
4372
4388 const GEOSGeometry* input,
4389 GEOSGeometry** cuts,
4390 GEOSGeometry** dangles,
4391 GEOSGeometry** invalid);
4392
4404extern GEOSGeometry GEOS_DLL *GEOSBuildArea(const GEOSGeometry* g);
4405
4407
4408/* ============================================================== */
4413
4427extern GEOSGeometry GEOS_DLL *GEOSDensify(
4428 const GEOSGeometry* g,
4429 double tolerance);
4430
4440extern GEOSGeometry GEOS_DLL *GEOSLineMerge(const GEOSGeometry* g);
4441
4454
4467 const GEOSGeometry* g,
4468 double start_fraction,
4469 double end_fraction);
4470
4481extern GEOSGeometry GEOS_DLL *GEOSReverse(const GEOSGeometry* g);
4482
4498 const GEOSGeometry* g,
4499 double tolerance);
4500
4518 const GEOSGeometry* g,
4519 double tolerance);
4520
4532 const GEOSGeometry* g);
4533
4549extern int GEOS_DLL GEOSHilbertCode(
4550 const GEOSGeometry *geom,
4551 const GEOSGeometry* extent,
4552 unsigned int level,
4553 unsigned int *code
4554);
4555
4571 const GEOSGeometry* g,
4572 GEOSTransformXYCallback callback,
4573 void* userdata);
4574
4596extern GEOSGeometry GEOS_DLL *GEOSSnap(
4597 const GEOSGeometry* input,
4598 const GEOSGeometry* snap_target,
4599 double tolerance);
4600
4631 const GEOSGeometry *g,
4632 double gridSize,
4633 int flags);
4634
4636
4637/* ============================================================== */
4642
4651extern char GEOS_DLL GEOSDisjoint(const GEOSGeometry* g1, const GEOSGeometry* g2);
4652
4662extern char GEOS_DLL GEOSTouches(const GEOSGeometry* g1, const GEOSGeometry* g2);
4663
4672extern char GEOS_DLL GEOSIntersects(const GEOSGeometry* g1, const GEOSGeometry* g2);
4673
4683extern char GEOS_DLL GEOSCrosses(const GEOSGeometry* g1, const GEOSGeometry* g2);
4684
4694extern char GEOS_DLL GEOSWithin(const GEOSGeometry* g1, const GEOSGeometry* g2);
4695
4704extern char GEOS_DLL GEOSContains(const GEOSGeometry* g1, const GEOSGeometry* g2);
4705
4715extern char GEOS_DLL GEOSOverlaps(const GEOSGeometry* g1, const GEOSGeometry* g2);
4716
4725extern char GEOS_DLL GEOSEquals(const GEOSGeometry* g1, const GEOSGeometry* g2);
4726
4737extern char GEOS_DLL GEOSCovers(const GEOSGeometry* g1, const GEOSGeometry* g2);
4738
4749extern char GEOS_DLL GEOSCoveredBy(const GEOSGeometry* g1, const GEOSGeometry* g2);
4750
4768extern char GEOS_DLL GEOSEqualsExact(
4769 const GEOSGeometry* g1,
4770 const GEOSGeometry* g2,
4771 double tolerance);
4772
4785extern char GEOS_DLL GEOSEqualsIdentical(
4786 const GEOSGeometry* g1,
4787 const GEOSGeometry* g2);
4788
4802extern char GEOS_DLL GEOSRelatePattern(
4803 const GEOSGeometry* g1,
4804 const GEOSGeometry* g2,
4805 const char *pat);
4806
4816extern char GEOS_DLL *GEOSRelate(
4817 const GEOSGeometry* g1,
4818 const GEOSGeometry* g2);
4819
4829extern char GEOS_DLL GEOSRelatePatternMatch(
4830 const char *mat,
4831 const char *pat);
4832
4846extern char GEOS_DLL *GEOSRelateBoundaryNodeRule(
4847 const GEOSGeometry* g1,
4848 const GEOSGeometry* g2,
4849 int bnr);
4850
4852
4853/* ========== Prepared Geometry Binary predicates ========== */
4854
4866
4880extern const GEOSPreparedGeometry GEOS_DLL *GEOSPrepare(const GEOSGeometry* g);
4881
4890extern void GEOS_DLL GEOSPreparedGeom_destroy(const GEOSPreparedGeometry* g);
4891
4902extern char GEOS_DLL GEOSPreparedContains(
4903 const GEOSPreparedGeometry* pg1,
4904 const GEOSGeometry* g2);
4905
4917extern char GEOS_DLL GEOSPreparedContainsXY(
4918 const GEOSPreparedGeometry* pg1,
4919 double x,
4920 double y);
4921
4932extern char GEOS_DLL GEOSPreparedContainsProperly(
4933 const GEOSPreparedGeometry* pg1,
4934 const GEOSGeometry* g2);
4935
4946extern char GEOS_DLL GEOSPreparedCoveredBy(
4947 const GEOSPreparedGeometry* pg1,
4948 const GEOSGeometry* g2);
4949
4960extern char GEOS_DLL GEOSPreparedCovers(
4961 const GEOSPreparedGeometry* pg1,
4962 const GEOSGeometry* g2);
4963
4974extern char GEOS_DLL GEOSPreparedCrosses(
4975 const GEOSPreparedGeometry* pg1,
4976 const GEOSGeometry* g2);
4977
4988extern char GEOS_DLL GEOSPreparedDisjoint(
4989 const GEOSPreparedGeometry* pg1,
4990 const GEOSGeometry* g2);
4991
5002extern char GEOS_DLL GEOSPreparedIntersects(
5003 const GEOSPreparedGeometry* pg1,
5004 const GEOSGeometry* g2);
5005
5017extern char GEOS_DLL GEOSPreparedIntersectsXY(
5018 const GEOSPreparedGeometry* pg1,
5019 double x,
5020 double y);
5021
5032extern char GEOS_DLL GEOSPreparedOverlaps(
5033 const GEOSPreparedGeometry* pg1,
5034 const GEOSGeometry* g2);
5035
5046extern char GEOS_DLL GEOSPreparedTouches(
5047 const GEOSPreparedGeometry* pg1,
5048 const GEOSGeometry* g2);
5049
5060extern char GEOS_DLL GEOSPreparedWithin(
5061 const GEOSPreparedGeometry* pg1,
5062 const GEOSGeometry* g2);
5063
5077 const GEOSPreparedGeometry* pg1,
5078 const GEOSGeometry* g2);
5079
5093extern int GEOS_DLL GEOSPreparedDistance(
5094 const GEOSPreparedGeometry* pg1,
5095 const GEOSGeometry* g2,
5096 double *dist);
5097
5112extern char GEOS_DLL GEOSPreparedDistanceWithin(
5113 const GEOSPreparedGeometry* pg1,
5114 const GEOSGeometry* g2,
5115 double dist);
5116
5118
5119/* ========== STRtree functions ========== */
5125
5138extern GEOSSTRtree GEOS_DLL *GEOSSTRtree_create(size_t nodeCapacity);
5139
5151extern int GEOS_DLL GEOSSTRtree_build(GEOSSTRtree *tree);
5152
5165extern void GEOS_DLL GEOSSTRtree_insert(
5166 GEOSSTRtree *tree,
5167 const GEOSGeometry *g,
5168 void *item);
5169
5184extern void GEOS_DLL GEOSSTRtree_query(
5185 GEOSSTRtree *tree,
5186 const GEOSGeometry *g,
5187 GEOSQueryCallback callback,
5188 void *userdata);
5189
5204extern const GEOSGeometry GEOS_DLL *GEOSSTRtree_nearest(
5205 GEOSSTRtree *tree,
5206 const GEOSGeometry* geom);
5207
5228extern const void GEOS_DLL *GEOSSTRtree_nearest_generic(
5229 GEOSSTRtree *tree,
5230 const void* item,
5231 const GEOSGeometry* itemEnvelope,
5232 GEOSDistanceCallback distancefn,
5233 void* userdata);
5234
5245extern void GEOS_DLL GEOSSTRtree_iterate(
5246 GEOSSTRtree *tree,
5247 GEOSQueryCallback callback,
5248 void *userdata);
5249
5264extern char GEOS_DLL GEOSSTRtree_remove(
5265 GEOSSTRtree *tree,
5266 const GEOSGeometry *g,
5267 void *item);
5268
5277extern void GEOS_DLL GEOSSTRtree_destroy(GEOSSTRtree *tree);
5278
5280
5281/* ========== Algorithms ====================================================== */
5286
5305extern int GEOS_DLL GEOSSegmentIntersection(
5306 double ax0, double ay0,
5307 double ax1, double ay1,
5308 double bx0, double by0,
5309 double bx1, double by1,
5310 double* cx, double* cy);
5311
5327extern int GEOS_DLL GEOSOrientationIndex(
5328 double Ax, double Ay,
5329 double Bx, double By,
5330 double Px, double Py);
5331
5333
5334/* ========= Reader and Writer APIs ========= */
5335
5340/* ========= WKT Reader ========= */
5341
5348
5354extern void GEOS_DLL GEOSWKTReader_destroy(GEOSWKTReader* reader);
5355
5365 GEOSWKTReader* reader,
5366 const char *wkt);
5367
5377 GEOSWKTReader *reader,
5378 char doFix);
5379
5380/* ========= WKT Writer ========= */
5381
5388
5394extern void GEOS_DLL GEOSWKTWriter_destroy(
5395 GEOSWKTWriter* writer);
5396
5406extern char GEOS_DLL *GEOSWKTWriter_write(
5407 GEOSWKTWriter* writer,
5408 const GEOSGeometry* g);
5409
5421extern void GEOS_DLL GEOSWKTWriter_setTrim(
5422 GEOSWKTWriter *writer,
5423 char trim);
5424
5434 GEOSWKTWriter *writer,
5435 int precision);
5436
5446 GEOSWKTWriter *writer,
5447 int dim);
5448
5457
5468extern void GEOS_DLL GEOSWKTWriter_setOld3D(
5469 GEOSWKTWriter *writer,
5470 int useOld3D);
5472
5473/* ============================================================================== */
5478
5479/* ========== WKB Reader ========== */
5486
5492extern void GEOS_DLL GEOSWKBReader_destroy(
5493 GEOSWKBReader* reader);
5494
5504 GEOSWKBReader *reader,
5505 char doFix);
5506
5516 GEOSWKBReader* reader,
5517 const unsigned char *wkb,
5518 size_t size);
5519
5529 GEOSWKBReader* reader,
5530 const unsigned char *hex,
5531 size_t size);
5532
5533/* ========== WKB Writer ========== */
5534
5541
5547extern void GEOS_DLL GEOSWKBWriter_destroy(GEOSWKBWriter* writer);
5548
5558extern unsigned char GEOS_DLL *GEOSWKBWriter_write(
5559 GEOSWKBWriter* writer,
5560 const GEOSGeometry* g,
5561 size_t *size);
5562
5572extern unsigned char GEOS_DLL *GEOSWKBWriter_writeHEX(
5573 GEOSWKBWriter* writer,
5574 const GEOSGeometry* g,
5575 size_t *size);
5576
5586 const GEOSWKBWriter* writer);
5587
5596 GEOSWKBWriter* writer,
5597 int newDimension);
5598
5608extern int GEOS_DLL GEOSWKBWriter_getByteOrder(
5609 const GEOSWKBWriter* writer);
5610
5618extern void GEOS_DLL GEOSWKBWriter_setByteOrder(
5619 GEOSWKBWriter* writer,
5620 int byteOrder);
5621
5636extern int GEOS_DLL GEOSWKBWriter_getFlavor(
5637 const GEOSWKBWriter* writer);
5638
5647extern void GEOS_DLL GEOSWKBWriter_setFlavor(
5648 GEOSWKBWriter* writer,
5649 int flavor);
5650
5656extern char GEOS_DLL GEOSWKBWriter_getIncludeSRID(
5657 const GEOSWKBWriter* writer);
5658
5666extern void GEOS_DLL GEOSWKBWriter_setIncludeSRID(
5667 GEOSWKBWriter* writer,
5668 const char writeSRID);
5669
5671
5672/* ============================================================================= */
5677/* ========= GeoJSON Reader ========= */
5678
5686
5693extern void GEOS_DLL GEOSGeoJSONReader_destroy(GEOSGeoJSONReader* reader);
5694
5706 GEOSGeoJSONReader* reader,
5707 const char *geojson);
5708
5709/* ========= GeoJSON Writer ========= */
5710
5718
5725extern void GEOS_DLL GEOSGeoJSONWriter_destroy(GEOSGeoJSONWriter* writer);
5726
5738 GEOSGeoJSONWriter* writer,
5739 const GEOSGeometry* g,
5740 int indent);
5741
5743
5744#endif /* #ifndef GEOS_USE_ONLY_R_API */
5745
5746/* ====================================================================== */
5747/* DEPRECATIONS */
5748/* ====================================================================== */
5749
5755
5760 const GEOSGeometry* g,
5761 double width, int quadsegs,
5762 int joinStyle, double mitreLimit,
5763 int leftSide);
5764
5769 GEOSContextHandle_t handle,
5770 const GEOSGeometry* g,
5771 double width, int quadsegs,
5772 int joinStyle, double mitreLimit,
5773 int leftSide);
5774
5780 GEOSMessageHandler notice_function,
5781 GEOSMessageHandler error_function);
5782
5786extern void GEOS_DLL finishGEOS_r(GEOSContextHandle_t handle);
5787
5792 GEOSContextHandle_t handle,
5793 const char *wkt);
5794
5798extern char GEOS_DLL *GEOSGeomToWKT_r(
5799 GEOSContextHandle_t handle,
5800 const GEOSGeometry* g);
5801
5805extern int GEOS_DLL GEOS_getWKBOutputDims_r(
5806 GEOSContextHandle_t handle);
5807
5811extern int GEOS_DLL GEOS_setWKBOutputDims_r(
5812 GEOSContextHandle_t handle,
5813 int newDims);
5814
5818extern int GEOS_DLL GEOS_getWKBByteOrder_r(
5819 GEOSContextHandle_t handle);
5820
5824extern int GEOS_DLL GEOS_setWKBByteOrder_r(
5825 GEOSContextHandle_t handle,
5826 int byteOrder);
5827
5832 GEOSContextHandle_t handle,
5833 const unsigned char *wkb,
5834 size_t size);
5835
5839extern unsigned char GEOS_DLL *GEOSGeomToWKB_buf_r(
5840 GEOSContextHandle_t handle,
5841 const GEOSGeometry* g,
5842 size_t *size);
5843
5848 GEOSContextHandle_t handle,
5849 const unsigned char *hex,
5850 size_t size);
5851
5855extern unsigned char GEOS_DLL *GEOSGeomToHEX_buf_r(
5856 GEOSContextHandle_t handle,
5857 const GEOSGeometry* g,
5858 size_t *size);
5859
5863extern GEOSGeometry GEOS_DLL *GEOSGeomFromWKT(const char *wkt);
5864
5868extern char GEOS_DLL *GEOSGeomToWKT(const GEOSGeometry* g);
5869
5873extern int GEOS_DLL GEOS_getWKBOutputDims(void);
5874
5878extern int GEOS_DLL GEOS_setWKBOutputDims(int newDims);
5879
5883extern int GEOS_DLL GEOS_getWKBByteOrder(void);
5884
5888extern int GEOS_DLL GEOS_setWKBByteOrder(int byteOrder);
5889
5893extern GEOSGeometry GEOS_DLL *GEOSGeomFromWKB_buf(const unsigned char *wkb, size_t size);
5894
5898extern unsigned char GEOS_DLL *GEOSGeomToWKB_buf(const GEOSGeometry* g, size_t *size);
5899
5903extern GEOSGeometry GEOS_DLL *GEOSGeomFromHEX_buf(const unsigned char *hex, size_t size);
5904
5908extern unsigned char GEOS_DLL *GEOSGeomToHEX_buf(const GEOSGeometry* g, size_t *size);
5909
5914
5919 GEOSContextHandle_t handle,
5920 const GEOSGeometry* g);
5921
5923
5924/* ====================================================================== */
5925/* END DEPRECATIONS */
5926/* ====================================================================== */
5927
5928
5929#ifdef __cplusplus
5930} // extern "C"
5931#endif
5932
5933#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)
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)
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:1822
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)
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:271
GEOSGeometry * GEOSPolygonize_valid(const GEOSGeometry *const geoms[], unsigned int ngeoms)
GEOSWKTReader * GEOSWKTReader_create(void)
struct GEOSWKBReader_t GEOSWKBReader
Definition geos_c.h:1808
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)
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:154
GEOSGeometry * GEOSGeomGetStartPoint_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
void GEOSSTRtree_destroy(GEOSSTRtree *tree)
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:197
@ GEOS_MULTILINESTRING
Definition geos_c.h:209
@ GEOS_GEOMETRYCOLLECTION
Definition geos_c.h:213
@ GEOS_POINT
Definition geos_c.h:199
@ GEOS_MULTIPOLYGON
Definition geos_c.h:211
@ GEOS_LINEARRING
Definition geos_c.h:203
@ GEOS_POLYGON
Definition geos_c.h:205
@ GEOS_MULTIPOINT
Definition geos_c.h:207
@ GEOS_LINESTRING
Definition geos_c.h:201
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:252
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:139
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)
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:238
@ GEOS_WKB_ISO
Definition geos_c.h:242
@ GEOS_WKB_EXTENDED
Definition geos_c.h:240
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 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)
void(* GEOSMessageHandler_r)(const char *message, void *userdata)
Definition geos_c.h:117
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)
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:591
@ GEOSBUF_CAP_SQUARE
Definition geos_c.h:600
@ GEOSBUF_CAP_FLAT
Definition geos_c.h:597
@ GEOSBUF_CAP_ROUND
Definition geos_c.h:594
GEOSGeometry * GEOSConvexHull(const GEOSGeometry *g)
GEOSVoronoiFlags
Definition geos_c.h:4237
@ GEOS_VORONOI_PRESERVE_ORDER
Definition geos_c.h:4243
@ GEOS_VORONOI_ONLY_EDGES
Definition geos_c.h:4239
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:1409
@ GEOSVALID_ALLOW_SELFTOUCHING_RING_FORMING_HOLE
Definition geos_c.h:1411
void GEOSWKBWriter_setByteOrder_r(GEOSContextHandle_t handle, GEOSWKBWriter *writer, int byteOrder)
GEOSBufferParams * GEOSBufferParams_create(void)
struct GEOSWKBWriter_t GEOSWKBWriter
Definition geos_c.h:1815
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)
char GEOSRelatePatternMatch_r(GEOSContextHandle_t handle, const char *mat, const char *pat)
struct GEOSWKTWriter_t GEOSWKTWriter
Definition geos_c.h:1801
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)
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:222
@ GEOS_WKB_NDR
Definition geos_c.h:226
@ GEOS_WKB_XDR
Definition geos_c.h:224
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:1794
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)
char GEOSRelatePattern(const GEOSGeometry *g1, const GEOSGeometry *g2, const char *pat)
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:1366
@ GEOSRELATE_BNR_OGC
Definition geos_c.h:1370
@ GEOSRELATE_BNR_MULTIVALENT_ENDPOINT
Definition geos_c.h:1374
@ GEOSRELATE_BNR_ENDPOINT
Definition geos_c.h:1372
@ GEOSRELATE_BNR_MOD2
Definition geos_c.h:1368
@ GEOSRELATE_BNR_MONOVALENT_ENDPOINT
Definition geos_c.h:1376
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:4038
@ GEOSHULL_PARAM_AREA_RATIO
Definition geos_c.h:4042
@ GEOSHULL_PARAM_VERTEX_RATIO
Definition geos_c.h:4040
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:607
@ GEOSBUF_JOIN_MITRE
Definition geos_c.h:617
@ GEOSBUF_JOIN_ROUND
Definition geos_c.h:612
@ GEOSBUF_JOIN_BEVEL
Definition geos_c.h:622
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:290
char GEOSRelatePatternMatch(const char *mat, const char *pat)
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)
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:1829
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)
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)
char GEOSRelatePattern_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, const char *pat)
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 * 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)
int GEOSFrechetDistanceDensify(const GEOSGeometry *g1, const GEOSGeometry *g2, double densifyFrac, double *dist)
struct GEOSBufParams_t GEOSBufferParams
Definition geos_c.h:168
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:1548
@ GEOS_PREC_NO_TOPO
Definition geos_c.h:1552
@ GEOS_PREC_KEEP_COLLAPSED
Definition geos_c.h:1554
@ GEOS_PREC_VALID_OUTPUT
Definition geos_c.h:1550
int GEOSGetNumGeometries(const GEOSGeometry *g)
void * GEOSGeom_getUserData(const GEOSGeometry *g)
int GEOSGetNumCoordinates(const GEOSGeometry *g)
struct GEOSMakeValidParams_t GEOSMakeValidParams
Definition geos_c.h:175
void GEOS_finish_r(GEOSContextHandle_t handle)
GEOSMakeValidMethods
Definition geos_c.h:1439
@ GEOS_MAKE_VALID_LINEWORK
Definition geos_c.h:1443
@ GEOS_MAKE_VALID_STRUCTURE
Definition geos_c.h:1448
GEOSGeometry * GEOSWKBReader_readHEX(GEOSWKBReader *reader, const unsigned char *hex, size_t size)
int GEOSGeom_getYMax_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *value)
GEOSGeometry * GEOSGeom_createEmptyLineString(void)
const GEOSGeometry * GEOSGetInteriorRingN_r(GEOSContextHandle_t handle, const GEOSGeometry *g, int n)
GEOSGeometry * GEOSInterpolateNormalized(const GEOSGeometry *line, double proportion)
GEOSGeometry * GEOSGeom_clone(const GEOSGeometry *g)
void GEOSGeoJSONWriter_destroy_r(GEOSContextHandle_t handle, GEOSGeoJSONWriter *writer)
int GEOSBufferParams_setSingleSided(GEOSBufferParams *p, int singleSided)
const GEOSGeometry * GEOSGetInteriorRingN(const GEOSGeometry *g, int n)
int GEOSGeomGetZ_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *z)
GEOSGeometry * GEOSUnionPrec_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double gridSize)
GEOSGeometry * GEOSGeom_createPointFromXY_r(GEOSContextHandle_t handle, double x, double y)
char GEOSEqualsIdentical_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
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)
void(* GEOSMessageHandler)(const char *fmt,...)
Definition geos_c.h:105
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)
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)
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:306
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:161
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)
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)
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_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:146