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 8
60#ifndef GEOS_VERSION_PATCH
61#define GEOS_VERSION_PATCH 1
64#define GEOS_VERSION "3.8.1"
67#define GEOS_JTS_PORT "1.13.0"
70#define GEOS_CAPI_VERSION_MAJOR 1
71#define GEOS_CAPI_VERSION_MINOR 13
72#define GEOS_CAPI_VERSION_PATCH 3
73#define GEOS_CAPI_VERSION "3.8.1-CAPI-1.13.3"
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,
373extern double GEOS_DLL GEOSProject_r(GEOSContextHandle_t handle,
374 const GEOSGeometry *g,
375 const GEOSGeometry *p);
379extern GEOSGeometry GEOS_DLL *GEOSInterpolate_r(GEOSContextHandle_t handle,
380 const GEOSGeometry *g,
383extern double GEOS_DLL GEOSProjectNormalized_r(GEOSContextHandle_t handle,
384 const GEOSGeometry *g,
385 const GEOSGeometry *p);
387extern GEOSGeometry GEOS_DLL *GEOSInterpolateNormalized_r(
388 GEOSContextHandle_t handle,
389 const GEOSGeometry *g,
400extern GEOSGeometry GEOS_DLL *GEOSBuffer_r(GEOSContextHandle_t handle,
401 const GEOSGeometry* g,
402 double width,
int quadsegs);
404enum GEOSBufCapStyles {
410enum GEOSBufJoinStyles {
411 GEOSBUF_JOIN_ROUND=1,
412 GEOSBUF_JOIN_MITRE=2,
417extern GEOSBufferParams GEOS_DLL *GEOSBufferParams_create_r(
418 GEOSContextHandle_t handle);
419extern void GEOS_DLL GEOSBufferParams_destroy_r(
420 GEOSContextHandle_t handle,
421 GEOSBufferParams* parms);
424extern int GEOS_DLL GEOSBufferParams_setEndCapStyle_r(
425 GEOSContextHandle_t handle,
430extern int GEOS_DLL GEOSBufferParams_setJoinStyle_r(
431 GEOSContextHandle_t handle,
436extern int GEOS_DLL GEOSBufferParams_setMitreLimit_r(
437 GEOSContextHandle_t handle,
442extern int GEOS_DLL GEOSBufferParams_setQuadrantSegments_r(
443 GEOSContextHandle_t handle,
449extern int GEOS_DLL GEOSBufferParams_setSingleSided_r(
450 GEOSContextHandle_t handle,
455extern GEOSGeometry GEOS_DLL *GEOSBufferWithParams_r(
456 GEOSContextHandle_t handle,
457 const GEOSGeometry* g,
458 const GEOSBufferParams* p,
462extern GEOSGeometry GEOS_DLL *GEOSBufferWithStyle_r(GEOSContextHandle_t handle,
463 const GEOSGeometry* g,
double width,
int quadsegs,
int endCapStyle,
464 int joinStyle,
double mitreLimit);
468extern GEOSGeometry GEOS_DLL *GEOSSingleSidedBuffer_r(
469 GEOSContextHandle_t handle,
470 const GEOSGeometry* g,
double width,
int quadsegs,
471 int joinStyle,
double mitreLimit,
int leftSide);
480extern GEOSGeometry GEOS_DLL *GEOSOffsetCurve_r(GEOSContextHandle_t handle,
481 const GEOSGeometry* g,
double width,
int quadsegs,
482 int joinStyle,
double mitreLimit);
493extern GEOSGeometry GEOS_DLL *GEOSGeom_createPoint_r(
494 GEOSContextHandle_t handle,
495 GEOSCoordSequence* s);
496extern GEOSGeometry GEOS_DLL *GEOSGeom_createPointFromXY_r(
497 GEOSContextHandle_t handle,
500extern GEOSGeometry GEOS_DLL *GEOSGeom_createEmptyPoint_r(
501 GEOSContextHandle_t handle);
502extern GEOSGeometry GEOS_DLL *GEOSGeom_createLinearRing_r(
503 GEOSContextHandle_t handle,
504 GEOSCoordSequence* s);
505extern GEOSGeometry GEOS_DLL *GEOSGeom_createLineString_r(
506 GEOSContextHandle_t handle,
507 GEOSCoordSequence* s);
508extern GEOSGeometry GEOS_DLL *GEOSGeom_createEmptyLineString_r(
509 GEOSContextHandle_t handle);
516extern GEOSGeometry GEOS_DLL *GEOSGeom_createEmptyPolygon_r(
517 GEOSContextHandle_t handle);
518extern GEOSGeometry GEOS_DLL *GEOSGeom_createPolygon_r(
519 GEOSContextHandle_t handle,
521 GEOSGeometry** holes,
522 unsigned int nholes);
523extern GEOSGeometry GEOS_DLL *GEOSGeom_createCollection_r(
524 GEOSContextHandle_t handle,
int type,
525 GEOSGeometry* *geoms,
526 unsigned int ngeoms);
527extern GEOSGeometry GEOS_DLL *GEOSGeom_createEmptyCollection_r(
528 GEOSContextHandle_t handle,
int type);
530extern GEOSGeometry GEOS_DLL *GEOSGeom_clone_r(GEOSContextHandle_t handle,
531 const GEOSGeometry* g);
539extern void GEOS_DLL GEOSGeom_destroy_r(GEOSContextHandle_t handle,
548extern GEOSGeometry GEOS_DLL *GEOSEnvelope_r(GEOSContextHandle_t handle,
549 const GEOSGeometry* g);
550extern GEOSGeometry GEOS_DLL *GEOSIntersection_r(GEOSContextHandle_t handle,
551 const GEOSGeometry* g1,
552 const GEOSGeometry* g2);
553extern GEOSGeometry GEOS_DLL *GEOSConvexHull_r(GEOSContextHandle_t handle,
554 const GEOSGeometry* g);
561extern GEOSGeometry GEOS_DLL *GEOSMinimumRotatedRectangle_r(GEOSContextHandle_t handle,
562 const GEOSGeometry* g);
570extern GEOSGeometry GEOS_DLL *GEOSMinimumWidth_r(GEOSContextHandle_t handle,
571 const GEOSGeometry* g);
573extern GEOSGeometry GEOS_DLL *GEOSMinimumClearanceLine_r(GEOSContextHandle_t handle,
574 const GEOSGeometry* g);
576extern int GEOS_DLL GEOSMinimumClearance_r(GEOSContextHandle_t handle,
577 const GEOSGeometry* g,
580extern GEOSGeometry GEOS_DLL *GEOSDifference_r(GEOSContextHandle_t handle,
581 const GEOSGeometry* g1,
582 const GEOSGeometry* g2);
583extern GEOSGeometry GEOS_DLL *GEOSSymDifference_r(GEOSContextHandle_t handle,
584 const GEOSGeometry* g1,
585 const GEOSGeometry* g2);
586extern GEOSGeometry GEOS_DLL *GEOSBoundary_r(GEOSContextHandle_t handle,
587 const GEOSGeometry* g);
588extern GEOSGeometry GEOS_DLL *GEOSUnion_r(GEOSContextHandle_t handle,
589 const GEOSGeometry* g1,
590 const GEOSGeometry* g2);
591extern GEOSGeometry GEOS_DLL *GEOSUnaryUnion_r(GEOSContextHandle_t handle,
592 const GEOSGeometry* g);
596extern GEOSGeometry GEOS_DLL *GEOSCoverageUnion_r(GEOSContextHandle_t handle,
597 const GEOSGeometry* g);
599extern GEOSGeometry GEOS_DLL *GEOSUnionCascaded_r(GEOSContextHandle_t handle,
600 const GEOSGeometry* g);
601extern GEOSGeometry GEOS_DLL *GEOSPointOnSurface_r(GEOSContextHandle_t handle,
602 const GEOSGeometry* g);
603extern GEOSGeometry GEOS_DLL *GEOSGetCentroid_r(GEOSContextHandle_t handle,
604 const GEOSGeometry* g);
605extern GEOSGeometry GEOS_DLL *GEOSMinimumBoundingCircle_r(GEOSContextHandle_t handle,
606 const GEOSGeometry* g,
double* radius,
607 GEOSGeometry** center);
608extern GEOSGeometry GEOS_DLL *GEOSNode_r(GEOSContextHandle_t handle,
609 const GEOSGeometry* g);
612extern GEOSGeometry GEOS_DLL *GEOSClipByRect_r(GEOSContextHandle_t handle,
613 const GEOSGeometry* g,
614 double xmin,
double ymin,
615 double xmax,
double ymax);
654extern GEOSGeometry GEOS_DLL *GEOSPolygonize_r(GEOSContextHandle_t handle,
655 const GEOSGeometry *
const geoms[],
656 unsigned int ngeoms);
657extern GEOSGeometry GEOS_DLL *GEOSPolygonize_valid_r(GEOSContextHandle_t handle,
658 const GEOSGeometry *
const geoms[],
660extern GEOSGeometry GEOS_DLL *GEOSPolygonizer_getCutEdges_r(
661 GEOSContextHandle_t handle,
662 const GEOSGeometry *
const geoms[],
663 unsigned int ngeoms);
664extern GEOSGeometry GEOS_DLL *GEOSPolygonize_full_r(GEOSContextHandle_t handle,
665 const GEOSGeometry* input, GEOSGeometry** cuts,
666 GEOSGeometry** dangles, GEOSGeometry** invalidRings);
668extern GEOSGeometry GEOS_DLL *GEOSBuildArea_r(
669 GEOSContextHandle_t handle,
670 const GEOSGeometry* g);
672extern GEOSGeometry GEOS_DLL *GEOSLineMerge_r(GEOSContextHandle_t handle,
673 const GEOSGeometry* g);
674extern GEOSGeometry GEOS_DLL *GEOSReverse_r(GEOSContextHandle_t handle,
675 const GEOSGeometry* g);
676extern GEOSGeometry GEOS_DLL *GEOSSimplify_r(GEOSContextHandle_t handle,
677 const GEOSGeometry* g,
679extern GEOSGeometry GEOS_DLL *GEOSTopologyPreserveSimplify_r(
680 GEOSContextHandle_t handle,
681 const GEOSGeometry* g,
double tolerance);
688extern GEOSGeometry GEOS_DLL *GEOSGeom_extractUniquePoints_r(
689 GEOSContextHandle_t handle,
690 const GEOSGeometry* g);
703extern GEOSGeometry GEOS_DLL *GEOSSharedPaths_r(GEOSContextHandle_t handle,
704 const GEOSGeometry* g1,
const GEOSGeometry* g2);
710extern GEOSGeometry GEOS_DLL *GEOSSnap_r(GEOSContextHandle_t handle,
711 const GEOSGeometry* g1,
const GEOSGeometry* g2,
double tolerance);
723extern GEOSGeometry GEOS_DLL * GEOSDelaunayTriangulation_r(
724 GEOSContextHandle_t handle,
725 const GEOSGeometry *g,
742extern GEOSGeometry GEOS_DLL * GEOSVoronoiDiagram_r(
743 GEOSContextHandle_t extHandle,
744 const GEOSGeometry *g,
745 const GEOSGeometry *env,
766extern int GEOS_DLL GEOSSegmentIntersection_r(
767 GEOSContextHandle_t extHandle,
768 double ax0,
double ay0,
769 double ax1,
double ay1,
770 double bx0,
double by0,
771 double bx1,
double by1,
772 double* cx,
double* cy);
780extern char GEOS_DLL GEOSDisjoint_r(GEOSContextHandle_t handle,
781 const GEOSGeometry* g1,
782 const GEOSGeometry* g2);
783extern char GEOS_DLL GEOSTouches_r(GEOSContextHandle_t handle,
784 const GEOSGeometry* g1,
785 const GEOSGeometry* g2);
786extern char GEOS_DLL GEOSIntersects_r(GEOSContextHandle_t handle,
787 const GEOSGeometry* g1,
788 const GEOSGeometry* g2);
789extern char GEOS_DLL GEOSCrosses_r(GEOSContextHandle_t handle,
790 const GEOSGeometry* g1,
791 const GEOSGeometry* g2);
792extern char GEOS_DLL GEOSWithin_r(GEOSContextHandle_t handle,
793 const GEOSGeometry* g1,
794 const GEOSGeometry* g2);
795extern char GEOS_DLL GEOSContains_r(GEOSContextHandle_t handle,
796 const GEOSGeometry* g1,
797 const GEOSGeometry* g2);
798extern char GEOS_DLL GEOSOverlaps_r(GEOSContextHandle_t handle,
799 const GEOSGeometry* g1,
800 const GEOSGeometry* g2);
801extern char GEOS_DLL GEOSEquals_r(GEOSContextHandle_t handle,
802 const GEOSGeometry* g1,
803 const GEOSGeometry* g2);
804extern char GEOS_DLL GEOSEqualsExact_r(GEOSContextHandle_t handle,
805 const GEOSGeometry* g1,
806 const GEOSGeometry* g2,
808extern char GEOS_DLL GEOSCovers_r(GEOSContextHandle_t handle,
809 const GEOSGeometry* g1,
810 const GEOSGeometry* g2);
811extern char GEOS_DLL GEOSCoveredBy_r(GEOSContextHandle_t handle,
812 const GEOSGeometry* g1,
813 const GEOSGeometry* g2);
824extern const GEOSPreparedGeometry GEOS_DLL *GEOSPrepare_r(
825 GEOSContextHandle_t handle,
826 const GEOSGeometry* g);
828extern void GEOS_DLL GEOSPreparedGeom_destroy_r(GEOSContextHandle_t handle,
829 const GEOSPreparedGeometry* g);
831extern char GEOS_DLL GEOSPreparedContains_r(GEOSContextHandle_t handle,
832 const GEOSPreparedGeometry* pg1,
833 const GEOSGeometry* g2);
834extern char GEOS_DLL GEOSPreparedContainsProperly_r(GEOSContextHandle_t handle,
835 const GEOSPreparedGeometry* pg1,
836 const GEOSGeometry* g2);
837extern char GEOS_DLL GEOSPreparedCoveredBy_r(GEOSContextHandle_t handle,
838 const GEOSPreparedGeometry* pg1,
839 const GEOSGeometry* g2);
840extern char GEOS_DLL GEOSPreparedCovers_r(GEOSContextHandle_t handle,
841 const GEOSPreparedGeometry* pg1,
842 const GEOSGeometry* g2);
843extern char GEOS_DLL GEOSPreparedCrosses_r(GEOSContextHandle_t handle,
844 const GEOSPreparedGeometry* pg1,
845 const GEOSGeometry* g2);
846extern char GEOS_DLL GEOSPreparedDisjoint_r(GEOSContextHandle_t handle,
847 const GEOSPreparedGeometry* pg1,
848 const GEOSGeometry* g2);
849extern char GEOS_DLL GEOSPreparedIntersects_r(GEOSContextHandle_t handle,
850 const GEOSPreparedGeometry* pg1,
851 const GEOSGeometry* g2);
852extern char GEOS_DLL GEOSPreparedOverlaps_r(GEOSContextHandle_t handle,
853 const GEOSPreparedGeometry* pg1,
854 const GEOSGeometry* g2);
855extern char GEOS_DLL GEOSPreparedTouches_r(GEOSContextHandle_t handle,
856 const GEOSPreparedGeometry* pg1,
857 const GEOSGeometry* g2);
858extern char GEOS_DLL GEOSPreparedWithin_r(GEOSContextHandle_t handle,
859 const GEOSPreparedGeometry* pg1,
860 const GEOSGeometry* g2);
872extern GEOSSTRtree GEOS_DLL *GEOSSTRtree_create_r(
873 GEOSContextHandle_t handle,
874 size_t nodeCapacity);
875extern void GEOS_DLL GEOSSTRtree_insert_r(GEOSContextHandle_t handle,
877 const GEOSGeometry *g,
879extern void GEOS_DLL GEOSSTRtree_query_r(GEOSContextHandle_t handle,
881 const GEOSGeometry *g,
882 GEOSQueryCallback callback,
885extern const GEOSGeometry GEOS_DLL *GEOSSTRtree_nearest_r(GEOSContextHandle_t handle,
887 const GEOSGeometry* geom);
890extern const void GEOS_DLL *GEOSSTRtree_nearest_generic_r(GEOSContextHandle_t handle,
893 const GEOSGeometry* itemEnvelope,
894 GEOSDistanceCallback distancefn,
897extern void GEOS_DLL GEOSSTRtree_iterate_r(GEOSContextHandle_t handle,
899 GEOSQueryCallback callback,
901extern char GEOS_DLL GEOSSTRtree_remove_r(GEOSContextHandle_t handle,
903 const GEOSGeometry *g,
905extern void GEOS_DLL GEOSSTRtree_destroy_r(GEOSContextHandle_t handle,
915extern char GEOS_DLL GEOSisEmpty_r(GEOSContextHandle_t handle,
916 const GEOSGeometry* g);
917extern char GEOS_DLL GEOSisSimple_r(GEOSContextHandle_t handle,
918 const GEOSGeometry* g);
919extern char GEOS_DLL GEOSisRing_r(GEOSContextHandle_t handle,
920 const GEOSGeometry* g);
921extern char GEOS_DLL GEOSHasZ_r(GEOSContextHandle_t handle,
922 const GEOSGeometry* g);
923extern char GEOS_DLL GEOSisClosed_r(GEOSContextHandle_t handle,
924 const GEOSGeometry *g);
933enum GEOSRelateBoundaryNodeRules {
937 GEOSRELATE_BNR_MOD2=1,
938 GEOSRELATE_BNR_OGC=1,
939 GEOSRELATE_BNR_ENDPOINT=2,
940 GEOSRELATE_BNR_MULTIVALENT_ENDPOINT=3,
941 GEOSRELATE_BNR_MONOVALENT_ENDPOINT=4
945extern char GEOS_DLL GEOSRelatePattern_r(GEOSContextHandle_t handle,
946 const GEOSGeometry* g1,
947 const GEOSGeometry* g2,
951extern char GEOS_DLL *GEOSRelate_r(GEOSContextHandle_t handle,
952 const GEOSGeometry* g1,
953 const GEOSGeometry* g2);
956extern char GEOS_DLL GEOSRelatePatternMatch_r(GEOSContextHandle_t handle,
961extern char GEOS_DLL *GEOSRelateBoundaryNodeRule_r(GEOSContextHandle_t handle,
962 const GEOSGeometry* g1,
963 const GEOSGeometry* g2,
974 GEOSVALID_ALLOW_SELFTOUCHING_RING_FORMING_HOLE=1
978extern char GEOS_DLL GEOSisValid_r(GEOSContextHandle_t handle,
979 const GEOSGeometry* g);
982extern char GEOS_DLL *GEOSisValidReason_r(GEOSContextHandle_t handle,
983 const GEOSGeometry* g);
990extern char GEOS_DLL GEOSisValidDetail_r(GEOSContextHandle_t handle,
991 const GEOSGeometry* g,
994 GEOSGeometry** location);
996extern GEOSGeometry GEOS_DLL *GEOSMakeValid_r(GEOSContextHandle_t handle,
997 const GEOSGeometry* g);
1006extern char GEOS_DLL *GEOSGeomType_r(GEOSContextHandle_t handle,
1007 const GEOSGeometry* g);
1010extern int GEOS_DLL GEOSGeomTypeId_r(GEOSContextHandle_t handle,
1011 const GEOSGeometry* g);
1014extern int GEOS_DLL GEOSGetSRID_r(GEOSContextHandle_t handle,
1015 const GEOSGeometry* g);
1017extern void GEOS_DLL GEOSSetSRID_r(GEOSContextHandle_t handle,
1018 GEOSGeometry* g,
int SRID);
1020extern void GEOS_DLL *GEOSGeom_getUserData_r(GEOSContextHandle_t handle,
1021const GEOSGeometry* g);
1023extern void GEOS_DLL GEOSGeom_setUserData_r(GEOSContextHandle_t handle,
1024 GEOSGeometry* g,
void* userData);
1032extern int GEOS_DLL GEOSGetNumGeometries_r(GEOSContextHandle_t handle,
1033 const GEOSGeometry* g);
1043extern const GEOSGeometry GEOS_DLL *GEOSGetGeometryN_r(
1044 GEOSContextHandle_t handle,
1045 const GEOSGeometry* g,
int n);
1048extern int GEOS_DLL GEOSNormalize_r(GEOSContextHandle_t handle,
1053#define GEOS_PREC_NO_TOPO (1<<0)
1057#define GEOS_PREC_KEEP_COLLAPSED (1<<1)
1074extern GEOSGeometry GEOS_DLL *GEOSGeom_setPrecision_r(
1075 GEOSContextHandle_t handle,
1076 const GEOSGeometry *g,
1077 double gridSize,
int flags);
1085extern double GEOS_DLL GEOSGeom_getPrecision_r(
1086 GEOSContextHandle_t handle,
1087 const GEOSGeometry *g);
1090extern int GEOS_DLL GEOSGetNumInteriorRings_r(GEOSContextHandle_t handle,
1091 const GEOSGeometry* g);
1094extern int GEOS_DLL GEOSGeomGetNumPoints_r(GEOSContextHandle_t handle,
1095 const GEOSGeometry* g);
1098extern int GEOS_DLL GEOSGeomGetX_r(GEOSContextHandle_t handle,
const GEOSGeometry *g,
double *x);
1099extern int GEOS_DLL GEOSGeomGetY_r(GEOSContextHandle_t handle,
const GEOSGeometry *g,
double *y);
1100extern int GEOS_DLL GEOSGeomGetZ_r(GEOSContextHandle_t handle,
const GEOSGeometry *g,
double *z);
1107extern const GEOSGeometry GEOS_DLL *GEOSGetInteriorRingN_r(
1108 GEOSContextHandle_t handle,
1109 const GEOSGeometry* g,
int n);
1116extern const GEOSGeometry GEOS_DLL *GEOSGetExteriorRing_r(
1117 GEOSContextHandle_t handle,
1118 const GEOSGeometry* g);
1121extern int GEOS_DLL GEOSGetNumCoordinates_r(GEOSContextHandle_t handle,
1122 const GEOSGeometry* g);
1128extern const GEOSCoordSequence GEOS_DLL *GEOSGeom_getCoordSeq_r(
1129 GEOSContextHandle_t handle,
1130 const GEOSGeometry* g);
1135extern int GEOS_DLL GEOSGeom_getDimensions_r(GEOSContextHandle_t handle,
1136 const GEOSGeometry* g);
1141extern int GEOS_DLL GEOSGeom_getCoordinateDimension_r(GEOSContextHandle_t handle,
1142 const GEOSGeometry* g);
1146extern int GEOS_DLL GEOSGeom_getXMin_r(GEOSContextHandle_t handle,
const GEOSGeometry* g,
double* value);
1147extern int GEOS_DLL GEOSGeom_getYMin_r(GEOSContextHandle_t handle,
const GEOSGeometry* g,
double* value);
1148extern int GEOS_DLL GEOSGeom_getXMax_r(GEOSContextHandle_t handle,
const GEOSGeometry* g,
double* value);
1149extern int GEOS_DLL GEOSGeom_getYMax_r(GEOSContextHandle_t handle,
const GEOSGeometry* g,
double* value);
1155extern GEOSGeometry GEOS_DLL *GEOSGeomGetPointN_r(GEOSContextHandle_t handle,
const GEOSGeometry *g,
int n);
1156extern GEOSGeometry GEOS_DLL *GEOSGeomGetStartPoint_r(GEOSContextHandle_t handle,
const GEOSGeometry *g);
1157extern GEOSGeometry GEOS_DLL *GEOSGeomGetEndPoint_r(GEOSContextHandle_t handle,
const GEOSGeometry *g);
1166extern int GEOS_DLL GEOSArea_r(GEOSContextHandle_t handle,
1167 const GEOSGeometry* g,
double *area);
1168extern int GEOS_DLL GEOSLength_r(GEOSContextHandle_t handle,
1169 const GEOSGeometry* g,
double *length);
1170extern int GEOS_DLL GEOSDistance_r(GEOSContextHandle_t handle,
1171 const GEOSGeometry* g1,
1172 const GEOSGeometry* g2,
double *dist);
1173extern int GEOS_DLL GEOSDistanceIndexed_r(GEOSContextHandle_t handle,
1174 const GEOSGeometry* g1,
1175 const GEOSGeometry* g2,
double *dist);
1176extern int GEOS_DLL GEOSHausdorffDistance_r(GEOSContextHandle_t handle,
1177 const GEOSGeometry *g1,
1178 const GEOSGeometry *g2,
1180extern int GEOS_DLL GEOSHausdorffDistanceDensify_r(GEOSContextHandle_t handle,
1181 const GEOSGeometry *g1,
1182 const GEOSGeometry *g2,
1183 double densifyFrac,
double *dist);
1184extern int GEOS_DLL GEOSFrechetDistance_r(GEOSContextHandle_t handle,
1185 const GEOSGeometry *g1,
1186 const GEOSGeometry *g2,
1188extern int GEOS_DLL GEOSFrechetDistanceDensify_r(GEOSContextHandle_t handle,
1189 const GEOSGeometry *g1,
1190 const GEOSGeometry *g2,
1191 double densifyFrac,
double *dist);
1192extern int GEOS_DLL GEOSGeomGetLength_r(GEOSContextHandle_t handle,
1193 const GEOSGeometry *g,
double *length);
1198extern GEOSCoordSequence GEOS_DLL *GEOSNearestPoints_r(
1199 GEOSContextHandle_t handle,
const GEOSGeometry* g1,
const GEOSGeometry* g2);
1216extern int GEOS_DLL GEOSOrientationIndex_r(GEOSContextHandle_t handle,
1217 double Ax,
double Ay,
double Bx,
double By,
double Px,
double Py);
1226typedef struct GEOSWKTReader_t GEOSWKTReader;
1227typedef struct GEOSWKTWriter_t GEOSWKTWriter;
1228typedef struct GEOSWKBReader_t GEOSWKBReader;
1229typedef struct GEOSWKBWriter_t GEOSWKBWriter;
1233extern GEOSWKTReader GEOS_DLL *GEOSWKTReader_create_r(
1234 GEOSContextHandle_t handle);
1235extern void GEOS_DLL GEOSWKTReader_destroy_r(GEOSContextHandle_t handle,
1236 GEOSWKTReader* reader);
1237extern GEOSGeometry GEOS_DLL *GEOSWKTReader_read_r(GEOSContextHandle_t handle,
1238 GEOSWKTReader* reader,
1242extern GEOSWKTWriter GEOS_DLL *GEOSWKTWriter_create_r(
1243 GEOSContextHandle_t handle);
1244extern void GEOS_DLL GEOSWKTWriter_destroy_r(GEOSContextHandle_t handle,
1245 GEOSWKTWriter* writer);
1246extern char GEOS_DLL *GEOSWKTWriter_write_r(GEOSContextHandle_t handle,
1247 GEOSWKTWriter* writer,
1248 const GEOSGeometry* g);
1249extern void GEOS_DLL GEOSWKTWriter_setTrim_r(GEOSContextHandle_t handle,
1250 GEOSWKTWriter *writer,
1252extern void GEOS_DLL GEOSWKTWriter_setRoundingPrecision_r(GEOSContextHandle_t handle,
1253 GEOSWKTWriter *writer,
1255extern void GEOS_DLL GEOSWKTWriter_setOutputDimension_r(GEOSContextHandle_t handle,
1256 GEOSWKTWriter *writer,
1258extern int GEOS_DLL GEOSWKTWriter_getOutputDimension_r(GEOSContextHandle_t handle,
1259 GEOSWKTWriter *writer);
1260extern void GEOS_DLL GEOSWKTWriter_setOld3D_r(GEOSContextHandle_t handle,
1261 GEOSWKTWriter *writer,
1265extern GEOSWKBReader GEOS_DLL *GEOSWKBReader_create_r(
1266 GEOSContextHandle_t handle);
1267extern void GEOS_DLL GEOSWKBReader_destroy_r(GEOSContextHandle_t handle,
1268 GEOSWKBReader* reader);
1269extern GEOSGeometry GEOS_DLL *GEOSWKBReader_read_r(GEOSContextHandle_t handle,
1270 GEOSWKBReader* reader,
1271 const unsigned char *wkb,
1273extern GEOSGeometry GEOS_DLL *GEOSWKBReader_readHEX_r(
1274 GEOSContextHandle_t handle,
1275 GEOSWKBReader* reader,
1276 const unsigned char *hex,
1280extern GEOSWKBWriter GEOS_DLL *GEOSWKBWriter_create_r(
1281 GEOSContextHandle_t handle);
1282extern void GEOS_DLL GEOSWKBWriter_destroy_r(GEOSContextHandle_t handle,
1283 GEOSWKBWriter* writer);
1286extern unsigned char GEOS_DLL *GEOSWKBWriter_write_r(
1287 GEOSContextHandle_t handle,
1288 GEOSWKBWriter* writer,
1289 const GEOSGeometry* g,
1291extern unsigned char GEOS_DLL *GEOSWKBWriter_writeHEX_r(
1292 GEOSContextHandle_t handle,
1293 GEOSWKBWriter* writer,
1294 const GEOSGeometry* g,
1301extern int GEOS_DLL GEOSWKBWriter_getOutputDimension_r(
1302 GEOSContextHandle_t handle,
1303 const GEOSWKBWriter* writer);
1304extern void GEOS_DLL GEOSWKBWriter_setOutputDimension_r(
1305 GEOSContextHandle_t handle,
1306 GEOSWKBWriter* writer,
int newDimension);
1312extern int GEOS_DLL GEOSWKBWriter_getByteOrder_r(GEOSContextHandle_t handle,
1313 const GEOSWKBWriter* writer);
1314extern void GEOS_DLL GEOSWKBWriter_setByteOrder_r(GEOSContextHandle_t handle,
1315 GEOSWKBWriter* writer,
1321extern char GEOS_DLL GEOSWKBWriter_getIncludeSRID_r(GEOSContextHandle_t handle,
1322 const GEOSWKBWriter* writer);
1323extern void GEOS_DLL GEOSWKBWriter_setIncludeSRID_r(GEOSContextHandle_t handle,
1324 GEOSWKBWriter* writer,
const char writeSRID);
1331extern void GEOS_DLL GEOSFree_r(GEOSContextHandle_t handle,
void *buffer);
1336#ifndef GEOS_USE_ONLY_R_API
1344extern void GEOS_DLL initGEOS(GEOSMessageHandler notice_function,
1345 GEOSMessageHandler error_function);
1346extern void GEOS_DLL finishGEOS(
void);
1355extern GEOSGeometry GEOS_DLL *GEOSGeomFromWKT(
const char *wkt);
1356extern char GEOS_DLL *GEOSGeomToWKT(
const GEOSGeometry* g);
1362extern int GEOS_DLL GEOS_getWKBOutputDims();
1363extern int GEOS_DLL GEOS_setWKBOutputDims(
int newDims);
1369extern int GEOS_DLL GEOS_getWKBByteOrder();
1370extern int GEOS_DLL GEOS_setWKBByteOrder(
int byteOrder);
1372extern GEOSGeometry GEOS_DLL *GEOSGeomFromWKB_buf(
const unsigned char *wkb,
size_t size);
1373extern unsigned char GEOS_DLL *GEOSGeomToWKB_buf(
const GEOSGeometry* g,
size_t *size);
1375extern GEOSGeometry GEOS_DLL *GEOSGeomFromHEX_buf(
const unsigned char *hex,
size_t size);
1376extern unsigned char GEOS_DLL *GEOSGeomToHEX_buf(
const GEOSGeometry* g,
size_t *size);
1389extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_create(
unsigned int size,
unsigned int dims);
1395extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_clone(
const GEOSCoordSequence* s);
1400extern void GEOS_DLL GEOSCoordSeq_destroy(GEOSCoordSequence* s);
1406extern int GEOS_DLL GEOSCoordSeq_setX(GEOSCoordSequence* s,
1407 unsigned int idx,
double val);
1408extern int GEOS_DLL GEOSCoordSeq_setY(GEOSCoordSequence* s,
1409 unsigned int idx,
double val);
1410extern int GEOS_DLL GEOSCoordSeq_setZ(GEOSCoordSequence* s,
1411 unsigned int idx,
double val);
1412extern int GEOS_DLL GEOSCoordSeq_setXY(GEOSCoordSequence* s,
1413 unsigned int idx,
double x,
double y);
1414extern int GEOS_DLL GEOSCoordSeq_setXYZ(GEOSCoordSequence* s,
1415 unsigned int idx,
double x,
double y,
double z);
1416extern int GEOS_DLL GEOSCoordSeq_setOrdinate(GEOSCoordSequence* s,
1417 unsigned int idx,
unsigned int dim,
double val);
1423extern int GEOS_DLL GEOSCoordSeq_getX(
const GEOSCoordSequence* s,
1424 unsigned int idx,
double *val);
1425extern int GEOS_DLL GEOSCoordSeq_getY(
const GEOSCoordSequence* s,
1426 unsigned int idx,
double *val);
1427extern int GEOS_DLL GEOSCoordSeq_getZ(
const GEOSCoordSequence* s,
1428 unsigned int idx,
double *val);
1429extern int GEOS_DLL GEOSCoordSeq_getXY(
const GEOSCoordSequence* s,
1430 unsigned int idx,
double *x,
double *y);
1431extern int GEOS_DLL GEOSCoordSeq_getXYZ(
const GEOSCoordSequence* s,
1432 unsigned int idx,
double *x,
double *y,
double *z);
1433extern int GEOS_DLL GEOSCoordSeq_getOrdinate(
const GEOSCoordSequence* s,
1434 unsigned int idx,
unsigned int dim,
double *val);
1439extern int GEOS_DLL GEOSCoordSeq_getSize(
const GEOSCoordSequence* s,
1440 unsigned int *size);
1441extern int GEOS_DLL GEOSCoordSeq_getDimensions(
const GEOSCoordSequence* s,
1442 unsigned int *dims);
1449extern int GEOS_DLL GEOSCoordSeq_isCCW(
const GEOSCoordSequence* s,
char* is_ccw);
1465extern double GEOS_DLL GEOSProject(
const GEOSGeometry *g,
1466 const GEOSGeometry* p);
1470extern GEOSGeometry GEOS_DLL *GEOSInterpolate(
const GEOSGeometry *g,
1473extern double GEOS_DLL GEOSProjectNormalized(
const GEOSGeometry *g,
1474 const GEOSGeometry* p);
1476extern GEOSGeometry GEOS_DLL *GEOSInterpolateNormalized(
const GEOSGeometry *g,
1487extern GEOSGeometry GEOS_DLL *GEOSBuffer(
const GEOSGeometry* g,
1488 double width,
int quadsegs);
1491extern GEOSBufferParams GEOS_DLL *GEOSBufferParams_create();
1492extern void GEOS_DLL GEOSBufferParams_destroy(GEOSBufferParams* parms);
1495extern int GEOS_DLL GEOSBufferParams_setEndCapStyle(
1496 GEOSBufferParams* p,
1500extern int GEOS_DLL GEOSBufferParams_setJoinStyle(
1501 GEOSBufferParams* p,
1505extern int GEOS_DLL GEOSBufferParams_setMitreLimit(
1506 GEOSBufferParams* p,
1510extern int GEOS_DLL GEOSBufferParams_setQuadrantSegments(
1511 GEOSBufferParams* p,
1516extern int GEOS_DLL GEOSBufferParams_setSingleSided(
1517 GEOSBufferParams* p,
1521extern GEOSGeometry GEOS_DLL *GEOSBufferWithParams(
1522 const GEOSGeometry* g,
1523 const GEOSBufferParams* p,
1527extern GEOSGeometry GEOS_DLL *GEOSBufferWithStyle(
const GEOSGeometry* g,
1528 double width,
int quadsegs,
int endCapStyle,
int joinStyle,
1533extern GEOSGeometry GEOS_DLL *GEOSSingleSidedBuffer(
const GEOSGeometry* g,
1534 double width,
int quadsegs,
int joinStyle,
double mitreLimit,
1544extern GEOSGeometry GEOS_DLL *GEOSOffsetCurve(
const GEOSGeometry* g,
1545 double width,
int quadsegs,
int joinStyle,
double mitreLimit);
1555extern GEOSGeometry GEOS_DLL *GEOSGeom_createPoint(GEOSCoordSequence* s);
1556extern GEOSGeometry GEOS_DLL *GEOSGeom_createPointFromXY(
double x,
double y);
1557extern GEOSGeometry GEOS_DLL *GEOSGeom_createEmptyPoint();
1558extern GEOSGeometry GEOS_DLL *GEOSGeom_createLinearRing(GEOSCoordSequence* s);
1559extern GEOSGeometry GEOS_DLL *GEOSGeom_createLineString(GEOSCoordSequence* s);
1560extern GEOSGeometry GEOS_DLL *GEOSGeom_createEmptyLineString();
1567extern GEOSGeometry GEOS_DLL *GEOSGeom_createEmptyPolygon();
1568extern GEOSGeometry GEOS_DLL *GEOSGeom_createPolygon(GEOSGeometry* shell,
1569 GEOSGeometry** holes,
unsigned int nholes);
1570extern GEOSGeometry GEOS_DLL *GEOSGeom_createCollection(
int type,
1571 GEOSGeometry* *geoms,
unsigned int ngeoms);
1572extern GEOSGeometry GEOS_DLL *GEOSGeom_createEmptyCollection(
int type);
1574extern GEOSGeometry GEOS_DLL *GEOSGeom_clone(
const GEOSGeometry* g);
1582extern void GEOS_DLL GEOSGeom_destroy(GEOSGeometry* g);
1590extern GEOSGeometry GEOS_DLL *GEOSEnvelope(
const GEOSGeometry* g);
1591extern GEOSGeometry GEOS_DLL *GEOSIntersection(
const GEOSGeometry* g1,
const GEOSGeometry* g2);
1592extern GEOSGeometry GEOS_DLL *GEOSConvexHull(
const GEOSGeometry* g);
1599extern GEOSGeometry GEOS_DLL *GEOSMinimumRotatedRectangle(
const GEOSGeometry* g);
1607extern GEOSGeometry GEOS_DLL *GEOSMinimumWidth(
const GEOSGeometry* g);
1625extern int GEOS_DLL GEOSMinimumClearance(
const GEOSGeometry* g,
double* d);
1633extern GEOSGeometry GEOS_DLL *GEOSMinimumClearanceLine(
const GEOSGeometry* g);
1635extern GEOSGeometry GEOS_DLL *GEOSDifference(
const GEOSGeometry* g1,
const GEOSGeometry* g2);
1636extern GEOSGeometry GEOS_DLL *GEOSSymDifference(
const GEOSGeometry* g1,
const GEOSGeometry* g2);
1637extern GEOSGeometry GEOS_DLL *GEOSBoundary(
const GEOSGeometry* g);
1638extern GEOSGeometry GEOS_DLL *GEOSUnion(
const GEOSGeometry* g1,
const GEOSGeometry* g2);
1639extern GEOSGeometry GEOS_DLL *GEOSUnaryUnion(
const GEOSGeometry* g);
1644extern GEOSGeometry GEOS_DLL *GEOSCoverageUnion(
const GEOSGeometry *g);
1647extern GEOSGeometry GEOS_DLL *GEOSUnionCascaded(
const GEOSGeometry* g);
1649extern GEOSGeometry GEOS_DLL *GEOSPointOnSurface(
const GEOSGeometry* g);
1650extern GEOSGeometry GEOS_DLL *GEOSGetCentroid(
const GEOSGeometry* g);
1651extern GEOSGeometry GEOS_DLL *GEOSMinimumBoundingCircle(
const GEOSGeometry* g,
double* radius, GEOSGeometry** center);
1652extern GEOSGeometry GEOS_DLL *GEOSNode(
const GEOSGeometry* g);
1653extern GEOSGeometry GEOS_DLL *GEOSClipByRect(
const GEOSGeometry* g,
double xmin,
double ymin,
double xmax,
double ymax);
1659extern GEOSGeometry GEOS_DLL *GEOSPolygonize(
const GEOSGeometry *
const geoms[],
unsigned int ngeoms);
1660extern GEOSGeometry GEOS_DLL *GEOSPolygonize_valid(
const GEOSGeometry *
const geoms[],
unsigned int ngeoms);
1661extern GEOSGeometry GEOS_DLL *GEOSPolygonizer_getCutEdges(
const GEOSGeometry *
const geoms[],
unsigned int ngeoms);
1662extern GEOSGeometry GEOS_DLL *GEOSPolygonize_full(
const GEOSGeometry* input,
1663 GEOSGeometry** cuts, GEOSGeometry** dangles, GEOSGeometry** invalid);
1665extern GEOSGeometry GEOS_DLL *GEOSBuildArea(
const GEOSGeometry* g);
1667extern GEOSGeometry GEOS_DLL *GEOSLineMerge(
const GEOSGeometry* g);
1668extern GEOSGeometry GEOS_DLL *GEOSReverse(
const GEOSGeometry* g);
1669extern GEOSGeometry GEOS_DLL *GEOSSimplify(
const GEOSGeometry* g,
double tolerance);
1670extern GEOSGeometry GEOS_DLL *GEOSTopologyPreserveSimplify(
const GEOSGeometry* g,
1678extern GEOSGeometry GEOS_DLL *GEOSGeom_extractUniquePoints(
1679 const GEOSGeometry* g);
1692extern GEOSGeometry GEOS_DLL *GEOSSharedPaths(
const GEOSGeometry* g1,
1693 const GEOSGeometry* g2);
1699extern GEOSGeometry GEOS_DLL *GEOSSnap(
const GEOSGeometry* g1,
1700 const GEOSGeometry* g2,
double tolerance);
1712extern GEOSGeometry GEOS_DLL * GEOSDelaunayTriangulation(
1713 const GEOSGeometry *g,
1730extern GEOSGeometry GEOS_DLL * GEOSVoronoiDiagram(
1731 const GEOSGeometry *g,
1732 const GEOSGeometry *env,
1752extern int GEOS_DLL GEOSSegmentIntersection(
1753 double ax0,
double ay0,
1754 double ax1,
double ay1,
1755 double bx0,
double by0,
1756 double bx1,
double by1,
1757 double* cx,
double* cy);
1765extern char GEOS_DLL GEOSDisjoint(
const GEOSGeometry* g1,
const GEOSGeometry* g2);
1766extern char GEOS_DLL GEOSTouches(
const GEOSGeometry* g1,
const GEOSGeometry* g2);
1767extern char GEOS_DLL GEOSIntersects(
const GEOSGeometry* g1,
const GEOSGeometry* g2);
1768extern char GEOS_DLL GEOSCrosses(
const GEOSGeometry* g1,
const GEOSGeometry* g2);
1769extern char GEOS_DLL GEOSWithin(
const GEOSGeometry* g1,
const GEOSGeometry* g2);
1770extern char GEOS_DLL GEOSContains(
const GEOSGeometry* g1,
const GEOSGeometry* g2);
1771extern char GEOS_DLL GEOSOverlaps(
const GEOSGeometry* g1,
const GEOSGeometry* g2);
1772extern char GEOS_DLL GEOSEquals(
const GEOSGeometry* g1,
const GEOSGeometry* g2);
1773extern char GEOS_DLL GEOSCovers(
const GEOSGeometry* g1,
const GEOSGeometry* g2);
1774extern char GEOS_DLL GEOSCoveredBy(
const GEOSGeometry* g1,
const GEOSGeometry* g2);
1784extern char GEOS_DLL GEOSEqualsExact(
const GEOSGeometry* g1,
const GEOSGeometry* g2,
double tolerance);
1795extern const GEOSPreparedGeometry GEOS_DLL *GEOSPrepare(
const GEOSGeometry* g);
1797extern void GEOS_DLL GEOSPreparedGeom_destroy(
const GEOSPreparedGeometry* g);
1799extern char GEOS_DLL GEOSPreparedContains(
const GEOSPreparedGeometry* pg1,
const GEOSGeometry* g2);
1800extern char GEOS_DLL GEOSPreparedContainsProperly(
const GEOSPreparedGeometry* pg1,
const GEOSGeometry* g2);
1801extern char GEOS_DLL GEOSPreparedCoveredBy(
const GEOSPreparedGeometry* pg1,
const GEOSGeometry* g2);
1802extern char GEOS_DLL GEOSPreparedCovers(
const GEOSPreparedGeometry* pg1,
const GEOSGeometry* g2);
1803extern char GEOS_DLL GEOSPreparedCrosses(
const GEOSPreparedGeometry* pg1,
const GEOSGeometry* g2);
1804extern char GEOS_DLL GEOSPreparedDisjoint(
const GEOSPreparedGeometry* pg1,
const GEOSGeometry* g2);
1805extern char GEOS_DLL GEOSPreparedIntersects(
const GEOSPreparedGeometry* pg1,
const GEOSGeometry* g2);
1806extern char GEOS_DLL GEOSPreparedOverlaps(
const GEOSPreparedGeometry* pg1,
const GEOSGeometry* g2);
1807extern char GEOS_DLL GEOSPreparedTouches(
const GEOSPreparedGeometry* pg1,
const GEOSGeometry* g2);
1808extern char GEOS_DLL GEOSPreparedWithin(
const GEOSPreparedGeometry* pg1,
const GEOSGeometry* g2);
1828extern GEOSSTRtree GEOS_DLL *GEOSSTRtree_create(
size_t nodeCapacity);
1837extern void GEOS_DLL GEOSSTRtree_insert(GEOSSTRtree *tree,
1838 const GEOSGeometry *g,
1851extern void GEOS_DLL GEOSSTRtree_query(GEOSSTRtree *tree,
1852 const GEOSGeometry *g,
1853 GEOSQueryCallback callback,
1865extern const GEOSGeometry GEOS_DLL *GEOSSTRtree_nearest(GEOSSTRtree *tree,
const GEOSGeometry* geom);
1883extern const void GEOS_DLL *GEOSSTRtree_nearest_generic(GEOSSTRtree *tree,
1885 const GEOSGeometry* itemEnvelope,
1886 GEOSDistanceCallback distancefn,
1894extern void GEOS_DLL GEOSSTRtree_iterate(GEOSSTRtree *tree,
1895 GEOSQueryCallback callback,
1908extern char GEOS_DLL GEOSSTRtree_remove(GEOSSTRtree *tree,
1909 const GEOSGeometry *g,
1911extern void GEOS_DLL GEOSSTRtree_destroy(GEOSSTRtree *tree);
1920extern char GEOS_DLL GEOSisEmpty(
const GEOSGeometry* g);
1921extern char GEOS_DLL GEOSisSimple(
const GEOSGeometry* g);
1922extern char GEOS_DLL GEOSisRing(
const GEOSGeometry* g);
1923extern char GEOS_DLL GEOSHasZ(
const GEOSGeometry* g);
1924extern char GEOS_DLL GEOSisClosed(
const GEOSGeometry *g);
1933extern char GEOS_DLL GEOSRelatePattern(
const GEOSGeometry* g1,
const GEOSGeometry* g2,
const char *pat);
1936extern char GEOS_DLL *GEOSRelate(
const GEOSGeometry* g1,
const GEOSGeometry* g2);
1939extern char GEOS_DLL GEOSRelatePatternMatch(
const char *mat,
const char *pat);
1942extern char GEOS_DLL *GEOSRelateBoundaryNodeRule(
const GEOSGeometry* g1,
1943 const GEOSGeometry* g2,
1953extern char GEOS_DLL GEOSisValid(
const GEOSGeometry* g);
1956extern char GEOS_DLL *GEOSisValidReason(
const GEOSGeometry *g);
1963extern char GEOS_DLL GEOSisValidDetail(
const GEOSGeometry* g,
1965 char** reason, GEOSGeometry** location);
1967extern GEOSGeometry GEOS_DLL *GEOSMakeValid(
const GEOSGeometry* g);
1976extern char GEOS_DLL *GEOSGeomType(
const GEOSGeometry* g);
1979extern int GEOS_DLL GEOSGeomTypeId(
const GEOSGeometry* g);
1982extern int GEOS_DLL GEOSGetSRID(
const GEOSGeometry* g);
1984extern void GEOS_DLL GEOSSetSRID(GEOSGeometry* g,
int SRID);
1986extern void GEOS_DLL *GEOSGeom_getUserData(
const GEOSGeometry* g);
1988extern void GEOS_DLL GEOSGeom_setUserData(GEOSGeometry* g,
void* userData);
1997extern int GEOS_DLL GEOSGetNumGeometries(
const GEOSGeometry* g);
2007extern const GEOSGeometry GEOS_DLL *GEOSGetGeometryN(
const GEOSGeometry* g,
int n);
2010extern int GEOS_DLL GEOSNormalize(GEOSGeometry* g);
2013extern GEOSGeometry GEOS_DLL *GEOSGeom_setPrecision(
2014 const GEOSGeometry *g,
double gridSize,
int flags);
2017extern double GEOS_DLL GEOSGeom_getPrecision(
const GEOSGeometry *g);
2020extern int GEOS_DLL GEOSGetNumInteriorRings(
const GEOSGeometry* g);
2023extern int GEOS_DLL GEOSGeomGetNumPoints(
const GEOSGeometry* g);
2026extern int GEOS_DLL GEOSGeomGetX(
const GEOSGeometry *g,
double *x);
2027extern int GEOS_DLL GEOSGeomGetY(
const GEOSGeometry *g,
double *y);
2028extern int GEOS_DLL GEOSGeomGetZ(
const GEOSGeometry *g,
double *z);
2035extern const GEOSGeometry GEOS_DLL *GEOSGetInteriorRingN(
const GEOSGeometry* g,
int n);
2042extern const GEOSGeometry GEOS_DLL *GEOSGetExteriorRing(
const GEOSGeometry* g);
2045extern int GEOS_DLL GEOSGetNumCoordinates(
const GEOSGeometry* g);
2051extern const GEOSCoordSequence GEOS_DLL *GEOSGeom_getCoordSeq(
const GEOSGeometry* g);
2056extern int GEOS_DLL GEOSGeom_getDimensions(
const GEOSGeometry* g);
2061extern int GEOS_DLL GEOSGeom_getCoordinateDimension(
const GEOSGeometry* g);
2066extern int GEOS_DLL GEOSGeom_getXMin(
const GEOSGeometry* g,
double* value);
2067extern int GEOS_DLL GEOSGeom_getYMin(
const GEOSGeometry* g,
double* value);
2068extern int GEOS_DLL GEOSGeom_getXMax(
const GEOSGeometry* g,
double* value);
2069extern int GEOS_DLL GEOSGeom_getYMax(
const GEOSGeometry* g,
double* value);
2075extern GEOSGeometry GEOS_DLL *GEOSGeomGetPointN(
const GEOSGeometry *g,
int n);
2076extern GEOSGeometry GEOS_DLL *GEOSGeomGetStartPoint(
const GEOSGeometry *g);
2077extern GEOSGeometry GEOS_DLL *GEOSGeomGetEndPoint(
const GEOSGeometry *g);
2086extern int GEOS_DLL GEOSArea(
const GEOSGeometry* g,
double *area);
2087extern int GEOS_DLL GEOSLength(
const GEOSGeometry* g,
double *length);
2088extern int GEOS_DLL GEOSDistance(
const GEOSGeometry* g1,
const GEOSGeometry* g2,
2090extern int GEOS_DLL GEOSDistanceIndexed(
const GEOSGeometry* g1,
const GEOSGeometry* g2,
2092extern int GEOS_DLL GEOSHausdorffDistance(
const GEOSGeometry *g1,
2093 const GEOSGeometry *g2,
double *dist);
2094extern int GEOS_DLL GEOSHausdorffDistanceDensify(
const GEOSGeometry *g1,
2095 const GEOSGeometry *g2,
double densifyFrac,
double *dist);
2096extern int GEOS_DLL GEOSFrechetDistance(
const GEOSGeometry *g1,
2097 const GEOSGeometry *g2,
double *dist);
2098extern int GEOS_DLL GEOSFrechetDistanceDensify(
const GEOSGeometry *g1,
2099 const GEOSGeometry *g2,
double densifyFrac,
double *dist);
2100extern int GEOS_DLL GEOSGeomGetLength(
const GEOSGeometry *g,
double *length);
2105extern GEOSCoordSequence GEOS_DLL *GEOSNearestPoints(
2106 const GEOSGeometry* g1,
const GEOSGeometry* g2);
2123extern int GEOS_DLL GEOSOrientationIndex(
double Ax,
double Ay,
double Bx,
double By,
2124 double Px,
double Py);
2133extern GEOSWKTReader GEOS_DLL *GEOSWKTReader_create();
2134extern void GEOS_DLL GEOSWKTReader_destroy(GEOSWKTReader* reader);
2135extern GEOSGeometry GEOS_DLL *GEOSWKTReader_read(GEOSWKTReader* reader,
const char *wkt);
2138extern GEOSWKTWriter GEOS_DLL *GEOSWKTWriter_create();
2139extern void GEOS_DLL GEOSWKTWriter_destroy(GEOSWKTWriter* writer);
2140extern char GEOS_DLL *GEOSWKTWriter_write(GEOSWKTWriter* writer,
const GEOSGeometry* g);
2141extern void GEOS_DLL GEOSWKTWriter_setTrim(GEOSWKTWriter *writer,
char trim);
2142extern void GEOS_DLL GEOSWKTWriter_setRoundingPrecision(GEOSWKTWriter *writer,
int precision);
2143extern void GEOS_DLL GEOSWKTWriter_setOutputDimension(GEOSWKTWriter *writer,
int dim);
2144extern int GEOS_DLL GEOSWKTWriter_getOutputDimension(GEOSWKTWriter *writer);
2145extern void GEOS_DLL GEOSWKTWriter_setOld3D(GEOSWKTWriter *writer,
int useOld3D);
2148extern GEOSWKBReader GEOS_DLL *GEOSWKBReader_create();
2149extern void GEOS_DLL GEOSWKBReader_destroy(GEOSWKBReader* reader);
2150extern GEOSGeometry GEOS_DLL *GEOSWKBReader_read(GEOSWKBReader* reader,
const unsigned char *wkb,
size_t size);
2151extern GEOSGeometry GEOS_DLL *GEOSWKBReader_readHEX(GEOSWKBReader* reader,
const unsigned char *hex,
size_t size);
2154extern GEOSWKBWriter GEOS_DLL *GEOSWKBWriter_create();
2155extern void GEOS_DLL GEOSWKBWriter_destroy(GEOSWKBWriter* writer);
2158extern unsigned char GEOS_DLL *GEOSWKBWriter_write(GEOSWKBWriter* writer,
const GEOSGeometry* g,
size_t *size);
2159extern unsigned char GEOS_DLL *GEOSWKBWriter_writeHEX(GEOSWKBWriter* writer,
const GEOSGeometry* g,
size_t *size);
2165extern int GEOS_DLL GEOSWKBWriter_getOutputDimension(
const GEOSWKBWriter* writer);
2166extern void GEOS_DLL GEOSWKBWriter_setOutputDimension(GEOSWKBWriter* writer,
int newDimension);
2172extern int GEOS_DLL GEOSWKBWriter_getByteOrder(
const GEOSWKBWriter* writer);
2173extern void GEOS_DLL GEOSWKBWriter_setByteOrder(GEOSWKBWriter* writer,
int byteOrder);
2178extern char GEOS_DLL GEOSWKBWriter_getIncludeSRID(
const GEOSWKBWriter* writer);
2179extern void GEOS_DLL GEOSWKBWriter_setIncludeSRID(GEOSWKBWriter* writer,
const char writeSRID);
2185extern 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