GEOS  3.11.0beta2
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>
47 using std::size_t;
48 #endif
49 
50 #ifdef __cplusplus
51 extern "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 11
65 #endif
66 #ifndef GEOS_VERSION_PATCH
67 #define GEOS_VERSION_PATCH 0beta2
68 #endif
69 #ifndef GEOS_VERSION
70 #define GEOS_VERSION "3.11.0beta2"
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 16
78 #define GEOS_CAPI_VERSION_PATCH 0
79 #define GEOS_CAPI_VERSION "3.11.0beta2-CAPI-1.16.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 
95 typedef struct GEOSContextHandle_HS *GEOSContextHandle_t;
96 
106 typedef void (*GEOSMessageHandler)(const char *fmt, ...);
107 
118 typedef void (*GEOSMessageHandler_r)(const char *message, void *userdata);
119 
120 /*
121 * When we're included by geos_c.cpp, these types are #defined to the
122 * C++ definitions via preprocessor. We don't touch them to allow the
123 * compiler to cross-check the declarations. However, for all "normal"
124 * C-API users, we need to define these types as "opaque" struct pointers, as
125 * those clients don't have access to the original C++ headers, by design.
126 */
127 #ifndef GEOSGeometry
128 
140 typedef struct GEOSGeom_t GEOSGeometry;
141 
147 typedef struct GEOSPrepGeom_t GEOSPreparedGeometry;
148 
154 typedef struct GEOSCoordSeq_t GEOSCoordSequence;
155 
161 typedef struct GEOSSTRtree_t GEOSSTRtree;
162 
168 typedef struct GEOSBufParams_t GEOSBufferParams;
169 
175 typedef 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 */
185 typedef GEOSGeometry* GEOSGeom;
186 typedef GEOSCoordSequence* GEOSCoordSeq;
187 
214 };
215 
226  GEOS_WKB_NDR = 1
227 };
228 
242  GEOS_WKB_ISO = 2
243 };
244 
252 typedef void (*GEOSQueryCallback)(void *item, void *userdata);
253 
271 typedef int (*GEOSDistanceCallback)(
272  const void* item1,
273  const void* item2,
274  double* distance,
275  void* userdata);
276 
277 
290 typedef int (*GEOSTransformXYCallback)(
291  double* x,
292  double* y,
293  void* userdata);
294 
295 
296 /* ========== Interruption ========== */
297 
306 typedef void (GEOSInterruptCallback)(void);
307 
316 
320 extern void GEOS_DLL GEOS_interruptRequest(void);
321 
325 extern void GEOS_DLL GEOS_interruptCancel(void);
326 
327 /* ========== Initialization and Cleanup ========== */
328 
334 extern GEOSContextHandle_t GEOS_DLL GEOS_init_r(void);
335 
341 extern void GEOS_DLL GEOS_finish_r(GEOSContextHandle_t handle);
342 
350  GEOSContextHandle_t extHandle,
351  GEOSMessageHandler nf);
352 
362  GEOSContextHandle_t extHandle,
363  GEOSMessageHandler ef);
364 
373  GEOSContextHandle_t extHandle,
375  void *userData);
376 
387  GEOSContextHandle_t extHandle,
389  void *userData);
390 
391 /* ========== Coordinate Sequence functions ========== */
392 
395  GEOSContextHandle_t handle,
396  unsigned int size,
397  unsigned int dims);
398 
401  GEOSContextHandle_t handle,
402  const double* buf,
403  unsigned int size,
404  int hasZ,
405  int hasM);
406 
409  GEOSContextHandle_t handle,
410  const double* x,
411  const double* y,
412  const double* z,
413  const double* m,
414  unsigned int size);
415 
417 extern int GEOS_DLL GEOSCoordSeq_copyToBuffer_r(
418  GEOSContextHandle_t handle,
419  const GEOSCoordSequence* s,
420  double* buf,
421  int hasZ,
422  int hasM);
423 
425 extern int GEOS_DLL GEOSCoordSeq_copyToArrays_r(
426  GEOSContextHandle_t handle,
427  const GEOSCoordSequence* s,
428  double* x,
429  double* y,
430  double* z,
431  double* m);
432 
435  GEOSContextHandle_t handle,
436  const GEOSCoordSequence* s);
437 
439 extern void GEOS_DLL GEOSCoordSeq_destroy_r(
440  GEOSContextHandle_t handle,
441  GEOSCoordSequence* s);
442 
444 extern int GEOS_DLL GEOSCoordSeq_setX_r(
445  GEOSContextHandle_t handle,
446  GEOSCoordSequence* s, unsigned int idx,
447  double val);
448 
450 extern int GEOS_DLL GEOSCoordSeq_setY_r(
451  GEOSContextHandle_t handle,
452  GEOSCoordSequence* s, unsigned int idx,
453  double val);
454 
456 extern int GEOS_DLL GEOSCoordSeq_setZ_r(
457  GEOSContextHandle_t handle,
458  GEOSCoordSequence* s, unsigned int idx,
459  double val);
460 
462 extern int GEOS_DLL GEOSCoordSeq_setXY_r(
463  GEOSContextHandle_t handle,
464  GEOSCoordSequence* s, unsigned int idx,
465  double x, double y);
466 
468 extern int GEOS_DLL GEOSCoordSeq_setXYZ_r(
469  GEOSContextHandle_t handle,
470  GEOSCoordSequence* s, unsigned int idx,
471  double x, double y, double z);
472 
474 extern int GEOS_DLL GEOSCoordSeq_setOrdinate_r(
475  GEOSContextHandle_t handle,
477  unsigned int idx,
478  unsigned int dim, double val);
479 
481 extern int GEOS_DLL GEOSCoordSeq_getX_r(
482  GEOSContextHandle_t handle,
483  const GEOSCoordSequence* s,
484  unsigned int idx, double *val);
485 
487 extern int GEOS_DLL GEOSCoordSeq_getY_r(
488  GEOSContextHandle_t handle,
489  const GEOSCoordSequence* s,
490  unsigned int idx, double *val);
491 
493 extern int GEOS_DLL GEOSCoordSeq_getZ_r(
494  GEOSContextHandle_t handle,
495  const GEOSCoordSequence* s,
496  unsigned int idx, double *val);
497 
499 extern int GEOS_DLL GEOSCoordSeq_getXY_r(
500  GEOSContextHandle_t handle,
501  const GEOSCoordSequence* s,
502  unsigned int idx,
503  double *x, double *y);
504 
506 extern int GEOS_DLL GEOSCoordSeq_getXYZ_r(
507  GEOSContextHandle_t handle,
508  const GEOSCoordSequence* s,
509  unsigned int idx,
510  double *x, double *y, double *z);
511 
513 extern int GEOS_DLL GEOSCoordSeq_getOrdinate_r(
514  GEOSContextHandle_t handle,
515  const GEOSCoordSequence* s,
516  unsigned int idx,
517  unsigned int dim, double *val);
518 
520 extern int GEOS_DLL GEOSCoordSeq_getSize_r(
521  GEOSContextHandle_t handle,
522  const GEOSCoordSequence* s,
523  unsigned int *size);
524 
526 extern int GEOS_DLL GEOSCoordSeq_getDimensions_r(
527  GEOSContextHandle_t handle,
528  const GEOSCoordSequence* s,
529  unsigned int *dims);
530 
532 extern int GEOS_DLL GEOSCoordSeq_isCCW_r(
533  GEOSContextHandle_t handle,
534  const GEOSCoordSequence* s,
535  char* is_ccw);
536 
537 /* ========= Linear referencing functions ========= */
538 
540 extern double GEOS_DLL GEOSProject_r(
541  GEOSContextHandle_t handle,
542  const GEOSGeometry *line,
543  const GEOSGeometry *point);
544 
547  GEOSContextHandle_t handle,
548  const GEOSGeometry *line,
549  double d);
550 
552 extern double GEOS_DLL GEOSProjectNormalized_r(
553  GEOSContextHandle_t handle,
554  const GEOSGeometry *g,
555  const GEOSGeometry *p);
556 
559  GEOSContextHandle_t handle,
560  const GEOSGeometry *g,
561  double d);
562 
563 /* ========== Buffer related functions ========== */
564 
566 extern GEOSGeometry GEOS_DLL *GEOSBuffer_r(
567  GEOSContextHandle_t handle,
568  const GEOSGeometry* g,
569  double width, int quadsegs);
570 
576 
579 
582 
585 };
586 
607 };
608 
611  GEOSContextHandle_t handle);
612 
614 extern void GEOS_DLL GEOSBufferParams_destroy_r(
615  GEOSContextHandle_t handle,
616  GEOSBufferParams* parms);
617 
620  GEOSContextHandle_t handle,
621  GEOSBufferParams* p,
622  int style);
623 
626  GEOSContextHandle_t handle,
627  GEOSBufferParams* p,
628  int joinStyle);
629 
632  GEOSContextHandle_t handle,
633  GEOSBufferParams* p,
634  double mitreLimit);
635 
638  GEOSContextHandle_t handle,
639  GEOSBufferParams* p,
640  int quadSegs);
641 
644  GEOSContextHandle_t handle,
645  GEOSBufferParams* p,
646  int singleSided);
647 
650  GEOSContextHandle_t handle,
651  const GEOSGeometry* g,
652  const GEOSBufferParams* p,
653  double width);
654 
657  GEOSContextHandle_t handle,
658  const GEOSGeometry* g,
659  double width, int quadsegs, int endCapStyle,
660  int joinStyle, double mitreLimit);
661 
663 extern GEOSGeometry GEOS_DLL *GEOSDensify_r(
664  GEOSContextHandle_t handle,
665  const GEOSGeometry* g,
666  double tolerance);
667 
670  GEOSContextHandle_t handle,
671  const GEOSGeometry* g, double width, int quadsegs,
672  int joinStyle, double mitreLimit);
673 
674 
675 /* ========= Geometry Constructors ========= */
676 
679  GEOSContextHandle_t handle,
680  GEOSCoordSequence* s);
681 
684  GEOSContextHandle_t handle,
685  double x, double y);
686 
689  GEOSContextHandle_t handle);
690 
693  GEOSContextHandle_t handle,
694  GEOSCoordSequence* s);
695 
698  GEOSContextHandle_t handle,
699  GEOSCoordSequence* s);
700 
703  GEOSContextHandle_t handle);
704 
707  GEOSContextHandle_t handle);
708 
711  GEOSContextHandle_t handle,
712  GEOSGeometry* shell,
713  GEOSGeometry** holes,
714  unsigned int nholes);
715 
718  GEOSContextHandle_t handle,
719  int type,
720  GEOSGeometry* *geoms,
721  unsigned int ngeoms);
722 
725  GEOSContextHandle_t handle, int type);
726 
729  GEOSContextHandle_t handle,
730  double xmin, double ymin,
731  double xmax, double ymax);
732 
735  GEOSContextHandle_t handle,
736  const GEOSGeometry* g);
737 
738 /* ========= Memory management ========= */
739 
741 extern void GEOS_DLL GEOSGeom_destroy_r(
742  GEOSContextHandle_t handle,
743  GEOSGeometry* g);
744 
745 /* ========= Topology Operations ========= */
746 
748 extern GEOSGeometry GEOS_DLL *GEOSEnvelope_r(
749  GEOSContextHandle_t handle,
750  const GEOSGeometry* g);
751 
754  GEOSContextHandle_t handle,
755  const GEOSGeometry* g1,
756  const GEOSGeometry* g2);
757 
760  GEOSContextHandle_t handle,
761  const GEOSGeometry* g1,
762  const GEOSGeometry* g2,
763  double gridSize);
764 
767  GEOSContextHandle_t handle,
768  const GEOSGeometry* g);
769 
772  GEOSContextHandle_t handle,
773  const GEOSGeometry* g,
774  double ratio,
775  unsigned int allowHoles);
776 
779  GEOSContextHandle_t handle,
780  const GEOSGeometry* g,
781  unsigned int isOuter,
782  double vertexNumFraction);
783 
786  GEOSContextHandle_t handle,
787  const GEOSGeometry* g,
788  unsigned int isOuter,
789  unsigned int parameterMode,
790  double parameter);
791 
794  GEOSContextHandle_t handle,
795  const GEOSGeometry* g,
796  double lengthRatio,
797  unsigned int isTight,
798  unsigned int isHolesAllowed);
799 
802  GEOSContextHandle_t handle,
803  const GEOSGeometry* g);
804 
807  GEOSContextHandle_t handle,
808  const GEOSGeometry* g,
809  double tolerance);
810 
813  GEOSContextHandle_t handle,
814  const GEOSGeometry* g,
815  const GEOSGeometry* boundary,
816  double tolerance);
817 
820  GEOSContextHandle_t handle,
821  const GEOSGeometry* g);
822 
825  GEOSContextHandle_t handle,
826  const GEOSGeometry* g);
827 
829 extern int GEOS_DLL GEOSMinimumClearance_r(
830  GEOSContextHandle_t handle,
831  const GEOSGeometry* g,
832  double* distance);
833 
836  GEOSContextHandle_t handle,
837  const GEOSGeometry* g1,
838  const GEOSGeometry* g2);
839 
842  GEOSContextHandle_t handle,
843  const GEOSGeometry* g1,
844  const GEOSGeometry* g2,
845  double gridSize);
846 
849  GEOSContextHandle_t handle,
850  const GEOSGeometry* g1,
851  const GEOSGeometry* g2);
852 
855  GEOSContextHandle_t handle,
856  const GEOSGeometry* g1,
857  const GEOSGeometry* g2,
858  double gridSize);
859 
861 extern GEOSGeometry GEOS_DLL *GEOSBoundary_r(
862  GEOSContextHandle_t handle,
863  const GEOSGeometry* g);
864 
866 extern GEOSGeometry GEOS_DLL *GEOSUnion_r(
867  GEOSContextHandle_t handle,
868  const GEOSGeometry* g1,
869  const GEOSGeometry* g2);
870 
872 extern GEOSGeometry GEOS_DLL *GEOSUnionPrec_r(
873  GEOSContextHandle_t handle,
874  const GEOSGeometry* g1,
875  const GEOSGeometry* g2,
876  double gridSize);
877 
880  GEOSContextHandle_t handle,
881  const GEOSGeometry* g);
882 
885  GEOSContextHandle_t handle,
886  const GEOSGeometry* g,
887  double gridSize);
888 
891  GEOSContextHandle_t handle,
892  const GEOSGeometry* g);
893 
896  GEOSContextHandle_t handle,
897  const GEOSGeometry* g);
898 
901  GEOSContextHandle_t handle,
902  const GEOSGeometry* g);
903 
906  GEOSContextHandle_t handle,
907  const GEOSGeometry* g,
908  double* radius,
909  GEOSGeometry** center);
910 
912 extern GEOSGeometry GEOS_DLL *GEOSNode_r(
913  GEOSContextHandle_t handle,
914  const GEOSGeometry* g);
915 
918  GEOSContextHandle_t handle,
919  const GEOSGeometry* g,
920  double xmin, double ymin,
921  double xmax, double ymax);
922 
925  GEOSContextHandle_t handle,
926  const GEOSGeometry *const geoms[],
927  unsigned int ngeoms);
928 
931  GEOSContextHandle_t handle,
932  const GEOSGeometry *const geoms[],
933  unsigned int ngems);
934 
937  GEOSContextHandle_t handle,
938  const GEOSGeometry * const geoms[],
939  unsigned int ngeoms);
940 
943  GEOSContextHandle_t handle,
944  const GEOSGeometry* input,
945  GEOSGeometry** cuts,
946  GEOSGeometry** dangles,
947  GEOSGeometry** invalidRings);
948 
950 extern GEOSGeometry GEOS_DLL *GEOSBuildArea_r(
951  GEOSContextHandle_t handle,
952  const GEOSGeometry* g);
953 
955 extern GEOSGeometry GEOS_DLL *GEOSLineMerge_r(
956  GEOSContextHandle_t handle,
957  const GEOSGeometry* g);
958 
961  GEOSContextHandle_t handle,
962  const GEOSGeometry* g);
963 
965 extern GEOSGeometry GEOS_DLL *GEOSReverse_r(
966  GEOSContextHandle_t handle,
967  const GEOSGeometry* g);
968 
970 extern GEOSGeometry GEOS_DLL *GEOSSimplify_r(
971  GEOSContextHandle_t handle,
972  const GEOSGeometry* g,
973  double tolerance);
974 
977  GEOSContextHandle_t handle,
978  const GEOSGeometry* g, double tolerance);
979 
982  GEOSContextHandle_t handle,
983  const GEOSGeometry* g);
984 
987  GEOSContextHandle_t handle,
988  const GEOSGeometry* g1,
989  const GEOSGeometry* g2);
990 
992 extern GEOSGeometry GEOS_DLL *GEOSSnap_r(
993  GEOSContextHandle_t handle,
994  const GEOSGeometry* g1,
995  const GEOSGeometry* g2,
996  double tolerance);
997 
1000  GEOSContextHandle_t handle,
1001  const GEOSGeometry *g,
1002  double tolerance,
1003  int onlyEdges);
1004 
1007  GEOSContextHandle_t handle,
1008  const GEOSGeometry *g);
1009 
1012  GEOSContextHandle_t extHandle,
1013  const GEOSGeometry *g,
1014  const GEOSGeometry *env,
1015  double tolerance,
1016  int onlyEdges);
1017 
1019 extern int GEOS_DLL GEOSSegmentIntersection_r(
1020  GEOSContextHandle_t extHandle,
1021  double ax0, double ay0,
1022  double ax1, double ay1,
1023  double bx0, double by0,
1024  double bx1, double by1,
1025  double* cx, double* cy);
1026 
1027 /* ========= Binary predicates ========= */
1028 
1030 extern char GEOS_DLL GEOSDisjoint_r(
1031  GEOSContextHandle_t handle,
1032  const GEOSGeometry* g1,
1033  const GEOSGeometry* g2);
1034 
1036 extern char GEOS_DLL GEOSTouches_r(
1037  GEOSContextHandle_t handle,
1038  const GEOSGeometry* g1,
1039  const GEOSGeometry* g2);
1040 
1042 extern char GEOS_DLL GEOSIntersects_r(
1043  GEOSContextHandle_t handle,
1044  const GEOSGeometry* g1,
1045  const GEOSGeometry* g2);
1046 
1048 extern char GEOS_DLL GEOSCrosses_r(
1049  GEOSContextHandle_t handle,
1050  const GEOSGeometry* g1,
1051  const GEOSGeometry* g2);
1052 
1054 extern char GEOS_DLL GEOSWithin_r(
1055  GEOSContextHandle_t handle,
1056  const GEOSGeometry* g1,
1057  const GEOSGeometry* g2);
1058 
1060 extern char GEOS_DLL GEOSContains_r(
1061  GEOSContextHandle_t handle,
1062  const GEOSGeometry* g1,
1063  const GEOSGeometry* g2);
1064 
1066 extern char GEOS_DLL GEOSOverlaps_r(
1067  GEOSContextHandle_t handle,
1068  const GEOSGeometry* g1,
1069  const GEOSGeometry* g2);
1070 
1072 extern char GEOS_DLL GEOSEquals_r(
1073  GEOSContextHandle_t handle,
1074  const GEOSGeometry* g1,
1075  const GEOSGeometry* g2);
1076 
1078 extern char GEOS_DLL GEOSEqualsExact_r(
1079  GEOSContextHandle_t handle,
1080  const GEOSGeometry* g1,
1081  const GEOSGeometry* g2,
1082  double tolerance);
1083 
1085 extern char GEOS_DLL GEOSCovers_r(
1086  GEOSContextHandle_t handle,
1087  const GEOSGeometry* g1,
1088  const GEOSGeometry* g2);
1089 
1091 extern char GEOS_DLL GEOSCoveredBy_r(
1092  GEOSContextHandle_t handle,
1093  const GEOSGeometry* g1,
1094  const GEOSGeometry* g2);
1095 
1096 /* ========= Prepared Geometry Binary Predicates ========== */
1097 
1099 extern const GEOSPreparedGeometry GEOS_DLL *GEOSPrepare_r(
1100  GEOSContextHandle_t handle,
1101  const GEOSGeometry* g);
1102 
1104 extern void GEOS_DLL GEOSPreparedGeom_destroy_r(
1105  GEOSContextHandle_t handle,
1106  const GEOSPreparedGeometry* g);
1107 
1109 extern char GEOS_DLL GEOSPreparedContains_r(
1110  GEOSContextHandle_t handle,
1111  const GEOSPreparedGeometry* pg1,
1112  const GEOSGeometry* g2);
1113 
1115 extern char GEOS_DLL GEOSPreparedContainsProperly_r(
1116  GEOSContextHandle_t handle,
1117  const GEOSPreparedGeometry* pg1,
1118  const GEOSGeometry* g2);
1119 
1121 extern char GEOS_DLL GEOSPreparedCoveredBy_r(
1122  GEOSContextHandle_t handle,
1123  const GEOSPreparedGeometry* pg1,
1124  const GEOSGeometry* g2);
1125 
1127 extern char GEOS_DLL GEOSPreparedCovers_r(
1128  GEOSContextHandle_t handle,
1129  const GEOSPreparedGeometry* pg1,
1130  const GEOSGeometry* g2);
1131 
1133 extern char GEOS_DLL GEOSPreparedCrosses_r(
1134  GEOSContextHandle_t handle,
1135  const GEOSPreparedGeometry* pg1,
1136  const GEOSGeometry* g2);
1137 
1139 extern char GEOS_DLL GEOSPreparedDisjoint_r(
1140  GEOSContextHandle_t handle,
1141  const GEOSPreparedGeometry* pg1,
1142  const GEOSGeometry* g2);
1143 
1145 extern char GEOS_DLL GEOSPreparedIntersects_r(
1146  GEOSContextHandle_t handle,
1147  const GEOSPreparedGeometry* pg1,
1148  const GEOSGeometry* g2);
1149 
1151 extern char GEOS_DLL GEOSPreparedOverlaps_r(
1152  GEOSContextHandle_t handle,
1153  const GEOSPreparedGeometry* pg1,
1154  const GEOSGeometry* g2);
1155 
1157 extern char GEOS_DLL GEOSPreparedTouches_r(
1158  GEOSContextHandle_t handle,
1159  const GEOSPreparedGeometry* pg1,
1160  const GEOSGeometry* g2);
1161 
1163 extern char GEOS_DLL GEOSPreparedWithin_r(
1164  GEOSContextHandle_t handle,
1165  const GEOSPreparedGeometry* pg1,
1166  const GEOSGeometry* g2);
1167 
1170  GEOSContextHandle_t handle,
1171  const GEOSPreparedGeometry* pg1,
1172  const GEOSGeometry* g2);
1173 
1175 extern int GEOS_DLL GEOSPreparedDistance_r(
1176  GEOSContextHandle_t handle,
1177  const GEOSPreparedGeometry* pg1,
1178  const GEOSGeometry* g2, double *dist);
1179 
1181 extern char GEOS_DLL GEOSPreparedDistanceWithin_r(
1182  GEOSContextHandle_t handle,
1183  const GEOSPreparedGeometry* pg1,
1184  const GEOSGeometry* g2, double dist);
1185 
1186 /* ========== STRtree ========== */
1187 
1190  GEOSContextHandle_t handle,
1191  size_t nodeCapacity);
1192 
1194 extern void GEOS_DLL GEOSSTRtree_insert_r(
1195  GEOSContextHandle_t handle,
1196  GEOSSTRtree *tree,
1197  const GEOSGeometry *g,
1198  void *item);
1199 
1201 extern void GEOS_DLL GEOSSTRtree_query_r(
1202  GEOSContextHandle_t handle,
1203  GEOSSTRtree *tree,
1204  const GEOSGeometry *g,
1205  GEOSQueryCallback callback,
1206  void *userdata);
1207 
1209 extern const GEOSGeometry GEOS_DLL *GEOSSTRtree_nearest_r(
1210  GEOSContextHandle_t handle,
1211  GEOSSTRtree *tree,
1212  const GEOSGeometry* geom);
1213 
1215 extern const void GEOS_DLL *GEOSSTRtree_nearest_generic_r(
1216  GEOSContextHandle_t handle,
1217  GEOSSTRtree *tree,
1218  const void* item,
1219  const GEOSGeometry* itemEnvelope,
1220  GEOSDistanceCallback distancefn,
1221  void* userdata);
1222 
1224 extern void GEOS_DLL GEOSSTRtree_iterate_r(
1225  GEOSContextHandle_t handle,
1226  GEOSSTRtree *tree,
1227  GEOSQueryCallback callback,
1228  void *userdata);
1229 
1231 extern char GEOS_DLL GEOSSTRtree_remove_r(
1232  GEOSContextHandle_t handle,
1233  GEOSSTRtree *tree,
1234  const GEOSGeometry *g,
1235  void *item);
1236 
1238 extern void GEOS_DLL GEOSSTRtree_destroy_r(
1239  GEOSContextHandle_t handle,
1240  GEOSSTRtree *tree);
1241 
1242 
1243 /* ========= Unary predicate ========= */
1244 
1246 extern char GEOS_DLL GEOSisEmpty_r(
1247  GEOSContextHandle_t handle,
1248  const GEOSGeometry* g);
1249 
1251 extern char GEOS_DLL GEOSisSimple_r(
1252  GEOSContextHandle_t handle,
1253  const GEOSGeometry* g);
1254 
1256 extern char GEOS_DLL GEOSisRing_r(
1257  GEOSContextHandle_t handle,
1258  const GEOSGeometry* g);
1259 
1261 extern char GEOS_DLL GEOSHasZ_r(
1262  GEOSContextHandle_t handle,
1263  const GEOSGeometry* g);
1264 
1266 extern char GEOS_DLL GEOSisClosed_r(
1267  GEOSContextHandle_t handle,
1268  const GEOSGeometry *g);
1269 
1270 /* ========== Dimensionally Extended 9 Intersection Model ========== */
1271 
1287 };
1288 
1290 extern char GEOS_DLL GEOSRelatePattern_r(
1291  GEOSContextHandle_t handle,
1292  const GEOSGeometry* g1,
1293  const GEOSGeometry* g2,
1294  const char *pat);
1295 
1297 extern char GEOS_DLL *GEOSRelate_r(
1298  GEOSContextHandle_t handle,
1299  const GEOSGeometry* g1,
1300  const GEOSGeometry* g2);
1301 
1303 extern char GEOS_DLL GEOSRelatePatternMatch_r(
1304  GEOSContextHandle_t handle,
1305  const char *mat,
1306  const char *pat);
1307 
1309 extern char GEOS_DLL *GEOSRelateBoundaryNodeRule_r(
1310  GEOSContextHandle_t handle,
1311  const GEOSGeometry* g1,
1312  const GEOSGeometry* g2,
1313  int bnr);
1314 
1315 /* ========= Validity checking ========= */
1316 
1319 {
1322 };
1323 
1325 extern char GEOS_DLL GEOSisValid_r(
1326  GEOSContextHandle_t handle,
1327  const GEOSGeometry* g);
1328 
1330 extern char GEOS_DLL *GEOSisValidReason_r(
1331  GEOSContextHandle_t handle,
1332  const GEOSGeometry* g);
1333 
1335 extern char GEOS_DLL GEOSisValidDetail_r(
1336  GEOSContextHandle_t handle,
1337  const GEOSGeometry* g,
1338  int flags,
1339  char** reason,
1340  GEOSGeometry** location);
1341 
1342 /* ========== Make Valid ========== */
1343 
1359 };
1360 
1363  GEOSContextHandle_t extHandle);
1364 
1366 extern void GEOS_DLL GEOSMakeValidParams_destroy_r(
1367  GEOSContextHandle_t handle,
1368  GEOSMakeValidParams* parms);
1369 
1372  GEOSContextHandle_t handle,
1374  int style);
1375 
1378  GEOSContextHandle_t handle,
1380  enum GEOSMakeValidMethods method);
1381 
1384  GEOSContextHandle_t handle,
1385  const GEOSGeometry* g);
1386 
1389  GEOSContextHandle_t handle,
1390  const GEOSGeometry* g,
1391  const GEOSMakeValidParams* makeValidParams);
1392 
1395  GEOSContextHandle_t handle,
1396  const GEOSGeometry* g,
1397  double tolerance);
1398 
1399 /* ========== Geometry info ========== */
1400 
1402 /* Return NULL on exception, result must be freed by caller. */
1403 extern char GEOS_DLL *GEOSGeomType_r(
1404  GEOSContextHandle_t handle,
1405  const GEOSGeometry* g);
1406 
1408 extern int GEOS_DLL GEOSGeomTypeId_r(
1409  GEOSContextHandle_t handle,
1410  const GEOSGeometry* g);
1411 
1413 extern int GEOS_DLL GEOSGetSRID_r(
1414  GEOSContextHandle_t handle,
1415  const GEOSGeometry* g);
1416 
1418 extern void GEOS_DLL GEOSSetSRID_r(
1419  GEOSContextHandle_t handle,
1420  GEOSGeometry* g, int SRID);
1421 
1423 extern void GEOS_DLL *GEOSGeom_getUserData_r(
1424  GEOSContextHandle_t handle,
1425  const GEOSGeometry* g);
1426 
1428 extern void GEOS_DLL GEOSGeom_setUserData_r(
1429  GEOSContextHandle_t handle,
1430  GEOSGeometry* g,
1431  void* userData);
1432 
1434 extern int GEOS_DLL GEOSGetNumGeometries_r(
1435  GEOSContextHandle_t handle,
1436  const GEOSGeometry* g);
1437 
1439 extern const GEOSGeometry GEOS_DLL *GEOSGetGeometryN_r(
1440  GEOSContextHandle_t handle,
1441  const GEOSGeometry* g, int n);
1442 
1444 extern int GEOS_DLL GEOSNormalize_r(
1445  GEOSContextHandle_t handle,
1446  GEOSGeometry* g);
1447 
1459 };
1460 
1463  GEOSContextHandle_t handle,
1464  const GEOSGeometry *g,
1465  double gridSize,
1466  int flags);
1467 
1469 extern double GEOS_DLL GEOSGeom_getPrecision_r(
1470  GEOSContextHandle_t handle,
1471  const GEOSGeometry *g);
1472 
1474 extern int GEOS_DLL GEOSGetNumInteriorRings_r(
1475  GEOSContextHandle_t handle,
1476  const GEOSGeometry* g);
1477 
1479 extern int GEOS_DLL GEOSGeomGetNumPoints_r(
1480  GEOSContextHandle_t handle,
1481  const GEOSGeometry* g);
1482 
1484 extern int GEOS_DLL GEOSGeomGetX_r(
1485  GEOSContextHandle_t handle,
1486  const GEOSGeometry *g,
1487  double *x);
1488 
1490 extern int GEOS_DLL GEOSGeomGetY_r(
1491  GEOSContextHandle_t handle,
1492  const GEOSGeometry *g,
1493  double *y);
1494 
1496 extern int GEOS_DLL GEOSGeomGetZ_r(
1497  GEOSContextHandle_t handle,
1498  const GEOSGeometry *g,
1499  double *z);
1500 
1502 extern const GEOSGeometry GEOS_DLL *GEOSGetInteriorRingN_r(
1503  GEOSContextHandle_t handle,
1504  const GEOSGeometry* g, int n);
1505 
1507 extern const GEOSGeometry GEOS_DLL *GEOSGetExteriorRing_r(
1508  GEOSContextHandle_t handle,
1509  const GEOSGeometry* g);
1510 
1512 extern int GEOS_DLL GEOSGetNumCoordinates_r(
1513  GEOSContextHandle_t handle,
1514  const GEOSGeometry* g);
1515 
1518  GEOSContextHandle_t handle,
1519  const GEOSGeometry* g);
1520 
1522 extern int GEOS_DLL GEOSGeom_getDimensions_r(
1523  GEOSContextHandle_t handle,
1524  const GEOSGeometry* g);
1525 
1528  GEOSContextHandle_t handle,
1529  const GEOSGeometry* g);
1530 
1532 extern int GEOS_DLL GEOSGeom_getXMin_r(
1533  GEOSContextHandle_t handle,
1534  const GEOSGeometry* g,
1535  double* value);
1536 
1538 extern int GEOS_DLL GEOSGeom_getYMin_r(
1539  GEOSContextHandle_t handle,
1540  const GEOSGeometry* g,
1541  double* value);
1542 
1544 extern int GEOS_DLL GEOSGeom_getXMax_r(
1545  GEOSContextHandle_t handle,
1546  const GEOSGeometry* g,
1547  double* value);
1548 
1550 extern int GEOS_DLL GEOSGeom_getYMax_r(
1551  GEOSContextHandle_t handle,
1552  const GEOSGeometry* g,
1553  double* value);
1554 
1556 extern int GEOS_DLL GEOSGeom_getExtent_r(
1557  GEOSContextHandle_t handle,
1558  const GEOSGeometry* g,
1559  double* xmin,
1560  double* ymin,
1561  double* xmax,
1562  double* ymax);
1563 
1566  GEOSContextHandle_t handle,
1567  const GEOSGeometry *g,
1568  int n);
1569 
1572  GEOSContextHandle_t handle,
1573  const GEOSGeometry *g);
1574 
1577  GEOSContextHandle_t handle,
1578  const GEOSGeometry *g);
1579 
1580 /* ========= Misc functions ========= */
1581 
1583 extern int GEOS_DLL GEOSArea_r(
1584  GEOSContextHandle_t handle,
1585  const GEOSGeometry* g,
1586  double *area);
1587 
1589 extern int GEOS_DLL GEOSLength_r(
1590  GEOSContextHandle_t handle,
1591  const GEOSGeometry* g,
1592  double *length);
1593 
1595 extern int GEOS_DLL GEOSDistance_r(
1596  GEOSContextHandle_t handle,
1597  const GEOSGeometry* g1,
1598  const GEOSGeometry* g2,
1599  double *dist);
1600 
1602 extern char GEOS_DLL GEOSDistanceWithin_r(
1603  GEOSContextHandle_t handle,
1604  const GEOSGeometry* g1,
1605  const GEOSGeometry* g2,
1606  double dist);
1607 
1609 extern int GEOS_DLL GEOSDistanceIndexed_r(
1610  GEOSContextHandle_t handle,
1611  const GEOSGeometry* g1,
1612  const GEOSGeometry* g2,
1613  double *dist);
1614 
1616 extern int GEOS_DLL GEOSHausdorffDistance_r(
1617  GEOSContextHandle_t handle,
1618  const GEOSGeometry *g1,
1619  const GEOSGeometry *g2,
1620  double *dist);
1621 
1624  GEOSContextHandle_t handle,
1625  const GEOSGeometry *g1,
1626  const GEOSGeometry *g2,
1627  double densifyFrac, double *dist);
1628 
1630 extern int GEOS_DLL GEOSFrechetDistance_r(
1631  GEOSContextHandle_t handle,
1632  const GEOSGeometry *g1,
1633  const GEOSGeometry *g2,
1634  double *dist);
1635 
1637 extern int GEOS_DLL GEOSFrechetDistanceDensify_r(
1638  GEOSContextHandle_t handle,
1639  const GEOSGeometry *g1,
1640  const GEOSGeometry *g2,
1641  double densifyFrac,
1642  double *dist);
1643 
1644 
1646 extern int GEOS_DLL GEOSHilbertCode_r(
1647  GEOSContextHandle_t handle,
1648  const GEOSGeometry *geom,
1649  const GEOSGeometry* extent,
1650  unsigned int level,
1651  unsigned int *code
1652 );
1653 
1655 extern int GEOS_DLL GEOSGeomGetLength_r(
1656  GEOSContextHandle_t handle,
1657  const GEOSGeometry *g,
1658  double *length);
1659 
1662  GEOSContextHandle_t handle,
1663  const GEOSGeometry* g1,
1664  const GEOSGeometry* g2);
1665 
1668  GEOSContextHandle_t handle,
1669  const GEOSGeometry* g,
1670  GEOSTransformXYCallback callback,
1671  void* userdata);
1672 
1673 /* ========= Algorithms ========= */
1674 
1676 extern int GEOS_DLL GEOSOrientationIndex_r(
1677  GEOSContextHandle_t handle,
1678  double Ax, double Ay,
1679  double Bx, double By,
1680  double Px, double Py);
1681 
1682 
1683 /* ========== Reader and Writer APIs ========== */
1684 
1685 #ifndef GEOSWKTReader
1686 
1692 typedef struct GEOSWKTReader_t GEOSWKTReader;
1693 
1699 typedef struct GEOSWKTWriter_t GEOSWKTWriter;
1700 
1706 typedef struct GEOSWKBReader_t GEOSWKBReader;
1707 
1713 typedef struct GEOSWKBWriter_t GEOSWKBWriter;
1714 
1720 typedef struct GEOSGeoJSONReader_t GEOSGeoJSONReader;
1721 
1727 typedef struct GEOSGeoJSONWriter_t GEOSGeoJSONWriter;
1728 
1729 #endif
1730 
1731 /* ========== WKT Reader ========== */
1732 
1735  GEOSContextHandle_t handle);
1736 
1738 extern void GEOS_DLL GEOSWKTReader_destroy_r(GEOSContextHandle_t handle,
1739  GEOSWKTReader* reader);
1740 
1743  GEOSContextHandle_t handle,
1744  GEOSWKTReader* reader,
1745  const char *wkt);
1746 
1748 extern void GEOS_DLL GEOSWKTReader_setFixStructure_r(
1749  GEOSContextHandle_t handle,
1750  GEOSWKTReader *reader,
1751  char doFix);
1752 
1753 /* ========== WKT Writer ========== */
1754 
1757  GEOSContextHandle_t handle);
1758 
1760 extern void GEOS_DLL GEOSWKTWriter_destroy_r(
1761  GEOSContextHandle_t handle,
1762  GEOSWKTWriter* writer);
1763 
1765 extern char GEOS_DLL *GEOSWKTWriter_write_r(
1766  GEOSContextHandle_t handle,
1767  GEOSWKTWriter* writer,
1768  const GEOSGeometry* g);
1769 
1771 extern void GEOS_DLL GEOSWKTWriter_setTrim_r(
1772  GEOSContextHandle_t handle,
1773  GEOSWKTWriter *writer,
1774  char trim);
1775 
1778  GEOSContextHandle_t handle,
1779  GEOSWKTWriter *writer,
1780  int precision);
1781 
1784  GEOSContextHandle_t handle,
1785  GEOSWKTWriter *writer,
1786  int dim);
1787 
1790  GEOSContextHandle_t handle,
1791  GEOSWKTWriter *writer);
1792 
1794 extern void GEOS_DLL GEOSWKTWriter_setOld3D_r(
1795  GEOSContextHandle_t handle,
1796  GEOSWKTWriter *writer,
1797  int useOld3D);
1798 
1799 /* ========== WKB Reader ========== */
1800 
1803  GEOSContextHandle_t handle);
1804 
1806 extern void GEOS_DLL GEOSWKBReader_destroy_r(
1807  GEOSContextHandle_t handle,
1808  GEOSWKBReader* reader);
1809 
1811 extern void GEOS_DLL GEOSWKBReader_setFixStructure_r(
1812  GEOSContextHandle_t handle,
1813  GEOSWKBReader *reader,
1814  char doFix);
1815 
1818  GEOSContextHandle_t handle,
1819  GEOSWKBReader* reader,
1820  const unsigned char *wkb,
1821  size_t size);
1822 
1825  GEOSContextHandle_t handle,
1826  GEOSWKBReader* reader,
1827  const unsigned char *hex,
1828  size_t size);
1829 
1830 
1831 /* ========== WKB Writer ========== */
1832 
1835  GEOSContextHandle_t handle);
1836 
1838 extern void GEOS_DLL GEOSWKBWriter_destroy_r(
1839  GEOSContextHandle_t handle,
1840  GEOSWKBWriter* writer);
1841 
1843 extern unsigned char GEOS_DLL *GEOSWKBWriter_write_r(
1844  GEOSContextHandle_t handle,
1845  GEOSWKBWriter* writer,
1846  const GEOSGeometry* g,
1847  size_t *size);
1848 
1850 extern unsigned char GEOS_DLL *GEOSWKBWriter_writeHEX_r(
1851  GEOSContextHandle_t handle,
1852  GEOSWKBWriter* writer,
1853  const GEOSGeometry* g,
1854  size_t *size);
1855 
1858  GEOSContextHandle_t handle,
1859  const GEOSWKBWriter* writer);
1860 
1863  GEOSContextHandle_t handle,
1864  GEOSWKBWriter* writer, int newDimension);
1865 
1867 extern int GEOS_DLL GEOSWKBWriter_getByteOrder_r(
1868  GEOSContextHandle_t handle,
1869  const GEOSWKBWriter* writer);
1870 
1872 extern void GEOS_DLL GEOSWKBWriter_setByteOrder_r(
1873  GEOSContextHandle_t handle,
1874  GEOSWKBWriter* writer,
1875  int byteOrder);
1876 
1878 extern int GEOS_DLL GEOSWKBWriter_getFlavor_r(
1879  GEOSContextHandle_t handle,
1880  const GEOSWKBWriter* writer);
1881 
1883 extern void GEOS_DLL GEOSWKBWriter_setFlavor_r(
1884  GEOSContextHandle_t handle,
1885  GEOSWKBWriter* writer,
1886  int flavor);
1887 
1889 extern char GEOS_DLL GEOSWKBWriter_getIncludeSRID_r(
1890  GEOSContextHandle_t handle,
1891  const GEOSWKBWriter* writer);
1892 
1894 extern void GEOS_DLL GEOSWKBWriter_setIncludeSRID_r(
1895  GEOSContextHandle_t handle,
1896  GEOSWKBWriter* writer, const char writeSRID);
1897 
1898 /* ========== GeoJSON Reader ========== */
1899 
1902  GEOSContextHandle_t handle);
1903 
1906  GEOSGeoJSONReader* reader);
1907 
1910  GEOSContextHandle_t handle,
1911  GEOSGeoJSONReader* reader,
1912  const char *geojson);
1913 
1914 /* ========== GeoJSON Writer ========== */
1915 
1918  GEOSContextHandle_t handle);
1919 
1922  GEOSGeoJSONWriter* writer);
1923 
1926  GEOSContextHandle_t handle,
1927  GEOSGeoJSONWriter* writer,
1928  const GEOSGeometry* g,
1929  int indent);
1930 
1932 extern void GEOS_DLL GEOSFree_r(
1933  GEOSContextHandle_t handle,
1934  void *buffer);
1935 
1942 extern const char GEOS_DLL *GEOSversion(void);
1943 
1944 /*
1945 * External code to GEOS can define GEOS_USE_ONLY_R_API
1946 * to strip the non-reentrant API functions from this header,
1947 * leaving only the "_r" compatible variants.
1948 */
1949 #ifndef GEOS_USE_ONLY_R_API
1950 
1951 /* ========== Initialization, cleanup ================================= */
1957 
1969 extern void GEOS_DLL initGEOS(
1970  GEOSMessageHandler notice_function,
1971  GEOSMessageHandler error_function);
1972 
1977 extern void GEOS_DLL finishGEOS(void);
1978 
1985 extern void GEOS_DLL GEOSFree(void *buffer);
1986 
1988 
1989 /* ========= Coordinate Sequence functions ========= */
1995 
2002 extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_create(unsigned int size, unsigned int dims);
2003 
2012 extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_copyFromBuffer(const double* buf, unsigned int size, int hasZ, int hasM);
2013 
2023 extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_copyFromArrays(const double* x, const double* y, const double* z, const double* m, unsigned int size);
2024 
2033 extern int GEOS_DLL GEOSCoordSeq_copyToBuffer(const GEOSCoordSequence* s, double* buf, int hasZ, int hasM);
2034 
2044 extern int GEOS_DLL GEOSCoordSeq_copyToArrays(const GEOSCoordSequence* s, double* x, double* y, double* z, double* m);
2045 
2052 
2057 extern void GEOS_DLL GEOSCoordSeq_destroy(GEOSCoordSequence* s);
2058 
2066 extern int GEOS_DLL GEOSCoordSeq_setX(GEOSCoordSequence* s,
2067  unsigned int idx, double val);
2075 extern int GEOS_DLL GEOSCoordSeq_setY(GEOSCoordSequence* s,
2076  unsigned int idx, double val);
2084 extern int GEOS_DLL GEOSCoordSeq_setZ(GEOSCoordSequence* s,
2085  unsigned int idx, double val);
2094 extern int GEOS_DLL GEOSCoordSeq_setXY(GEOSCoordSequence* s,
2095  unsigned int idx, double x, double y);
2106  unsigned int idx, double x, double y, double z);
2116  unsigned int idx, unsigned int dim, double val);
2117 
2125 extern int GEOS_DLL GEOSCoordSeq_getX(const GEOSCoordSequence* s,
2126  unsigned int idx, double *val);
2127 
2135 extern int GEOS_DLL GEOSCoordSeq_getY(const GEOSCoordSequence* s,
2136  unsigned int idx, double *val);
2144 extern int GEOS_DLL GEOSCoordSeq_getZ(const GEOSCoordSequence* s,
2145  unsigned int idx, double *val);
2154 extern int GEOS_DLL GEOSCoordSeq_getXY(const GEOSCoordSequence* s,
2155  unsigned int idx, double *x, double *y);
2165 extern int GEOS_DLL GEOSCoordSeq_getXYZ(const GEOSCoordSequence* s,
2166  unsigned int idx, double *x, double *y, double *z);
2175 extern int GEOS_DLL GEOSCoordSeq_getOrdinate(const GEOSCoordSequence* s,
2176  unsigned int idx, unsigned int dim, double *val);
2177 
2184 extern int GEOS_DLL GEOSCoordSeq_getSize(
2185  const GEOSCoordSequence* s,
2186  unsigned int *size);
2187 
2194 extern int GEOS_DLL GEOSCoordSeq_getDimensions(
2195  const GEOSCoordSequence* s,
2196  unsigned int *dims);
2197 
2206 extern int GEOS_DLL GEOSCoordSeq_isCCW(
2207  const GEOSCoordSequence* s,
2208  char* is_ccw);
2209 
2211 
2212 /* ========= Geometry Constructors ========= */
2218 
2226 
2234 extern GEOSGeometry GEOS_DLL *GEOSGeom_createPointFromXY(double x, double y);
2235 
2242 
2250 
2258 
2265 
2272 
2286  GEOSGeometry* shell,
2287  GEOSGeometry** holes,
2288  unsigned int nholes);
2289 
2303  int type,
2304  GEOSGeometry** geoms,
2305  unsigned int ngeoms);
2306 
2314 
2324  double xmin, double ymin,
2325  double xmax, double ymax);
2326 
2333 extern GEOSGeometry GEOS_DLL *GEOSGeom_clone(const GEOSGeometry* g);
2334 
2339 extern void GEOS_DLL GEOSGeom_destroy(GEOSGeometry* g);
2340 
2342 
2343 /* ========== Geometry info ========== */
2348 
2357 extern char GEOS_DLL *GEOSGeomType(const GEOSGeometry* g);
2358 
2364 extern int GEOS_DLL GEOSGeomTypeId(const GEOSGeometry* g);
2365 
2371 extern int GEOS_DLL GEOSGetSRID(const GEOSGeometry* g);
2372 
2381 extern void GEOS_DLL *GEOSGeom_getUserData(const GEOSGeometry* g);
2382 
2392 extern int GEOS_DLL GEOSGetNumGeometries(const GEOSGeometry* g);
2393 
2408 extern const GEOSGeometry GEOS_DLL *GEOSGetGeometryN(
2409  const GEOSGeometry* g,
2410  int n);
2411 
2419 extern double GEOS_DLL GEOSGeom_getPrecision(const GEOSGeometry *g);
2420 
2427 extern int GEOS_DLL GEOSGetNumInteriorRings(const GEOSGeometry* g);
2428 
2435 extern int GEOS_DLL GEOSGeomGetNumPoints(const GEOSGeometry* g);
2436 
2444 extern int GEOS_DLL GEOSGeomGetX(const GEOSGeometry *g, double *x);
2445 
2453 extern int GEOS_DLL GEOSGeomGetY(const GEOSGeometry *g, double *y);
2454 
2462 extern int GEOS_DLL GEOSGeomGetZ(const GEOSGeometry *g, double *z);
2463 
2472 extern const GEOSGeometry GEOS_DLL *GEOSGetInteriorRingN(
2473  const GEOSGeometry* g,
2474  int n);
2475 
2483 extern const GEOSGeometry GEOS_DLL *GEOSGetExteriorRing(
2484  const GEOSGeometry* g);
2485 
2492 extern int GEOS_DLL GEOSGetNumCoordinates(
2493  const GEOSGeometry* g);
2494 
2504  const GEOSGeometry* g);
2505 
2517 extern int GEOS_DLL GEOSGeom_getDimensions(
2518  const GEOSGeometry* g);
2519 
2530  const GEOSGeometry* g);
2531 
2538 extern int GEOS_DLL GEOSGeom_getXMin(const GEOSGeometry* g, double* value);
2539 
2546 extern int GEOS_DLL GEOSGeom_getYMin(const GEOSGeometry* g, double* value);
2547 
2554 extern int GEOS_DLL GEOSGeom_getXMax(const GEOSGeometry* g, double* value);
2555 
2562 extern int GEOS_DLL GEOSGeom_getYMax(const GEOSGeometry* g, double* value);
2563 
2575 extern int GEOS_DLL GEOSGeom_getExtent(
2576  const GEOSGeometry* g,
2577  double* xmin,
2578  double* ymin,
2579  double* xmax,
2580  double* ymax);
2581 
2590 extern GEOSGeometry GEOS_DLL *GEOSGeomGetPointN(const GEOSGeometry *g, int n);
2591 
2600 
2608 extern GEOSGeometry GEOS_DLL *GEOSGeomGetEndPoint(const GEOSGeometry *g);
2609 
2610 
2618 extern char GEOS_DLL GEOSisEmpty(const GEOSGeometry* g);
2619 
2627 extern char GEOS_DLL GEOSisRing(const GEOSGeometry* g);
2628 
2634 extern char GEOS_DLL GEOSHasZ(const GEOSGeometry* g);
2635 
2643 extern char GEOS_DLL GEOSisClosed(const GEOSGeometry *g);
2644 
2646 
2647 /* ==================================================================================== */
2652 
2658 extern void GEOS_DLL GEOSSetSRID(GEOSGeometry* g, int SRID);
2659 
2666 extern void GEOS_DLL GEOSGeom_setUserData(GEOSGeometry* g, void* userData);
2667 
2686 extern int GEOS_DLL GEOSNormalize(GEOSGeometry* g);
2687 
2689 
2690 /* ========== Validity checking ============================================================ */
2696 
2703 extern char GEOS_DLL GEOSisSimple(const GEOSGeometry* g);
2704 
2717 extern char GEOS_DLL GEOSisValid(const GEOSGeometry* g);
2718 
2726 extern char GEOS_DLL *GEOSisValidReason(const GEOSGeometry *g);
2727 
2740 extern char GEOS_DLL GEOSisValidDetail(
2741  const GEOSGeometry* g,
2742  int flags,
2743  char** reason,
2744  GEOSGeometry** location);
2745 
2751 extern GEOSGeometry GEOS_DLL *GEOSMakeValid(
2752  const GEOSGeometry* g);
2753 
2766  const GEOSGeometry* g,
2767  const GEOSMakeValidParams *makeValidParams);
2768 
2776 
2783 
2790 extern int GEOS_DLL GEOSMakeValidParams_setMethod(
2792  enum GEOSMakeValidMethods method);
2793 
2804  int keepCollapsed);
2805 
2823 extern int GEOS_DLL GEOSMinimumClearance(const GEOSGeometry* g, double* d);
2824 
2835 
2852  const GEOSGeometry* g,
2853  double tolerance);
2854 
2856 
2857 /* ========= Metric functions ================================================== */
2862 
2869 extern int GEOS_DLL GEOSArea(
2870  const GEOSGeometry* g,
2871  double *area);
2872 
2879 extern int GEOS_DLL GEOSLength(
2880  const GEOSGeometry* g,
2881  double *length);
2882 
2891 extern int GEOS_DLL GEOSGeomGetLength(
2892  const GEOSGeometry *g,
2893  double *length);
2894 
2896 
2897 /* ========== Distance functions ================================================ */
2903 
2911 extern int GEOS_DLL GEOSDistance(
2912  const GEOSGeometry* g1,
2913  const GEOSGeometry* g2,
2914  double *dist);
2915 
2924 extern char GEOS_DLL GEOSDistanceWithin(
2925  const GEOSGeometry* g1,
2926  const GEOSGeometry* g2,
2927  double dist);
2928 
2940 extern int GEOS_DLL GEOSDistanceIndexed(
2941  const GEOSGeometry* g1,
2942  const GEOSGeometry* g2,
2943  double *dist);
2944 
2955  const GEOSGeometry* g1,
2956  const GEOSGeometry* g2);
2957 
2968 extern int GEOS_DLL GEOSHausdorffDistance(
2969  const GEOSGeometry *g1,
2970  const GEOSGeometry *g2,
2971  double *dist);
2972 
2986 extern int GEOS_DLL GEOSHausdorffDistanceDensify(
2987  const GEOSGeometry *g1,
2988  const GEOSGeometry *g2,
2989  double densifyFrac,
2990  double *dist);
2991 
3003 extern int GEOS_DLL GEOSFrechetDistance(
3004  const GEOSGeometry *g1,
3005  const GEOSGeometry *g2,
3006  double *dist);
3007 
3022 extern int GEOS_DLL GEOSFrechetDistanceDensify(
3023  const GEOSGeometry *g1,
3024  const GEOSGeometry *g2,
3025  double densifyFrac,
3026  double *dist);
3027 
3029 
3030 /* ========== Linear referencing functions */
3036 
3045 extern double GEOS_DLL GEOSProject(const GEOSGeometry* line,
3046  const GEOSGeometry* point);
3047 
3058 extern GEOSGeometry GEOS_DLL *GEOSInterpolate(const GEOSGeometry* line,
3059  double d);
3060 
3070 extern double GEOS_DLL GEOSProjectNormalized(const GEOSGeometry* line,
3071  const GEOSGeometry* point);
3072 
3082  const GEOSGeometry *line,
3083  double proportion);
3084 
3086 
3087 /* ========== Overlay functions ========== */
3093 
3103 extern GEOSGeometry GEOS_DLL *GEOSIntersection(const GEOSGeometry* g1, const GEOSGeometry* g2);
3104 
3117 extern GEOSGeometry GEOS_DLL *GEOSIntersectionPrec(const GEOSGeometry* g1, const GEOSGeometry* g2, double gridSize);
3118 
3128 extern GEOSGeometry GEOS_DLL *GEOSDifference(
3129  const GEOSGeometry* ga,
3130  const GEOSGeometry* gb);
3131 
3146  const GEOSGeometry* ga,
3147  const GEOSGeometry* gb,
3148  double gridSize);
3149 
3161  const GEOSGeometry* ga,
3162  const GEOSGeometry* gb);
3163 
3179  const GEOSGeometry* ga,
3180  const GEOSGeometry* gb,
3181  double gridSize);
3182 
3192 extern GEOSGeometry GEOS_DLL *GEOSUnion(
3193  const GEOSGeometry* ga,
3194  const GEOSGeometry* gb);
3195 
3209 extern GEOSGeometry GEOS_DLL *GEOSUnionPrec(
3210  const GEOSGeometry* ga,
3211  const GEOSGeometry* gb,
3212  double gridSize);
3213 
3223 extern GEOSGeometry GEOS_DLL *GEOSUnaryUnion(const GEOSGeometry* g);
3224 
3239  const GEOSGeometry* g,
3240  double gridSize);
3241 
3250 extern GEOSGeometry GEOS_DLL *GEOSCoverageUnion(const GEOSGeometry *g);
3251 
3265 extern GEOSGeometry GEOS_DLL *GEOSClipByRect(
3266  const GEOSGeometry* g,
3267  double xmin, double ymin,
3268  double xmax, double ymax);
3269 
3287  const GEOSGeometry* g1,
3288  const GEOSGeometry* g2);
3289 
3291 
3292 /* ========== Buffer related functions ========== */
3297 
3308 extern GEOSGeometry GEOS_DLL *GEOSBuffer(const GEOSGeometry* g,
3309  double width, int quadsegs);
3310 
3318 
3323 extern void GEOS_DLL GEOSBufferParams_destroy(GEOSBufferParams* parms);
3324 
3331  GEOSBufferParams* p,
3332  int style);
3333 
3339 extern int GEOS_DLL GEOSBufferParams_setJoinStyle(
3340  GEOSBufferParams* p,
3341  int joinStyle);
3342 
3353  GEOSBufferParams* p,
3354  double mitreLimit);
3355 
3365  GEOSBufferParams* p,
3366  int quadSegs);
3367 
3377  GEOSBufferParams* p,
3378  int singleSided);
3379 
3389  const GEOSGeometry* g,
3390  const GEOSBufferParams* p,
3391  double width);
3392 
3405  const GEOSGeometry* g,
3406  double width,
3407  int quadsegs,
3408  int endCapStyle,
3409  int joinStyle,
3410  double mitreLimit);
3411 
3432 extern GEOSGeometry GEOS_DLL *GEOSOffsetCurve(const GEOSGeometry* g,
3433  double width, int quadsegs, int joinStyle, double mitreLimit);
3434 
3436 
3437 /* ========== Construction Operations ========== */
3442 
3449 extern GEOSGeometry GEOS_DLL *GEOSEnvelope(const GEOSGeometry* g);
3450 
3463 extern GEOSGeometry GEOS_DLL *GEOSBoundary(const GEOSGeometry* g);
3464 
3473 extern GEOSGeometry GEOS_DLL *GEOSConvexHull(const GEOSGeometry* g);
3474 
3496  const GEOSGeometry* g,
3497  double ratio,
3498  unsigned int allowHoles);
3499 
3500 
3519  const GEOSGeometry* g,
3520  unsigned int isOuter,
3521  double vertexNumFraction);
3522 
3523 
3532 };
3533 
3552  const GEOSGeometry* g,
3553  unsigned int isOuter,
3554  unsigned int parameterMode,
3555  double parameter);
3556 
3591  const GEOSGeometry* g,
3592  double lengthRatio,
3593  unsigned int isTight,
3594  unsigned int isHolesAllowed);
3595 
3608 
3632  const GEOSGeometry* g,
3633  double tolerance);
3634 
3658  const GEOSGeometry* obstacles,
3659  const GEOSGeometry* boundary,
3660  double tolerance);
3661 
3673 extern GEOSGeometry GEOS_DLL *GEOSMinimumWidth(const GEOSGeometry* g);
3674 
3675 
3683 extern GEOSGeometry GEOS_DLL *GEOSPointOnSurface(const GEOSGeometry* g);
3684 
3692 extern GEOSGeometry GEOS_DLL *GEOSGetCentroid(const GEOSGeometry* g);
3693 
3705  const GEOSGeometry* g,
3706  double* radius,
3707  GEOSGeometry** center);
3708 
3721  const GEOSGeometry *g,
3722  double tolerance,
3723  int onlyEdges);
3724 
3735  const GEOSGeometry *g);
3736 
3752  const GEOSGeometry *g,
3753  const GEOSGeometry *env,
3754  double tolerance,
3755  int onlyEdges);
3756 
3758 
3759 /* ============================================================== */
3764 
3773 extern GEOSGeometry GEOS_DLL *GEOSNode(const GEOSGeometry* g);
3774 
3813 extern GEOSGeometry GEOS_DLL *GEOSPolygonize(
3814  const GEOSGeometry * const geoms[],
3815  unsigned int ngeoms);
3816 
3828  const GEOSGeometry * const geoms[],
3829  unsigned int ngeoms);
3830 
3843  const GEOSGeometry * const geoms[],
3844  unsigned int ngeoms);
3845 
3859  const GEOSGeometry* input,
3860  GEOSGeometry** cuts,
3861  GEOSGeometry** dangles,
3862  GEOSGeometry** invalid);
3863 
3873 extern GEOSGeometry GEOS_DLL *GEOSBuildArea(const GEOSGeometry* g);
3874 
3876 
3877 /* ============================================================== */
3882 
3894 extern GEOSGeometry GEOS_DLL *GEOSDensify(
3895  const GEOSGeometry* g,
3896  double tolerance);
3897 
3906 extern GEOSGeometry GEOS_DLL *GEOSLineMerge(const GEOSGeometry* g);
3907 
3918 
3927 extern GEOSGeometry GEOS_DLL *GEOSReverse(const GEOSGeometry* g);
3928 
3941 extern GEOSGeometry GEOS_DLL *GEOSSimplify(
3942  const GEOSGeometry* g,
3943  double tolerance);
3944 
3960  const GEOSGeometry* g,
3961  double tolerance);
3962 
3972  const GEOSGeometry* g);
3973 
3987 extern int GEOS_DLL GEOSHilbertCode(
3988  const GEOSGeometry *geom,
3989  const GEOSGeometry* extent,
3990  unsigned int level,
3991  unsigned int *code
3992 );
3993 
4007  const GEOSGeometry* g,
4008  GEOSTransformXYCallback callback,
4009  void* userdata);
4010 
4019 extern GEOSGeometry GEOS_DLL *GEOSSnap(
4020  const GEOSGeometry* input,
4021  const GEOSGeometry* snap_target,
4022  double tolerance);
4023 
4052  const GEOSGeometry *g,
4053  double gridSize,
4054  int flags);
4055 
4057 
4058 /* ============================================================== */
4063 
4071 extern char GEOS_DLL GEOSDisjoint(const GEOSGeometry* g1, const GEOSGeometry* g2);
4072 
4081 extern char GEOS_DLL GEOSTouches(const GEOSGeometry* g1, const GEOSGeometry* g2);
4082 
4090 extern char GEOS_DLL GEOSIntersects(const GEOSGeometry* g1, const GEOSGeometry* g2);
4091 
4100 extern char GEOS_DLL GEOSCrosses(const GEOSGeometry* g1, const GEOSGeometry* g2);
4101 
4110 extern char GEOS_DLL GEOSWithin(const GEOSGeometry* g1, const GEOSGeometry* g2);
4111 
4119 extern char GEOS_DLL GEOSContains(const GEOSGeometry* g1, const GEOSGeometry* g2);
4120 
4129 extern char GEOS_DLL GEOSOverlaps(const GEOSGeometry* g1, const GEOSGeometry* g2);
4130 
4138 extern char GEOS_DLL GEOSEquals(const GEOSGeometry* g1, const GEOSGeometry* g2);
4139 
4148 extern char GEOS_DLL GEOSCovers(const GEOSGeometry* g1, const GEOSGeometry* g2);
4149 
4158 extern char GEOS_DLL GEOSCoveredBy(const GEOSGeometry* g1, const GEOSGeometry* g2);
4159 
4174 extern char GEOS_DLL GEOSEqualsExact(
4175  const GEOSGeometry* g1,
4176  const GEOSGeometry* g2,
4177  double tolerance);
4178 
4191 extern char GEOS_DLL GEOSRelatePattern(
4192  const GEOSGeometry* g1,
4193  const GEOSGeometry* g2,
4194  const char *pat);
4195 
4204 extern char GEOS_DLL *GEOSRelate(
4205  const GEOSGeometry* g1,
4206  const GEOSGeometry* g2);
4207 
4215 extern char GEOS_DLL GEOSRelatePatternMatch(
4216  const char *mat,
4217  const char *pat);
4218 
4230 extern char GEOS_DLL *GEOSRelateBoundaryNodeRule(
4231  const GEOSGeometry* g1,
4232  const GEOSGeometry* g2,
4233  int bnr);
4234 
4236 
4237 /* ========== Prepared Geometry Binary predicates ========== */
4238 
4250 
4262 extern const GEOSPreparedGeometry GEOS_DLL *GEOSPrepare(const GEOSGeometry* g);
4263 
4270 extern void GEOS_DLL GEOSPreparedGeom_destroy(const GEOSPreparedGeometry* g);
4271 
4280 extern char GEOS_DLL GEOSPreparedContains(
4281  const GEOSPreparedGeometry* pg1,
4282  const GEOSGeometry* g2);
4283 
4292 extern char GEOS_DLL GEOSPreparedContainsProperly(
4293  const GEOSPreparedGeometry* pg1,
4294  const GEOSGeometry* g2);
4295 
4304 extern char GEOS_DLL GEOSPreparedCoveredBy(
4305  const GEOSPreparedGeometry* pg1,
4306  const GEOSGeometry* g2);
4307 
4316 extern char GEOS_DLL GEOSPreparedCovers(
4317  const GEOSPreparedGeometry* pg1,
4318  const GEOSGeometry* g2);
4319 
4328 extern char GEOS_DLL GEOSPreparedCrosses(
4329  const GEOSPreparedGeometry* pg1,
4330  const GEOSGeometry* g2);
4331 
4340 extern char GEOS_DLL GEOSPreparedDisjoint(
4341  const GEOSPreparedGeometry* pg1,
4342  const GEOSGeometry* g2);
4343 
4352 extern char GEOS_DLL GEOSPreparedIntersects(
4353  const GEOSPreparedGeometry* pg1,
4354  const GEOSGeometry* g2);
4355 
4364 extern char GEOS_DLL GEOSPreparedOverlaps(
4365  const GEOSPreparedGeometry* pg1,
4366  const GEOSGeometry* g2);
4367 
4376 extern char GEOS_DLL GEOSPreparedTouches(
4377  const GEOSPreparedGeometry* pg1,
4378  const GEOSGeometry* g2);
4379 
4388 extern char GEOS_DLL GEOSPreparedWithin(
4389  const GEOSPreparedGeometry* pg1,
4390  const GEOSGeometry* g2);
4391 
4403  const GEOSPreparedGeometry* pg1,
4404  const GEOSGeometry* g2);
4405 
4417 extern int GEOS_DLL GEOSPreparedDistance(
4418  const GEOSPreparedGeometry* pg1,
4419  const GEOSGeometry* g2,
4420  double *dist);
4421 
4434 extern char GEOS_DLL GEOSPreparedDistanceWithin(
4435  const GEOSPreparedGeometry* pg1,
4436  const GEOSGeometry* g2,
4437  double dist);
4438 
4440 
4441 /* ========== STRtree functions ========== */
4447 
4458 extern GEOSSTRtree GEOS_DLL *GEOSSTRtree_create(size_t nodeCapacity);
4459 
4470 extern void GEOS_DLL GEOSSTRtree_insert(
4471  GEOSSTRtree *tree,
4472  const GEOSGeometry *g,
4473  void *item);
4474 
4485 extern void GEOS_DLL GEOSSTRtree_query(
4486  GEOSSTRtree *tree,
4487  const GEOSGeometry *g,
4488  GEOSQueryCallback callback,
4489  void *userdata);
4490 
4501 extern const GEOSGeometry GEOS_DLL *GEOSSTRtree_nearest(
4502  GEOSSTRtree *tree,
4503  const GEOSGeometry* geom);
4504 
4521 extern const void GEOS_DLL *GEOSSTRtree_nearest_generic(
4522  GEOSSTRtree *tree,
4523  const void* item,
4524  const GEOSGeometry* itemEnvelope,
4525  GEOSDistanceCallback distancefn,
4526  void* userdata);
4527 
4535 extern void GEOS_DLL GEOSSTRtree_iterate(
4536  GEOSSTRtree *tree,
4537  GEOSQueryCallback callback,
4538  void *userdata);
4539 
4550 extern char GEOS_DLL GEOSSTRtree_remove(
4551  GEOSSTRtree *tree,
4552  const GEOSGeometry *g,
4553  void *item);
4554 
4561 extern void GEOS_DLL GEOSSTRtree_destroy(GEOSSTRtree *tree);
4562 
4564 
4565 /* ========== Algorithms ====================================================== */
4570 
4587 extern int GEOS_DLL GEOSSegmentIntersection(
4588  double ax0, double ay0,
4589  double ax1, double ay1,
4590  double bx0, double by0,
4591  double bx1, double by1,
4592  double* cx, double* cy);
4593 
4607 extern int GEOS_DLL GEOSOrientationIndex(
4608  double Ax, double Ay,
4609  double Bx, double By,
4610  double Px, double Py);
4611 
4613 
4614 /* ========= Reader and Writer APIs ========= */
4615 
4620 /* ========= WKT Reader ========= */
4621 
4626 extern GEOSWKTReader GEOS_DLL *GEOSWKTReader_create(void);
4627 
4632 extern void GEOS_DLL GEOSWKTReader_destroy(GEOSWKTReader* reader);
4633 
4642  GEOSWKTReader* reader,
4643  const char *wkt);
4644 
4651 extern void GEOS_DLL GEOSWKTReader_setFixStructure(
4652  GEOSWKTReader *reader,
4653  char doFix);
4654 
4655 /* ========= WKT Writer ========= */
4656 
4661 extern GEOSWKTWriter GEOS_DLL *GEOSWKTWriter_create(void);
4662 
4667 extern void GEOS_DLL GEOSWKTWriter_destroy(
4668  GEOSWKTWriter* writer);
4669 
4678 extern char GEOS_DLL *GEOSWKTWriter_write(
4679  GEOSWKTWriter* writer,
4680  const GEOSGeometry* g);
4681 
4690 extern void GEOS_DLL GEOSWKTWriter_setTrim(
4691  GEOSWKTWriter *writer,
4692  char trim);
4693 
4701  GEOSWKTWriter *writer,
4702  int precision);
4703 
4711  GEOSWKTWriter *writer,
4712  int dim);
4713 
4720 
4728 extern void GEOS_DLL GEOSWKTWriter_setOld3D(
4729  GEOSWKTWriter *writer,
4730  int useOld3D);
4732 
4733 /* ============================================================================== */
4738 
4739 /* ========== WKB Reader ========== */
4744 extern GEOSWKBReader GEOS_DLL *GEOSWKBReader_create(void);
4745 
4750 extern void GEOS_DLL GEOSWKBReader_destroy(
4751  GEOSWKBReader* reader);
4752 
4759 extern void GEOS_DLL GEOSWKBReader_setFixStructure(
4760  GEOSWKBReader *reader,
4761  char doFix);
4762 
4771  GEOSWKBReader* reader,
4772  const unsigned char *wkb,
4773  size_t size);
4774 
4783  GEOSWKBReader* reader,
4784  const unsigned char *hex,
4785  size_t size);
4786 
4787 /* ========== WKB Writer ========== */
4788 
4793 extern GEOSWKBWriter GEOS_DLL *GEOSWKBWriter_create(void);
4794 
4799 extern void GEOS_DLL GEOSWKBWriter_destroy(GEOSWKBWriter* writer);
4800 
4809 extern unsigned char GEOS_DLL *GEOSWKBWriter_write(
4810  GEOSWKBWriter* writer,
4811  const GEOSGeometry* g,
4812  size_t *size);
4813 
4822 extern unsigned char GEOS_DLL *GEOSWKBWriter_writeHEX(
4823  GEOSWKBWriter* writer,
4824  const GEOSGeometry* g,
4825  size_t *size);
4826 
4835  const GEOSWKBWriter* writer);
4836 
4844  GEOSWKBWriter* writer,
4845  int newDimension);
4846 
4855 extern int GEOS_DLL GEOSWKBWriter_getByteOrder(
4856  const GEOSWKBWriter* writer);
4857 
4864 extern void GEOS_DLL GEOSWKBWriter_setByteOrder(
4865  GEOSWKBWriter* writer,
4866  int byteOrder);
4867 
4880 extern int GEOS_DLL GEOSWKBWriter_getFlavor(
4881  const GEOSWKBWriter* writer);
4882 
4889 extern void GEOS_DLL GEOSWKBWriter_setFlavor(
4890  GEOSWKBWriter* writer,
4891  int flavor);
4892 
4897 extern char GEOS_DLL GEOSWKBWriter_getIncludeSRID(
4898  const GEOSWKBWriter* writer);
4899 
4906 extern void GEOS_DLL GEOSWKBWriter_setIncludeSRID(
4907  GEOSWKBWriter* writer,
4908  const char writeSRID);
4909 
4911 
4912 /* ============================================================================= */
4917 /* ========= GeoJSON Reader ========= */
4918 
4924 
4929 extern void GEOS_DLL GEOSGeoJSONReader_destroy(GEOSGeoJSONReader* reader);
4930 
4940  GEOSGeoJSONReader* reader,
4941  const char *geojson);
4942 
4943 /* ========= GeoJSON Writer ========= */
4944 
4950 
4955 extern void GEOS_DLL GEOSGeoJSONWriter_destroy(GEOSGeoJSONWriter* writer);
4956 
4965 extern char GEOS_DLL *GEOSGeoJSONWriter_writeGeometry(
4966  GEOSGeoJSONWriter* writer,
4967  const GEOSGeometry* g,
4968  int indent);
4969 
4971 
4972 #endif /* #ifndef GEOS_USE_ONLY_R_API */
4973 
4974 /* ====================================================================== */
4975 /* DEPRECATIONS */
4976 /* ====================================================================== */
4977 
4983 
4988  const GEOSGeometry* g,
4989  double width, int quadsegs,
4990  int joinStyle, double mitreLimit,
4991  int leftSide);
4992 
4997  GEOSContextHandle_t handle,
4998  const GEOSGeometry* g,
4999  double width, int quadsegs,
5000  int joinStyle, double mitreLimit,
5001  int leftSide);
5002 
5008  GEOSMessageHandler notice_function,
5009  GEOSMessageHandler error_function);
5010 
5014 extern void GEOS_DLL finishGEOS_r(GEOSContextHandle_t handle);
5015 
5020  GEOSContextHandle_t handle,
5021  const char *wkt);
5022 
5026 extern char GEOS_DLL *GEOSGeomToWKT_r(
5027  GEOSContextHandle_t handle,
5028  const GEOSGeometry* g);
5029 
5033 extern int GEOS_DLL GEOS_getWKBOutputDims_r(
5034  GEOSContextHandle_t handle);
5035 
5039 extern int GEOS_DLL GEOS_setWKBOutputDims_r(
5040  GEOSContextHandle_t handle,
5041  int newDims);
5042 
5046 extern int GEOS_DLL GEOS_getWKBByteOrder_r(
5047  GEOSContextHandle_t handle);
5048 
5052 extern int GEOS_DLL GEOS_setWKBByteOrder_r(
5053  GEOSContextHandle_t handle,
5054  int byteOrder);
5055 
5060  GEOSContextHandle_t handle,
5061  const unsigned char *wkb,
5062  size_t size);
5063 
5067 extern unsigned char GEOS_DLL *GEOSGeomToWKB_buf_r(
5068  GEOSContextHandle_t handle,
5069  const GEOSGeometry* g,
5070  size_t *size);
5071 
5076  GEOSContextHandle_t handle,
5077  const unsigned char *hex,
5078  size_t size);
5079 
5083 extern unsigned char GEOS_DLL *GEOSGeomToHEX_buf_r(
5084  GEOSContextHandle_t handle,
5085  const GEOSGeometry* g,
5086  size_t *size);
5087 
5091 extern GEOSGeometry GEOS_DLL *GEOSGeomFromWKT(const char *wkt);
5092 
5096 extern char GEOS_DLL *GEOSGeomToWKT(const GEOSGeometry* g);
5097 
5101 extern int GEOS_DLL GEOS_getWKBOutputDims(void);
5102 
5106 extern int GEOS_DLL GEOS_setWKBOutputDims(int newDims);
5107 
5111 extern int GEOS_DLL GEOS_getWKBByteOrder(void);
5112 
5116 extern int GEOS_DLL GEOS_setWKBByteOrder(int byteOrder);
5117 
5121 extern GEOSGeometry GEOS_DLL *GEOSGeomFromWKB_buf(const unsigned char *wkb, size_t size);
5122 
5126 extern unsigned char GEOS_DLL *GEOSGeomToWKB_buf(const GEOSGeometry* g, size_t *size);
5127 
5131 extern GEOSGeometry GEOS_DLL *GEOSGeomFromHEX_buf(const unsigned char *hex, size_t size);
5132 
5136 extern unsigned char GEOS_DLL *GEOSGeomToHEX_buf(const GEOSGeometry* g, size_t *size);
5137 
5141 extern GEOSGeometry GEOS_DLL *GEOSUnionCascaded(const GEOSGeometry* g);
5142 
5147  GEOSContextHandle_t handle,
5148  const GEOSGeometry* g);
5149 
5151 
5152 /* ====================================================================== */
5153 /* END DEPRECATIONS */
5154 /* ====================================================================== */
5155 
5156 
5157 #ifdef __cplusplus
5158 } // extern "C"
5159 #endif
5160 
5161 #endif /* #ifndef GEOS_C_H_INCLUDED */
GEOSGeometry * GEOSGeomFromWKT(const char *wkt)
GEOSGeometry * GEOSLineMergeDirected(const GEOSGeometry *g)
int GEOS_setWKBOutputDims_r(GEOSContextHandle_t handle, int newDims)
int GEOSBufferParams_setEndCapStyle_r(GEOSContextHandle_t handle, GEOSBufferParams *p, int style)
GEOSGeometry * GEOSVoronoiDiagram_r(GEOSContextHandle_t extHandle, const GEOSGeometry *g, const GEOSGeometry *env, double tolerance, int onlyEdges)
char GEOSisEmpty_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
char GEOSisSimple(const GEOSGeometry *g)
void GEOSWKBWriter_setByteOrder(GEOSWKBWriter *writer, int byteOrder)
GEOSGeometry * GEOSBuffer(const GEOSGeometry *g, double width, int quadsegs)
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_createPolygon_r(GEOSContextHandle_t handle, GEOSGeometry *shell, GEOSGeometry **holes, unsigned int nholes)
int GEOS_getWKBOutputDims_r(GEOSContextHandle_t handle)
GEOSGeometry * GEOSSymDifferencePrec_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double gridSize)
const GEOSPreparedGeometry * GEOSPrepare(const GEOSGeometry *g)
char GEOSisRing_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSDelaunayTriangulation_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double tolerance, int onlyEdges)
GEOSGeometry * GEOSPointOnSurface(const GEOSGeometry *g)
void GEOSBufferParams_destroy_r(GEOSContextHandle_t handle, GEOSBufferParams *parms)
GEOSGeometry * GEOSGeom_createLinearRing(GEOSCoordSequence *s)
GEOSWKTReader * GEOSWKTReader_create_r(GEOSContextHandle_t handle)
char GEOSPreparedDistanceWithin(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2, double dist)
unsigned char * GEOSGeomToWKB_buf(const GEOSGeometry *g, size_t *size)
GEOSGeometry * GEOSRemoveRepeatedPoints_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double tolerance)
int GEOSBufferParams_setQuadrantSegments_r(GEOSContextHandle_t handle, GEOSBufferParams *p, int quadSegs)
void GEOSSTRtree_iterate(GEOSSTRtree *tree, GEOSQueryCallback callback, void *userdata)
GEOSGeometry * GEOSGeom_createEmptyPoint_r(GEOSContextHandle_t handle)
struct GEOSGeoJSONReader_t GEOSGeoJSONReader
Definition: geos_c.h:1720
GEOSGeometry * GEOSBuildArea(const GEOSGeometry *g)
int GEOS_getWKBByteOrder(void)
void GEOSWKBReader_destroy(GEOSWKBReader *reader)
char * GEOSGeomType_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
char GEOSPreparedContainsProperly(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
void GEOSSTRtree_iterate_r(GEOSContextHandle_t handle, GEOSSTRtree *tree, GEOSQueryCallback callback, void *userdata)
char * GEOSWKTWriter_write(GEOSWKTWriter *writer, const GEOSGeometry *g)
GEOSGeometry * GEOSGeomGetEndPoint_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
int GEOSDistanceIndexed(const GEOSGeometry *g1, const GEOSGeometry *g2, double *dist)
int GEOSGeom_getDimensions_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
unsigned char * GEOSWKBWriter_write_r(GEOSContextHandle_t handle, GEOSWKBWriter *writer, const GEOSGeometry *g, size_t *size)
int GEOSCoordSeq_getZ(const GEOSCoordSequence *s, unsigned int idx, double *val)
GEOSGeometry * GEOSUnion(const GEOSGeometry *ga, const GEOSGeometry *gb)
GEOSCoordSequence * GEOSPreparedNearestPoints(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
GEOSGeometry * GEOSConstrainedDelaunayTriangulation(const GEOSGeometry *g)
GEOSGeometry * GEOSGeom_createPolygon(GEOSGeometry *shell, GEOSGeometry **holes, unsigned int nholes)
GEOSGeoJSONWriter * GEOSGeoJSONWriter_create(void)
void GEOSWKTWriter_setOld3D_r(GEOSContextHandle_t handle, GEOSWKTWriter *writer, int useOld3D)
int(* GEOSDistanceCallback)(const void *item1, const void *item2, double *distance, void *userdata)
Definition: geos_c.h:271
struct GEOSWKBReader_t GEOSWKBReader
Definition: geos_c.h:1706
unsigned char * GEOSGeomToHEX_buf_r(GEOSContextHandle_t handle, const GEOSGeometry *g, size_t *size)
void GEOSGeom_destroy(GEOSGeometry *g)
int GEOS_setWKBByteOrder_r(GEOSContextHandle_t handle, int byteOrder)
GEOSCoordSequence * GEOSCoordSeq_clone(const GEOSCoordSequence *s)
int GEOSDistance_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double *dist)
char GEOSTouches(const GEOSGeometry *g1, const GEOSGeometry *g2)
struct GEOSCoordSeq_t GEOSCoordSequence
Definition: geos_c.h:154
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 * GEOSGeom_clone(const GEOSGeometry *g)
int GEOSGetNumInteriorRings(const GEOSGeometry *g)
GEOSMakeValidParams * GEOSMakeValidParams_create(void)
char * GEOSGeoJSONWriter_writeGeometry(GEOSGeoJSONWriter *writer, const GEOSGeometry *g, int indent)
GEOSGeometry * GEOSGeoJSONReader_readGeometry_r(GEOSContextHandle_t handle, GEOSGeoJSONReader *reader, const char *geojson)
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 * GEOSWKBReader_readHEX_r(GEOSContextHandle_t handle, GEOSWKBReader *reader, const unsigned char *hex, size_t size)
char GEOSEqualsExact(const GEOSGeometry *g1, const GEOSGeometry *g2, double tolerance)
GEOSGeometry * GEOSIntersection(const GEOSGeometry *g1, const GEOSGeometry *g2)
GEOSGeometry * GEOSIntersectionPrec_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double gridSize)
GEOSGeometry * GEOSGeom_createPointFromXY(double x, double y)
GEOSGeometry * GEOSOffsetCurve_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double width, int quadsegs, int joinStyle, double mitreLimit)
GEOSGeometry * GEOSDensify_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double tolerance)
GEOSGeoJSONReader * GEOSGeoJSONReader_create_r(GEOSContextHandle_t handle)
char * GEOSWKTWriter_write_r(GEOSContextHandle_t handle, GEOSWKTWriter *writer, const GEOSGeometry *g)
GEOSMessageHandler_r GEOSContext_setNoticeMessageHandler_r(GEOSContextHandle_t extHandle, GEOSMessageHandler_r nf, void *userData)
GEOSGeometry * GEOSGeom_createCollection_r(GEOSContextHandle_t handle, int type, GEOSGeometry **geoms, unsigned int ngeoms)
int GEOSCoordSeq_getOrdinate(const GEOSCoordSequence *s, unsigned int idx, unsigned int dim, double *val)
GEOSGeometry * GEOSPointOnSurface_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
void GEOSWKBReader_destroy_r(GEOSContextHandle_t handle, GEOSWKBReader *reader)
char * GEOSGeoJSONWriter_writeGeometry_r(GEOSContextHandle_t handle, GEOSGeoJSONWriter *writer, const GEOSGeometry *g, int indent)
int GEOSDistanceIndexed_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double *dist)
void GEOSWKTReader_destroy(GEOSWKTReader *reader)
GEOSGeometry * GEOSDifference_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
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 * GEOSDifference(const GEOSGeometry *ga, const GEOSGeometry *gb)
GEOSGeometry * GEOSGeom_createEmptyCollection(int type)
const GEOSCoordSequence * GEOSGeom_getCoordSeq_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSPolygonizer_getCutEdges(const GEOSGeometry *const geoms[], unsigned int ngeoms)
char GEOSContains_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
double GEOSProject_r(GEOSContextHandle_t handle, const GEOSGeometry *line, const GEOSGeometry *point)
GEOSGeometry * GEOSClipByRect_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double xmin, double ymin, double xmax, double ymax)
void GEOSGeom_destroy_r(GEOSContextHandle_t handle, GEOSGeometry *g)
GEOSBufferParams * GEOSBufferParams_create(void)
GEOSContextHandle_t GEOS_init_r(void)
struct GEOSGeom_t GEOSGeometry
Definition: geos_c.h:140
GEOSSTRtree * GEOSSTRtree_create_r(GEOSContextHandle_t handle, size_t nodeCapacity)
GEOSCoordSequence * GEOSNearestPoints(const GEOSGeometry *g1, const GEOSGeometry *g2)
GEOSGeometry * GEOSGeom_transformXY_r(GEOSContextHandle_t handle, const GEOSGeometry *g, GEOSTransformXYCallback callback, void *userdata)
int GEOSGeomTypeId(const GEOSGeometry *g)
GEOSGeometry * GEOSGeom_createEmptyPolygon_r(GEOSContextHandle_t handle)
const void * GEOSSTRtree_nearest_generic_r(GEOSContextHandle_t handle, GEOSSTRtree *tree, const void *item, const GEOSGeometry *itemEnvelope, GEOSDistanceCallback distancefn, void *userdata)
GEOSGeometry * GEOSPolygonize_valid(const GEOSGeometry *const geoms[], unsigned int ngeoms)
char GEOSCoveredBy_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
int GEOSGetNumCoordinates_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSGeom_clone_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)
void GEOSWKBWriter_setOutputDimension(GEOSWKBWriter *writer, int newDimension)
GEOSGeometry * GEOSPolygonHullSimplifyMode_r(GEOSContextHandle_t handle, const GEOSGeometry *g, unsigned int isOuter, unsigned int parameterMode, double parameter)
GEOSWKBFlavors
Definition: geos_c.h:238
@ GEOS_WKB_ISO
Definition: geos_c.h:242
@ GEOS_WKB_EXTENDED
Definition: geos_c.h:240
void GEOSWKBReader_setFixStructure_r(GEOSContextHandle_t handle, GEOSWKBReader *reader, char doFix)
GEOSGeometry * GEOSGeom_createEmptyPoint(void)
void GEOSFree_r(GEOSContextHandle_t handle, void *buffer)
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)
GEOSGeometry * GEOSGeom_createLinearRing_r(GEOSContextHandle_t handle, GEOSCoordSequence *s)
const GEOSGeometry * GEOSGetExteriorRing_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
int GEOS_getWKBOutputDims(void)
GEOSGeometry * GEOSGeomGetPointN(const GEOSGeometry *g, int n)
GEOSGeometry * GEOSNode_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
int GEOSMakeValidParams_setMethod(GEOSMakeValidParams *p, enum GEOSMakeValidMethods method)
void initGEOS(GEOSMessageHandler notice_function, GEOSMessageHandler error_function)
GEOSGeoJSONReader * GEOSGeoJSONReader_create(void)
GEOSGeometry * GEOSGeom_extractUniquePoints(const GEOSGeometry *g)
const GEOSCoordSequence * GEOSGeom_getCoordSeq(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)
char GEOSCrosses_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
GEOSGeometry * GEOSUnionCascaded(const GEOSGeometry *g)
char GEOSEquals(const GEOSGeometry *g1, const GEOSGeometry *g2)
int GEOSGeom_getYMin(const GEOSGeometry *g, double *value)
int GEOSGeomGetX(const GEOSGeometry *g, double *x)
GEOSGeometry * GEOSInterpolate(const GEOSGeometry *line, double d)
void(* GEOSMessageHandler_r)(const char *message, void *userdata)
Definition: geos_c.h:118
char * GEOSisValidReason(const GEOSGeometry *g)
char GEOSPreparedDistanceWithin_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2, double dist)
GEOSGeometry * GEOSDelaunayTriangulation(const GEOSGeometry *g, double tolerance, int onlyEdges)
void GEOSSTRtree_query(GEOSSTRtree *tree, const GEOSGeometry *g, GEOSQueryCallback callback, void *userdata)
GEOSGeometry * GEOSGeom_extractUniquePoints_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
void GEOS_interruptCancel(void)
void GEOSMakeValidParams_destroy(GEOSMakeValidParams *parms)
int GEOSGeomGetY(const GEOSGeometry *g, double *y)
int GEOSFrechetDistance(const GEOSGeometry *g1, const GEOSGeometry *g2, double *dist)
GEOSGeometry * GEOSUnaryUnionPrec(const GEOSGeometry *g, double gridSize)
void GEOSWKTReader_setFixStructure_r(GEOSContextHandle_t handle, GEOSWKTReader *reader, char doFix)
GEOSCoordSequence * GEOSCoordSeq_copyFromBuffer(const double *buf, unsigned int size, int hasZ, int hasM)
GEOSGeometry * GEOSSymDifferencePrec(const GEOSGeometry *ga, const GEOSGeometry *gb, double gridSize)
GEOSGeometry * GEOSCoverageUnion_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
int GEOSMinimumClearance(const GEOSGeometry *g, double *d)
const GEOSGeometry * GEOSGetInteriorRingN_r(GEOSContextHandle_t handle, const GEOSGeometry *g, int n)
GEOSGeometry * GEOSSnap(const GEOSGeometry *input, const GEOSGeometry *snap_target, double tolerance)
GEOSGeometry * GEOSGeomFromWKB_buf_r(GEOSContextHandle_t handle, const unsigned char *wkb, size_t size)
char GEOSSTRtree_remove(GEOSSTRtree *tree, const GEOSGeometry *g, void *item)
GEOSMessageHandler GEOSContext_setNoticeHandler_r(GEOSContextHandle_t extHandle, GEOSMessageHandler nf)
const char * GEOSversion(void)
GEOSGeometry * GEOSUnionCascaded_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSSingleSidedBuffer_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double width, int quadsegs, int joinStyle, double mitreLimit, int leftSide)
GEOSGeometry * GEOSInterpolate_r(GEOSContextHandle_t handle, const GEOSGeometry *line, double d)
int GEOSCoordSeq_getXYZ(const GEOSCoordSequence *s, unsigned int idx, double *x, double *y, double *z)
GEOSGeometry * GEOSConcaveHullOfPolygons(const GEOSGeometry *g, double lengthRatio, unsigned int isTight, unsigned int isHolesAllowed)
GEOSGeometry * GEOSPolygonize_full(const GEOSGeometry *input, GEOSGeometry **cuts, GEOSGeometry **dangles, GEOSGeometry **invalid)
char GEOSisValidDetail_r(GEOSContextHandle_t handle, const GEOSGeometry *g, int flags, char **reason, GEOSGeometry **location)
char GEOSDisjoint(const GEOSGeometry *g1, const GEOSGeometry *g2)
int GEOSCoordSeq_setX(GEOSCoordSequence *s, unsigned int idx, double val)
GEOSGeometry * GEOSGetCentroid_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
int GEOSPreparedDistance(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2, double *dist)
char GEOSPreparedContains(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
char * GEOSRelateBoundaryNodeRule_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, int bnr)
GEOSGeometry * GEOSGeom_createPoint(GEOSCoordSequence *s)
int GEOSCoordSeq_getXYZ_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s, unsigned int idx, double *x, double *y, double *z)
void GEOSWKBWriter_setFlavor(GEOSWKBWriter *writer, int flavor)
GEOSContextHandle_t initGEOS_r(GEOSMessageHandler notice_function, GEOSMessageHandler error_function)
GEOSBufCapStyles
Definition: geos_c.h:575
@ GEOSBUF_CAP_SQUARE
Definition: geos_c.h:584
@ GEOSBUF_CAP_FLAT
Definition: geos_c.h:581
@ GEOSBUF_CAP_ROUND
Definition: geos_c.h:578
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)
GEOSGeometry * GEOSSimplify(const GEOSGeometry *g, double tolerance)
void GEOSPreparedGeom_destroy(const GEOSPreparedGeometry *g)
int GEOSBufferParams_setJoinStyle(GEOSBufferParams *p, int joinStyle)
void GEOSCoordSeq_destroy(GEOSCoordSequence *s)
GEOSGeometry * GEOSSharedPaths(const GEOSGeometry *g1, const GEOSGeometry *g2)
int GEOSCoordSeq_setOrdinate(GEOSCoordSequence *s, unsigned int idx, unsigned int dim, double val)
GEOSGeometry * GEOSGeom_createEmptyLineString(void)
int GEOSBufferParams_setMitreLimit_r(GEOSContextHandle_t handle, GEOSBufferParams *p, double mitreLimit)
char GEOSContains(const GEOSGeometry *g1, const GEOSGeometry *g2)
GEOSGeometry * GEOSGeom_createLineString_r(GEOSContextHandle_t handle, GEOSCoordSequence *s)
GEOSValidFlags
Definition: geos_c.h:1319
@ GEOSVALID_ALLOW_SELFTOUCHING_RING_FORMING_HOLE
Definition: geos_c.h:1321
GEOSCoordSequence * GEOSCoordSeq_copyFromBuffer_r(GEOSContextHandle_t handle, const double *buf, unsigned int size, int hasZ, int hasM)
void GEOSWKBWriter_setByteOrder_r(GEOSContextHandle_t handle, GEOSWKBWriter *writer, int byteOrder)
GEOSGeometry * GEOSPolygonize_valid_r(GEOSContextHandle_t handle, const GEOSGeometry *const geoms[], unsigned int ngems)
struct GEOSWKBWriter_t GEOSWKBWriter
Definition: geos_c.h:1713
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 * GEOSLargestEmptyCircle(const GEOSGeometry *obstacles, const GEOSGeometry *boundary, double tolerance)
int GEOSGeomTypeId_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
const void * GEOSSTRtree_nearest_generic(GEOSSTRtree *tree, const void *item, const GEOSGeometry *itemEnvelope, GEOSDistanceCallback distancefn, void *userdata)
char GEOSRelatePatternMatch_r(GEOSContextHandle_t handle, const char *mat, const char *pat)
struct GEOSWKTWriter_t GEOSWKTWriter
Definition: geos_c.h:1699
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)
const GEOSGeometry * GEOSSTRtree_nearest_r(GEOSContextHandle_t handle, GEOSSTRtree *tree, const GEOSGeometry *geom)
GEOSWKBReader * GEOSWKBReader_create(void)
int GEOSGeom_getExtent_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *xmin, double *ymin, double *xmax, double *ymax)
int GEOS_setWKBByteOrder(int byteOrder)
GEOSWKBReader * GEOSWKBReader_create_r(GEOSContextHandle_t handle)
void GEOSWKBReader_setFixStructure(GEOSWKBReader *reader, char doFix)
char GEOSPreparedContains_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
const GEOSGeometry * GEOSGetGeometryN_r(GEOSContextHandle_t handle, const GEOSGeometry *g, int n)
int GEOSCoordSeq_getY_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s, unsigned int idx, double *val)
GEOSGeometry * GEOSMinimumRotatedRectangle_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSSTRtree * GEOSSTRtree_create(size_t nodeCapacity)
double GEOSGeom_getPrecision(const GEOSGeometry *g)
char GEOSIntersects(const GEOSGeometry *g1, const GEOSGeometry *g2)
int GEOSCoordSeq_getDimensions(const GEOSCoordSequence *s, unsigned int *dims)
GEOSGeometry * GEOSWKTReader_read_r(GEOSContextHandle_t handle, GEOSWKTReader *reader, const char *wkt)
GEOSGeometry * GEOSUnaryUnion_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
char GEOSPreparedCoveredBy(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
char GEOSCovers(const GEOSGeometry *g1, const GEOSGeometry *g2)
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)
GEOSGeometry * GEOSWKBReader_readHEX(GEOSWKBReader *reader, const unsigned char *hex, size_t size)
int GEOSCoordSeq_getXY(const GEOSCoordSequence *s, unsigned int idx, double *x, double *y)
GEOSGeometry * GEOSGeoJSONReader_readGeometry(GEOSGeoJSONReader *reader, const char *geojson)
char GEOSOverlaps(const GEOSGeometry *g1, const GEOSGeometry *g2)
GEOSGeometry * GEOSSimplify_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double tolerance)
GEOSGeometry * GEOSGeom_createPointFromXY_r(GEOSContextHandle_t handle, double x, double y)
void GEOSWKTWriter_setTrim_r(GEOSContextHandle_t handle, GEOSWKTWriter *writer, char trim)
GEOSInterruptCallback * GEOS_interruptRegisterCallback(GEOSInterruptCallback *cb)
void GEOSWKTWriter_setTrim(GEOSWKTWriter *writer, char trim)
GEOSGeometry * GEOSConcaveHull_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double ratio, unsigned int allowHoles)
unsigned char * GEOSGeomToHEX_buf(const GEOSGeometry *g, 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
void GEOSWKBWriter_setIncludeSRID_r(GEOSContextHandle_t handle, GEOSWKBWriter *writer, const char writeSRID)
int GEOSCoordSeq_copyToArrays(const GEOSCoordSequence *s, double *x, double *y, double *z, double *m)
char GEOSDistanceWithin_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double dist)
struct GEOSWKTReader_t GEOSWKTReader
Definition: geos_c.h:1692
char GEOSPreparedCoveredBy_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
GEOSGeometry * GEOSWKTReader_read(GEOSWKTReader *reader, const char *wkt)
char GEOSRelatePattern(const GEOSGeometry *g1, const GEOSGeometry *g2, const char *pat)
char * GEOSRelateBoundaryNodeRule(const GEOSGeometry *g1, const GEOSGeometry *g2, int bnr)
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 GEOSPreparedDisjoint(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
GEOSGeometry * GEOSBuffer_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double width, int quadsegs)
GEOSGeometry * GEOSUnionPrec(const GEOSGeometry *ga, const GEOSGeometry *gb, double gridSize)
GEOSRelateBoundaryNodeRules
Definition: geos_c.h:1276
@ GEOSRELATE_BNR_OGC
Definition: geos_c.h:1280
@ GEOSRELATE_BNR_MULTIVALENT_ENDPOINT
Definition: geos_c.h:1284
@ GEOSRELATE_BNR_ENDPOINT
Definition: geos_c.h:1282
@ GEOSRELATE_BNR_MOD2
Definition: geos_c.h:1278
@ GEOSRELATE_BNR_MONOVALENT_ENDPOINT
Definition: geos_c.h:1286
unsigned char * GEOSWKBWriter_writeHEX_r(GEOSContextHandle_t handle, GEOSWKBWriter *writer, const GEOSGeometry *g, size_t *size)
int GEOSBufferParams_setSingleSided_r(GEOSContextHandle_t handle, GEOSBufferParams *p, int singleSided)
char GEOSCrosses(const GEOSGeometry *g1, const GEOSGeometry *g2)
void * GEOSGeom_getUserData(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)
GEOSWKTWriter * GEOSWKTWriter_create(void)
GEOSWKTReader * GEOSWKTReader_create(void)
GEOSGeometry * GEOSBuildArea_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSPolygonHullSimplify(const GEOSGeometry *g, unsigned int isOuter, double vertexNumFraction)
GEOSGeometry * GEOSGeom_transformXY(const GEOSGeometry *g, GEOSTransformXYCallback callback, void *userdata)
GEOSGeometry * GEOSReverse_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSGeom_createCollection(int type, GEOSGeometry **geoms, unsigned int ngeoms)
int GEOSWKBWriter_getFlavor(const GEOSWKBWriter *writer)
GEOSGeometry * GEOSPolygonize_r(GEOSContextHandle_t handle, const GEOSGeometry *const geoms[], unsigned int ngeoms)
char GEOSIntersects_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
int GEOSCoordSeq_getSize(const GEOSCoordSequence *s, unsigned int *size)
const GEOSPreparedGeometry * GEOSPrepare_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSPolygonHullParameterModes
Definition: geos_c.h:3527
@ GEOSHULL_PARAM_AREA_RATIO
Definition: geos_c.h:3531
@ GEOSHULL_PARAM_VERTEX_RATIO
Definition: geos_c.h:3529
int GEOSOrientationIndex(double Ax, double Ay, double Bx, double By, double Px, double Py)
void GEOSWKTWriter_setOutputDimension_r(GEOSContextHandle_t handle, GEOSWKTWriter *writer, int dim)
GEOSGeometry * GEOSMinimumClearanceLine(const GEOSGeometry *g)
int GEOSGetNumInteriorRings_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSCoordSequence * GEOSCoordSeq_copyFromArrays(const double *x, const double *y, const double *z, const double *m, unsigned int size)
GEOSCoordSequence * GEOSNearestPoints_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
GEOSGeometry * GEOSGeom_createRectangle(double xmin, double ymin, double xmax, double ymax)
int GEOSGeomGetZ(const GEOSGeometry *g, double *z)
char * GEOSGeomToWKT(const GEOSGeometry *g)
int GEOSWKBWriter_getFlavor_r(GEOSContextHandle_t handle, const GEOSWKBWriter *writer)
char * GEOSGeomToWKT_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
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)
void GEOSCoordSeq_destroy_r(GEOSContextHandle_t handle, GEOSCoordSequence *s)
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)
int GEOSMakeValidParams_setKeepCollapsed(GEOSMakeValidParams *p, int keepCollapsed)
int GEOSHausdorffDistanceDensify(const GEOSGeometry *g1, const GEOSGeometry *g2, double densifyFrac, double *dist)
GEOSGeometry * GEOSNode(const GEOSGeometry *g)
GEOSBufJoinStyles
Definition: geos_c.h:591
@ GEOSBUF_JOIN_MITRE
Definition: geos_c.h:601
@ GEOSBUF_JOIN_ROUND
Definition: geos_c.h:596
@ GEOSBUF_JOIN_BEVEL
Definition: geos_c.h:606
GEOSGeometry * GEOSIntersectionPrec(const GEOSGeometry *g1, const GEOSGeometry *g2, double gridSize)
GEOSGeometry * GEOSBufferWithParams(const GEOSGeometry *g, const GEOSBufferParams *p, double width)
GEOSCoordSequence * GEOSCoordSeq_clone_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s)
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)
GEOSGeometry * GEOSGeom_createEmptyPolygon(void)
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)
GEOSGeometry * GEOSSymDifference_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
int GEOSLength_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *length)
GEOSGeometry * GEOSMinimumWidth(const GEOSGeometry *g)
GEOSGeometry * GEOSPolygonHullSimplify_r(GEOSContextHandle_t handle, const GEOSGeometry *g, unsigned int isOuter, double vertexNumFraction)
unsigned char * GEOSGeomToWKB_buf_r(GEOSContextHandle_t handle, const GEOSGeometry *g, size_t *size)
char GEOSDisjoint_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
char GEOSPreparedContainsProperly_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
char * GEOSGeomType(const GEOSGeometry *g)
GEOSGeometry * GEOSInterpolateNormalized(const GEOSGeometry *line, double proportion)
GEOSGeometry * GEOSPolygonize(const GEOSGeometry *const geoms[], unsigned int ngeoms)
GEOSGeometry * GEOSGeomGetPointN_r(GEOSContextHandle_t handle, const GEOSGeometry *g, int n)
int GEOSGeom_getCoordinateDimension_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
int GEOSNormalize(GEOSGeometry *g)
GEOSGeometry * GEOSClipByRect(const GEOSGeometry *g, double xmin, double ymin, double xmax, double ymax)
int GEOSGetNumGeometries_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
char GEOSEqualsExact_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double tolerance)
GEOSGeometry * GEOSLineMerge(const GEOSGeometry *g)
int GEOSWKTWriter_getOutputDimension(GEOSWKTWriter *writer)
GEOSGeometry * GEOSReverse(const GEOSGeometry *g)
GEOSGeometry * GEOSBufferWithParams_r(GEOSContextHandle_t handle, const GEOSGeometry *g, const GEOSBufferParams *p, double width)
char GEOSTouches_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
GEOSGeometry * GEOSGeomGetStartPoint_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
int GEOSArea_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *area)
GEOSGeometry * GEOSDensify(const GEOSGeometry *g, double tolerance)
double GEOSGeom_getPrecision_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSSnap_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double tolerance)
void GEOSWKTWriter_setOutputDimension(GEOSWKTWriter *writer, int dim)
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)
GEOSGeoJSONWriter * GEOSGeoJSONWriter_create_r(GEOSContextHandle_t handle)
void GEOSWKTWriter_setOld3D(GEOSWKTWriter *writer, int useOld3D)
int GEOSGeom_getExtent(const GEOSGeometry *g, double *xmin, double *ymin, double *xmax, double *ymax)
GEOSGeometry * GEOSConcaveHull(const GEOSGeometry *g, double ratio, unsigned int allowHoles)
GEOSGeometry * GEOSGeomFromWKB_buf(const unsigned char *wkb, size_t size)
GEOSGeometry * GEOSGeom_setPrecision_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double gridSize, int flags)
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)
GEOSGeometry * GEOSMaximumInscribedCircle_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double tolerance)
int GEOSDistance(const GEOSGeometry *g1, const GEOSGeometry *g2, double *dist)
GEOSGeometry * GEOSMakeValidWithParams_r(GEOSContextHandle_t handle, const GEOSGeometry *g, const GEOSMakeValidParams *makeValidParams)
void finishGEOS_r(GEOSContextHandle_t handle)
GEOSGeometry * GEOSCoverageUnion(const GEOSGeometry *g)
char GEOSisClosed(const GEOSGeometry *g)
int GEOSGeom_getCoordinateDimension(const GEOSGeometry *g)
GEOSGeometry * GEOSRemoveRepeatedPoints(const GEOSGeometry *g, double tolerance)
int GEOSFrechetDistance_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double *dist)
GEOSGeometry * GEOSGeom_createEmptyCollection_r(GEOSContextHandle_t handle, int type)
GEOSGeometry * GEOSGeomFromHEX_buf_r(GEOSContextHandle_t handle, const unsigned char *hex, size_t size)
struct GEOSGeoJSONWriter_t GEOSGeoJSONWriter
Definition: geos_c.h:1727
GEOSGeometry * GEOSGeom_createRectangle_r(GEOSContextHandle_t handle, double xmin, double ymin, double xmax, double ymax)
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)
GEOSGeometry * GEOSOffsetCurve(const GEOSGeometry *g, double width, int quadsegs, int joinStyle, double mitreLimit)
int GEOSWKTWriter_getOutputDimension_r(GEOSContextHandle_t handle, GEOSWKTWriter *writer)
double GEOSProjectNormalized(const GEOSGeometry *line, const GEOSGeometry *point)
GEOSGeometry * GEOSTopologyPreserveSimplify(const GEOSGeometry *g, double tolerance)
int GEOSGeom_getYMin_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *value)
void GEOSGeom_setUserData(GEOSGeometry *g, void *userData)
void GEOSGeoJSONReader_destroy(GEOSGeoJSONReader *reader)
char GEOSRelatePattern_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, const char *pat)
GEOSGeometry * GEOSMakeValid_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
int GEOSGeomGetNumPoints(const GEOSGeometry *g)
GEOSGeometry * GEOSBufferWithStyle_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double width, int quadsegs, int endCapStyle, int joinStyle, double mitreLimit)
void GEOSGeoJSONWriter_destroy(GEOSGeoJSONWriter *writer)
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)
const GEOSGeometry * GEOSGetInteriorRingN(const GEOSGeometry *g, int n)
GEOSGeometry * GEOSUnionPrec_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double gridSize)
char GEOSPreparedIntersects(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
char GEOSWithin_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
GEOSGeometry * GEOSBoundary(const GEOSGeometry *g)
int GEOS_setWKBOutputDims(int newDims)
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)
int GEOSOrientationIndex_r(GEOSContextHandle_t handle, double Ax, double Ay, double Bx, double By, double Px, double Py)
GEOSGeometry * GEOSBufferWithStyle(const GEOSGeometry *g, double width, int quadsegs, int endCapStyle, int joinStyle, double mitreLimit)
GEOSPrecisionRules
Definition: geos_c.h:1452
@ GEOS_PREC_NO_TOPO
Definition: geos_c.h:1456
@ GEOS_PREC_KEEP_COLLAPSED
Definition: geos_c.h:1458
@ GEOS_PREC_VALID_OUTPUT
Definition: geos_c.h:1454
int GEOSGetNumGeometries(const GEOSGeometry *g)
GEOSGeometry * GEOSEnvelope_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSMaximumInscribedCircle(const GEOSGeometry *g, double tolerance)
GEOSWKTWriter * GEOSWKTWriter_create_r(GEOSContextHandle_t handle)
GEOSGeometry * GEOSConstrainedDelaunayTriangulation_r(GEOSContextHandle_t handle, 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:1349
@ GEOS_MAKE_VALID_LINEWORK
Definition: geos_c.h:1353
@ GEOS_MAKE_VALID_STRUCTURE
Definition: geos_c.h:1358
int GEOSGeom_getYMax_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *value)
GEOSGeometry * GEOSMinimumClearanceLine_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSWKBReader_read_r(GEOSContextHandle_t handle, GEOSWKBReader *reader, const unsigned char *wkb, size_t size)
unsigned char * GEOSWKBWriter_writeHEX(GEOSWKBWriter *writer, const GEOSGeometry *g, size_t *size)
GEOSGeometry * GEOSConcaveHullOfPolygons_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double lengthRatio, unsigned int isTight, unsigned int isHolesAllowed)
GEOSGeometry * GEOSMakeValid(const GEOSGeometry *g)
GEOSGeometry * GEOSVoronoiDiagram(const GEOSGeometry *g, const GEOSGeometry *env, double tolerance, int onlyEdges)
GEOSGeometry * GEOSMinimumWidth_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSPolygonizer_getCutEdges_r(GEOSContextHandle_t handle, const GEOSGeometry *const geoms[], unsigned int ngeoms)
GEOSGeometry * GEOSUnaryUnionPrec_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double gridSize)
GEOSCoordSequence * GEOSCoordSeq_copyFromArrays_r(GEOSContextHandle_t handle, const double *x, const double *y, const double *z, const double *m, unsigned int size)
void GEOSGeoJSONWriter_destroy_r(GEOSContextHandle_t handle, GEOSGeoJSONWriter *writer)
int GEOSBufferParams_setSingleSided(GEOSBufferParams *p, int singleSided)
int GEOSGeomGetZ_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *z)
GEOSGeometry * GEOSSymDifference(const GEOSGeometry *ga, const GEOSGeometry *gb)
void GEOSWKTWriter_destroy_r(GEOSContextHandle_t handle, GEOSWKTWriter *writer)
int GEOSWKBWriter_getByteOrder(const GEOSWKBWriter *writer)
char * GEOSRelate(const GEOSGeometry *g1, const GEOSGeometry *g2)
char GEOSPreparedOverlaps(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
char GEOSHasZ_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSMinimumRotatedRectangle(const GEOSGeometry *g)
GEOSGeometry * GEOSMakeValidWithParams(const GEOSGeometry *g, const GEOSMakeValidParams *makeValidParams)
GEOSGeometry * GEOSGeomFromWKT_r(GEOSContextHandle_t handle, const char *wkt)
void GEOSGeoJSONReader_destroy_r(GEOSContextHandle_t handle, GEOSGeoJSONReader *reader)
GEOSGeometry * GEOSBoundary_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSPolygonHullSimplifyMode(const GEOSGeometry *g, unsigned int isOuter, unsigned int parameterMode, double parameter)
void GEOSSTRtree_insert(GEOSSTRtree *tree, const GEOSGeometry *g, void *item)
char GEOSisSimple_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
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)
char GEOSPreparedWithin(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
char GEOSHasZ(const GEOSGeometry *g)
int GEOSWKBWriter_getOutputDimension_r(GEOSContextHandle_t handle, const GEOSWKBWriter *writer)
GEOSGeometry * GEOSConvexHull(const GEOSGeometry *g)
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)
GEOSBufferParams * GEOSBufferParams_create_r(GEOSContextHandle_t handle)
int GEOSCoordSeq_getZ_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s, unsigned int idx, double *val)
int GEOSBufferParams_setEndCapStyle(GEOSBufferParams *p, int style)
GEOSGeometry * GEOSUnaryUnion(const GEOSGeometry *g)
int GEOSGetSRID(const GEOSGeometry *g)
GEOSGeometry * GEOSDifferencePrec(const GEOSGeometry *ga, const GEOSGeometry *gb, double gridSize)
GEOSMakeValidParams * GEOSMakeValidParams_create_r(GEOSContextHandle_t extHandle)
const GEOSGeometry * GEOSGetGeometryN(const GEOSGeometry *g, int n)
GEOSGeometry * GEOSSingleSidedBuffer(const GEOSGeometry *g, double width, int quadsegs, int joinStyle, double mitreLimit, int leftSide)
char * GEOSRelate_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
GEOSGeometry * GEOSGeomGetStartPoint(const GEOSGeometry *g)
void GEOSWKTWriter_setRoundingPrecision(GEOSWKTWriter *writer, int precision)
char GEOSisClosed_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSGeom_createEmptyLineString_r(GEOSContextHandle_t handle)
GEOSWKBWriter * GEOSWKBWriter_create_r(GEOSContextHandle_t handle)
void(* GEOSMessageHandler)(const char *fmt,...)
Definition: geos_c.h:106
int GEOSBufferParams_setJoinStyle_r(GEOSContextHandle_t handle, GEOSBufferParams *p, int joinStyle)
char GEOSisRing(const GEOSGeometry *g)
GEOSWKBWriter * GEOSWKBWriter_create(void)
int GEOSCoordSeq_getXY_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s, unsigned int idx, double *x, double *y)
GEOSGeometry * GEOSGeom_setPrecision(const GEOSGeometry *g, double gridSize, int flags)
int GEOSCoordSeq_getX_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s, unsigned int idx, double *val)
unsigned char * GEOSWKBWriter_write(GEOSWKBWriter *writer, const GEOSGeometry *g, size_t *size)
int GEOSPreparedDistance_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2, double *dist)
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)
const GEOSGeometry * GEOSSTRtree_nearest(GEOSSTRtree *tree, const GEOSGeometry *geom)
GEOSCoordSequence * GEOSCoordSeq_create_r(GEOSContextHandle_t handle, unsigned int size, unsigned int dims)
char GEOSCoveredBy(const GEOSGeometry *g1, const GEOSGeometry *g2)
int GEOSGeom_getDimensions(const GEOSGeometry *g)
GEOSGeometry * GEOSWKBReader_read(GEOSWKBReader *reader, const unsigned char *wkb, size_t size)
char GEOSPreparedDisjoint_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
GEOSGeometry * GEOSIntersection_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 GEOSHausdorffDistance_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double *dist)
void GEOSWKBWriter_setIncludeSRID(GEOSWKBWriter *writer, const char writeSRID)
char GEOSisEmpty(const GEOSGeometry *g)
GEOSGeometry * GEOSGeomFromHEX_buf(const unsigned char *hex, size_t size)
GEOSGeometry * GEOSPolygonize_full_r(GEOSContextHandle_t handle, const GEOSGeometry *input, GEOSGeometry **cuts, GEOSGeometry **dangles, GEOSGeometry **invalidRings)
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)
void() GEOSInterruptCallback(void)
Definition: geos_c.h:306
int GEOS_getWKBByteOrder_r(GEOSContextHandle_t handle)
char GEOSPreparedTouches(const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
char GEOSWKBWriter_getIncludeSRID(const GEOSWKBWriter *writer)
struct GEOSSTRtree_t GEOSSTRtree
Definition: geos_c.h:161
void * GEOSGeom_getUserData_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
int GEOSGeom_getXMax(const GEOSGeometry *g, double *value)
GEOSGeometry * GEOSTopologyPreserveSimplify_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double tolerance)
GEOSGeometry * GEOSGeom_createLineString(GEOSCoordSequence *s)
GEOSGeometry * GEOSMinimumBoundingCircle(const GEOSGeometry *g, double *radius, GEOSGeometry **center)
GEOSGeometry * GEOSConvexHull_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSGetCentroid(const GEOSGeometry *g)
void GEOSFree(void *buffer)
GEOSGeometry * GEOSGeom_createPoint_r(GEOSContextHandle_t handle, GEOSCoordSequence *s)
int GEOSCoordSeq_getX(const GEOSCoordSequence *s, unsigned int idx, double *val)
GEOSGeometry * GEOSEnvelope(const GEOSGeometry *g)
int GEOSArea(const GEOSGeometry *g, double *area)
int GEOSGeomGetLength_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *length)
char GEOSPreparedCrosses_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
GEOSGeometry * GEOSLineMergeDirected_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
int GEOSGeomGetY_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *y)
int GEOSCoordSeq_isCCW_r(GEOSContextHandle_t handle, const GEOSCoordSequence *s, char *is_ccw)
GEOSGeometry * GEOSInterpolateNormalized_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double d)
char GEOSisValid_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
GEOSGeometry * GEOSLineMerge_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
void GEOSSTRtree_insert_r(GEOSContextHandle_t handle, GEOSSTRtree *tree, const GEOSGeometry *g, void *item)
GEOSGeometry * GEOSGeomGetEndPoint(const GEOSGeometry *g)
GEOSGeometry * GEOSMinimumBoundingCircle_r(GEOSContextHandle_t handle, const GEOSGeometry *g, double *radius, GEOSGeometry **center)
int GEOSCoordSeq_setX_r(GEOSContextHandle_t handle, GEOSCoordSequence *s, unsigned int idx, double val)
GEOSCoordSequence * GEOSCoordSeq_create(unsigned int size, unsigned int dims)
char GEOSisValidDetail(const GEOSGeometry *g, int flags, char **reason, GEOSGeometry **location)
GEOSCoordSequence * GEOSPreparedNearestPoints_r(GEOSContextHandle_t handle, const GEOSPreparedGeometry *pg1, const GEOSGeometry *g2)
GEOSGeometry * GEOSSharedPaths_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
void GEOSWKTWriter_setRoundingPrecision_r(GEOSContextHandle_t handle, GEOSWKTWriter *writer, int precision)
int GEOSGeom_getYMax(const GEOSGeometry *g, double *value)
int GEOSHausdorffDistanceDensify_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double densifyFrac, double *dist)
const GEOSGeometry * GEOSGetExteriorRing(const GEOSGeometry *g)
GEOSGeometry * GEOSDifferencePrec_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2, double gridSize)
double GEOSProject(const GEOSGeometry *line, const GEOSGeometry *point)
GEOSGeometry * GEOSUnion_r(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2)
char * GEOSisValidReason_r(GEOSContextHandle_t handle, const GEOSGeometry *g)
struct GEOSPrepGeom_t GEOSPreparedGeometry
Definition: geos_c.h:147