34#ifndef GEOS_C_H_INCLUDED
35#define GEOS_C_H_INCLUDED
54#ifndef GEOS_VERSION_MAJOR
55#define GEOS_VERSION_MAJOR 3
57#ifndef GEOS_VERSION_MINOR
58#define GEOS_VERSION_MINOR 9
60#ifndef GEOS_VERSION_PATCH
61#define GEOS_VERSION_PATCH 1
64#define GEOS_VERSION "3.9.1"
67#define GEOS_JTS_PORT "1.17.0"
70#define GEOS_CAPI_VERSION_MAJOR 1
71#define GEOS_CAPI_VERSION_MINOR 14
72#define GEOS_CAPI_VERSION_PATCH 2
73#define GEOS_CAPI_VERSION "3.9.1-CAPI-1.14.2"
75#define GEOS_CAPI_FIRST_INTERFACE GEOS_CAPI_VERSION_MAJOR
76#define GEOS_CAPI_LAST_INTERFACE (GEOS_CAPI_VERSION_MAJOR+GEOS_CAPI_VERSION_MINOR)
85typedef struct GEOSContextHandle_HS *GEOSContextHandle_t;
87typedef void (*GEOSMessageHandler)(
const char *fmt, ...);
99typedef void (*GEOSMessageHandler_r)(
const char *message,
void *userdata);
108typedef struct GEOSGeom_t GEOSGeometry;
109typedef struct GEOSPrepGeom_t GEOSPreparedGeometry;
110typedef struct GEOSCoordSeq_t GEOSCoordSequence;
111typedef struct GEOSSTRtree_t GEOSSTRtree;
112typedef struct GEOSBufParams_t GEOSBufferParams;
118typedef GEOSGeometry* GEOSGeom;
119typedef GEOSCoordSequence* GEOSCoordSeq;
143typedef void (*GEOSQueryCallback)(
void *item,
void *userdata);
144typedef int (*GEOSDistanceCallback)(
const void *item1,
const void* item2,
double* distance,
void* userdata);
152#include <geos/export.h>
160typedef void (GEOSInterruptCallback)();
161extern GEOSInterruptCallback GEOS_DLL *GEOS_interruptRegisterCallback(GEOSInterruptCallback* cb);
163extern void GEOS_DLL GEOS_interruptRequest();
165extern void GEOS_DLL GEOS_interruptCancel();
172extern GEOSContextHandle_t GEOS_DLL initGEOS_r(
173 GEOSMessageHandler notice_function,
174 GEOSMessageHandler error_function);
178extern void GEOS_DLL finishGEOS_r(GEOSContextHandle_t handle);
180extern GEOSContextHandle_t GEOS_DLL GEOS_init_r();
181extern void GEOS_DLL GEOS_finish_r(GEOSContextHandle_t handle);
184extern GEOSMessageHandler GEOS_DLL GEOSContext_setNoticeHandler_r(GEOSContextHandle_t extHandle,
185 GEOSMessageHandler nf);
186extern GEOSMessageHandler GEOS_DLL GEOSContext_setErrorHandler_r(GEOSContextHandle_t extHandle,
187 GEOSMessageHandler ef);
198extern GEOSMessageHandler_r GEOS_DLL GEOSContext_setNoticeMessageHandler_r(GEOSContextHandle_t extHandle,
199 GEOSMessageHandler_r nf,
211extern GEOSMessageHandler_r GEOS_DLL GEOSContext_setErrorMessageHandler_r(GEOSContextHandle_t extHandle,
212 GEOSMessageHandler_r ef,
215extern const char GEOS_DLL *GEOSversion();
225extern GEOSGeometry GEOS_DLL *GEOSGeomFromWKT_r(GEOSContextHandle_t handle,
227extern char GEOS_DLL *GEOSGeomToWKT_r(GEOSContextHandle_t handle,
228 const GEOSGeometry* g);
235extern int GEOS_DLL GEOS_getWKBOutputDims_r(GEOSContextHandle_t handle);
236extern int GEOS_DLL GEOS_setWKBOutputDims_r(GEOSContextHandle_t handle,
244extern int GEOS_DLL GEOS_getWKBByteOrder_r(GEOSContextHandle_t handle);
245extern int GEOS_DLL GEOS_setWKBByteOrder_r(GEOSContextHandle_t handle,
248extern GEOSGeometry GEOS_DLL *GEOSGeomFromWKB_buf_r(GEOSContextHandle_t handle,
249 const unsigned char *wkb,
251extern unsigned char GEOS_DLL *GEOSGeomToWKB_buf_r(GEOSContextHandle_t handle,
252 const GEOSGeometry* g,
255extern GEOSGeometry GEOS_DLL *GEOSGeomFromHEX_buf_r(GEOSContextHandle_t handle,
256 const unsigned char *hex,
258extern unsigned char GEOS_DLL *GEOSGeomToHEX_buf_r(GEOSContextHandle_t handle,
259 const GEOSGeometry* g,
273extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_create_r(
274 GEOSContextHandle_t handle,
282extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_clone_r(
283 GEOSContextHandle_t handle,
284 const GEOSCoordSequence* s);
289extern void GEOS_DLL GEOSCoordSeq_destroy_r(GEOSContextHandle_t handle,
290 GEOSCoordSequence* s);
296extern int GEOS_DLL GEOSCoordSeq_setX_r(GEOSContextHandle_t handle,
297 GEOSCoordSequence* s,
unsigned int idx,
299extern int GEOS_DLL GEOSCoordSeq_setY_r(GEOSContextHandle_t handle,
300 GEOSCoordSequence* s,
unsigned int idx,
302extern int GEOS_DLL GEOSCoordSeq_setZ_r(GEOSContextHandle_t handle,
303 GEOSCoordSequence* s,
unsigned int idx,
305extern int GEOS_DLL GEOSCoordSeq_setXY_r(GEOSContextHandle_t handle,
306 GEOSCoordSequence* s,
unsigned int idx,
308extern int GEOS_DLL GEOSCoordSeq_setXYZ_r(GEOSContextHandle_t handle,
309 GEOSCoordSequence* s,
unsigned int idx,
310 double x,
double y,
double z);
312extern int GEOS_DLL GEOSCoordSeq_setOrdinate_r(GEOSContextHandle_t handle,
313 GEOSCoordSequence* s,
315 unsigned int dim,
double val);
321extern int GEOS_DLL GEOSCoordSeq_getX_r(GEOSContextHandle_t handle,
322 const GEOSCoordSequence* s,
323 unsigned int idx,
double *val);
324extern int GEOS_DLL GEOSCoordSeq_getY_r(GEOSContextHandle_t handle,
325 const GEOSCoordSequence* s,
326 unsigned int idx,
double *val);
327extern int GEOS_DLL GEOSCoordSeq_getZ_r(GEOSContextHandle_t handle,
328 const GEOSCoordSequence* s,
329 unsigned int idx,
double *val);
330extern int GEOS_DLL GEOSCoordSeq_getXY_r(GEOSContextHandle_t handle,
331 const GEOSCoordSequence* s,
332 unsigned int idx,
double *x,
double *y);
333extern int GEOS_DLL GEOSCoordSeq_getXYZ_r(GEOSContextHandle_t handle,
334 const GEOSCoordSequence* s,
335 unsigned int idx,
double *x,
double *y,
double *z);
336extern int GEOS_DLL GEOSCoordSeq_getOrdinate_r(GEOSContextHandle_t handle,
337 const GEOSCoordSequence* s,
339 unsigned int dim,
double *val);
344extern int GEOS_DLL GEOSCoordSeq_getSize_r(GEOSContextHandle_t handle,
345 const GEOSCoordSequence* s,
347extern int GEOS_DLL GEOSCoordSeq_getDimensions_r(GEOSContextHandle_t handle,
348 const GEOSCoordSequence* s,
355extern int GEOS_DLL GEOSCoordSeq_isCCW_r(GEOSContextHandle_t handle,
356 const GEOSCoordSequence* s,
374extern double GEOS_DLL GEOSProject_r(GEOSContextHandle_t handle,
375 const GEOSGeometry *g,
376 const GEOSGeometry *p);
380extern GEOSGeometry GEOS_DLL *GEOSInterpolate_r(GEOSContextHandle_t handle,
381 const GEOSGeometry *g,
384extern double GEOS_DLL GEOSProjectNormalized_r(GEOSContextHandle_t handle,
385 const GEOSGeometry *g,
386 const GEOSGeometry *p);
388extern GEOSGeometry GEOS_DLL *GEOSInterpolateNormalized_r(
389 GEOSContextHandle_t handle,
390 const GEOSGeometry *g,
401extern GEOSGeometry GEOS_DLL *GEOSBuffer_r(GEOSContextHandle_t handle,
402 const GEOSGeometry* g,
403 double width,
int quadsegs);
405enum GEOSBufCapStyles {
411enum GEOSBufJoinStyles {
412 GEOSBUF_JOIN_ROUND=1,
413 GEOSBUF_JOIN_MITRE=2,
418extern GEOSBufferParams GEOS_DLL *GEOSBufferParams_create_r(
419 GEOSContextHandle_t handle);
420extern void GEOS_DLL GEOSBufferParams_destroy_r(
421 GEOSContextHandle_t handle,
422 GEOSBufferParams* parms);
425extern int GEOS_DLL GEOSBufferParams_setEndCapStyle_r(
426 GEOSContextHandle_t handle,
431extern int GEOS_DLL GEOSBufferParams_setJoinStyle_r(
432 GEOSContextHandle_t handle,
437extern int GEOS_DLL GEOSBufferParams_setMitreLimit_r(
438 GEOSContextHandle_t handle,
443extern int GEOS_DLL GEOSBufferParams_setQuadrantSegments_r(
444 GEOSContextHandle_t handle,
450extern int GEOS_DLL GEOSBufferParams_setSingleSided_r(
451 GEOSContextHandle_t handle,
456extern GEOSGeometry GEOS_DLL *GEOSBufferWithParams_r(
457 GEOSContextHandle_t handle,
458 const GEOSGeometry* g,
459 const GEOSBufferParams* p,
463extern GEOSGeometry GEOS_DLL *GEOSBufferWithStyle_r(GEOSContextHandle_t handle,
464 const GEOSGeometry* g,
double width,
int quadsegs,
int endCapStyle,
465 int joinStyle,
double mitreLimit);
469extern GEOSGeometry GEOS_DLL *GEOSSingleSidedBuffer_r(
470 GEOSContextHandle_t handle,
471 const GEOSGeometry* g,
double width,
int quadsegs,
472 int joinStyle,
double mitreLimit,
int leftSide);
481extern GEOSGeometry GEOS_DLL *GEOSOffsetCurve_r(GEOSContextHandle_t handle,
482 const GEOSGeometry* g,
double width,
int quadsegs,
483 int joinStyle,
double mitreLimit);
494extern GEOSGeometry GEOS_DLL *GEOSGeom_createPoint_r(
495 GEOSContextHandle_t handle,
496 GEOSCoordSequence* s);
497extern GEOSGeometry GEOS_DLL *GEOSGeom_createPointFromXY_r(
498 GEOSContextHandle_t handle,
501extern GEOSGeometry GEOS_DLL *GEOSGeom_createEmptyPoint_r(
502 GEOSContextHandle_t handle);
503extern GEOSGeometry GEOS_DLL *GEOSGeom_createLinearRing_r(
504 GEOSContextHandle_t handle,
505 GEOSCoordSequence* s);
506extern GEOSGeometry GEOS_DLL *GEOSGeom_createLineString_r(
507 GEOSContextHandle_t handle,
508 GEOSCoordSequence* s);
509extern GEOSGeometry GEOS_DLL *GEOSGeom_createEmptyLineString_r(
510 GEOSContextHandle_t handle);
517extern GEOSGeometry GEOS_DLL *GEOSGeom_createEmptyPolygon_r(
518 GEOSContextHandle_t handle);
519extern GEOSGeometry GEOS_DLL *GEOSGeom_createPolygon_r(
520 GEOSContextHandle_t handle,
522 GEOSGeometry** holes,
523 unsigned int nholes);
524extern GEOSGeometry GEOS_DLL *GEOSGeom_createCollection_r(
525 GEOSContextHandle_t handle,
int type,
526 GEOSGeometry* *geoms,
527 unsigned int ngeoms);
528extern GEOSGeometry GEOS_DLL *GEOSGeom_createEmptyCollection_r(
529 GEOSContextHandle_t handle,
int type);
531extern GEOSGeometry GEOS_DLL *GEOSGeom_clone_r(GEOSContextHandle_t handle,
532 const GEOSGeometry* g);
540extern void GEOS_DLL GEOSGeom_destroy_r(GEOSContextHandle_t handle,
549extern GEOSGeometry GEOS_DLL *GEOSEnvelope_r(GEOSContextHandle_t handle,
550 const GEOSGeometry* g);
551extern GEOSGeometry GEOS_DLL *GEOSIntersection_r(GEOSContextHandle_t handle,
552 const GEOSGeometry* g1,
553 const GEOSGeometry* g2);
554extern GEOSGeometry GEOS_DLL *GEOSIntersectionPrec_r(GEOSContextHandle_t handle,
555 const GEOSGeometry* g1,
556 const GEOSGeometry* g2,
558extern GEOSGeometry GEOS_DLL *GEOSConvexHull_r(GEOSContextHandle_t handle,
559 const GEOSGeometry* g);
566extern GEOSGeometry GEOS_DLL *GEOSMinimumRotatedRectangle_r(GEOSContextHandle_t handle,
567 const GEOSGeometry* g);
569extern GEOSGeometry GEOS_DLL *GEOSMaximumInscribedCircle_r(GEOSContextHandle_t handle,
const GEOSGeometry* g,
double tolerance);
570extern GEOSGeometry GEOS_DLL *GEOSLargestEmptyCircle_r(GEOSContextHandle_t handle,
const GEOSGeometry* g,
const GEOSGeometry* boundary,
double tolerance);
578extern GEOSGeometry GEOS_DLL *GEOSMinimumWidth_r(GEOSContextHandle_t handle,
579 const GEOSGeometry* g);
581extern GEOSGeometry GEOS_DLL *GEOSMinimumClearanceLine_r(GEOSContextHandle_t handle,
582 const GEOSGeometry* g);
584extern int GEOS_DLL GEOSMinimumClearance_r(GEOSContextHandle_t handle,
585 const GEOSGeometry* g,
588extern GEOSGeometry GEOS_DLL *GEOSDifference_r(GEOSContextHandle_t handle,
589 const GEOSGeometry* g1,
590 const GEOSGeometry* g2);
591extern GEOSGeometry GEOS_DLL *GEOSDifferencePrec_r(GEOSContextHandle_t handle,
592 const GEOSGeometry* g1,
593 const GEOSGeometry* g2,
595extern GEOSGeometry GEOS_DLL *GEOSSymDifference_r(GEOSContextHandle_t handle,
596 const GEOSGeometry* g1,
597 const GEOSGeometry* g2);
598extern GEOSGeometry GEOS_DLL *GEOSSymDifferencePrec_r(GEOSContextHandle_t handle,
599 const GEOSGeometry* g1,
600 const GEOSGeometry* g2,
602extern GEOSGeometry GEOS_DLL *GEOSBoundary_r(GEOSContextHandle_t handle,
603 const GEOSGeometry* g);
604extern GEOSGeometry GEOS_DLL *GEOSUnion_r(GEOSContextHandle_t handle,
605 const GEOSGeometry* g1,
606 const GEOSGeometry* g2);
607extern GEOSGeometry GEOS_DLL *GEOSUnionPrec_r(GEOSContextHandle_t handle,
608 const GEOSGeometry* g1,
609 const GEOSGeometry* g2,
611extern GEOSGeometry GEOS_DLL *GEOSUnaryUnion_r(GEOSContextHandle_t handle,
612 const GEOSGeometry* g);
613extern GEOSGeometry GEOS_DLL *GEOSUnaryUnionPrec_r(GEOSContextHandle_t handle,
614 const GEOSGeometry* g,
619extern GEOSGeometry GEOS_DLL *GEOSCoverageUnion_r(GEOSContextHandle_t handle,
620 const GEOSGeometry* g);
622extern GEOSGeometry GEOS_DLL *GEOSUnionCascaded_r(GEOSContextHandle_t handle,
623 const GEOSGeometry* g);
624extern GEOSGeometry GEOS_DLL *GEOSPointOnSurface_r(GEOSContextHandle_t handle,
625 const GEOSGeometry* g);
626extern GEOSGeometry GEOS_DLL *GEOSGetCentroid_r(GEOSContextHandle_t handle,
627 const GEOSGeometry* g);
628extern GEOSGeometry GEOS_DLL *GEOSMinimumBoundingCircle_r(GEOSContextHandle_t handle,
629 const GEOSGeometry* g,
double* radius,
630 GEOSGeometry** center);
631extern GEOSGeometry GEOS_DLL *GEOSNode_r(GEOSContextHandle_t handle,
632 const GEOSGeometry* g);
635extern GEOSGeometry GEOS_DLL *GEOSClipByRect_r(GEOSContextHandle_t handle,
636 const GEOSGeometry* g,
637 double xmin,
double ymin,
638 double xmax,
double ymax);
677extern GEOSGeometry GEOS_DLL *GEOSPolygonize_r(GEOSContextHandle_t handle,
678 const GEOSGeometry *
const geoms[],
679 unsigned int ngeoms);
680extern GEOSGeometry GEOS_DLL *GEOSPolygonize_valid_r(GEOSContextHandle_t handle,
681 const GEOSGeometry *
const geoms[],
683extern GEOSGeometry GEOS_DLL *GEOSPolygonizer_getCutEdges_r(
684 GEOSContextHandle_t handle,
685 const GEOSGeometry *
const geoms[],
686 unsigned int ngeoms);
687extern GEOSGeometry GEOS_DLL *GEOSPolygonize_full_r(GEOSContextHandle_t handle,
688 const GEOSGeometry* input, GEOSGeometry** cuts,
689 GEOSGeometry** dangles, GEOSGeometry** invalidRings);
691extern GEOSGeometry GEOS_DLL *GEOSBuildArea_r(
692 GEOSContextHandle_t handle,
693 const GEOSGeometry* g);
695extern GEOSGeometry GEOS_DLL *GEOSLineMerge_r(GEOSContextHandle_t handle,
696 const GEOSGeometry* g);
697extern GEOSGeometry GEOS_DLL *GEOSReverse_r(GEOSContextHandle_t handle,
698 const GEOSGeometry* g);
699extern GEOSGeometry GEOS_DLL *GEOSSimplify_r(GEOSContextHandle_t handle,
700 const GEOSGeometry* g,
702extern GEOSGeometry GEOS_DLL *GEOSTopologyPreserveSimplify_r(
703 GEOSContextHandle_t handle,
704 const GEOSGeometry* g,
double tolerance);
711extern GEOSGeometry GEOS_DLL *GEOSGeom_extractUniquePoints_r(
712 GEOSContextHandle_t handle,
713 const GEOSGeometry* g);
726extern GEOSGeometry GEOS_DLL *GEOSSharedPaths_r(GEOSContextHandle_t handle,
727 const GEOSGeometry* g1,
const GEOSGeometry* g2);
733extern GEOSGeometry GEOS_DLL *GEOSSnap_r(GEOSContextHandle_t handle,
734 const GEOSGeometry* g1,
const GEOSGeometry* g2,
double tolerance);
746extern GEOSGeometry GEOS_DLL * GEOSDelaunayTriangulation_r(
747 GEOSContextHandle_t handle,
748 const GEOSGeometry *g,
765extern GEOSGeometry GEOS_DLL * GEOSVoronoiDiagram_r(
766 GEOSContextHandle_t extHandle,
767 const GEOSGeometry *g,
768 const GEOSGeometry *env,
789extern int GEOS_DLL GEOSSegmentIntersection_r(
790 GEOSContextHandle_t extHandle,
791 double ax0,
double ay0,
792 double ax1,
double ay1,
793 double bx0,
double by0,
794 double bx1,
double by1,
795 double* cx,
double* cy);
803extern char GEOS_DLL GEOSDisjoint_r(GEOSContextHandle_t handle,
804 const GEOSGeometry* g1,
805 const GEOSGeometry* g2);
806extern char GEOS_DLL GEOSTouches_r(GEOSContextHandle_t handle,
807 const GEOSGeometry* g1,
808 const GEOSGeometry* g2);
809extern char GEOS_DLL GEOSIntersects_r(GEOSContextHandle_t handle,
810 const GEOSGeometry* g1,
811 const GEOSGeometry* g2);
812extern char GEOS_DLL GEOSCrosses_r(GEOSContextHandle_t handle,
813 const GEOSGeometry* g1,
814 const GEOSGeometry* g2);
815extern char GEOS_DLL GEOSWithin_r(GEOSContextHandle_t handle,
816 const GEOSGeometry* g1,
817 const GEOSGeometry* g2);
818extern char GEOS_DLL GEOSContains_r(GEOSContextHandle_t handle,
819 const GEOSGeometry* g1,
820 const GEOSGeometry* g2);
821extern char GEOS_DLL GEOSOverlaps_r(GEOSContextHandle_t handle,
822 const GEOSGeometry* g1,
823 const GEOSGeometry* g2);
824extern char GEOS_DLL GEOSEquals_r(GEOSContextHandle_t handle,
825 const GEOSGeometry* g1,
826 const GEOSGeometry* g2);
827extern char GEOS_DLL GEOSEqualsExact_r(GEOSContextHandle_t handle,
828 const GEOSGeometry* g1,
829 const GEOSGeometry* g2,
831extern char GEOS_DLL GEOSCovers_r(GEOSContextHandle_t handle,
832 const GEOSGeometry* g1,
833 const GEOSGeometry* g2);
834extern char GEOS_DLL GEOSCoveredBy_r(GEOSContextHandle_t handle,
835 const GEOSGeometry* g1,
836 const GEOSGeometry* g2);
847extern const GEOSPreparedGeometry GEOS_DLL *GEOSPrepare_r(
848 GEOSContextHandle_t handle,
849 const GEOSGeometry* g);
851extern void GEOS_DLL GEOSPreparedGeom_destroy_r(GEOSContextHandle_t handle,
852 const GEOSPreparedGeometry* g);
854extern char GEOS_DLL GEOSPreparedContains_r(GEOSContextHandle_t handle,
855 const GEOSPreparedGeometry* pg1,
856 const GEOSGeometry* g2);
857extern char GEOS_DLL GEOSPreparedContainsProperly_r(GEOSContextHandle_t handle,
858 const GEOSPreparedGeometry* pg1,
859 const GEOSGeometry* g2);
860extern char GEOS_DLL GEOSPreparedCoveredBy_r(GEOSContextHandle_t handle,
861 const GEOSPreparedGeometry* pg1,
862 const GEOSGeometry* g2);
863extern char GEOS_DLL GEOSPreparedCovers_r(GEOSContextHandle_t handle,
864 const GEOSPreparedGeometry* pg1,
865 const GEOSGeometry* g2);
866extern char GEOS_DLL GEOSPreparedCrosses_r(GEOSContextHandle_t handle,
867 const GEOSPreparedGeometry* pg1,
868 const GEOSGeometry* g2);
869extern char GEOS_DLL GEOSPreparedDisjoint_r(GEOSContextHandle_t handle,
870 const GEOSPreparedGeometry* pg1,
871 const GEOSGeometry* g2);
872extern char GEOS_DLL GEOSPreparedIntersects_r(GEOSContextHandle_t handle,
873 const GEOSPreparedGeometry* pg1,
874 const GEOSGeometry* g2);
875extern char GEOS_DLL GEOSPreparedOverlaps_r(GEOSContextHandle_t handle,
876 const GEOSPreparedGeometry* pg1,
877 const GEOSGeometry* g2);
878extern char GEOS_DLL GEOSPreparedTouches_r(GEOSContextHandle_t handle,
879 const GEOSPreparedGeometry* pg1,
880 const GEOSGeometry* g2);
881extern char GEOS_DLL GEOSPreparedWithin_r(GEOSContextHandle_t handle,
882 const GEOSPreparedGeometry* pg1,
883 const GEOSGeometry* g2);
888extern GEOSCoordSequence GEOS_DLL *GEOSPreparedNearestPoints_r(
889 GEOSContextHandle_t handle,
890 const GEOSPreparedGeometry* pg1,
891 const GEOSGeometry* g2);
893extern int GEOS_DLL GEOSPreparedDistance_r(
894 GEOSContextHandle_t handle,
895 const GEOSPreparedGeometry* pg1,
896 const GEOSGeometry* g2,
double *dist);
908extern GEOSSTRtree GEOS_DLL *GEOSSTRtree_create_r(
909 GEOSContextHandle_t handle,
910 size_t nodeCapacity);
911extern void GEOS_DLL GEOSSTRtree_insert_r(GEOSContextHandle_t handle,
913 const GEOSGeometry *g,
915extern void GEOS_DLL GEOSSTRtree_query_r(GEOSContextHandle_t handle,
917 const GEOSGeometry *g,
918 GEOSQueryCallback callback,
921extern const GEOSGeometry GEOS_DLL *GEOSSTRtree_nearest_r(GEOSContextHandle_t handle,
923 const GEOSGeometry* geom);
926extern const void GEOS_DLL *GEOSSTRtree_nearest_generic_r(GEOSContextHandle_t handle,
929 const GEOSGeometry* itemEnvelope,
930 GEOSDistanceCallback distancefn,
933extern void GEOS_DLL GEOSSTRtree_iterate_r(GEOSContextHandle_t handle,
935 GEOSQueryCallback callback,
937extern char GEOS_DLL GEOSSTRtree_remove_r(GEOSContextHandle_t handle,
939 const GEOSGeometry *g,
941extern void GEOS_DLL GEOSSTRtree_destroy_r(GEOSContextHandle_t handle,
951extern char GEOS_DLL GEOSisEmpty_r(GEOSContextHandle_t handle,
952 const GEOSGeometry* g);
953extern char GEOS_DLL GEOSisSimple_r(GEOSContextHandle_t handle,
954 const GEOSGeometry* g);
955extern char GEOS_DLL GEOSisRing_r(GEOSContextHandle_t handle,
956 const GEOSGeometry* g);
957extern char GEOS_DLL GEOSHasZ_r(GEOSContextHandle_t handle,
958 const GEOSGeometry* g);
959extern char GEOS_DLL GEOSisClosed_r(GEOSContextHandle_t handle,
960 const GEOSGeometry *g);
969enum GEOSRelateBoundaryNodeRules {
973 GEOSRELATE_BNR_MOD2=1,
974 GEOSRELATE_BNR_OGC=1,
975 GEOSRELATE_BNR_ENDPOINT=2,
976 GEOSRELATE_BNR_MULTIVALENT_ENDPOINT=3,
977 GEOSRELATE_BNR_MONOVALENT_ENDPOINT=4
981extern char GEOS_DLL GEOSRelatePattern_r(GEOSContextHandle_t handle,
982 const GEOSGeometry* g1,
983 const GEOSGeometry* g2,
987extern char GEOS_DLL *GEOSRelate_r(GEOSContextHandle_t handle,
988 const GEOSGeometry* g1,
989 const GEOSGeometry* g2);
992extern char GEOS_DLL GEOSRelatePatternMatch_r(GEOSContextHandle_t handle,
997extern char GEOS_DLL *GEOSRelateBoundaryNodeRule_r(GEOSContextHandle_t handle,
998 const GEOSGeometry* g1,
999 const GEOSGeometry* g2,
1009enum GEOSValidFlags {
1010 GEOSVALID_ALLOW_SELFTOUCHING_RING_FORMING_HOLE=1
1014extern char GEOS_DLL GEOSisValid_r(GEOSContextHandle_t handle,
1015 const GEOSGeometry* g);
1018extern char GEOS_DLL *GEOSisValidReason_r(GEOSContextHandle_t handle,
1019 const GEOSGeometry* g);
1026extern char GEOS_DLL GEOSisValidDetail_r(GEOSContextHandle_t handle,
1027 const GEOSGeometry* g,
1030 GEOSGeometry** location);
1032extern GEOSGeometry GEOS_DLL *GEOSMakeValid_r(GEOSContextHandle_t handle,
1033 const GEOSGeometry* g);
1042extern char GEOS_DLL *GEOSGeomType_r(GEOSContextHandle_t handle,
1043 const GEOSGeometry* g);
1046extern int GEOS_DLL GEOSGeomTypeId_r(GEOSContextHandle_t handle,
1047 const GEOSGeometry* g);
1050extern int GEOS_DLL GEOSGetSRID_r(GEOSContextHandle_t handle,
1051 const GEOSGeometry* g);
1053extern void GEOS_DLL GEOSSetSRID_r(GEOSContextHandle_t handle,
1054 GEOSGeometry* g,
int SRID);
1056extern void GEOS_DLL *GEOSGeom_getUserData_r(GEOSContextHandle_t handle,
1057const GEOSGeometry* g);
1059extern void GEOS_DLL GEOSGeom_setUserData_r(GEOSContextHandle_t handle,
1060 GEOSGeometry* g,
void* userData);
1068extern int GEOS_DLL GEOSGetNumGeometries_r(GEOSContextHandle_t handle,
1069 const GEOSGeometry* g);
1079extern const GEOSGeometry GEOS_DLL *GEOSGetGeometryN_r(
1080 GEOSContextHandle_t handle,
1081 const GEOSGeometry* g,
int n);
1084extern int GEOS_DLL GEOSNormalize_r(GEOSContextHandle_t handle,
1089#define GEOS_PREC_NO_TOPO (1<<0)
1093#define GEOS_PREC_KEEP_COLLAPSED (1<<1)
1110extern GEOSGeometry GEOS_DLL *GEOSGeom_setPrecision_r(
1111 GEOSContextHandle_t handle,
1112 const GEOSGeometry *g,
1113 double gridSize,
int flags);
1121extern double GEOS_DLL GEOSGeom_getPrecision_r(
1122 GEOSContextHandle_t handle,
1123 const GEOSGeometry *g);
1126extern int GEOS_DLL GEOSGetNumInteriorRings_r(GEOSContextHandle_t handle,
1127 const GEOSGeometry* g);
1130extern int GEOS_DLL GEOSGeomGetNumPoints_r(GEOSContextHandle_t handle,
1131 const GEOSGeometry* g);
1134extern int GEOS_DLL GEOSGeomGetX_r(GEOSContextHandle_t handle,
const GEOSGeometry *g,
double *x);
1135extern int GEOS_DLL GEOSGeomGetY_r(GEOSContextHandle_t handle,
const GEOSGeometry *g,
double *y);
1136extern int GEOS_DLL GEOSGeomGetZ_r(GEOSContextHandle_t handle,
const GEOSGeometry *g,
double *z);
1143extern const GEOSGeometry GEOS_DLL *GEOSGetInteriorRingN_r(
1144 GEOSContextHandle_t handle,
1145 const GEOSGeometry* g,
int n);
1152extern const GEOSGeometry GEOS_DLL *GEOSGetExteriorRing_r(
1153 GEOSContextHandle_t handle,
1154 const GEOSGeometry* g);
1157extern int GEOS_DLL GEOSGetNumCoordinates_r(GEOSContextHandle_t handle,
1158 const GEOSGeometry* g);
1164extern const GEOSCoordSequence GEOS_DLL *GEOSGeom_getCoordSeq_r(
1165 GEOSContextHandle_t handle,
1166 const GEOSGeometry* g);
1171extern int GEOS_DLL GEOSGeom_getDimensions_r(GEOSContextHandle_t handle,
1172 const GEOSGeometry* g);
1177extern int GEOS_DLL GEOSGeom_getCoordinateDimension_r(GEOSContextHandle_t handle,
1178 const GEOSGeometry* g);
1182extern int GEOS_DLL GEOSGeom_getXMin_r(GEOSContextHandle_t handle,
const GEOSGeometry* g,
double* value);
1183extern int GEOS_DLL GEOSGeom_getYMin_r(GEOSContextHandle_t handle,
const GEOSGeometry* g,
double* value);
1184extern int GEOS_DLL GEOSGeom_getXMax_r(GEOSContextHandle_t handle,
const GEOSGeometry* g,
double* value);
1185extern int GEOS_DLL GEOSGeom_getYMax_r(GEOSContextHandle_t handle,
const GEOSGeometry* g,
double* value);
1191extern GEOSGeometry GEOS_DLL *GEOSGeomGetPointN_r(GEOSContextHandle_t handle,
const GEOSGeometry *g,
int n);
1192extern GEOSGeometry GEOS_DLL *GEOSGeomGetStartPoint_r(GEOSContextHandle_t handle,
const GEOSGeometry *g);
1193extern GEOSGeometry GEOS_DLL *GEOSGeomGetEndPoint_r(GEOSContextHandle_t handle,
const GEOSGeometry *g);
1202extern int GEOS_DLL GEOSArea_r(GEOSContextHandle_t handle,
1203 const GEOSGeometry* g,
double *area);
1204extern int GEOS_DLL GEOSLength_r(GEOSContextHandle_t handle,
1205 const GEOSGeometry* g,
double *length);
1206extern int GEOS_DLL GEOSDistance_r(GEOSContextHandle_t handle,
1207 const GEOSGeometry* g1,
1208 const GEOSGeometry* g2,
double *dist);
1209extern int GEOS_DLL GEOSDistanceIndexed_r(GEOSContextHandle_t handle,
1210 const GEOSGeometry* g1,
1211 const GEOSGeometry* g2,
double *dist);
1212extern int GEOS_DLL GEOSHausdorffDistance_r(GEOSContextHandle_t handle,
1213 const GEOSGeometry *g1,
1214 const GEOSGeometry *g2,
1216extern int GEOS_DLL GEOSHausdorffDistanceDensify_r(GEOSContextHandle_t handle,
1217 const GEOSGeometry *g1,
1218 const GEOSGeometry *g2,
1219 double densifyFrac,
double *dist);
1220extern int GEOS_DLL GEOSFrechetDistance_r(GEOSContextHandle_t handle,
1221 const GEOSGeometry *g1,
1222 const GEOSGeometry *g2,
1224extern int GEOS_DLL GEOSFrechetDistanceDensify_r(GEOSContextHandle_t handle,
1225 const GEOSGeometry *g1,
1226 const GEOSGeometry *g2,
1227 double densifyFrac,
double *dist);
1228extern int GEOS_DLL GEOSGeomGetLength_r(GEOSContextHandle_t handle,
1229 const GEOSGeometry *g,
double *length);
1234extern GEOSCoordSequence GEOS_DLL *GEOSNearestPoints_r(
1235 GEOSContextHandle_t handle,
const GEOSGeometry* g1,
const GEOSGeometry* g2);
1252extern int GEOS_DLL GEOSOrientationIndex_r(GEOSContextHandle_t handle,
1253 double Ax,
double Ay,
double Bx,
double By,
double Px,
double Py);
1262#ifndef GEOSWKTReader
1263typedef struct GEOSWKTReader_t GEOSWKTReader;
1264typedef struct GEOSWKTWriter_t GEOSWKTWriter;
1265typedef struct GEOSWKBReader_t GEOSWKBReader;
1266typedef struct GEOSWKBWriter_t GEOSWKBWriter;
1270extern GEOSWKTReader GEOS_DLL *GEOSWKTReader_create_r(
1271 GEOSContextHandle_t handle);
1272extern void GEOS_DLL GEOSWKTReader_destroy_r(GEOSContextHandle_t handle,
1273 GEOSWKTReader* reader);
1274extern GEOSGeometry GEOS_DLL *GEOSWKTReader_read_r(GEOSContextHandle_t handle,
1275 GEOSWKTReader* reader,
1279extern GEOSWKTWriter GEOS_DLL *GEOSWKTWriter_create_r(
1280 GEOSContextHandle_t handle);
1281extern void GEOS_DLL GEOSWKTWriter_destroy_r(GEOSContextHandle_t handle,
1282 GEOSWKTWriter* writer);
1283extern char GEOS_DLL *GEOSWKTWriter_write_r(GEOSContextHandle_t handle,
1284 GEOSWKTWriter* writer,
1285 const GEOSGeometry* g);
1286extern void GEOS_DLL GEOSWKTWriter_setTrim_r(GEOSContextHandle_t handle,
1287 GEOSWKTWriter *writer,
1289extern void GEOS_DLL GEOSWKTWriter_setRoundingPrecision_r(GEOSContextHandle_t handle,
1290 GEOSWKTWriter *writer,
1292extern void GEOS_DLL GEOSWKTWriter_setOutputDimension_r(GEOSContextHandle_t handle,
1293 GEOSWKTWriter *writer,
1295extern int GEOS_DLL GEOSWKTWriter_getOutputDimension_r(GEOSContextHandle_t handle,
1296 GEOSWKTWriter *writer);
1297extern void GEOS_DLL GEOSWKTWriter_setOld3D_r(GEOSContextHandle_t handle,
1298 GEOSWKTWriter *writer,
1302extern GEOSWKBReader GEOS_DLL *GEOSWKBReader_create_r(
1303 GEOSContextHandle_t handle);
1304extern void GEOS_DLL GEOSWKBReader_destroy_r(GEOSContextHandle_t handle,
1305 GEOSWKBReader* reader);
1306extern GEOSGeometry GEOS_DLL *GEOSWKBReader_read_r(GEOSContextHandle_t handle,
1307 GEOSWKBReader* reader,
1308 const unsigned char *wkb,
1310extern GEOSGeometry GEOS_DLL *GEOSWKBReader_readHEX_r(
1311 GEOSContextHandle_t handle,
1312 GEOSWKBReader* reader,
1313 const unsigned char *hex,
1317extern GEOSWKBWriter GEOS_DLL *GEOSWKBWriter_create_r(
1318 GEOSContextHandle_t handle);
1319extern void GEOS_DLL GEOSWKBWriter_destroy_r(GEOSContextHandle_t handle,
1320 GEOSWKBWriter* writer);
1323extern unsigned char GEOS_DLL *GEOSWKBWriter_write_r(
1324 GEOSContextHandle_t handle,
1325 GEOSWKBWriter* writer,
1326 const GEOSGeometry* g,
1328extern unsigned char GEOS_DLL *GEOSWKBWriter_writeHEX_r(
1329 GEOSContextHandle_t handle,
1330 GEOSWKBWriter* writer,
1331 const GEOSGeometry* g,
1338extern int GEOS_DLL GEOSWKBWriter_getOutputDimension_r(
1339 GEOSContextHandle_t handle,
1340 const GEOSWKBWriter* writer);
1341extern void GEOS_DLL GEOSWKBWriter_setOutputDimension_r(
1342 GEOSContextHandle_t handle,
1343 GEOSWKBWriter* writer,
int newDimension);
1349extern int GEOS_DLL GEOSWKBWriter_getByteOrder_r(GEOSContextHandle_t handle,
1350 const GEOSWKBWriter* writer);
1351extern void GEOS_DLL GEOSWKBWriter_setByteOrder_r(GEOSContextHandle_t handle,
1352 GEOSWKBWriter* writer,
1358extern char GEOS_DLL GEOSWKBWriter_getIncludeSRID_r(GEOSContextHandle_t handle,
1359 const GEOSWKBWriter* writer);
1360extern void GEOS_DLL GEOSWKBWriter_setIncludeSRID_r(GEOSContextHandle_t handle,
1361 GEOSWKBWriter* writer,
const char writeSRID);
1368extern void GEOS_DLL GEOSFree_r(GEOSContextHandle_t handle,
void *buffer);
1373#ifndef GEOS_USE_ONLY_R_API
1381extern void GEOS_DLL initGEOS(GEOSMessageHandler notice_function,
1382 GEOSMessageHandler error_function);
1383extern void GEOS_DLL finishGEOS(
void);
1392extern GEOSGeometry GEOS_DLL *GEOSGeomFromWKT(
const char *wkt);
1393extern char GEOS_DLL *GEOSGeomToWKT(
const GEOSGeometry* g);
1399extern int GEOS_DLL GEOS_getWKBOutputDims();
1400extern int GEOS_DLL GEOS_setWKBOutputDims(
int newDims);
1406extern int GEOS_DLL GEOS_getWKBByteOrder();
1407extern int GEOS_DLL GEOS_setWKBByteOrder(
int byteOrder);
1409extern GEOSGeometry GEOS_DLL *GEOSGeomFromWKB_buf(
const unsigned char *wkb,
size_t size);
1410extern unsigned char GEOS_DLL *GEOSGeomToWKB_buf(
const GEOSGeometry* g,
size_t *size);
1412extern GEOSGeometry GEOS_DLL *GEOSGeomFromHEX_buf(
const unsigned char *hex,
size_t size);
1413extern unsigned char GEOS_DLL *GEOSGeomToHEX_buf(
const GEOSGeometry* g,
size_t *size);
1426extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_create(
unsigned int size,
unsigned int dims);
1432extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_clone(
const GEOSCoordSequence* s);
1437extern void GEOS_DLL GEOSCoordSeq_destroy(GEOSCoordSequence* s);
1443extern int GEOS_DLL GEOSCoordSeq_setX(GEOSCoordSequence* s,
1444 unsigned int idx,
double val);
1445extern int GEOS_DLL GEOSCoordSeq_setY(GEOSCoordSequence* s,
1446 unsigned int idx,
double val);
1447extern int GEOS_DLL GEOSCoordSeq_setZ(GEOSCoordSequence* s,
1448 unsigned int idx,
double val);
1449extern int GEOS_DLL GEOSCoordSeq_setXY(GEOSCoordSequence* s,
1450 unsigned int idx,
double x,
double y);
1451extern int GEOS_DLL GEOSCoordSeq_setXYZ(GEOSCoordSequence* s,
1452 unsigned int idx,
double x,
double y,
double z);
1453extern int GEOS_DLL GEOSCoordSeq_setOrdinate(GEOSCoordSequence* s,
1454 unsigned int idx,
unsigned int dim,
double val);
1460extern int GEOS_DLL GEOSCoordSeq_getX(
const GEOSCoordSequence* s,
1461 unsigned int idx,
double *val);
1462extern int GEOS_DLL GEOSCoordSeq_getY(
const GEOSCoordSequence* s,
1463 unsigned int idx,
double *val);
1464extern int GEOS_DLL GEOSCoordSeq_getZ(
const GEOSCoordSequence* s,
1465 unsigned int idx,
double *val);
1466extern int GEOS_DLL GEOSCoordSeq_getXY(
const GEOSCoordSequence* s,
1467 unsigned int idx,
double *x,
double *y);
1468extern int GEOS_DLL GEOSCoordSeq_getXYZ(
const GEOSCoordSequence* s,
1469 unsigned int idx,
double *x,
double *y,
double *z);
1470extern int GEOS_DLL GEOSCoordSeq_getOrdinate(
const GEOSCoordSequence* s,
1471 unsigned int idx,
unsigned int dim,
double *val);
1476extern int GEOS_DLL GEOSCoordSeq_getSize(
const GEOSCoordSequence* s,
1477 unsigned int *size);
1478extern int GEOS_DLL GEOSCoordSeq_getDimensions(
const GEOSCoordSequence* s,
1479 unsigned int *dims);
1486extern int GEOS_DLL GEOSCoordSeq_isCCW(
const GEOSCoordSequence* s,
char* is_ccw);
1503extern double GEOS_DLL GEOSProject(
const GEOSGeometry *g,
1504 const GEOSGeometry* p);
1508extern GEOSGeometry GEOS_DLL *GEOSInterpolate(
const GEOSGeometry *g,
1511extern double GEOS_DLL GEOSProjectNormalized(
const GEOSGeometry *g,
1512 const GEOSGeometry* p);
1514extern GEOSGeometry GEOS_DLL *GEOSInterpolateNormalized(
const GEOSGeometry *g,
1525extern GEOSGeometry GEOS_DLL *GEOSBuffer(
const GEOSGeometry* g,
1526 double width,
int quadsegs);
1529extern GEOSBufferParams GEOS_DLL *GEOSBufferParams_create();
1530extern void GEOS_DLL GEOSBufferParams_destroy(GEOSBufferParams* parms);
1533extern int GEOS_DLL GEOSBufferParams_setEndCapStyle(
1534 GEOSBufferParams* p,
1538extern int GEOS_DLL GEOSBufferParams_setJoinStyle(
1539 GEOSBufferParams* p,
1543extern int GEOS_DLL GEOSBufferParams_setMitreLimit(
1544 GEOSBufferParams* p,
1548extern int GEOS_DLL GEOSBufferParams_setQuadrantSegments(
1549 GEOSBufferParams* p,
1554extern int GEOS_DLL GEOSBufferParams_setSingleSided(
1555 GEOSBufferParams* p,
1559extern GEOSGeometry GEOS_DLL *GEOSBufferWithParams(
1560 const GEOSGeometry* g,
1561 const GEOSBufferParams* p,
1565extern GEOSGeometry GEOS_DLL *GEOSBufferWithStyle(
const GEOSGeometry* g,
1566 double width,
int quadsegs,
int endCapStyle,
int joinStyle,
1571extern GEOSGeometry GEOS_DLL *GEOSSingleSidedBuffer(
const GEOSGeometry* g,
1572 double width,
int quadsegs,
int joinStyle,
double mitreLimit,
1582extern GEOSGeometry GEOS_DLL *GEOSOffsetCurve(
const GEOSGeometry* g,
1583 double width,
int quadsegs,
int joinStyle,
double mitreLimit);
1593extern GEOSGeometry GEOS_DLL *GEOSGeom_createPoint(GEOSCoordSequence* s);
1594extern GEOSGeometry GEOS_DLL *GEOSGeom_createPointFromXY(
double x,
double y);
1595extern GEOSGeometry GEOS_DLL *GEOSGeom_createEmptyPoint();
1596extern GEOSGeometry GEOS_DLL *GEOSGeom_createLinearRing(GEOSCoordSequence* s);
1597extern GEOSGeometry GEOS_DLL *GEOSGeom_createLineString(GEOSCoordSequence* s);
1598extern GEOSGeometry GEOS_DLL *GEOSGeom_createEmptyLineString();
1605extern GEOSGeometry GEOS_DLL *GEOSGeom_createEmptyPolygon();
1606extern GEOSGeometry GEOS_DLL *GEOSGeom_createPolygon(GEOSGeometry* shell,
1607 GEOSGeometry** holes,
unsigned int nholes);
1608extern GEOSGeometry GEOS_DLL *GEOSGeom_createCollection(
int type,
1609 GEOSGeometry* *geoms,
unsigned int ngeoms);
1610extern GEOSGeometry GEOS_DLL *GEOSGeom_createEmptyCollection(
int type);
1612extern GEOSGeometry GEOS_DLL *GEOSGeom_clone(
const GEOSGeometry* g);
1620extern void GEOS_DLL GEOSGeom_destroy(GEOSGeometry* g);
1628extern GEOSGeometry GEOS_DLL *GEOSEnvelope(
const GEOSGeometry* g);
1629extern GEOSGeometry GEOS_DLL *GEOSIntersection(
const GEOSGeometry* g1,
const GEOSGeometry* g2);
1630extern GEOSGeometry GEOS_DLL *GEOSIntersectionPrec(
const GEOSGeometry* g1,
const GEOSGeometry* g2,
double gridSize);
1631extern GEOSGeometry GEOS_DLL *GEOSConvexHull(
const GEOSGeometry* g);
1638extern GEOSGeometry GEOS_DLL *GEOSMinimumRotatedRectangle(
const GEOSGeometry* g);
1655extern GEOSGeometry GEOS_DLL *GEOSMaximumInscribedCircle(
const GEOSGeometry* g,
double tolerance);
1670extern GEOSGeometry GEOS_DLL *GEOSLargestEmptyCircle(
const GEOSGeometry* g,
const GEOSGeometry* boundary,
double tolerance);
1678extern GEOSGeometry GEOS_DLL *GEOSMinimumWidth(
const GEOSGeometry* g);
1696extern int GEOS_DLL GEOSMinimumClearance(
const GEOSGeometry* g,
double* d);
1704extern GEOSGeometry GEOS_DLL *GEOSMinimumClearanceLine(
const GEOSGeometry* g);
1706extern GEOSGeometry GEOS_DLL *GEOSDifference(
const GEOSGeometry* g1,
const GEOSGeometry* g2);
1707extern GEOSGeometry GEOS_DLL *GEOSDifferencePrec(
const GEOSGeometry* g1,
const GEOSGeometry* g2,
double gridSize);
1708extern GEOSGeometry GEOS_DLL *GEOSSymDifference(
const GEOSGeometry* g1,
const GEOSGeometry* g2);
1709extern GEOSGeometry GEOS_DLL *GEOSSymDifferencePrec(
const GEOSGeometry* g1,
const GEOSGeometry* g2,
double gridSize);
1710extern GEOSGeometry GEOS_DLL *GEOSBoundary(
const GEOSGeometry* g);
1711extern GEOSGeometry GEOS_DLL *GEOSUnion(
const GEOSGeometry* g1,
const GEOSGeometry* g2);
1712extern GEOSGeometry GEOS_DLL *GEOSUnionPrec(
const GEOSGeometry* g1,
const GEOSGeometry* g2,
double gridSize);
1713extern GEOSGeometry GEOS_DLL *GEOSUnaryUnion(
const GEOSGeometry* g);
1714extern GEOSGeometry GEOS_DLL *GEOSUnaryUnionPrec(
const GEOSGeometry* g,
double gridSize);
1719extern GEOSGeometry GEOS_DLL *GEOSCoverageUnion(
const GEOSGeometry *g);
1722extern GEOSGeometry GEOS_DLL *GEOSUnionCascaded(
const GEOSGeometry* g);
1724extern GEOSGeometry GEOS_DLL *GEOSPointOnSurface(
const GEOSGeometry* g);
1725extern GEOSGeometry GEOS_DLL *GEOSGetCentroid(
const GEOSGeometry* g);
1726extern GEOSGeometry GEOS_DLL *GEOSMinimumBoundingCircle(
const GEOSGeometry* g,
double* radius, GEOSGeometry** center);
1727extern GEOSGeometry GEOS_DLL *GEOSNode(
const GEOSGeometry* g);
1728extern GEOSGeometry GEOS_DLL *GEOSClipByRect(
const GEOSGeometry* g,
double xmin,
double ymin,
double xmax,
double ymax);
1734extern GEOSGeometry GEOS_DLL *GEOSPolygonize(
const GEOSGeometry *
const geoms[],
unsigned int ngeoms);
1735extern GEOSGeometry GEOS_DLL *GEOSPolygonize_valid(
const GEOSGeometry *
const geoms[],
unsigned int ngeoms);
1736extern GEOSGeometry GEOS_DLL *GEOSPolygonizer_getCutEdges(
const GEOSGeometry *
const geoms[],
unsigned int ngeoms);
1737extern GEOSGeometry GEOS_DLL *GEOSPolygonize_full(
const GEOSGeometry* input,
1738 GEOSGeometry** cuts, GEOSGeometry** dangles, GEOSGeometry** invalid);
1740extern GEOSGeometry GEOS_DLL *GEOSBuildArea(
const GEOSGeometry* g);
1742extern GEOSGeometry GEOS_DLL *GEOSLineMerge(
const GEOSGeometry* g);
1743extern GEOSGeometry GEOS_DLL *GEOSReverse(
const GEOSGeometry* g);
1744extern GEOSGeometry GEOS_DLL *GEOSSimplify(
const GEOSGeometry* g,
double tolerance);
1745extern GEOSGeometry GEOS_DLL *GEOSTopologyPreserveSimplify(
const GEOSGeometry* g,
1753extern GEOSGeometry GEOS_DLL *GEOSGeom_extractUniquePoints(
1754 const GEOSGeometry* g);
1767extern GEOSGeometry GEOS_DLL *GEOSSharedPaths(
const GEOSGeometry* g1,
1768 const GEOSGeometry* g2);
1774extern GEOSGeometry GEOS_DLL *GEOSSnap(
const GEOSGeometry* g1,
1775 const GEOSGeometry* g2,
double tolerance);
1787extern GEOSGeometry GEOS_DLL * GEOSDelaunayTriangulation(
1788 const GEOSGeometry *g,
1805extern GEOSGeometry GEOS_DLL * GEOSVoronoiDiagram(
1806 const GEOSGeometry *g,
1807 const GEOSGeometry *env,
1827extern int GEOS_DLL GEOSSegmentIntersection(
1828 double ax0,
double ay0,
1829 double ax1,
double ay1,
1830 double bx0,
double by0,
1831 double bx1,
double by1,
1832 double* cx,
double* cy);
1840extern char GEOS_DLL GEOSDisjoint(
const GEOSGeometry* g1,
const GEOSGeometry* g2);
1841extern char GEOS_DLL GEOSTouches(
const GEOSGeometry* g1,
const GEOSGeometry* g2);
1842extern char GEOS_DLL GEOSIntersects(
const GEOSGeometry* g1,
const GEOSGeometry* g2);
1843extern char GEOS_DLL GEOSCrosses(
const GEOSGeometry* g1,
const GEOSGeometry* g2);
1844extern char GEOS_DLL GEOSWithin(
const GEOSGeometry* g1,
const GEOSGeometry* g2);
1845extern char GEOS_DLL GEOSContains(
const GEOSGeometry* g1,
const GEOSGeometry* g2);
1846extern char GEOS_DLL GEOSOverlaps(
const GEOSGeometry* g1,
const GEOSGeometry* g2);
1847extern char GEOS_DLL GEOSEquals(
const GEOSGeometry* g1,
const GEOSGeometry* g2);
1848extern char GEOS_DLL GEOSCovers(
const GEOSGeometry* g1,
const GEOSGeometry* g2);
1849extern char GEOS_DLL GEOSCoveredBy(
const GEOSGeometry* g1,
const GEOSGeometry* g2);
1859extern char GEOS_DLL GEOSEqualsExact(
const GEOSGeometry* g1,
const GEOSGeometry* g2,
double tolerance);
1870extern const GEOSPreparedGeometry GEOS_DLL *GEOSPrepare(
const GEOSGeometry* g);
1872extern void GEOS_DLL GEOSPreparedGeom_destroy(
const GEOSPreparedGeometry* g);
1874extern char GEOS_DLL GEOSPreparedContains(
const GEOSPreparedGeometry* pg1,
const GEOSGeometry* g2);
1875extern char GEOS_DLL GEOSPreparedContainsProperly(
const GEOSPreparedGeometry* pg1,
const GEOSGeometry* g2);
1876extern char GEOS_DLL GEOSPreparedCoveredBy(
const GEOSPreparedGeometry* pg1,
const GEOSGeometry* g2);
1877extern char GEOS_DLL GEOSPreparedCovers(
const GEOSPreparedGeometry* pg1,
const GEOSGeometry* g2);
1878extern char GEOS_DLL GEOSPreparedCrosses(
const GEOSPreparedGeometry* pg1,
const GEOSGeometry* g2);
1879extern char GEOS_DLL GEOSPreparedDisjoint(
const GEOSPreparedGeometry* pg1,
const GEOSGeometry* g2);
1880extern char GEOS_DLL GEOSPreparedIntersects(
const GEOSPreparedGeometry* pg1,
const GEOSGeometry* g2);
1881extern char GEOS_DLL GEOSPreparedOverlaps(
const GEOSPreparedGeometry* pg1,
const GEOSGeometry* g2);
1882extern char GEOS_DLL GEOSPreparedTouches(
const GEOSPreparedGeometry* pg1,
const GEOSGeometry* g2);
1883extern char GEOS_DLL GEOSPreparedWithin(
const GEOSPreparedGeometry* pg1,
const GEOSGeometry* g2);
1884extern GEOSCoordSequence GEOS_DLL *GEOSPreparedNearestPoints(
const GEOSPreparedGeometry* pg1,
const GEOSGeometry* g2);
1885extern int GEOS_DLL GEOSPreparedDistance(
const GEOSPreparedGeometry* pg1,
const GEOSGeometry* g2,
double *dist);
1905extern GEOSSTRtree GEOS_DLL *GEOSSTRtree_create(
size_t nodeCapacity);
1914extern void GEOS_DLL GEOSSTRtree_insert(GEOSSTRtree *tree,
1915 const GEOSGeometry *g,
1928extern void GEOS_DLL GEOSSTRtree_query(GEOSSTRtree *tree,
1929 const GEOSGeometry *g,
1930 GEOSQueryCallback callback,
1942extern const GEOSGeometry GEOS_DLL *GEOSSTRtree_nearest(GEOSSTRtree *tree,
const GEOSGeometry* geom);
1960extern const void GEOS_DLL *GEOSSTRtree_nearest_generic(GEOSSTRtree *tree,
1962 const GEOSGeometry* itemEnvelope,
1963 GEOSDistanceCallback distancefn,
1971extern void GEOS_DLL GEOSSTRtree_iterate(GEOSSTRtree *tree,
1972 GEOSQueryCallback callback,
1985extern char GEOS_DLL GEOSSTRtree_remove(GEOSSTRtree *tree,
1986 const GEOSGeometry *g,
1988extern void GEOS_DLL GEOSSTRtree_destroy(GEOSSTRtree *tree);
1997extern char GEOS_DLL GEOSisEmpty(
const GEOSGeometry* g);
1998extern char GEOS_DLL GEOSisSimple(
const GEOSGeometry* g);
1999extern char GEOS_DLL GEOSisRing(
const GEOSGeometry* g);
2000extern char GEOS_DLL GEOSHasZ(
const GEOSGeometry* g);
2001extern char GEOS_DLL GEOSisClosed(
const GEOSGeometry *g);
2010extern char GEOS_DLL GEOSRelatePattern(
const GEOSGeometry* g1,
const GEOSGeometry* g2,
const char *pat);
2013extern char GEOS_DLL *GEOSRelate(
const GEOSGeometry* g1,
const GEOSGeometry* g2);
2016extern char GEOS_DLL GEOSRelatePatternMatch(
const char *mat,
const char *pat);
2019extern char GEOS_DLL *GEOSRelateBoundaryNodeRule(
const GEOSGeometry* g1,
2020 const GEOSGeometry* g2,
2030extern char GEOS_DLL GEOSisValid(
const GEOSGeometry* g);
2033extern char GEOS_DLL *GEOSisValidReason(
const GEOSGeometry *g);
2040extern char GEOS_DLL GEOSisValidDetail(
const GEOSGeometry* g,
2042 char** reason, GEOSGeometry** location);
2044extern GEOSGeometry GEOS_DLL *GEOSMakeValid(
const GEOSGeometry* g);
2053extern char GEOS_DLL *GEOSGeomType(
const GEOSGeometry* g);
2056extern int GEOS_DLL GEOSGeomTypeId(
const GEOSGeometry* g);
2059extern int GEOS_DLL GEOSGetSRID(
const GEOSGeometry* g);
2061extern void GEOS_DLL GEOSSetSRID(GEOSGeometry* g,
int SRID);
2063extern void GEOS_DLL *GEOSGeom_getUserData(
const GEOSGeometry* g);
2065extern void GEOS_DLL GEOSGeom_setUserData(GEOSGeometry* g,
void* userData);
2074extern int GEOS_DLL GEOSGetNumGeometries(
const GEOSGeometry* g);
2084extern const GEOSGeometry GEOS_DLL *GEOSGetGeometryN(
const GEOSGeometry* g,
int n);
2087extern int GEOS_DLL GEOSNormalize(GEOSGeometry* g);
2090extern GEOSGeometry GEOS_DLL *GEOSGeom_setPrecision(
2091 const GEOSGeometry *g,
double gridSize,
int flags);
2094extern double GEOS_DLL GEOSGeom_getPrecision(
const GEOSGeometry *g);
2097extern int GEOS_DLL GEOSGetNumInteriorRings(
const GEOSGeometry* g);
2100extern int GEOS_DLL GEOSGeomGetNumPoints(
const GEOSGeometry* g);
2103extern int GEOS_DLL GEOSGeomGetX(
const GEOSGeometry *g,
double *x);
2104extern int GEOS_DLL GEOSGeomGetY(
const GEOSGeometry *g,
double *y);
2105extern int GEOS_DLL GEOSGeomGetZ(
const GEOSGeometry *g,
double *z);
2112extern const GEOSGeometry GEOS_DLL *GEOSGetInteriorRingN(
const GEOSGeometry* g,
int n);
2119extern const GEOSGeometry GEOS_DLL *GEOSGetExteriorRing(
const GEOSGeometry* g);
2122extern int GEOS_DLL GEOSGetNumCoordinates(
const GEOSGeometry* g);
2128extern const GEOSCoordSequence GEOS_DLL *GEOSGeom_getCoordSeq(
const GEOSGeometry* g);
2133extern int GEOS_DLL GEOSGeom_getDimensions(
const GEOSGeometry* g);
2138extern int GEOS_DLL GEOSGeom_getCoordinateDimension(
const GEOSGeometry* g);
2143extern int GEOS_DLL GEOSGeom_getXMin(
const GEOSGeometry* g,
double* value);
2144extern int GEOS_DLL GEOSGeom_getYMin(
const GEOSGeometry* g,
double* value);
2145extern int GEOS_DLL GEOSGeom_getXMax(
const GEOSGeometry* g,
double* value);
2146extern int GEOS_DLL GEOSGeom_getYMax(
const GEOSGeometry* g,
double* value);
2152extern GEOSGeometry GEOS_DLL *GEOSGeomGetPointN(
const GEOSGeometry *g,
int n);
2153extern GEOSGeometry GEOS_DLL *GEOSGeomGetStartPoint(
const GEOSGeometry *g);
2154extern GEOSGeometry GEOS_DLL *GEOSGeomGetEndPoint(
const GEOSGeometry *g);
2163extern int GEOS_DLL GEOSArea(
const GEOSGeometry* g,
double *area);
2164extern int GEOS_DLL GEOSLength(
const GEOSGeometry* g,
double *length);
2165extern int GEOS_DLL GEOSDistance(
const GEOSGeometry* g1,
const GEOSGeometry* g2,
2167extern int GEOS_DLL GEOSDistanceIndexed(
const GEOSGeometry* g1,
const GEOSGeometry* g2,
2169extern int GEOS_DLL GEOSHausdorffDistance(
const GEOSGeometry *g1,
2170 const GEOSGeometry *g2,
double *dist);
2171extern int GEOS_DLL GEOSHausdorffDistanceDensify(
const GEOSGeometry *g1,
2172 const GEOSGeometry *g2,
double densifyFrac,
double *dist);
2173extern int GEOS_DLL GEOSFrechetDistance(
const GEOSGeometry *g1,
2174 const GEOSGeometry *g2,
double *dist);
2175extern int GEOS_DLL GEOSFrechetDistanceDensify(
const GEOSGeometry *g1,
2176 const GEOSGeometry *g2,
double densifyFrac,
double *dist);
2177extern int GEOS_DLL GEOSGeomGetLength(
const GEOSGeometry *g,
double *length);
2182extern GEOSCoordSequence GEOS_DLL *GEOSNearestPoints(
2183 const GEOSGeometry* g1,
const GEOSGeometry* g2);
2200extern int GEOS_DLL GEOSOrientationIndex(
double Ax,
double Ay,
double Bx,
double By,
2201 double Px,
double Py);
2210extern GEOSWKTReader GEOS_DLL *GEOSWKTReader_create();
2211extern void GEOS_DLL GEOSWKTReader_destroy(GEOSWKTReader* reader);
2212extern GEOSGeometry GEOS_DLL *GEOSWKTReader_read(GEOSWKTReader* reader,
const char *wkt);
2215extern GEOSWKTWriter GEOS_DLL *GEOSWKTWriter_create();
2216extern void GEOS_DLL GEOSWKTWriter_destroy(GEOSWKTWriter* writer);
2217extern char GEOS_DLL *GEOSWKTWriter_write(GEOSWKTWriter* writer,
const GEOSGeometry* g);
2218extern void GEOS_DLL GEOSWKTWriter_setTrim(GEOSWKTWriter *writer,
char trim);
2219extern void GEOS_DLL GEOSWKTWriter_setRoundingPrecision(GEOSWKTWriter *writer,
int precision);
2220extern void GEOS_DLL GEOSWKTWriter_setOutputDimension(GEOSWKTWriter *writer,
int dim);
2221extern int GEOS_DLL GEOSWKTWriter_getOutputDimension(GEOSWKTWriter *writer);
2222extern void GEOS_DLL GEOSWKTWriter_setOld3D(GEOSWKTWriter *writer,
int useOld3D);
2225extern GEOSWKBReader GEOS_DLL *GEOSWKBReader_create();
2226extern void GEOS_DLL GEOSWKBReader_destroy(GEOSWKBReader* reader);
2227extern GEOSGeometry GEOS_DLL *GEOSWKBReader_read(GEOSWKBReader* reader,
const unsigned char *wkb,
size_t size);
2228extern GEOSGeometry GEOS_DLL *GEOSWKBReader_readHEX(GEOSWKBReader* reader,
const unsigned char *hex,
size_t size);
2231extern GEOSWKBWriter GEOS_DLL *GEOSWKBWriter_create();
2232extern void GEOS_DLL GEOSWKBWriter_destroy(GEOSWKBWriter* writer);
2235extern unsigned char GEOS_DLL *GEOSWKBWriter_write(GEOSWKBWriter* writer,
const GEOSGeometry* g,
size_t *size);
2236extern unsigned char GEOS_DLL *GEOSWKBWriter_writeHEX(GEOSWKBWriter* writer,
const GEOSGeometry* g,
size_t *size);
2242extern int GEOS_DLL GEOSWKBWriter_getOutputDimension(
const GEOSWKBWriter* writer);
2243extern void GEOS_DLL GEOSWKBWriter_setOutputDimension(GEOSWKBWriter* writer,
int newDimension);
2249extern int GEOS_DLL GEOSWKBWriter_getByteOrder(
const GEOSWKBWriter* writer);
2250extern void GEOS_DLL GEOSWKBWriter_setByteOrder(GEOSWKBWriter* writer,
int byteOrder);
2255extern char GEOS_DLL GEOSWKBWriter_getIncludeSRID(
const GEOSWKBWriter* writer);
2256extern void GEOS_DLL GEOSWKBWriter_setIncludeSRID(GEOSWKBWriter* writer,
const char writeSRID);
2262extern void GEOS_DLL GEOSFree(
void *buffer);
@ GEOS_MULTILINESTRING
a collection of linestrings
Definition: Geometry.h:87
@ GEOS_LINEARRING
a linear ring (linestring with 1st point == last point)
Definition: Geometry.h:81
@ GEOS_GEOMETRYCOLLECTION
a collection of heterogeneus geometries
Definition: Geometry.h:91
@ GEOS_POINT
a point
Definition: Geometry.h:77
@ GEOS_LINESTRING
a linestring
Definition: Geometry.h:79
@ GEOS_POLYGON
a polygon
Definition: Geometry.h:83
@ GEOS_MULTIPOLYGON
a collection of polygons
Definition: Geometry.h:89
@ GEOS_MULTIPOINT
a collection of points
Definition: Geometry.h:85