34#ifndef GEOS_C_H_INCLUDED
35#define GEOS_C_H_INCLUDED
60#include <geos/version.h>
61#define GEOS_CAPI_VERSION_MAJOR 1
62#define GEOS_CAPI_VERSION_MINOR 10
63#define GEOS_CAPI_VERSION_PATCH 2
64#define GEOS_CAPI_VERSION "3.6.2-CAPI-1.10.2"
66#ifndef GEOS_VERSION_MAJOR
67#define GEOS_VERSION_MAJOR 3
69#ifndef GEOS_VERSION_MINOR
70#define GEOS_VERSION_MINOR 6
72#ifndef GEOS_VERSION_PATCH
73#define GEOS_VERSION_PATCH 2
76#define GEOS_VERSION "3.6.2"
79#define GEOS_JTS_PORT "1.13.0"
82#define GEOS_CAPI_VERSION_MAJOR 1
83#define GEOS_CAPI_VERSION_MINOR 10
84#define GEOS_CAPI_VERSION_PATCH 2
85#define GEOS_CAPI_VERSION "3.6.2-CAPI-1.10.2"
88#define GEOS_CAPI_FIRST_INTERFACE GEOS_CAPI_VERSION_MAJOR
89#define GEOS_CAPI_LAST_INTERFACE (GEOS_CAPI_VERSION_MAJOR+GEOS_CAPI_VERSION_MINOR)
97typedef struct GEOSContextHandle_HS *GEOSContextHandle_t;
99typedef void (*GEOSMessageHandler)(
const char *fmt, ...);
111typedef void (*GEOSMessageHandler_r)(
const char *message,
void *userdata);
120typedef struct GEOSGeom_t GEOSGeometry;
121typedef struct GEOSPrepGeom_t GEOSPreparedGeometry;
122typedef struct GEOSCoordSeq_t GEOSCoordSequence;
123typedef struct GEOSSTRtree_t GEOSSTRtree;
124typedef struct GEOSBufParams_t GEOSBufferParams;
130typedef GEOSGeometry* GEOSGeom;
131typedef GEOSCoordSequence* GEOSCoordSeq;
144 GEOS_MULTILINESTRING,
146 GEOS_GEOMETRYCOLLECTION
155typedef void (*GEOSQueryCallback)(
void *item,
void *userdata);
156typedef int (*GEOSDistanceCallback)(
const void *item1,
const void* item2,
double* distance,
void* userdata);
164#include <geos/export.h>
172typedef void (GEOSInterruptCallback)();
173extern GEOSInterruptCallback GEOS_DLL *GEOS_interruptRegisterCallback(GEOSInterruptCallback* cb);
175extern void GEOS_DLL GEOS_interruptRequest();
177extern void GEOS_DLL GEOS_interruptCancel();
184extern GEOSContextHandle_t GEOS_DLL initGEOS_r(
185 GEOSMessageHandler notice_function,
186 GEOSMessageHandler error_function);
190extern void GEOS_DLL finishGEOS_r(GEOSContextHandle_t handle);
192extern GEOSContextHandle_t GEOS_DLL GEOS_init_r();
193extern void GEOS_DLL GEOS_finish_r(GEOSContextHandle_t handle);
196extern GEOSMessageHandler GEOS_DLL GEOSContext_setNoticeHandler_r(GEOSContextHandle_t extHandle,
197 GEOSMessageHandler nf);
198extern GEOSMessageHandler GEOS_DLL GEOSContext_setErrorHandler_r(GEOSContextHandle_t extHandle,
199 GEOSMessageHandler ef);
210extern GEOSMessageHandler_r GEOS_DLL GEOSContext_setNoticeMessageHandler_r(GEOSContextHandle_t extHandle,
211 GEOSMessageHandler_r nf,
223extern GEOSMessageHandler_r GEOS_DLL GEOSContext_setErrorMessageHandler_r(GEOSContextHandle_t extHandle,
224 GEOSMessageHandler_r ef,
227extern const char GEOS_DLL *GEOSversion();
237extern GEOSGeometry GEOS_DLL *GEOSGeomFromWKT_r(GEOSContextHandle_t handle,
239extern char GEOS_DLL *GEOSGeomToWKT_r(GEOSContextHandle_t handle,
240 const GEOSGeometry* g);
247extern int GEOS_DLL GEOS_getWKBOutputDims_r(GEOSContextHandle_t handle);
248extern int GEOS_DLL GEOS_setWKBOutputDims_r(GEOSContextHandle_t handle,
256extern int GEOS_DLL GEOS_getWKBByteOrder_r(GEOSContextHandle_t handle);
257extern int GEOS_DLL GEOS_setWKBByteOrder_r(GEOSContextHandle_t handle,
260extern GEOSGeometry GEOS_DLL *GEOSGeomFromWKB_buf_r(GEOSContextHandle_t handle,
261 const unsigned char *wkb,
263extern unsigned char GEOS_DLL *GEOSGeomToWKB_buf_r(GEOSContextHandle_t handle,
264 const GEOSGeometry* g,
267extern GEOSGeometry GEOS_DLL *GEOSGeomFromHEX_buf_r(GEOSContextHandle_t handle,
268 const unsigned char *hex,
270extern unsigned char GEOS_DLL *GEOSGeomToHEX_buf_r(GEOSContextHandle_t handle,
271 const GEOSGeometry* g,
285extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_create_r(
286 GEOSContextHandle_t handle,
294extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_clone_r(
295 GEOSContextHandle_t handle,
296 const GEOSCoordSequence* s);
301extern void GEOS_DLL GEOSCoordSeq_destroy_r(GEOSContextHandle_t handle,
302 GEOSCoordSequence* s);
308extern int GEOS_DLL GEOSCoordSeq_setX_r(GEOSContextHandle_t handle,
309 GEOSCoordSequence* s,
unsigned int idx,
311extern int GEOS_DLL GEOSCoordSeq_setY_r(GEOSContextHandle_t handle,
312 GEOSCoordSequence* s,
unsigned int idx,
314extern int GEOS_DLL GEOSCoordSeq_setZ_r(GEOSContextHandle_t handle,
315 GEOSCoordSequence* s,
unsigned int idx,
317extern int GEOS_DLL GEOSCoordSeq_setOrdinate_r(GEOSContextHandle_t handle,
318 GEOSCoordSequence* s,
320 unsigned int dim,
double val);
326extern int GEOS_DLL GEOSCoordSeq_getX_r(GEOSContextHandle_t handle,
327 const GEOSCoordSequence* s,
328 unsigned int idx,
double *val);
329extern int GEOS_DLL GEOSCoordSeq_getY_r(GEOSContextHandle_t handle,
330 const GEOSCoordSequence* s,
331 unsigned int idx,
double *val);
332extern int GEOS_DLL GEOSCoordSeq_getZ_r(GEOSContextHandle_t handle,
333 const GEOSCoordSequence* s,
334 unsigned int idx,
double *val);
335extern int GEOS_DLL GEOSCoordSeq_getOrdinate_r(GEOSContextHandle_t handle,
336 const GEOSCoordSequence* s,
338 unsigned int dim,
double *val);
343extern int GEOS_DLL GEOSCoordSeq_getSize_r(GEOSContextHandle_t handle,
344 const GEOSCoordSequence* s,
346extern int GEOS_DLL GEOSCoordSeq_getDimensions_r(GEOSContextHandle_t handle,
347 const GEOSCoordSequence* s,
364extern double GEOS_DLL GEOSProject_r(GEOSContextHandle_t handle,
365 const GEOSGeometry *g,
366 const GEOSGeometry *p);
370extern GEOSGeometry GEOS_DLL *GEOSInterpolate_r(GEOSContextHandle_t handle,
371 const GEOSGeometry *g,
374extern double GEOS_DLL GEOSProjectNormalized_r(GEOSContextHandle_t handle,
375 const GEOSGeometry *g,
376 const GEOSGeometry *p);
378extern GEOSGeometry GEOS_DLL *GEOSInterpolateNormalized_r(
379 GEOSContextHandle_t handle,
380 const GEOSGeometry *g,
391extern GEOSGeometry GEOS_DLL *GEOSBuffer_r(GEOSContextHandle_t handle,
392 const GEOSGeometry* g,
393 double width,
int quadsegs);
395enum GEOSBufCapStyles {
401enum GEOSBufJoinStyles {
402 GEOSBUF_JOIN_ROUND=1,
403 GEOSBUF_JOIN_MITRE=2,
408extern GEOSBufferParams GEOS_DLL *GEOSBufferParams_create_r(
409 GEOSContextHandle_t handle);
410extern void GEOS_DLL GEOSBufferParams_destroy_r(
411 GEOSContextHandle_t handle,
412 GEOSBufferParams* parms);
415extern int GEOS_DLL GEOSBufferParams_setEndCapStyle_r(
416 GEOSContextHandle_t handle,
421extern int GEOS_DLL GEOSBufferParams_setJoinStyle_r(
422 GEOSContextHandle_t handle,
427extern int GEOS_DLL GEOSBufferParams_setMitreLimit_r(
428 GEOSContextHandle_t handle,
433extern int GEOS_DLL GEOSBufferParams_setQuadrantSegments_r(
434 GEOSContextHandle_t handle,
440extern int GEOS_DLL GEOSBufferParams_setSingleSided_r(
441 GEOSContextHandle_t handle,
446extern GEOSGeometry GEOS_DLL *GEOSBufferWithParams_r(
447 GEOSContextHandle_t handle,
448 const GEOSGeometry* g,
449 const GEOSBufferParams* p,
453extern GEOSGeometry GEOS_DLL *GEOSBufferWithStyle_r(GEOSContextHandle_t handle,
454 const GEOSGeometry* g,
double width,
int quadsegs,
int endCapStyle,
455 int joinStyle,
double mitreLimit);
459extern GEOSGeometry GEOS_DLL *GEOSSingleSidedBuffer_r(
460 GEOSContextHandle_t handle,
461 const GEOSGeometry* g,
double width,
int quadsegs,
462 int joinStyle,
double mitreLimit,
int leftSide);
471extern GEOSGeometry GEOS_DLL *GEOSOffsetCurve_r(GEOSContextHandle_t handle,
472 const GEOSGeometry* g,
double width,
int quadsegs,
473 int joinStyle,
double mitreLimit);
484extern GEOSGeometry GEOS_DLL *GEOSGeom_createPoint_r(
485 GEOSContextHandle_t handle,
486 GEOSCoordSequence* s);
487extern GEOSGeometry GEOS_DLL *GEOSGeom_createEmptyPoint_r(
488 GEOSContextHandle_t handle);
489extern GEOSGeometry GEOS_DLL *GEOSGeom_createLinearRing_r(
490 GEOSContextHandle_t handle,
491 GEOSCoordSequence* s);
492extern GEOSGeometry GEOS_DLL *GEOSGeom_createLineString_r(
493 GEOSContextHandle_t handle,
494 GEOSCoordSequence* s);
495extern GEOSGeometry GEOS_DLL *GEOSGeom_createEmptyLineString_r(
496 GEOSContextHandle_t handle);
503extern GEOSGeometry GEOS_DLL *GEOSGeom_createEmptyPolygon_r(
504 GEOSContextHandle_t handle);
505extern GEOSGeometry GEOS_DLL *GEOSGeom_createPolygon_r(
506 GEOSContextHandle_t handle,
508 GEOSGeometry** holes,
509 unsigned int nholes);
510extern GEOSGeometry GEOS_DLL *GEOSGeom_createCollection_r(
511 GEOSContextHandle_t handle,
int type,
512 GEOSGeometry* *geoms,
513 unsigned int ngeoms);
514extern GEOSGeometry GEOS_DLL *GEOSGeom_createEmptyCollection_r(
515 GEOSContextHandle_t handle,
int type);
517extern GEOSGeometry GEOS_DLL *GEOSGeom_clone_r(GEOSContextHandle_t handle,
518 const GEOSGeometry* g);
526extern void GEOS_DLL GEOSGeom_destroy_r(GEOSContextHandle_t handle,
535extern GEOSGeometry GEOS_DLL *GEOSEnvelope_r(GEOSContextHandle_t handle,
536 const GEOSGeometry* g);
537extern GEOSGeometry GEOS_DLL *GEOSIntersection_r(GEOSContextHandle_t handle,
538 const GEOSGeometry* g1,
539 const GEOSGeometry* g2);
540extern GEOSGeometry GEOS_DLL *GEOSConvexHull_r(GEOSContextHandle_t handle,
541 const GEOSGeometry* g);
548extern GEOSGeometry GEOS_DLL *GEOSMinimumRotatedRectangle_r(GEOSContextHandle_t handle,
549 const GEOSGeometry* g);
557extern GEOSGeometry GEOS_DLL *GEOSMinimumWidth_r(GEOSContextHandle_t handle,
558 const GEOSGeometry* g);
560extern GEOSGeometry GEOS_DLL *GEOSMinimumClearanceLine_r(GEOSContextHandle_t handle,
561 const GEOSGeometry* g);
563extern int GEOS_DLL GEOSMinimumClearance_r(GEOSContextHandle_t handle,
564 const GEOSGeometry* g,
567extern GEOSGeometry GEOS_DLL *GEOSDifference_r(GEOSContextHandle_t handle,
568 const GEOSGeometry* g1,
569 const GEOSGeometry* g2);
570extern GEOSGeometry GEOS_DLL *GEOSSymDifference_r(GEOSContextHandle_t handle,
571 const GEOSGeometry* g1,
572 const GEOSGeometry* g2);
573extern GEOSGeometry GEOS_DLL *GEOSBoundary_r(GEOSContextHandle_t handle,
574 const GEOSGeometry* g);
575extern GEOSGeometry GEOS_DLL *GEOSUnion_r(GEOSContextHandle_t handle,
576 const GEOSGeometry* g1,
577 const GEOSGeometry* g2);
578extern GEOSGeometry GEOS_DLL *GEOSUnaryUnion_r(GEOSContextHandle_t handle,
579 const GEOSGeometry* g);
581extern GEOSGeometry GEOS_DLL *GEOSUnionCascaded_r(GEOSContextHandle_t handle,
582 const GEOSGeometry* g);
583extern GEOSGeometry GEOS_DLL *GEOSPointOnSurface_r(GEOSContextHandle_t handle,
584 const GEOSGeometry* g);
585extern GEOSGeometry GEOS_DLL *GEOSGetCentroid_r(GEOSContextHandle_t handle,
586 const GEOSGeometry* g);
587extern GEOSGeometry GEOS_DLL *GEOSNode_r(GEOSContextHandle_t handle,
588 const GEOSGeometry* g);
591extern GEOSGeometry GEOS_DLL *GEOSClipByRect_r(GEOSContextHandle_t handle,
592 const GEOSGeometry* g,
593 double xmin,
double ymin,
594 double xmax,
double ymax);
628extern GEOSGeometry GEOS_DLL *GEOSPolygonize_r(GEOSContextHandle_t handle,
629 const GEOSGeometry *
const geoms[],
630 unsigned int ngeoms);
631extern GEOSGeometry GEOS_DLL *GEOSPolygonizer_getCutEdges_r(
632 GEOSContextHandle_t handle,
633 const GEOSGeometry *
const geoms[],
634 unsigned int ngeoms);
635extern GEOSGeometry GEOS_DLL *GEOSPolygonize_full_r(GEOSContextHandle_t handle,
636 const GEOSGeometry* input, GEOSGeometry** cuts,
637 GEOSGeometry** dangles, GEOSGeometry** invalidRings);
639extern GEOSGeometry GEOS_DLL *GEOSLineMerge_r(GEOSContextHandle_t handle,
640 const GEOSGeometry* g);
641extern GEOSGeometry GEOS_DLL *GEOSSimplify_r(GEOSContextHandle_t handle,
642 const GEOSGeometry* g,
644extern GEOSGeometry GEOS_DLL *GEOSTopologyPreserveSimplify_r(
645 GEOSContextHandle_t handle,
646 const GEOSGeometry* g,
double tolerance);
653extern GEOSGeometry GEOS_DLL *GEOSGeom_extractUniquePoints_r(
654 GEOSContextHandle_t handle,
655 const GEOSGeometry* g);
668extern GEOSGeometry GEOS_DLL *GEOSSharedPaths_r(GEOSContextHandle_t handle,
669 const GEOSGeometry* g1,
const GEOSGeometry* g2);
675extern GEOSGeometry GEOS_DLL *GEOSSnap_r(GEOSContextHandle_t handle,
676 const GEOSGeometry* g1,
const GEOSGeometry* g2,
double tolerance);
688extern GEOSGeometry GEOS_DLL * GEOSDelaunayTriangulation_r(
689 GEOSContextHandle_t handle,
690 const GEOSGeometry *g,
707extern GEOSGeometry GEOS_DLL * GEOSVoronoiDiagram_r(
708 GEOSContextHandle_t extHandle,
709 const GEOSGeometry *g,
710 const GEOSGeometry *env,
721extern char GEOS_DLL GEOSDisjoint_r(GEOSContextHandle_t handle,
722 const GEOSGeometry* g1,
723 const GEOSGeometry* g2);
724extern char GEOS_DLL GEOSTouches_r(GEOSContextHandle_t handle,
725 const GEOSGeometry* g1,
726 const GEOSGeometry* g2);
727extern char GEOS_DLL GEOSIntersects_r(GEOSContextHandle_t handle,
728 const GEOSGeometry* g1,
729 const GEOSGeometry* g2);
730extern char GEOS_DLL GEOSCrosses_r(GEOSContextHandle_t handle,
731 const GEOSGeometry* g1,
732 const GEOSGeometry* g2);
733extern char GEOS_DLL GEOSWithin_r(GEOSContextHandle_t handle,
734 const GEOSGeometry* g1,
735 const GEOSGeometry* g2);
736extern char GEOS_DLL GEOSContains_r(GEOSContextHandle_t handle,
737 const GEOSGeometry* g1,
738 const GEOSGeometry* g2);
739extern char GEOS_DLL GEOSOverlaps_r(GEOSContextHandle_t handle,
740 const GEOSGeometry* g1,
741 const GEOSGeometry* g2);
742extern char GEOS_DLL GEOSEquals_r(GEOSContextHandle_t handle,
743 const GEOSGeometry* g1,
744 const GEOSGeometry* g2);
745extern char GEOS_DLL GEOSEqualsExact_r(GEOSContextHandle_t handle,
746 const GEOSGeometry* g1,
747 const GEOSGeometry* g2,
749extern char GEOS_DLL GEOSCovers_r(GEOSContextHandle_t handle,
750 const GEOSGeometry* g1,
751 const GEOSGeometry* g2);
752extern char GEOS_DLL GEOSCoveredBy_r(GEOSContextHandle_t handle,
753 const GEOSGeometry* g1,
754 const GEOSGeometry* g2);
765extern const GEOSPreparedGeometry GEOS_DLL *GEOSPrepare_r(
766 GEOSContextHandle_t handle,
767 const GEOSGeometry* g);
769extern void GEOS_DLL GEOSPreparedGeom_destroy_r(GEOSContextHandle_t handle,
770 const GEOSPreparedGeometry* g);
772extern char GEOS_DLL GEOSPreparedContains_r(GEOSContextHandle_t handle,
773 const GEOSPreparedGeometry* pg1,
774 const GEOSGeometry* g2);
775extern char GEOS_DLL GEOSPreparedContainsProperly_r(GEOSContextHandle_t handle,
776 const GEOSPreparedGeometry* pg1,
777 const GEOSGeometry* g2);
778extern char GEOS_DLL GEOSPreparedCoveredBy_r(GEOSContextHandle_t handle,
779 const GEOSPreparedGeometry* pg1,
780 const GEOSGeometry* g2);
781extern char GEOS_DLL GEOSPreparedCovers_r(GEOSContextHandle_t handle,
782 const GEOSPreparedGeometry* pg1,
783 const GEOSGeometry* g2);
784extern char GEOS_DLL GEOSPreparedCrosses_r(GEOSContextHandle_t handle,
785 const GEOSPreparedGeometry* pg1,
786 const GEOSGeometry* g2);
787extern char GEOS_DLL GEOSPreparedDisjoint_r(GEOSContextHandle_t handle,
788 const GEOSPreparedGeometry* pg1,
789 const GEOSGeometry* g2);
790extern char GEOS_DLL GEOSPreparedIntersects_r(GEOSContextHandle_t handle,
791 const GEOSPreparedGeometry* pg1,
792 const GEOSGeometry* g2);
793extern char GEOS_DLL GEOSPreparedOverlaps_r(GEOSContextHandle_t handle,
794 const GEOSPreparedGeometry* pg1,
795 const GEOSGeometry* g2);
796extern char GEOS_DLL GEOSPreparedTouches_r(GEOSContextHandle_t handle,
797 const GEOSPreparedGeometry* pg1,
798 const GEOSGeometry* g2);
799extern char GEOS_DLL GEOSPreparedWithin_r(GEOSContextHandle_t handle,
800 const GEOSPreparedGeometry* pg1,
801 const GEOSGeometry* g2);
813extern GEOSSTRtree GEOS_DLL *GEOSSTRtree_create_r(
814 GEOSContextHandle_t handle,
815 size_t nodeCapacity);
816extern void GEOS_DLL GEOSSTRtree_insert_r(GEOSContextHandle_t handle,
818 const GEOSGeometry *g,
820extern void GEOS_DLL GEOSSTRtree_query_r(GEOSContextHandle_t handle,
822 const GEOSGeometry *g,
823 GEOSQueryCallback callback,
826extern const GEOSGeometry GEOS_DLL *GEOSSTRtree_nearest_r(GEOSContextHandle_t handle,
828 const GEOSGeometry* geom);
831extern const void GEOS_DLL *GEOSSTRtree_nearest_generic_r(GEOSContextHandle_t handle,
834 const GEOSGeometry* itemEnvelope,
835 GEOSDistanceCallback distancefn,
838extern void GEOS_DLL GEOSSTRtree_iterate_r(GEOSContextHandle_t handle,
840 GEOSQueryCallback callback,
842extern char GEOS_DLL GEOSSTRtree_remove_r(GEOSContextHandle_t handle,
844 const GEOSGeometry *g,
846extern void GEOS_DLL GEOSSTRtree_destroy_r(GEOSContextHandle_t handle,
856extern char GEOS_DLL GEOSisEmpty_r(GEOSContextHandle_t handle,
857 const GEOSGeometry* g);
858extern char GEOS_DLL GEOSisSimple_r(GEOSContextHandle_t handle,
859 const GEOSGeometry* g);
860extern char GEOS_DLL GEOSisRing_r(GEOSContextHandle_t handle,
861 const GEOSGeometry* g);
862extern char GEOS_DLL GEOSHasZ_r(GEOSContextHandle_t handle,
863 const GEOSGeometry* g);
864extern char GEOS_DLL GEOSisClosed_r(GEOSContextHandle_t handle,
865 const GEOSGeometry *g);
874enum GEOSRelateBoundaryNodeRules {
878 GEOSRELATE_BNR_MOD2=1,
879 GEOSRELATE_BNR_OGC=1,
880 GEOSRELATE_BNR_ENDPOINT=2,
881 GEOSRELATE_BNR_MULTIVALENT_ENDPOINT=3,
882 GEOSRELATE_BNR_MONOVALENT_ENDPOINT=4
886extern char GEOS_DLL GEOSRelatePattern_r(GEOSContextHandle_t handle,
887 const GEOSGeometry* g1,
888 const GEOSGeometry* g2,
892extern char GEOS_DLL *GEOSRelate_r(GEOSContextHandle_t handle,
893 const GEOSGeometry* g1,
894 const GEOSGeometry* g2);
897extern char GEOS_DLL GEOSRelatePatternMatch_r(GEOSContextHandle_t handle,
902extern char GEOS_DLL *GEOSRelateBoundaryNodeRule_r(GEOSContextHandle_t handle,
903 const GEOSGeometry* g1,
904 const GEOSGeometry* g2,
915 GEOSVALID_ALLOW_SELFTOUCHING_RING_FORMING_HOLE=1
919extern char GEOS_DLL GEOSisValid_r(GEOSContextHandle_t handle,
920 const GEOSGeometry* g);
923extern char GEOS_DLL *GEOSisValidReason_r(GEOSContextHandle_t handle,
924 const GEOSGeometry* g);
931extern char GEOS_DLL GEOSisValidDetail_r(GEOSContextHandle_t handle,
932 const GEOSGeometry* g,
935 GEOSGeometry** location);
944extern char GEOS_DLL *GEOSGeomType_r(GEOSContextHandle_t handle,
945 const GEOSGeometry* g);
948extern int GEOS_DLL GEOSGeomTypeId_r(GEOSContextHandle_t handle,
949 const GEOSGeometry* g);
952extern int GEOS_DLL GEOSGetSRID_r(GEOSContextHandle_t handle,
953 const GEOSGeometry* g);
955extern void GEOS_DLL GEOSSetSRID_r(GEOSContextHandle_t handle,
956 GEOSGeometry* g,
int SRID);
958extern void GEOS_DLL *GEOSGeom_getUserData_r(GEOSContextHandle_t handle,
959const GEOSGeometry* g);
961extern void GEOS_DLL GEOSGeom_setUserData_r(GEOSContextHandle_t handle,
962 GEOSGeometry* g,
void* userData);
970extern int GEOS_DLL GEOSGetNumGeometries_r(GEOSContextHandle_t handle,
971 const GEOSGeometry* g);
981extern const GEOSGeometry GEOS_DLL *GEOSGetGeometryN_r(
982 GEOSContextHandle_t handle,
983 const GEOSGeometry* g,
int n);
986extern int GEOS_DLL GEOSNormalize_r(GEOSContextHandle_t handle,
991#define GEOS_PREC_NO_TOPO (1<<0)
995#define GEOS_PREC_KEEP_COLLAPSED (1<<1)
1012extern GEOSGeometry GEOS_DLL *GEOSGeom_setPrecision_r(
1013 GEOSContextHandle_t handle,
1014 const GEOSGeometry *g,
1015 double gridSize,
int flags);
1023extern double GEOS_DLL GEOSGeom_getPrecision_r(
1024 GEOSContextHandle_t handle,
1025 const GEOSGeometry *g);
1028extern int GEOS_DLL GEOSGetNumInteriorRings_r(GEOSContextHandle_t handle,
1029 const GEOSGeometry* g);
1032extern int GEOS_DLL GEOSGeomGetNumPoints_r(GEOSContextHandle_t handle,
1033 const GEOSGeometry* g);
1036extern int GEOS_DLL GEOSGeomGetX_r(GEOSContextHandle_t handle,
const GEOSGeometry *g,
double *x);
1037extern int GEOS_DLL GEOSGeomGetY_r(GEOSContextHandle_t handle,
const GEOSGeometry *g,
double *y);
1044extern const GEOSGeometry GEOS_DLL *GEOSGetInteriorRingN_r(
1045 GEOSContextHandle_t handle,
1046 const GEOSGeometry* g,
int n);
1053extern const GEOSGeometry GEOS_DLL *GEOSGetExteriorRing_r(
1054 GEOSContextHandle_t handle,
1055 const GEOSGeometry* g);
1058extern int GEOS_DLL GEOSGetNumCoordinates_r(GEOSContextHandle_t handle,
1059 const GEOSGeometry* g);
1065extern const GEOSCoordSequence GEOS_DLL *GEOSGeom_getCoordSeq_r(
1066 GEOSContextHandle_t handle,
1067 const GEOSGeometry* g);
1072extern int GEOS_DLL GEOSGeom_getDimensions_r(GEOSContextHandle_t handle,
1073 const GEOSGeometry* g);
1078extern int GEOS_DLL GEOSGeom_getCoordinateDimension_r(GEOSContextHandle_t handle,
1079 const GEOSGeometry* g);
1085extern GEOSGeometry GEOS_DLL *GEOSGeomGetPointN_r(GEOSContextHandle_t handle,
const GEOSGeometry *g,
int n);
1086extern GEOSGeometry GEOS_DLL *GEOSGeomGetStartPoint_r(GEOSContextHandle_t handle,
const GEOSGeometry *g);
1087extern GEOSGeometry GEOS_DLL *GEOSGeomGetEndPoint_r(GEOSContextHandle_t handle,
const GEOSGeometry *g);
1096extern int GEOS_DLL GEOSArea_r(GEOSContextHandle_t handle,
1097 const GEOSGeometry* g,
double *area);
1098extern int GEOS_DLL GEOSLength_r(GEOSContextHandle_t handle,
1099 const GEOSGeometry* g,
double *length);
1100extern int GEOS_DLL GEOSDistance_r(GEOSContextHandle_t handle,
1101 const GEOSGeometry* g1,
1102 const GEOSGeometry* g2,
double *dist);
1103extern int GEOS_DLL GEOSHausdorffDistance_r(GEOSContextHandle_t handle,
1104 const GEOSGeometry *g1,
1105 const GEOSGeometry *g2,
1107extern int GEOS_DLL GEOSHausdorffDistanceDensify_r(GEOSContextHandle_t handle,
1108 const GEOSGeometry *g1,
1109 const GEOSGeometry *g2,
1110 double densifyFrac,
double *dist);
1111extern int GEOS_DLL GEOSGeomGetLength_r(GEOSContextHandle_t handle,
1112 const GEOSGeometry *g,
double *length);
1117extern GEOSCoordSequence GEOS_DLL *GEOSNearestPoints_r(
1118 GEOSContextHandle_t handle,
const GEOSGeometry* g1,
const GEOSGeometry* g2);
1135extern int GEOS_DLL GEOSOrientationIndex_r(GEOSContextHandle_t handle,
1136 double Ax,
double Ay,
double Bx,
double By,
double Px,
double Py);
1145typedef struct GEOSWKTReader_t GEOSWKTReader;
1146typedef struct GEOSWKTWriter_t GEOSWKTWriter;
1147typedef struct GEOSWKBReader_t GEOSWKBReader;
1148typedef struct GEOSWKBWriter_t GEOSWKBWriter;
1152extern GEOSWKTReader GEOS_DLL *GEOSWKTReader_create_r(
1153 GEOSContextHandle_t handle);
1154extern void GEOS_DLL GEOSWKTReader_destroy_r(GEOSContextHandle_t handle,
1155 GEOSWKTReader* reader);
1156extern GEOSGeometry GEOS_DLL *GEOSWKTReader_read_r(GEOSContextHandle_t handle,
1157 GEOSWKTReader* reader,
1161extern GEOSWKTWriter GEOS_DLL *GEOSWKTWriter_create_r(
1162 GEOSContextHandle_t handle);
1163extern void GEOS_DLL GEOSWKTWriter_destroy_r(GEOSContextHandle_t handle,
1164 GEOSWKTWriter* writer);
1165extern char GEOS_DLL *GEOSWKTWriter_write_r(GEOSContextHandle_t handle,
1166 GEOSWKTWriter* writer,
1167 const GEOSGeometry* g);
1168extern void GEOS_DLL GEOSWKTWriter_setTrim_r(GEOSContextHandle_t handle,
1169 GEOSWKTWriter *writer,
1171extern void GEOS_DLL GEOSWKTWriter_setRoundingPrecision_r(GEOSContextHandle_t handle,
1172 GEOSWKTWriter *writer,
1174extern void GEOS_DLL GEOSWKTWriter_setOutputDimension_r(GEOSContextHandle_t handle,
1175 GEOSWKTWriter *writer,
1177extern int GEOS_DLL GEOSWKTWriter_getOutputDimension_r(GEOSContextHandle_t handle,
1178 GEOSWKTWriter *writer);
1179extern void GEOS_DLL GEOSWKTWriter_setOld3D_r(GEOSContextHandle_t handle,
1180 GEOSWKTWriter *writer,
1184extern GEOSWKBReader GEOS_DLL *GEOSWKBReader_create_r(
1185 GEOSContextHandle_t handle);
1186extern void GEOS_DLL GEOSWKBReader_destroy_r(GEOSContextHandle_t handle,
1187 GEOSWKBReader* reader);
1188extern GEOSGeometry GEOS_DLL *GEOSWKBReader_read_r(GEOSContextHandle_t handle,
1189 GEOSWKBReader* reader,
1190 const unsigned char *wkb,
1192extern GEOSGeometry GEOS_DLL *GEOSWKBReader_readHEX_r(
1193 GEOSContextHandle_t handle,
1194 GEOSWKBReader* reader,
1195 const unsigned char *hex,
1199extern GEOSWKBWriter GEOS_DLL *GEOSWKBWriter_create_r(
1200 GEOSContextHandle_t handle);
1201extern void GEOS_DLL GEOSWKBWriter_destroy_r(GEOSContextHandle_t handle,
1202 GEOSWKBWriter* writer);
1205extern unsigned char GEOS_DLL *GEOSWKBWriter_write_r(
1206 GEOSContextHandle_t handle,
1207 GEOSWKBWriter* writer,
1208 const GEOSGeometry* g,
1210extern unsigned char GEOS_DLL *GEOSWKBWriter_writeHEX_r(
1211 GEOSContextHandle_t handle,
1212 GEOSWKBWriter* writer,
1213 const GEOSGeometry* g,
1220extern int GEOS_DLL GEOSWKBWriter_getOutputDimension_r(
1221 GEOSContextHandle_t handle,
1222 const GEOSWKBWriter* writer);
1223extern void GEOS_DLL GEOSWKBWriter_setOutputDimension_r(
1224 GEOSContextHandle_t handle,
1225 GEOSWKBWriter* writer,
int newDimension);
1231extern int GEOS_DLL GEOSWKBWriter_getByteOrder_r(GEOSContextHandle_t handle,
1232 const GEOSWKBWriter* writer);
1233extern void GEOS_DLL GEOSWKBWriter_setByteOrder_r(GEOSContextHandle_t handle,
1234 GEOSWKBWriter* writer,
1240extern char GEOS_DLL GEOSWKBWriter_getIncludeSRID_r(GEOSContextHandle_t handle,
1241 const GEOSWKBWriter* writer);
1242extern void GEOS_DLL GEOSWKBWriter_setIncludeSRID_r(GEOSContextHandle_t handle,
1243 GEOSWKBWriter* writer,
const char writeSRID);
1250extern void GEOS_DLL GEOSFree_r(GEOSContextHandle_t handle,
void *buffer);
1255#ifndef GEOS_USE_ONLY_R_API
1263extern void GEOS_DLL initGEOS(GEOSMessageHandler notice_function,
1264 GEOSMessageHandler error_function);
1265extern void GEOS_DLL finishGEOS(
void);
1274extern GEOSGeometry GEOS_DLL *GEOSGeomFromWKT(
const char *wkt);
1275extern char GEOS_DLL *GEOSGeomToWKT(
const GEOSGeometry* g);
1281extern int GEOS_DLL GEOS_getWKBOutputDims();
1282extern int GEOS_DLL GEOS_setWKBOutputDims(
int newDims);
1288extern int GEOS_DLL GEOS_getWKBByteOrder();
1289extern int GEOS_DLL GEOS_setWKBByteOrder(
int byteOrder);
1291extern GEOSGeometry GEOS_DLL *GEOSGeomFromWKB_buf(
const unsigned char *wkb,
size_t size);
1292extern unsigned char GEOS_DLL *GEOSGeomToWKB_buf(
const GEOSGeometry* g,
size_t *size);
1294extern GEOSGeometry GEOS_DLL *GEOSGeomFromHEX_buf(
const unsigned char *hex,
size_t size);
1295extern unsigned char GEOS_DLL *GEOSGeomToHEX_buf(
const GEOSGeometry* g,
size_t *size);
1308extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_create(
unsigned int size,
unsigned int dims);
1314extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_clone(
const GEOSCoordSequence* s);
1319extern void GEOS_DLL GEOSCoordSeq_destroy(GEOSCoordSequence* s);
1325extern int GEOS_DLL GEOSCoordSeq_setX(GEOSCoordSequence* s,
1326 unsigned int idx,
double val);
1327extern int GEOS_DLL GEOSCoordSeq_setY(GEOSCoordSequence* s,
1328 unsigned int idx,
double val);
1329extern int GEOS_DLL GEOSCoordSeq_setZ(GEOSCoordSequence* s,
1330 unsigned int idx,
double val);
1331extern int GEOS_DLL GEOSCoordSeq_setOrdinate(GEOSCoordSequence* s,
1332 unsigned int idx,
unsigned int dim,
double val);
1338extern int GEOS_DLL GEOSCoordSeq_getX(
const GEOSCoordSequence* s,
1339 unsigned int idx,
double *val);
1340extern int GEOS_DLL GEOSCoordSeq_getY(
const GEOSCoordSequence* s,
1341 unsigned int idx,
double *val);
1342extern int GEOS_DLL GEOSCoordSeq_getZ(
const GEOSCoordSequence* s,
1343 unsigned int idx,
double *val);
1344extern int GEOS_DLL GEOSCoordSeq_getOrdinate(
const GEOSCoordSequence* s,
1345 unsigned int idx,
unsigned int dim,
double *val);
1350extern int GEOS_DLL GEOSCoordSeq_getSize(
const GEOSCoordSequence* s,
1351 unsigned int *size);
1352extern int GEOS_DLL GEOSCoordSeq_getDimensions(
const GEOSCoordSequence* s,
1353 unsigned int *dims);
1369extern double GEOS_DLL GEOSProject(
const GEOSGeometry *g,
1370 const GEOSGeometry* p);
1374extern GEOSGeometry GEOS_DLL *GEOSInterpolate(
const GEOSGeometry *g,
1377extern double GEOS_DLL GEOSProjectNormalized(
const GEOSGeometry *g,
1378 const GEOSGeometry* p);
1380extern GEOSGeometry GEOS_DLL *GEOSInterpolateNormalized(
const GEOSGeometry *g,
1391extern GEOSGeometry GEOS_DLL *GEOSBuffer(
const GEOSGeometry* g,
1392 double width,
int quadsegs);
1395extern GEOSBufferParams GEOS_DLL *GEOSBufferParams_create();
1396extern void GEOS_DLL GEOSBufferParams_destroy(GEOSBufferParams* parms);
1399extern int GEOS_DLL GEOSBufferParams_setEndCapStyle(
1400 GEOSBufferParams* p,
1404extern int GEOS_DLL GEOSBufferParams_setJoinStyle(
1405 GEOSBufferParams* p,
1409extern int GEOS_DLL GEOSBufferParams_setMitreLimit(
1410 GEOSBufferParams* p,
1414extern int GEOS_DLL GEOSBufferParams_setQuadrantSegments(
1415 GEOSBufferParams* p,
1420extern int GEOS_DLL GEOSBufferParams_setSingleSided(
1421 GEOSBufferParams* p,
1425extern GEOSGeometry GEOS_DLL *GEOSBufferWithParams(
1426 const GEOSGeometry* g,
1427 const GEOSBufferParams* p,
1431extern GEOSGeometry GEOS_DLL *GEOSBufferWithStyle(
const GEOSGeometry* g,
1432 double width,
int quadsegs,
int endCapStyle,
int joinStyle,
1437extern GEOSGeometry GEOS_DLL *GEOSSingleSidedBuffer(
const GEOSGeometry* g,
1438 double width,
int quadsegs,
int joinStyle,
double mitreLimit,
1448extern GEOSGeometry GEOS_DLL *GEOSOffsetCurve(
const GEOSGeometry* g,
1449 double width,
int quadsegs,
int joinStyle,
double mitreLimit);
1459extern GEOSGeometry GEOS_DLL *GEOSGeom_createPoint(GEOSCoordSequence* s);
1460extern GEOSGeometry GEOS_DLL *GEOSGeom_createEmptyPoint();
1461extern GEOSGeometry GEOS_DLL *GEOSGeom_createLinearRing(GEOSCoordSequence* s);
1462extern GEOSGeometry GEOS_DLL *GEOSGeom_createLineString(GEOSCoordSequence* s);
1463extern GEOSGeometry GEOS_DLL *GEOSGeom_createEmptyLineString();
1470extern GEOSGeometry GEOS_DLL *GEOSGeom_createEmptyPolygon();
1471extern GEOSGeometry GEOS_DLL *GEOSGeom_createPolygon(GEOSGeometry* shell,
1472 GEOSGeometry** holes,
unsigned int nholes);
1473extern GEOSGeometry GEOS_DLL *GEOSGeom_createCollection(
int type,
1474 GEOSGeometry* *geoms,
unsigned int ngeoms);
1475extern GEOSGeometry GEOS_DLL *GEOSGeom_createEmptyCollection(
int type);
1477extern GEOSGeometry GEOS_DLL *GEOSGeom_clone(
const GEOSGeometry* g);
1485extern void GEOS_DLL GEOSGeom_destroy(GEOSGeometry* g);
1493extern GEOSGeometry GEOS_DLL *GEOSEnvelope(
const GEOSGeometry* g);
1494extern GEOSGeometry GEOS_DLL *GEOSIntersection(
const GEOSGeometry* g1,
const GEOSGeometry* g2);
1495extern GEOSGeometry GEOS_DLL *GEOSConvexHull(
const GEOSGeometry* g);
1502extern GEOSGeometry GEOS_DLL *GEOSMinimumRotatedRectangle(
const GEOSGeometry* g);
1510extern GEOSGeometry GEOS_DLL *GEOSMinimumWidth(
const GEOSGeometry* g);
1528extern int GEOS_DLL GEOSMinimumClearance(
const GEOSGeometry* g,
double* d);
1536extern GEOSGeometry GEOS_DLL *GEOSMinimumClearanceLine(
const GEOSGeometry* g);
1538extern GEOSGeometry GEOS_DLL *GEOSDifference(
const GEOSGeometry* g1,
const GEOSGeometry* g2);
1539extern GEOSGeometry GEOS_DLL *GEOSSymDifference(
const GEOSGeometry* g1,
const GEOSGeometry* g2);
1540extern GEOSGeometry GEOS_DLL *GEOSBoundary(
const GEOSGeometry* g);
1541extern GEOSGeometry GEOS_DLL *GEOSUnion(
const GEOSGeometry* g1,
const GEOSGeometry* g2);
1542extern GEOSGeometry GEOS_DLL *GEOSUnaryUnion(
const GEOSGeometry* g);
1545extern GEOSGeometry GEOS_DLL *GEOSUnionCascaded(
const GEOSGeometry* g);
1546extern GEOSGeometry GEOS_DLL *GEOSPointOnSurface(
const GEOSGeometry* g);
1547extern GEOSGeometry GEOS_DLL *GEOSGetCentroid(
const GEOSGeometry* g);
1548extern GEOSGeometry GEOS_DLL *GEOSNode(
const GEOSGeometry* g);
1549extern GEOSGeometry GEOS_DLL *GEOSClipByRect(
const GEOSGeometry* g,
double xmin,
double ymin,
double xmax,
double ymax);
1555extern GEOSGeometry GEOS_DLL *GEOSPolygonize(
const GEOSGeometry *
const geoms[],
unsigned int ngeoms);
1556extern GEOSGeometry GEOS_DLL *GEOSPolygonizer_getCutEdges(
const GEOSGeometry *
const geoms[],
unsigned int ngeoms);
1584extern GEOSGeometry GEOS_DLL *GEOSPolygonize_full(
const GEOSGeometry* input,
1585 GEOSGeometry** cuts, GEOSGeometry** dangles, GEOSGeometry** invalid);
1587extern GEOSGeometry GEOS_DLL *GEOSLineMerge(
const GEOSGeometry* g);
1588extern GEOSGeometry GEOS_DLL *GEOSSimplify(
const GEOSGeometry* g,
double tolerance);
1589extern GEOSGeometry GEOS_DLL *GEOSTopologyPreserveSimplify(
const GEOSGeometry* g,
1597extern GEOSGeometry GEOS_DLL *GEOSGeom_extractUniquePoints(
1598 const GEOSGeometry* g);
1611extern GEOSGeometry GEOS_DLL *GEOSSharedPaths(
const GEOSGeometry* g1,
1612 const GEOSGeometry* g2);
1618extern GEOSGeometry GEOS_DLL *GEOSSnap(
const GEOSGeometry* g1,
1619 const GEOSGeometry* g2,
double tolerance);
1631extern GEOSGeometry GEOS_DLL * GEOSDelaunayTriangulation(
1632 const GEOSGeometry *g,
1649extern GEOSGeometry GEOS_DLL * GEOSVoronoiDiagram(
1650 const GEOSGeometry *g,
1651 const GEOSGeometry *env,
1661extern char GEOS_DLL GEOSDisjoint(
const GEOSGeometry* g1,
const GEOSGeometry* g2);
1662extern char GEOS_DLL GEOSTouches(
const GEOSGeometry* g1,
const GEOSGeometry* g2);
1663extern char GEOS_DLL GEOSIntersects(
const GEOSGeometry* g1,
const GEOSGeometry* g2);
1664extern char GEOS_DLL GEOSCrosses(
const GEOSGeometry* g1,
const GEOSGeometry* g2);
1665extern char GEOS_DLL GEOSWithin(
const GEOSGeometry* g1,
const GEOSGeometry* g2);
1666extern char GEOS_DLL GEOSContains(
const GEOSGeometry* g1,
const GEOSGeometry* g2);
1667extern char GEOS_DLL GEOSOverlaps(
const GEOSGeometry* g1,
const GEOSGeometry* g2);
1668extern char GEOS_DLL GEOSEquals(
const GEOSGeometry* g1,
const GEOSGeometry* g2);
1669extern char GEOS_DLL GEOSEqualsExact(
const GEOSGeometry* g1,
const GEOSGeometry* g2,
double tolerance);
1670extern char GEOS_DLL GEOSCovers(
const GEOSGeometry* g1,
const GEOSGeometry* g2);
1671extern char GEOS_DLL GEOSCoveredBy(
const GEOSGeometry* g1,
const GEOSGeometry* g2);
1682extern const GEOSPreparedGeometry GEOS_DLL *GEOSPrepare(
const GEOSGeometry* g);
1684extern void GEOS_DLL GEOSPreparedGeom_destroy(
const GEOSPreparedGeometry* g);
1686extern char GEOS_DLL GEOSPreparedContains(
const GEOSPreparedGeometry* pg1,
const GEOSGeometry* g2);
1687extern char GEOS_DLL GEOSPreparedContainsProperly(
const GEOSPreparedGeometry* pg1,
const GEOSGeometry* g2);
1688extern char GEOS_DLL GEOSPreparedCoveredBy(
const GEOSPreparedGeometry* pg1,
const GEOSGeometry* g2);
1689extern char GEOS_DLL GEOSPreparedCovers(
const GEOSPreparedGeometry* pg1,
const GEOSGeometry* g2);
1690extern char GEOS_DLL GEOSPreparedCrosses(
const GEOSPreparedGeometry* pg1,
const GEOSGeometry* g2);
1691extern char GEOS_DLL GEOSPreparedDisjoint(
const GEOSPreparedGeometry* pg1,
const GEOSGeometry* g2);
1692extern char GEOS_DLL GEOSPreparedIntersects(
const GEOSPreparedGeometry* pg1,
const GEOSGeometry* g2);
1693extern char GEOS_DLL GEOSPreparedOverlaps(
const GEOSPreparedGeometry* pg1,
const GEOSGeometry* g2);
1694extern char GEOS_DLL GEOSPreparedTouches(
const GEOSPreparedGeometry* pg1,
const GEOSGeometry* g2);
1695extern char GEOS_DLL GEOSPreparedWithin(
const GEOSPreparedGeometry* pg1,
const GEOSGeometry* g2);
1715extern GEOSSTRtree GEOS_DLL *GEOSSTRtree_create(
size_t nodeCapacity);
1724extern void GEOS_DLL GEOSSTRtree_insert(GEOSSTRtree *tree,
1725 const GEOSGeometry *g,
1738extern void GEOS_DLL GEOSSTRtree_query(GEOSSTRtree *tree,
1739 const GEOSGeometry *g,
1740 GEOSQueryCallback callback,
1752extern const GEOSGeometry GEOS_DLL *GEOSSTRtree_nearest(GEOSSTRtree *tree,
const GEOSGeometry* geom);
1770extern const void GEOS_DLL *GEOSSTRtree_nearest_generic(GEOSSTRtree *tree,
1772 const GEOSGeometry* itemEnvelope,
1773 GEOSDistanceCallback distancefn,
1781extern void GEOS_DLL GEOSSTRtree_iterate(GEOSSTRtree *tree,
1782 GEOSQueryCallback callback,
1795extern char GEOS_DLL GEOSSTRtree_remove(GEOSSTRtree *tree,
1796 const GEOSGeometry *g,
1798extern void GEOS_DLL GEOSSTRtree_destroy(GEOSSTRtree *tree);
1807extern char GEOS_DLL GEOSisEmpty(
const GEOSGeometry* g);
1808extern char GEOS_DLL GEOSisSimple(
const GEOSGeometry* g);
1809extern char GEOS_DLL GEOSisRing(
const GEOSGeometry* g);
1810extern char GEOS_DLL GEOSHasZ(
const GEOSGeometry* g);
1811extern char GEOS_DLL GEOSisClosed(
const GEOSGeometry *g);
1820extern char GEOS_DLL GEOSRelatePattern(
const GEOSGeometry* g1,
const GEOSGeometry* g2,
const char *pat);
1823extern char GEOS_DLL *GEOSRelate(
const GEOSGeometry* g1,
const GEOSGeometry* g2);
1826extern char GEOS_DLL GEOSRelatePatternMatch(
const char *mat,
const char *pat);
1829extern char GEOS_DLL *GEOSRelateBoundaryNodeRule(
const GEOSGeometry* g1,
1830 const GEOSGeometry* g2,
1840extern char GEOS_DLL GEOSisValid(
const GEOSGeometry* g);
1843extern char GEOS_DLL *GEOSisValidReason(
const GEOSGeometry *g);
1850extern char GEOS_DLL GEOSisValidDetail(
const GEOSGeometry* g,
1852 char** reason, GEOSGeometry** location);
1861extern char GEOS_DLL *GEOSGeomType(
const GEOSGeometry* g);
1864extern int GEOS_DLL GEOSGeomTypeId(
const GEOSGeometry* g);
1867extern int GEOS_DLL GEOSGetSRID(
const GEOSGeometry* g);
1869extern void GEOS_DLL GEOSSetSRID(GEOSGeometry* g,
int SRID);
1871extern void GEOS_DLL *GEOSGeom_getUserData(
const GEOSGeometry* g);
1873extern void GEOS_DLL GEOSGeom_setUserData(GEOSGeometry* g,
void* userData);
1882extern int GEOS_DLL GEOSGetNumGeometries(
const GEOSGeometry* g);
1892extern const GEOSGeometry GEOS_DLL *GEOSGetGeometryN(
const GEOSGeometry* g,
int n);
1895extern int GEOS_DLL GEOSNormalize(GEOSGeometry* g);
1898extern GEOSGeometry GEOS_DLL *GEOSGeom_setPrecision(
1899 const GEOSGeometry *g,
double gridSize,
int flags);
1902extern double GEOS_DLL GEOSGeom_getPrecision(
const GEOSGeometry *g);
1905extern int GEOS_DLL GEOSGetNumInteriorRings(
const GEOSGeometry* g);
1908extern int GEOS_DLL GEOSGeomGetNumPoints(
const GEOSGeometry* g);
1911extern int GEOS_DLL GEOSGeomGetX(
const GEOSGeometry *g,
double *x);
1912extern int GEOS_DLL GEOSGeomGetY(
const GEOSGeometry *g,
double *y);
1919extern const GEOSGeometry GEOS_DLL *GEOSGetInteriorRingN(
const GEOSGeometry* g,
int n);
1926extern const GEOSGeometry GEOS_DLL *GEOSGetExteriorRing(
const GEOSGeometry* g);
1929extern int GEOS_DLL GEOSGetNumCoordinates(
const GEOSGeometry* g);
1935extern const GEOSCoordSequence GEOS_DLL *GEOSGeom_getCoordSeq(
const GEOSGeometry* g);
1940extern int GEOS_DLL GEOSGeom_getDimensions(
const GEOSGeometry* g);
1945extern int GEOS_DLL GEOSGeom_getCoordinateDimension(
const GEOSGeometry* g);
1951extern GEOSGeometry GEOS_DLL *GEOSGeomGetPointN(
const GEOSGeometry *g,
int n);
1952extern GEOSGeometry GEOS_DLL *GEOSGeomGetStartPoint(
const GEOSGeometry *g);
1953extern GEOSGeometry GEOS_DLL *GEOSGeomGetEndPoint(
const GEOSGeometry *g);
1962extern int GEOS_DLL GEOSArea(
const GEOSGeometry* g,
double *area);
1963extern int GEOS_DLL GEOSLength(
const GEOSGeometry* g,
double *length);
1964extern int GEOS_DLL GEOSDistance(
const GEOSGeometry* g1,
const GEOSGeometry* g2,
1966extern int GEOS_DLL GEOSHausdorffDistance(
const GEOSGeometry *g1,
1967 const GEOSGeometry *g2,
double *dist);
1968extern int GEOS_DLL GEOSHausdorffDistanceDensify(
const GEOSGeometry *g1,
1969 const GEOSGeometry *g2,
double densifyFrac,
double *dist);
1970extern int GEOS_DLL GEOSGeomGetLength(
const GEOSGeometry *g,
double *length);
1975extern GEOSCoordSequence GEOS_DLL *GEOSNearestPoints(
1976 const GEOSGeometry* g1,
const GEOSGeometry* g2);
1993extern int GEOS_DLL GEOSOrientationIndex(
double Ax,
double Ay,
double Bx,
double By,
1994 double Px,
double Py);
2003extern GEOSWKTReader GEOS_DLL *GEOSWKTReader_create();
2004extern void GEOS_DLL GEOSWKTReader_destroy(GEOSWKTReader* reader);
2005extern GEOSGeometry GEOS_DLL *GEOSWKTReader_read(GEOSWKTReader* reader,
const char *wkt);
2008extern GEOSWKTWriter GEOS_DLL *GEOSWKTWriter_create();
2009extern void GEOS_DLL GEOSWKTWriter_destroy(GEOSWKTWriter* writer);
2010extern char GEOS_DLL *GEOSWKTWriter_write(GEOSWKTWriter* writer,
const GEOSGeometry* g);
2011extern void GEOS_DLL GEOSWKTWriter_setTrim(GEOSWKTWriter *writer,
char trim);
2012extern void GEOS_DLL GEOSWKTWriter_setRoundingPrecision(GEOSWKTWriter *writer,
int precision);
2013extern void GEOS_DLL GEOSWKTWriter_setOutputDimension(GEOSWKTWriter *writer,
int dim);
2014extern int GEOS_DLL GEOSWKTWriter_getOutputDimension(GEOSWKTWriter *writer);
2015extern void GEOS_DLL GEOSWKTWriter_setOld3D(GEOSWKTWriter *writer,
int useOld3D);
2018extern GEOSWKBReader GEOS_DLL *GEOSWKBReader_create();
2019extern void GEOS_DLL GEOSWKBReader_destroy(GEOSWKBReader* reader);
2020extern GEOSGeometry GEOS_DLL *GEOSWKBReader_read(GEOSWKBReader* reader,
const unsigned char *wkb,
size_t size);
2021extern GEOSGeometry GEOS_DLL *GEOSWKBReader_readHEX(GEOSWKBReader* reader,
const unsigned char *hex,
size_t size);
2024extern GEOSWKBWriter GEOS_DLL *GEOSWKBWriter_create();
2025extern void GEOS_DLL GEOSWKBWriter_destroy(GEOSWKBWriter* writer);
2028extern unsigned char GEOS_DLL *GEOSWKBWriter_write(GEOSWKBWriter* writer,
const GEOSGeometry* g,
size_t *size);
2029extern unsigned char GEOS_DLL *GEOSWKBWriter_writeHEX(GEOSWKBWriter* writer,
const GEOSGeometry* g,
size_t *size);
2035extern int GEOS_DLL GEOSWKBWriter_getOutputDimension(
const GEOSWKBWriter* writer);
2036extern void GEOS_DLL GEOSWKBWriter_setOutputDimension(GEOSWKBWriter* writer,
int newDimension);
2042extern int GEOS_DLL GEOSWKBWriter_getByteOrder(
const GEOSWKBWriter* writer);
2043extern void GEOS_DLL GEOSWKBWriter_setByteOrder(GEOSWKBWriter* writer,
int byteOrder);
2048extern char GEOS_DLL GEOSWKBWriter_getIncludeSRID(
const GEOSWKBWriter* writer);
2049extern void GEOS_DLL GEOSWKBWriter_setIncludeSRID(GEOSWKBWriter* writer,
const char writeSRID);
2055extern void GEOS_DLL GEOSFree(
void *buffer);