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 0dev
64 #define GEOS_VERSION "3.9.0dev"
67 #define GEOS_JTS_PORT "1.16.0"
70 #define GEOS_CAPI_VERSION_MAJOR 1
71 #define GEOS_CAPI_VERSION_MINOR 14
72 #define GEOS_CAPI_VERSION_PATCH 0
73 #define GEOS_CAPI_VERSION "3.9.0dev-CAPI-1.14.0"
75 #define GEOS_CAPI_FIRST_INTERFACE GEOS_CAPI_VERSION_MAJOR
76 #define GEOS_CAPI_LAST_INTERFACE (GEOS_CAPI_VERSION_MAJOR+GEOS_CAPI_VERSION_MINOR)
85 typedef struct GEOSContextHandle_HS *GEOSContextHandle_t;
87 typedef void (*GEOSMessageHandler)(
const char *fmt, ...);
99 typedef void (*GEOSMessageHandler_r)(
const char *message,
void *userdata);
108 typedef struct GEOSGeom_t GEOSGeometry;
109 typedef struct GEOSPrepGeom_t GEOSPreparedGeometry;
110 typedef struct GEOSCoordSeq_t GEOSCoordSequence;
111 typedef struct GEOSSTRtree_t GEOSSTRtree;
112 typedef struct GEOSBufParams_t GEOSBufferParams;
118 typedef GEOSGeometry* GEOSGeom;
119 typedef GEOSCoordSequence* GEOSCoordSeq;
138 enum GEOSByteOrders {
143 typedef void (*GEOSQueryCallback)(
void *item,
void *userdata);
144 typedef int (*GEOSDistanceCallback)(
const void *item1,
const void* item2,
double* distance,
void* userdata);
152 #include <geos/export.h>
160 typedef void (GEOSInterruptCallback)();
161 extern GEOSInterruptCallback GEOS_DLL *GEOS_interruptRegisterCallback(GEOSInterruptCallback* cb);
163 extern void GEOS_DLL GEOS_interruptRequest();
165 extern void GEOS_DLL GEOS_interruptCancel();
172 extern GEOSContextHandle_t GEOS_DLL initGEOS_r(
173 GEOSMessageHandler notice_function,
174 GEOSMessageHandler error_function);
178 extern void GEOS_DLL finishGEOS_r(GEOSContextHandle_t handle);
180 extern GEOSContextHandle_t GEOS_DLL GEOS_init_r();
181 extern void GEOS_DLL GEOS_finish_r(GEOSContextHandle_t handle);
184 extern GEOSMessageHandler GEOS_DLL GEOSContext_setNoticeHandler_r(GEOSContextHandle_t extHandle,
185 GEOSMessageHandler nf);
186 extern GEOSMessageHandler GEOS_DLL GEOSContext_setErrorHandler_r(GEOSContextHandle_t extHandle,
187 GEOSMessageHandler ef);
198 extern GEOSMessageHandler_r GEOS_DLL GEOSContext_setNoticeMessageHandler_r(GEOSContextHandle_t extHandle,
199 GEOSMessageHandler_r nf,
211 extern GEOSMessageHandler_r GEOS_DLL GEOSContext_setErrorMessageHandler_r(GEOSContextHandle_t extHandle,
212 GEOSMessageHandler_r ef,
215 extern const char GEOS_DLL *GEOSversion();
225 extern GEOSGeometry GEOS_DLL *GEOSGeomFromWKT_r(GEOSContextHandle_t handle,
227 extern char GEOS_DLL *GEOSGeomToWKT_r(GEOSContextHandle_t handle,
228 const GEOSGeometry* g);
235 extern int GEOS_DLL GEOS_getWKBOutputDims_r(GEOSContextHandle_t handle);
236 extern int GEOS_DLL GEOS_setWKBOutputDims_r(GEOSContextHandle_t handle,
244 extern int GEOS_DLL GEOS_getWKBByteOrder_r(GEOSContextHandle_t handle);
245 extern int GEOS_DLL GEOS_setWKBByteOrder_r(GEOSContextHandle_t handle,
248 extern GEOSGeometry GEOS_DLL *GEOSGeomFromWKB_buf_r(GEOSContextHandle_t handle,
249 const unsigned char *wkb,
251 extern unsigned char GEOS_DLL *GEOSGeomToWKB_buf_r(GEOSContextHandle_t handle,
252 const GEOSGeometry* g,
255 extern GEOSGeometry GEOS_DLL *GEOSGeomFromHEX_buf_r(GEOSContextHandle_t handle,
256 const unsigned char *hex,
258 extern unsigned char GEOS_DLL *GEOSGeomToHEX_buf_r(GEOSContextHandle_t handle,
259 const GEOSGeometry* g,
273 extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_create_r(
274 GEOSContextHandle_t handle,
282 extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_clone_r(
283 GEOSContextHandle_t handle,
284 const GEOSCoordSequence* s);
289 extern void GEOS_DLL GEOSCoordSeq_destroy_r(GEOSContextHandle_t handle,
290 GEOSCoordSequence* s);
296 extern int GEOS_DLL GEOSCoordSeq_setX_r(GEOSContextHandle_t handle,
297 GEOSCoordSequence* s,
unsigned int idx,
299 extern int GEOS_DLL GEOSCoordSeq_setY_r(GEOSContextHandle_t handle,
300 GEOSCoordSequence* s,
unsigned int idx,
302 extern int GEOS_DLL GEOSCoordSeq_setZ_r(GEOSContextHandle_t handle,
303 GEOSCoordSequence* s,
unsigned int idx,
305 extern int GEOS_DLL GEOSCoordSeq_setXY_r(GEOSContextHandle_t handle,
306 GEOSCoordSequence* s,
unsigned int idx,
308 extern int GEOS_DLL GEOSCoordSeq_setXYZ_r(GEOSContextHandle_t handle,
309 GEOSCoordSequence* s,
unsigned int idx,
310 double x,
double y,
double z);
312 extern int GEOS_DLL GEOSCoordSeq_setOrdinate_r(GEOSContextHandle_t handle,
313 GEOSCoordSequence* s,
315 unsigned int dim,
double val);
321 extern int GEOS_DLL GEOSCoordSeq_getX_r(GEOSContextHandle_t handle,
322 const GEOSCoordSequence* s,
323 unsigned int idx,
double *val);
324 extern int GEOS_DLL GEOSCoordSeq_getY_r(GEOSContextHandle_t handle,
325 const GEOSCoordSequence* s,
326 unsigned int idx,
double *val);
327 extern int GEOS_DLL GEOSCoordSeq_getZ_r(GEOSContextHandle_t handle,
328 const GEOSCoordSequence* s,
329 unsigned int idx,
double *val);
330 extern int GEOS_DLL GEOSCoordSeq_getXY_r(GEOSContextHandle_t handle,
331 const GEOSCoordSequence* s,
332 unsigned int idx,
double *x,
double *y);
333 extern int GEOS_DLL GEOSCoordSeq_getXYZ_r(GEOSContextHandle_t handle,
334 const GEOSCoordSequence* s,
335 unsigned int idx,
double *x,
double *y,
double *z);
336 extern int GEOS_DLL GEOSCoordSeq_getOrdinate_r(GEOSContextHandle_t handle,
337 const GEOSCoordSequence* s,
339 unsigned int dim,
double *val);
344 extern int GEOS_DLL GEOSCoordSeq_getSize_r(GEOSContextHandle_t handle,
345 const GEOSCoordSequence* s,
347 extern int GEOS_DLL GEOSCoordSeq_getDimensions_r(GEOSContextHandle_t handle,
348 const GEOSCoordSequence* s,
355 extern int GEOS_DLL GEOSCoordSeq_isCCW_r(GEOSContextHandle_t handle,
356 const GEOSCoordSequence* s,
373 extern double GEOS_DLL GEOSProject_r(GEOSContextHandle_t handle,
374 const GEOSGeometry *g,
375 const GEOSGeometry *p);
379 extern GEOSGeometry GEOS_DLL *GEOSInterpolate_r(GEOSContextHandle_t handle,
380 const GEOSGeometry *g,
383 extern double GEOS_DLL GEOSProjectNormalized_r(GEOSContextHandle_t handle,
384 const GEOSGeometry *g,
385 const GEOSGeometry *p);
387 extern GEOSGeometry GEOS_DLL *GEOSInterpolateNormalized_r(
388 GEOSContextHandle_t handle,
389 const GEOSGeometry *g,
400 extern GEOSGeometry GEOS_DLL *GEOSBuffer_r(GEOSContextHandle_t handle,
401 const GEOSGeometry* g,
402 double width,
int quadsegs);
404 enum GEOSBufCapStyles {
410 enum GEOSBufJoinStyles {
411 GEOSBUF_JOIN_ROUND=1,
412 GEOSBUF_JOIN_MITRE=2,
417 extern GEOSBufferParams GEOS_DLL *GEOSBufferParams_create_r(
418 GEOSContextHandle_t handle);
419 extern void GEOS_DLL GEOSBufferParams_destroy_r(
420 GEOSContextHandle_t handle,
421 GEOSBufferParams* parms);
424 extern int GEOS_DLL GEOSBufferParams_setEndCapStyle_r(
425 GEOSContextHandle_t handle,
430 extern int GEOS_DLL GEOSBufferParams_setJoinStyle_r(
431 GEOSContextHandle_t handle,
436 extern int GEOS_DLL GEOSBufferParams_setMitreLimit_r(
437 GEOSContextHandle_t handle,
442 extern int GEOS_DLL GEOSBufferParams_setQuadrantSegments_r(
443 GEOSContextHandle_t handle,
449 extern int GEOS_DLL GEOSBufferParams_setSingleSided_r(
450 GEOSContextHandle_t handle,
455 extern GEOSGeometry GEOS_DLL *GEOSBufferWithParams_r(
456 GEOSContextHandle_t handle,
457 const GEOSGeometry* g,
458 const GEOSBufferParams* p,
462 extern GEOSGeometry GEOS_DLL *GEOSBufferWithStyle_r(GEOSContextHandle_t handle,
463 const GEOSGeometry* g,
double width,
int quadsegs,
int endCapStyle,
464 int joinStyle,
double mitreLimit);
468 extern GEOSGeometry GEOS_DLL *GEOSSingleSidedBuffer_r(
469 GEOSContextHandle_t handle,
470 const GEOSGeometry* g,
double width,
int quadsegs,
471 int joinStyle,
double mitreLimit,
int leftSide);
480 extern GEOSGeometry GEOS_DLL *GEOSOffsetCurve_r(GEOSContextHandle_t handle,
481 const GEOSGeometry* g,
double width,
int quadsegs,
482 int joinStyle,
double mitreLimit);
493 extern GEOSGeometry GEOS_DLL *GEOSGeom_createPoint_r(
494 GEOSContextHandle_t handle,
495 GEOSCoordSequence* s);
496 extern GEOSGeometry GEOS_DLL *GEOSGeom_createPointFromXY_r(
497 GEOSContextHandle_t handle,
500 extern GEOSGeometry GEOS_DLL *GEOSGeom_createEmptyPoint_r(
501 GEOSContextHandle_t handle);
502 extern GEOSGeometry GEOS_DLL *GEOSGeom_createLinearRing_r(
503 GEOSContextHandle_t handle,
504 GEOSCoordSequence* s);
505 extern GEOSGeometry GEOS_DLL *GEOSGeom_createLineString_r(
506 GEOSContextHandle_t handle,
507 GEOSCoordSequence* s);
508 extern GEOSGeometry GEOS_DLL *GEOSGeom_createEmptyLineString_r(
509 GEOSContextHandle_t handle);
516 extern GEOSGeometry GEOS_DLL *GEOSGeom_createEmptyPolygon_r(
517 GEOSContextHandle_t handle);
518 extern GEOSGeometry GEOS_DLL *GEOSGeom_createPolygon_r(
519 GEOSContextHandle_t handle,
521 GEOSGeometry** holes,
522 unsigned int nholes);
523 extern GEOSGeometry GEOS_DLL *GEOSGeom_createCollection_r(
524 GEOSContextHandle_t handle,
int type,
525 GEOSGeometry* *geoms,
526 unsigned int ngeoms);
527 extern GEOSGeometry GEOS_DLL *GEOSGeom_createEmptyCollection_r(
528 GEOSContextHandle_t handle,
int type);
530 extern GEOSGeometry GEOS_DLL *GEOSGeom_clone_r(GEOSContextHandle_t handle,
531 const GEOSGeometry* g);
539 extern void GEOS_DLL GEOSGeom_destroy_r(GEOSContextHandle_t handle,
548 extern GEOSGeometry GEOS_DLL *GEOSEnvelope_r(GEOSContextHandle_t handle,
549 const GEOSGeometry* g);
550 extern GEOSGeometry GEOS_DLL *GEOSIntersection_r(GEOSContextHandle_t handle,
551 const GEOSGeometry* g1,
552 const GEOSGeometry* g2);
553 extern GEOSGeometry GEOS_DLL *GEOSIntersectionPrec_r(GEOSContextHandle_t handle,
554 const GEOSGeometry* g1,
555 const GEOSGeometry* g2,
557 extern GEOSGeometry GEOS_DLL *GEOSConvexHull_r(GEOSContextHandle_t handle,
558 const GEOSGeometry* g);
565 extern GEOSGeometry GEOS_DLL *GEOSMinimumRotatedRectangle_r(GEOSContextHandle_t handle,
566 const GEOSGeometry* g);
568 extern GEOSGeometry GEOS_DLL *GEOSMaximumInscribedCircle_r(GEOSContextHandle_t handle,
const GEOSGeometry* g,
double tolerance);
569 extern GEOSGeometry GEOS_DLL *GEOSLargestEmptyCircle_r(GEOSContextHandle_t handle,
const GEOSGeometry* g,
const GEOSGeometry* boundary,
double tolerance);
577 extern GEOSGeometry GEOS_DLL *GEOSMinimumWidth_r(GEOSContextHandle_t handle,
578 const GEOSGeometry* g);
580 extern GEOSGeometry GEOS_DLL *GEOSMinimumClearanceLine_r(GEOSContextHandle_t handle,
581 const GEOSGeometry* g);
583 extern int GEOS_DLL GEOSMinimumClearance_r(GEOSContextHandle_t handle,
584 const GEOSGeometry* g,
587 extern GEOSGeometry GEOS_DLL *GEOSDifference_r(GEOSContextHandle_t handle,
588 const GEOSGeometry* g1,
589 const GEOSGeometry* g2);
590 extern GEOSGeometry GEOS_DLL *GEOSDifferencePrec_r(GEOSContextHandle_t handle,
591 const GEOSGeometry* g1,
592 const GEOSGeometry* g2,
594 extern GEOSGeometry GEOS_DLL *GEOSSymDifference_r(GEOSContextHandle_t handle,
595 const GEOSGeometry* g1,
596 const GEOSGeometry* g2);
597 extern GEOSGeometry GEOS_DLL *GEOSSymDifferencePrec_r(GEOSContextHandle_t handle,
598 const GEOSGeometry* g1,
599 const GEOSGeometry* g2,
601 extern GEOSGeometry GEOS_DLL *GEOSBoundary_r(GEOSContextHandle_t handle,
602 const GEOSGeometry* g);
603 extern GEOSGeometry GEOS_DLL *GEOSUnion_r(GEOSContextHandle_t handle,
604 const GEOSGeometry* g1,
605 const GEOSGeometry* g2);
606 extern GEOSGeometry GEOS_DLL *GEOSUnionPrec_r(GEOSContextHandle_t handle,
607 const GEOSGeometry* g1,
608 const GEOSGeometry* g2,
610 extern GEOSGeometry GEOS_DLL *GEOSUnaryUnion_r(GEOSContextHandle_t handle,
611 const GEOSGeometry* g);
612 extern GEOSGeometry GEOS_DLL *GEOSUnaryUnionPrec_r(GEOSContextHandle_t handle,
613 const GEOSGeometry* g,
618 extern GEOSGeometry GEOS_DLL *GEOSCoverageUnion_r(GEOSContextHandle_t handle,
619 const GEOSGeometry* g);
621 extern GEOSGeometry GEOS_DLL *GEOSUnionCascaded_r(GEOSContextHandle_t handle,
622 const GEOSGeometry* g);
623 extern GEOSGeometry GEOS_DLL *GEOSPointOnSurface_r(GEOSContextHandle_t handle,
624 const GEOSGeometry* g);
625 extern GEOSGeometry GEOS_DLL *GEOSGetCentroid_r(GEOSContextHandle_t handle,
626 const GEOSGeometry* g);
627 extern GEOSGeometry GEOS_DLL *GEOSMinimumBoundingCircle_r(GEOSContextHandle_t handle,
628 const GEOSGeometry* g,
double* radius,
629 GEOSGeometry** center);
630 extern GEOSGeometry GEOS_DLL *GEOSNode_r(GEOSContextHandle_t handle,
631 const GEOSGeometry* g);
634 extern GEOSGeometry GEOS_DLL *GEOSClipByRect_r(GEOSContextHandle_t handle,
635 const GEOSGeometry* g,
636 double xmin,
double ymin,
637 double xmax,
double ymax);
676 extern GEOSGeometry GEOS_DLL *GEOSPolygonize_r(GEOSContextHandle_t handle,
677 const GEOSGeometry *
const geoms[],
678 unsigned int ngeoms);
679 extern GEOSGeometry GEOS_DLL *GEOSPolygonize_valid_r(GEOSContextHandle_t handle,
680 const GEOSGeometry *
const geoms[],
682 extern GEOSGeometry GEOS_DLL *GEOSPolygonizer_getCutEdges_r(
683 GEOSContextHandle_t handle,
684 const GEOSGeometry *
const geoms[],
685 unsigned int ngeoms);
686 extern GEOSGeometry GEOS_DLL *GEOSPolygonize_full_r(GEOSContextHandle_t handle,
687 const GEOSGeometry* input, GEOSGeometry** cuts,
688 GEOSGeometry** dangles, GEOSGeometry** invalidRings);
690 extern GEOSGeometry GEOS_DLL *GEOSBuildArea_r(
691 GEOSContextHandle_t handle,
692 const GEOSGeometry* g);
694 extern GEOSGeometry GEOS_DLL *GEOSLineMerge_r(GEOSContextHandle_t handle,
695 const GEOSGeometry* g);
696 extern GEOSGeometry GEOS_DLL *GEOSReverse_r(GEOSContextHandle_t handle,
697 const GEOSGeometry* g);
698 extern GEOSGeometry GEOS_DLL *GEOSSimplify_r(GEOSContextHandle_t handle,
699 const GEOSGeometry* g,
701 extern GEOSGeometry GEOS_DLL *GEOSTopologyPreserveSimplify_r(
702 GEOSContextHandle_t handle,
703 const GEOSGeometry* g,
double tolerance);
710 extern GEOSGeometry GEOS_DLL *GEOSGeom_extractUniquePoints_r(
711 GEOSContextHandle_t handle,
712 const GEOSGeometry* g);
725 extern GEOSGeometry GEOS_DLL *GEOSSharedPaths_r(GEOSContextHandle_t handle,
726 const GEOSGeometry* g1,
const GEOSGeometry* g2);
732 extern GEOSGeometry GEOS_DLL *GEOSSnap_r(GEOSContextHandle_t handle,
733 const GEOSGeometry* g1,
const GEOSGeometry* g2,
double tolerance);
745 extern GEOSGeometry GEOS_DLL * GEOSDelaunayTriangulation_r(
746 GEOSContextHandle_t handle,
747 const GEOSGeometry *g,
764 extern GEOSGeometry GEOS_DLL * GEOSVoronoiDiagram_r(
765 GEOSContextHandle_t extHandle,
766 const GEOSGeometry *g,
767 const GEOSGeometry *env,
788 extern int GEOS_DLL GEOSSegmentIntersection_r(
789 GEOSContextHandle_t extHandle,
790 double ax0,
double ay0,
791 double ax1,
double ay1,
792 double bx0,
double by0,
793 double bx1,
double by1,
794 double* cx,
double* cy);
802 extern char GEOS_DLL GEOSDisjoint_r(GEOSContextHandle_t handle,
803 const GEOSGeometry* g1,
804 const GEOSGeometry* g2);
805 extern char GEOS_DLL GEOSTouches_r(GEOSContextHandle_t handle,
806 const GEOSGeometry* g1,
807 const GEOSGeometry* g2);
808 extern char GEOS_DLL GEOSIntersects_r(GEOSContextHandle_t handle,
809 const GEOSGeometry* g1,
810 const GEOSGeometry* g2);
811 extern char GEOS_DLL GEOSCrosses_r(GEOSContextHandle_t handle,
812 const GEOSGeometry* g1,
813 const GEOSGeometry* g2);
814 extern char GEOS_DLL GEOSWithin_r(GEOSContextHandle_t handle,
815 const GEOSGeometry* g1,
816 const GEOSGeometry* g2);
817 extern char GEOS_DLL GEOSContains_r(GEOSContextHandle_t handle,
818 const GEOSGeometry* g1,
819 const GEOSGeometry* g2);
820 extern char GEOS_DLL GEOSOverlaps_r(GEOSContextHandle_t handle,
821 const GEOSGeometry* g1,
822 const GEOSGeometry* g2);
823 extern char GEOS_DLL GEOSEquals_r(GEOSContextHandle_t handle,
824 const GEOSGeometry* g1,
825 const GEOSGeometry* g2);
826 extern char GEOS_DLL GEOSEqualsExact_r(GEOSContextHandle_t handle,
827 const GEOSGeometry* g1,
828 const GEOSGeometry* g2,
830 extern char GEOS_DLL GEOSCovers_r(GEOSContextHandle_t handle,
831 const GEOSGeometry* g1,
832 const GEOSGeometry* g2);
833 extern char GEOS_DLL GEOSCoveredBy_r(GEOSContextHandle_t handle,
834 const GEOSGeometry* g1,
835 const GEOSGeometry* g2);
846 extern const GEOSPreparedGeometry GEOS_DLL *GEOSPrepare_r(
847 GEOSContextHandle_t handle,
848 const GEOSGeometry* g);
850 extern void GEOS_DLL GEOSPreparedGeom_destroy_r(GEOSContextHandle_t handle,
851 const GEOSPreparedGeometry* g);
853 extern char GEOS_DLL GEOSPreparedContains_r(GEOSContextHandle_t handle,
854 const GEOSPreparedGeometry* pg1,
855 const GEOSGeometry* g2);
856 extern char GEOS_DLL GEOSPreparedContainsProperly_r(GEOSContextHandle_t handle,
857 const GEOSPreparedGeometry* pg1,
858 const GEOSGeometry* g2);
859 extern char GEOS_DLL GEOSPreparedCoveredBy_r(GEOSContextHandle_t handle,
860 const GEOSPreparedGeometry* pg1,
861 const GEOSGeometry* g2);
862 extern char GEOS_DLL GEOSPreparedCovers_r(GEOSContextHandle_t handle,
863 const GEOSPreparedGeometry* pg1,
864 const GEOSGeometry* g2);
865 extern char GEOS_DLL GEOSPreparedCrosses_r(GEOSContextHandle_t handle,
866 const GEOSPreparedGeometry* pg1,
867 const GEOSGeometry* g2);
868 extern char GEOS_DLL GEOSPreparedDisjoint_r(GEOSContextHandle_t handle,
869 const GEOSPreparedGeometry* pg1,
870 const GEOSGeometry* g2);
871 extern char GEOS_DLL GEOSPreparedIntersects_r(GEOSContextHandle_t handle,
872 const GEOSPreparedGeometry* pg1,
873 const GEOSGeometry* g2);
874 extern char GEOS_DLL GEOSPreparedOverlaps_r(GEOSContextHandle_t handle,
875 const GEOSPreparedGeometry* pg1,
876 const GEOSGeometry* g2);
877 extern char GEOS_DLL GEOSPreparedTouches_r(GEOSContextHandle_t handle,
878 const GEOSPreparedGeometry* pg1,
879 const GEOSGeometry* g2);
880 extern char GEOS_DLL GEOSPreparedWithin_r(GEOSContextHandle_t handle,
881 const GEOSPreparedGeometry* pg1,
882 const GEOSGeometry* g2);
894 extern GEOSSTRtree GEOS_DLL *GEOSSTRtree_create_r(
895 GEOSContextHandle_t handle,
896 size_t nodeCapacity);
897 extern void GEOS_DLL GEOSSTRtree_insert_r(GEOSContextHandle_t handle,
899 const GEOSGeometry *g,
901 extern void GEOS_DLL GEOSSTRtree_query_r(GEOSContextHandle_t handle,
903 const GEOSGeometry *g,
904 GEOSQueryCallback callback,
907 extern const GEOSGeometry GEOS_DLL *GEOSSTRtree_nearest_r(GEOSContextHandle_t handle,
909 const GEOSGeometry* geom);
912 extern const void GEOS_DLL *GEOSSTRtree_nearest_generic_r(GEOSContextHandle_t handle,
915 const GEOSGeometry* itemEnvelope,
916 GEOSDistanceCallback distancefn,
919 extern void GEOS_DLL GEOSSTRtree_iterate_r(GEOSContextHandle_t handle,
921 GEOSQueryCallback callback,
923 extern char GEOS_DLL GEOSSTRtree_remove_r(GEOSContextHandle_t handle,
925 const GEOSGeometry *g,
927 extern void GEOS_DLL GEOSSTRtree_destroy_r(GEOSContextHandle_t handle,
937 extern char GEOS_DLL GEOSisEmpty_r(GEOSContextHandle_t handle,
938 const GEOSGeometry* g);
939 extern char GEOS_DLL GEOSisSimple_r(GEOSContextHandle_t handle,
940 const GEOSGeometry* g);
941 extern char GEOS_DLL GEOSisRing_r(GEOSContextHandle_t handle,
942 const GEOSGeometry* g);
943 extern char GEOS_DLL GEOSHasZ_r(GEOSContextHandle_t handle,
944 const GEOSGeometry* g);
945 extern char GEOS_DLL GEOSisClosed_r(GEOSContextHandle_t handle,
946 const GEOSGeometry *g);
955 enum GEOSRelateBoundaryNodeRules {
959 GEOSRELATE_BNR_MOD2=1,
960 GEOSRELATE_BNR_OGC=1,
961 GEOSRELATE_BNR_ENDPOINT=2,
962 GEOSRELATE_BNR_MULTIVALENT_ENDPOINT=3,
963 GEOSRELATE_BNR_MONOVALENT_ENDPOINT=4
967 extern char GEOS_DLL GEOSRelatePattern_r(GEOSContextHandle_t handle,
968 const GEOSGeometry* g1,
969 const GEOSGeometry* g2,
973 extern char GEOS_DLL *GEOSRelate_r(GEOSContextHandle_t handle,
974 const GEOSGeometry* g1,
975 const GEOSGeometry* g2);
978 extern char GEOS_DLL GEOSRelatePatternMatch_r(GEOSContextHandle_t handle,
983 extern char GEOS_DLL *GEOSRelateBoundaryNodeRule_r(GEOSContextHandle_t handle,
984 const GEOSGeometry* g1,
985 const GEOSGeometry* g2,
995 enum GEOSValidFlags {
996 GEOSVALID_ALLOW_SELFTOUCHING_RING_FORMING_HOLE=1
1000 extern char GEOS_DLL GEOSisValid_r(GEOSContextHandle_t handle,
1001 const GEOSGeometry* g);
1004 extern char GEOS_DLL *GEOSisValidReason_r(GEOSContextHandle_t handle,
1005 const GEOSGeometry* g);
1012 extern char GEOS_DLL GEOSisValidDetail_r(GEOSContextHandle_t handle,
1013 const GEOSGeometry* g,
1016 GEOSGeometry** location);
1018 extern GEOSGeometry GEOS_DLL *GEOSMakeValid_r(GEOSContextHandle_t handle,
1019 const GEOSGeometry* g);
1028 extern char GEOS_DLL *GEOSGeomType_r(GEOSContextHandle_t handle,
1029 const GEOSGeometry* g);
1032 extern int GEOS_DLL GEOSGeomTypeId_r(GEOSContextHandle_t handle,
1033 const GEOSGeometry* g);
1036 extern int GEOS_DLL GEOSGetSRID_r(GEOSContextHandle_t handle,
1037 const GEOSGeometry* g);
1039 extern void GEOS_DLL GEOSSetSRID_r(GEOSContextHandle_t handle,
1040 GEOSGeometry* g,
int SRID);
1042 extern void GEOS_DLL *GEOSGeom_getUserData_r(GEOSContextHandle_t handle,
1043 const GEOSGeometry* g);
1045 extern void GEOS_DLL GEOSGeom_setUserData_r(GEOSContextHandle_t handle,
1046 GEOSGeometry* g,
void* userData);
1054 extern int GEOS_DLL GEOSGetNumGeometries_r(GEOSContextHandle_t handle,
1055 const GEOSGeometry* g);
1065 extern const GEOSGeometry GEOS_DLL *GEOSGetGeometryN_r(
1066 GEOSContextHandle_t handle,
1067 const GEOSGeometry* g,
int n);
1070 extern int GEOS_DLL GEOSNormalize_r(GEOSContextHandle_t handle,
1075 #define GEOS_PREC_NO_TOPO (1<<0)
1079 #define GEOS_PREC_KEEP_COLLAPSED (1<<1)
1096 extern GEOSGeometry GEOS_DLL *GEOSGeom_setPrecision_r(
1097 GEOSContextHandle_t handle,
1098 const GEOSGeometry *g,
1099 double gridSize,
int flags);
1107 extern double GEOS_DLL GEOSGeom_getPrecision_r(
1108 GEOSContextHandle_t handle,
1109 const GEOSGeometry *g);
1112 extern int GEOS_DLL GEOSGetNumInteriorRings_r(GEOSContextHandle_t handle,
1113 const GEOSGeometry* g);
1116 extern int GEOS_DLL GEOSGeomGetNumPoints_r(GEOSContextHandle_t handle,
1117 const GEOSGeometry* g);
1120 extern int GEOS_DLL GEOSGeomGetX_r(GEOSContextHandle_t handle,
const GEOSGeometry *g,
double *x);
1121 extern int GEOS_DLL GEOSGeomGetY_r(GEOSContextHandle_t handle,
const GEOSGeometry *g,
double *y);
1122 extern int GEOS_DLL GEOSGeomGetZ_r(GEOSContextHandle_t handle,
const GEOSGeometry *g,
double *z);
1129 extern const GEOSGeometry GEOS_DLL *GEOSGetInteriorRingN_r(
1130 GEOSContextHandle_t handle,
1131 const GEOSGeometry* g,
int n);
1138 extern const GEOSGeometry GEOS_DLL *GEOSGetExteriorRing_r(
1139 GEOSContextHandle_t handle,
1140 const GEOSGeometry* g);
1143 extern int GEOS_DLL GEOSGetNumCoordinates_r(GEOSContextHandle_t handle,
1144 const GEOSGeometry* g);
1150 extern const GEOSCoordSequence GEOS_DLL *GEOSGeom_getCoordSeq_r(
1151 GEOSContextHandle_t handle,
1152 const GEOSGeometry* g);
1157 extern int GEOS_DLL GEOSGeom_getDimensions_r(GEOSContextHandle_t handle,
1158 const GEOSGeometry* g);
1163 extern int GEOS_DLL GEOSGeom_getCoordinateDimension_r(GEOSContextHandle_t handle,
1164 const GEOSGeometry* g);
1168 extern int GEOS_DLL GEOSGeom_getXMin_r(GEOSContextHandle_t handle,
const GEOSGeometry* g,
double* value);
1169 extern int GEOS_DLL GEOSGeom_getYMin_r(GEOSContextHandle_t handle,
const GEOSGeometry* g,
double* value);
1170 extern int GEOS_DLL GEOSGeom_getXMax_r(GEOSContextHandle_t handle,
const GEOSGeometry* g,
double* value);
1171 extern int GEOS_DLL GEOSGeom_getYMax_r(GEOSContextHandle_t handle,
const GEOSGeometry* g,
double* value);
1177 extern GEOSGeometry GEOS_DLL *GEOSGeomGetPointN_r(GEOSContextHandle_t handle,
const GEOSGeometry *g,
int n);
1178 extern GEOSGeometry GEOS_DLL *GEOSGeomGetStartPoint_r(GEOSContextHandle_t handle,
const GEOSGeometry *g);
1179 extern GEOSGeometry GEOS_DLL *GEOSGeomGetEndPoint_r(GEOSContextHandle_t handle,
const GEOSGeometry *g);
1188 extern int GEOS_DLL GEOSArea_r(GEOSContextHandle_t handle,
1189 const GEOSGeometry* g,
double *area);
1190 extern int GEOS_DLL GEOSLength_r(GEOSContextHandle_t handle,
1191 const GEOSGeometry* g,
double *length);
1192 extern int GEOS_DLL GEOSDistance_r(GEOSContextHandle_t handle,
1193 const GEOSGeometry* g1,
1194 const GEOSGeometry* g2,
double *dist);
1195 extern int GEOS_DLL GEOSDistanceIndexed_r(GEOSContextHandle_t handle,
1196 const GEOSGeometry* g1,
1197 const GEOSGeometry* g2,
double *dist);
1198 extern int GEOS_DLL GEOSHausdorffDistance_r(GEOSContextHandle_t handle,
1199 const GEOSGeometry *g1,
1200 const GEOSGeometry *g2,
1202 extern int GEOS_DLL GEOSHausdorffDistanceDensify_r(GEOSContextHandle_t handle,
1203 const GEOSGeometry *g1,
1204 const GEOSGeometry *g2,
1205 double densifyFrac,
double *dist);
1206 extern int GEOS_DLL GEOSFrechetDistance_r(GEOSContextHandle_t handle,
1207 const GEOSGeometry *g1,
1208 const GEOSGeometry *g2,
1210 extern int GEOS_DLL GEOSFrechetDistanceDensify_r(GEOSContextHandle_t handle,
1211 const GEOSGeometry *g1,
1212 const GEOSGeometry *g2,
1213 double densifyFrac,
double *dist);
1214 extern int GEOS_DLL GEOSGeomGetLength_r(GEOSContextHandle_t handle,
1215 const GEOSGeometry *g,
double *length);
1220 extern GEOSCoordSequence GEOS_DLL *GEOSNearestPoints_r(
1221 GEOSContextHandle_t handle,
const GEOSGeometry* g1,
const GEOSGeometry* g2);
1238 extern int GEOS_DLL GEOSOrientationIndex_r(GEOSContextHandle_t handle,
1239 double Ax,
double Ay,
double Bx,
double By,
double Px,
double Py);
1248 #ifndef GEOSWKTReader
1249 typedef struct GEOSWKTReader_t GEOSWKTReader;
1250 typedef struct GEOSWKTWriter_t GEOSWKTWriter;
1251 typedef struct GEOSWKBReader_t GEOSWKBReader;
1252 typedef struct GEOSWKBWriter_t GEOSWKBWriter;
1256 extern GEOSWKTReader GEOS_DLL *GEOSWKTReader_create_r(
1257 GEOSContextHandle_t handle);
1258 extern void GEOS_DLL GEOSWKTReader_destroy_r(GEOSContextHandle_t handle,
1259 GEOSWKTReader* reader);
1260 extern GEOSGeometry GEOS_DLL *GEOSWKTReader_read_r(GEOSContextHandle_t handle,
1261 GEOSWKTReader* reader,
1265 extern GEOSWKTWriter GEOS_DLL *GEOSWKTWriter_create_r(
1266 GEOSContextHandle_t handle);
1267 extern void GEOS_DLL GEOSWKTWriter_destroy_r(GEOSContextHandle_t handle,
1268 GEOSWKTWriter* writer);
1269 extern char GEOS_DLL *GEOSWKTWriter_write_r(GEOSContextHandle_t handle,
1270 GEOSWKTWriter* writer,
1271 const GEOSGeometry* g);
1272 extern void GEOS_DLL GEOSWKTWriter_setTrim_r(GEOSContextHandle_t handle,
1273 GEOSWKTWriter *writer,
1275 extern void GEOS_DLL GEOSWKTWriter_setRoundingPrecision_r(GEOSContextHandle_t handle,
1276 GEOSWKTWriter *writer,
1278 extern void GEOS_DLL GEOSWKTWriter_setOutputDimension_r(GEOSContextHandle_t handle,
1279 GEOSWKTWriter *writer,
1281 extern int GEOS_DLL GEOSWKTWriter_getOutputDimension_r(GEOSContextHandle_t handle,
1282 GEOSWKTWriter *writer);
1283 extern void GEOS_DLL GEOSWKTWriter_setOld3D_r(GEOSContextHandle_t handle,
1284 GEOSWKTWriter *writer,
1288 extern GEOSWKBReader GEOS_DLL *GEOSWKBReader_create_r(
1289 GEOSContextHandle_t handle);
1290 extern void GEOS_DLL GEOSWKBReader_destroy_r(GEOSContextHandle_t handle,
1291 GEOSWKBReader* reader);
1292 extern GEOSGeometry GEOS_DLL *GEOSWKBReader_read_r(GEOSContextHandle_t handle,
1293 GEOSWKBReader* reader,
1294 const unsigned char *wkb,
1296 extern GEOSGeometry GEOS_DLL *GEOSWKBReader_readHEX_r(
1297 GEOSContextHandle_t handle,
1298 GEOSWKBReader* reader,
1299 const unsigned char *hex,
1303 extern GEOSWKBWriter GEOS_DLL *GEOSWKBWriter_create_r(
1304 GEOSContextHandle_t handle);
1305 extern void GEOS_DLL GEOSWKBWriter_destroy_r(GEOSContextHandle_t handle,
1306 GEOSWKBWriter* writer);
1309 extern unsigned char GEOS_DLL *GEOSWKBWriter_write_r(
1310 GEOSContextHandle_t handle,
1311 GEOSWKBWriter* writer,
1312 const GEOSGeometry* g,
1314 extern unsigned char GEOS_DLL *GEOSWKBWriter_writeHEX_r(
1315 GEOSContextHandle_t handle,
1316 GEOSWKBWriter* writer,
1317 const GEOSGeometry* g,
1324 extern int GEOS_DLL GEOSWKBWriter_getOutputDimension_r(
1325 GEOSContextHandle_t handle,
1326 const GEOSWKBWriter* writer);
1327 extern void GEOS_DLL GEOSWKBWriter_setOutputDimension_r(
1328 GEOSContextHandle_t handle,
1329 GEOSWKBWriter* writer,
int newDimension);
1335 extern int GEOS_DLL GEOSWKBWriter_getByteOrder_r(GEOSContextHandle_t handle,
1336 const GEOSWKBWriter* writer);
1337 extern void GEOS_DLL GEOSWKBWriter_setByteOrder_r(GEOSContextHandle_t handle,
1338 GEOSWKBWriter* writer,
1344 extern char GEOS_DLL GEOSWKBWriter_getIncludeSRID_r(GEOSContextHandle_t handle,
1345 const GEOSWKBWriter* writer);
1346 extern void GEOS_DLL GEOSWKBWriter_setIncludeSRID_r(GEOSContextHandle_t handle,
1347 GEOSWKBWriter* writer,
const char writeSRID);
1354 extern void GEOS_DLL GEOSFree_r(GEOSContextHandle_t handle,
void *buffer);
1359 #ifndef GEOS_USE_ONLY_R_API
1367 extern void GEOS_DLL initGEOS(GEOSMessageHandler notice_function,
1368 GEOSMessageHandler error_function);
1369 extern void GEOS_DLL finishGEOS(
void);
1378 extern GEOSGeometry GEOS_DLL *GEOSGeomFromWKT(
const char *wkt);
1379 extern char GEOS_DLL *GEOSGeomToWKT(
const GEOSGeometry* g);
1385 extern int GEOS_DLL GEOS_getWKBOutputDims();
1386 extern int GEOS_DLL GEOS_setWKBOutputDims(
int newDims);
1392 extern int GEOS_DLL GEOS_getWKBByteOrder();
1393 extern int GEOS_DLL GEOS_setWKBByteOrder(
int byteOrder);
1395 extern GEOSGeometry GEOS_DLL *GEOSGeomFromWKB_buf(
const unsigned char *wkb,
size_t size);
1396 extern unsigned char GEOS_DLL *GEOSGeomToWKB_buf(
const GEOSGeometry* g,
size_t *size);
1398 extern GEOSGeometry GEOS_DLL *GEOSGeomFromHEX_buf(
const unsigned char *hex,
size_t size);
1399 extern unsigned char GEOS_DLL *GEOSGeomToHEX_buf(
const GEOSGeometry* g,
size_t *size);
1412 extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_create(
unsigned int size,
unsigned int dims);
1418 extern GEOSCoordSequence GEOS_DLL *GEOSCoordSeq_clone(
const GEOSCoordSequence* s);
1423 extern void GEOS_DLL GEOSCoordSeq_destroy(GEOSCoordSequence* s);
1429 extern int GEOS_DLL GEOSCoordSeq_setX(GEOSCoordSequence* s,
1430 unsigned int idx,
double val);
1431 extern int GEOS_DLL GEOSCoordSeq_setY(GEOSCoordSequence* s,
1432 unsigned int idx,
double val);
1433 extern int GEOS_DLL GEOSCoordSeq_setZ(GEOSCoordSequence* s,
1434 unsigned int idx,
double val);
1435 extern int GEOS_DLL GEOSCoordSeq_setXY(GEOSCoordSequence* s,
1436 unsigned int idx,
double x,
double y);
1437 extern int GEOS_DLL GEOSCoordSeq_setXYZ(GEOSCoordSequence* s,
1438 unsigned int idx,
double x,
double y,
double z);
1439 extern int GEOS_DLL GEOSCoordSeq_setOrdinate(GEOSCoordSequence* s,
1440 unsigned int idx,
unsigned int dim,
double val);
1446 extern int GEOS_DLL GEOSCoordSeq_getX(
const GEOSCoordSequence* s,
1447 unsigned int idx,
double *val);
1448 extern int GEOS_DLL GEOSCoordSeq_getY(
const GEOSCoordSequence* s,
1449 unsigned int idx,
double *val);
1450 extern int GEOS_DLL GEOSCoordSeq_getZ(
const GEOSCoordSequence* s,
1451 unsigned int idx,
double *val);
1452 extern int GEOS_DLL GEOSCoordSeq_getXY(
const GEOSCoordSequence* s,
1453 unsigned int idx,
double *x,
double *y);
1454 extern int GEOS_DLL GEOSCoordSeq_getXYZ(
const GEOSCoordSequence* s,
1455 unsigned int idx,
double *x,
double *y,
double *z);
1456 extern int GEOS_DLL GEOSCoordSeq_getOrdinate(
const GEOSCoordSequence* s,
1457 unsigned int idx,
unsigned int dim,
double *val);
1462 extern int GEOS_DLL GEOSCoordSeq_getSize(
const GEOSCoordSequence* s,
1463 unsigned int *size);
1464 extern int GEOS_DLL GEOSCoordSeq_getDimensions(
const GEOSCoordSequence* s,
1465 unsigned int *dims);
1472 extern int GEOS_DLL GEOSCoordSeq_isCCW(
const GEOSCoordSequence* s,
char* is_ccw);
1488 extern double GEOS_DLL GEOSProject(
const GEOSGeometry *g,
1489 const GEOSGeometry* p);
1493 extern GEOSGeometry GEOS_DLL *GEOSInterpolate(
const GEOSGeometry *g,
1496 extern double GEOS_DLL GEOSProjectNormalized(
const GEOSGeometry *g,
1497 const GEOSGeometry* p);
1499 extern GEOSGeometry GEOS_DLL *GEOSInterpolateNormalized(
const GEOSGeometry *g,
1510 extern GEOSGeometry GEOS_DLL *GEOSBuffer(
const GEOSGeometry* g,
1511 double width,
int quadsegs);
1514 extern GEOSBufferParams GEOS_DLL *GEOSBufferParams_create();
1515 extern void GEOS_DLL GEOSBufferParams_destroy(GEOSBufferParams* parms);
1518 extern int GEOS_DLL GEOSBufferParams_setEndCapStyle(
1519 GEOSBufferParams* p,
1523 extern int GEOS_DLL GEOSBufferParams_setJoinStyle(
1524 GEOSBufferParams* p,
1528 extern int GEOS_DLL GEOSBufferParams_setMitreLimit(
1529 GEOSBufferParams* p,
1533 extern int GEOS_DLL GEOSBufferParams_setQuadrantSegments(
1534 GEOSBufferParams* p,
1539 extern int GEOS_DLL GEOSBufferParams_setSingleSided(
1540 GEOSBufferParams* p,
1544 extern GEOSGeometry GEOS_DLL *GEOSBufferWithParams(
1545 const GEOSGeometry* g,
1546 const GEOSBufferParams* p,
1550 extern GEOSGeometry GEOS_DLL *GEOSBufferWithStyle(
const GEOSGeometry* g,
1551 double width,
int quadsegs,
int endCapStyle,
int joinStyle,
1556 extern GEOSGeometry GEOS_DLL *GEOSSingleSidedBuffer(
const GEOSGeometry* g,
1557 double width,
int quadsegs,
int joinStyle,
double mitreLimit,
1567 extern GEOSGeometry GEOS_DLL *GEOSOffsetCurve(
const GEOSGeometry* g,
1568 double width,
int quadsegs,
int joinStyle,
double mitreLimit);
1578 extern GEOSGeometry GEOS_DLL *GEOSGeom_createPoint(GEOSCoordSequence* s);
1579 extern GEOSGeometry GEOS_DLL *GEOSGeom_createPointFromXY(
double x,
double y);
1580 extern GEOSGeometry GEOS_DLL *GEOSGeom_createEmptyPoint();
1581 extern GEOSGeometry GEOS_DLL *GEOSGeom_createLinearRing(GEOSCoordSequence* s);
1582 extern GEOSGeometry GEOS_DLL *GEOSGeom_createLineString(GEOSCoordSequence* s);
1583 extern GEOSGeometry GEOS_DLL *GEOSGeom_createEmptyLineString();
1590 extern GEOSGeometry GEOS_DLL *GEOSGeom_createEmptyPolygon();
1591 extern GEOSGeometry GEOS_DLL *GEOSGeom_createPolygon(GEOSGeometry* shell,
1592 GEOSGeometry** holes,
unsigned int nholes);
1593 extern GEOSGeometry GEOS_DLL *GEOSGeom_createCollection(
int type,
1594 GEOSGeometry* *geoms,
unsigned int ngeoms);
1595 extern GEOSGeometry GEOS_DLL *GEOSGeom_createEmptyCollection(
int type);
1597 extern GEOSGeometry GEOS_DLL *GEOSGeom_clone(
const GEOSGeometry* g);
1605 extern void GEOS_DLL GEOSGeom_destroy(GEOSGeometry* g);
1613 extern GEOSGeometry GEOS_DLL *GEOSEnvelope(
const GEOSGeometry* g);
1614 extern GEOSGeometry GEOS_DLL *GEOSIntersection(
const GEOSGeometry* g1,
const GEOSGeometry* g2);
1615 extern GEOSGeometry GEOS_DLL *GEOSIntersectionPrec(
const GEOSGeometry* g1,
const GEOSGeometry* g2,
double gridSize);
1616 extern GEOSGeometry GEOS_DLL *GEOSConvexHull(
const GEOSGeometry* g);
1623 extern GEOSGeometry GEOS_DLL *GEOSMinimumRotatedRectangle(
const GEOSGeometry* g);
1640 extern GEOSGeometry GEOS_DLL *GEOSMaximumInscribedCircle(
const GEOSGeometry* g,
double tolerance);
1655 extern GEOSGeometry GEOS_DLL *GEOSLargestEmptyCircle(
const GEOSGeometry* g,
const GEOSGeometry* boundary,
double tolerance);
1663 extern GEOSGeometry GEOS_DLL *GEOSMinimumWidth(
const GEOSGeometry* g);
1681 extern int GEOS_DLL GEOSMinimumClearance(
const GEOSGeometry* g,
double* d);
1689 extern GEOSGeometry GEOS_DLL *GEOSMinimumClearanceLine(
const GEOSGeometry* g);
1691 extern GEOSGeometry GEOS_DLL *GEOSDifference(
const GEOSGeometry* g1,
const GEOSGeometry* g2);
1692 extern GEOSGeometry GEOS_DLL *GEOSDifferencePrec(
const GEOSGeometry* g1,
const GEOSGeometry* g2,
double gridSize);
1693 extern GEOSGeometry GEOS_DLL *GEOSSymDifference(
const GEOSGeometry* g1,
const GEOSGeometry* g2);
1694 extern GEOSGeometry GEOS_DLL *GEOSSymDifferencePrec(
const GEOSGeometry* g1,
const GEOSGeometry* g2,
double gridSize);
1695 extern GEOSGeometry GEOS_DLL *GEOSBoundary(
const GEOSGeometry* g);
1696 extern GEOSGeometry GEOS_DLL *GEOSUnion(
const GEOSGeometry* g1,
const GEOSGeometry* g2);
1697 extern GEOSGeometry GEOS_DLL *GEOSUnionPrec(
const GEOSGeometry* g1,
const GEOSGeometry* g2,
double gridSize);
1698 extern GEOSGeometry GEOS_DLL *GEOSUnaryUnion(
const GEOSGeometry* g);
1699 extern GEOSGeometry GEOS_DLL *GEOSUnaryUnionPrec(
const GEOSGeometry* g,
double gridSize);
1704 extern GEOSGeometry GEOS_DLL *GEOSCoverageUnion(
const GEOSGeometry *g);
1707 extern GEOSGeometry GEOS_DLL *GEOSUnionCascaded(
const GEOSGeometry* g);
1709 extern GEOSGeometry GEOS_DLL *GEOSPointOnSurface(
const GEOSGeometry* g);
1710 extern GEOSGeometry GEOS_DLL *GEOSGetCentroid(
const GEOSGeometry* g);
1711 extern GEOSGeometry GEOS_DLL *GEOSMinimumBoundingCircle(
const GEOSGeometry* g,
double* radius, GEOSGeometry** center);
1712 extern GEOSGeometry GEOS_DLL *GEOSNode(
const GEOSGeometry* g);
1713 extern GEOSGeometry GEOS_DLL *GEOSClipByRect(
const GEOSGeometry* g,
double xmin,
double ymin,
double xmax,
double ymax);
1719 extern GEOSGeometry GEOS_DLL *GEOSPolygonize(
const GEOSGeometry *
const geoms[],
unsigned int ngeoms);
1720 extern GEOSGeometry GEOS_DLL *GEOSPolygonize_valid(
const GEOSGeometry *
const geoms[],
unsigned int ngeoms);
1721 extern GEOSGeometry GEOS_DLL *GEOSPolygonizer_getCutEdges(
const GEOSGeometry *
const geoms[],
unsigned int ngeoms);
1722 extern GEOSGeometry GEOS_DLL *GEOSPolygonize_full(
const GEOSGeometry* input,
1723 GEOSGeometry** cuts, GEOSGeometry** dangles, GEOSGeometry** invalid);
1725 extern GEOSGeometry GEOS_DLL *GEOSBuildArea(
const GEOSGeometry* g);
1727 extern GEOSGeometry GEOS_DLL *GEOSLineMerge(
const GEOSGeometry* g);
1728 extern GEOSGeometry GEOS_DLL *GEOSReverse(
const GEOSGeometry* g);
1729 extern GEOSGeometry GEOS_DLL *GEOSSimplify(
const GEOSGeometry* g,
double tolerance);
1730 extern GEOSGeometry GEOS_DLL *GEOSTopologyPreserveSimplify(
const GEOSGeometry* g,
1738 extern GEOSGeometry GEOS_DLL *GEOSGeom_extractUniquePoints(
1739 const GEOSGeometry* g);
1752 extern GEOSGeometry GEOS_DLL *GEOSSharedPaths(
const GEOSGeometry* g1,
1753 const GEOSGeometry* g2);
1759 extern GEOSGeometry GEOS_DLL *GEOSSnap(
const GEOSGeometry* g1,
1760 const GEOSGeometry* g2,
double tolerance);
1772 extern GEOSGeometry GEOS_DLL * GEOSDelaunayTriangulation(
1773 const GEOSGeometry *g,
1790 extern GEOSGeometry GEOS_DLL * GEOSVoronoiDiagram(
1791 const GEOSGeometry *g,
1792 const GEOSGeometry *env,
1812 extern int GEOS_DLL GEOSSegmentIntersection(
1813 double ax0,
double ay0,
1814 double ax1,
double ay1,
1815 double bx0,
double by0,
1816 double bx1,
double by1,
1817 double* cx,
double* cy);
1825 extern char GEOS_DLL GEOSDisjoint(
const GEOSGeometry* g1,
const GEOSGeometry* g2);
1826 extern char GEOS_DLL GEOSTouches(
const GEOSGeometry* g1,
const GEOSGeometry* g2);
1827 extern char GEOS_DLL GEOSIntersects(
const GEOSGeometry* g1,
const GEOSGeometry* g2);
1828 extern char GEOS_DLL GEOSCrosses(
const GEOSGeometry* g1,
const GEOSGeometry* g2);
1829 extern char GEOS_DLL GEOSWithin(
const GEOSGeometry* g1,
const GEOSGeometry* g2);
1830 extern char GEOS_DLL GEOSContains(
const GEOSGeometry* g1,
const GEOSGeometry* g2);
1831 extern char GEOS_DLL GEOSOverlaps(
const GEOSGeometry* g1,
const GEOSGeometry* g2);
1832 extern char GEOS_DLL GEOSEquals(
const GEOSGeometry* g1,
const GEOSGeometry* g2);
1833 extern char GEOS_DLL GEOSCovers(
const GEOSGeometry* g1,
const GEOSGeometry* g2);
1834 extern char GEOS_DLL GEOSCoveredBy(
const GEOSGeometry* g1,
const GEOSGeometry* g2);
1844 extern char GEOS_DLL GEOSEqualsExact(
const GEOSGeometry* g1,
const GEOSGeometry* g2,
double tolerance);
1855 extern const GEOSPreparedGeometry GEOS_DLL *GEOSPrepare(
const GEOSGeometry* g);
1857 extern void GEOS_DLL GEOSPreparedGeom_destroy(
const GEOSPreparedGeometry* g);
1859 extern char GEOS_DLL GEOSPreparedContains(
const GEOSPreparedGeometry* pg1,
const GEOSGeometry* g2);
1860 extern char GEOS_DLL GEOSPreparedContainsProperly(
const GEOSPreparedGeometry* pg1,
const GEOSGeometry* g2);
1861 extern char GEOS_DLL GEOSPreparedCoveredBy(
const GEOSPreparedGeometry* pg1,
const GEOSGeometry* g2);
1862 extern char GEOS_DLL GEOSPreparedCovers(
const GEOSPreparedGeometry* pg1,
const GEOSGeometry* g2);
1863 extern char GEOS_DLL GEOSPreparedCrosses(
const GEOSPreparedGeometry* pg1,
const GEOSGeometry* g2);
1864 extern char GEOS_DLL GEOSPreparedDisjoint(
const GEOSPreparedGeometry* pg1,
const GEOSGeometry* g2);
1865 extern char GEOS_DLL GEOSPreparedIntersects(
const GEOSPreparedGeometry* pg1,
const GEOSGeometry* g2);
1866 extern char GEOS_DLL GEOSPreparedOverlaps(
const GEOSPreparedGeometry* pg1,
const GEOSGeometry* g2);
1867 extern char GEOS_DLL GEOSPreparedTouches(
const GEOSPreparedGeometry* pg1,
const GEOSGeometry* g2);
1868 extern char GEOS_DLL GEOSPreparedWithin(
const GEOSPreparedGeometry* pg1,
const GEOSGeometry* g2);
1888 extern GEOSSTRtree GEOS_DLL *GEOSSTRtree_create(
size_t nodeCapacity);
1897 extern void GEOS_DLL GEOSSTRtree_insert(GEOSSTRtree *tree,
1898 const GEOSGeometry *g,
1911 extern void GEOS_DLL GEOSSTRtree_query(GEOSSTRtree *tree,
1912 const GEOSGeometry *g,
1913 GEOSQueryCallback callback,
1925 extern const GEOSGeometry GEOS_DLL *GEOSSTRtree_nearest(GEOSSTRtree *tree,
const GEOSGeometry* geom);
1943 extern const void GEOS_DLL *GEOSSTRtree_nearest_generic(GEOSSTRtree *tree,
1945 const GEOSGeometry* itemEnvelope,
1946 GEOSDistanceCallback distancefn,
1954 extern void GEOS_DLL GEOSSTRtree_iterate(GEOSSTRtree *tree,
1955 GEOSQueryCallback callback,
1968 extern char GEOS_DLL GEOSSTRtree_remove(GEOSSTRtree *tree,
1969 const GEOSGeometry *g,
1971 extern void GEOS_DLL GEOSSTRtree_destroy(GEOSSTRtree *tree);
1980 extern char GEOS_DLL GEOSisEmpty(
const GEOSGeometry* g);
1981 extern char GEOS_DLL GEOSisSimple(
const GEOSGeometry* g);
1982 extern char GEOS_DLL GEOSisRing(
const GEOSGeometry* g);
1983 extern char GEOS_DLL GEOSHasZ(
const GEOSGeometry* g);
1984 extern char GEOS_DLL GEOSisClosed(
const GEOSGeometry *g);
1993 extern char GEOS_DLL GEOSRelatePattern(
const GEOSGeometry* g1,
const GEOSGeometry* g2,
const char *pat);
1996 extern char GEOS_DLL *GEOSRelate(
const GEOSGeometry* g1,
const GEOSGeometry* g2);
1999 extern char GEOS_DLL GEOSRelatePatternMatch(
const char *mat,
const char *pat);
2002 extern char GEOS_DLL *GEOSRelateBoundaryNodeRule(
const GEOSGeometry* g1,
2003 const GEOSGeometry* g2,
2013 extern char GEOS_DLL GEOSisValid(
const GEOSGeometry* g);
2016 extern char GEOS_DLL *GEOSisValidReason(
const GEOSGeometry *g);
2023 extern char GEOS_DLL GEOSisValidDetail(
const GEOSGeometry* g,
2025 char** reason, GEOSGeometry** location);
2027 extern GEOSGeometry GEOS_DLL *GEOSMakeValid(
const GEOSGeometry* g);
2036 extern char GEOS_DLL *GEOSGeomType(
const GEOSGeometry* g);
2039 extern int GEOS_DLL GEOSGeomTypeId(
const GEOSGeometry* g);
2042 extern int GEOS_DLL GEOSGetSRID(
const GEOSGeometry* g);
2044 extern void GEOS_DLL GEOSSetSRID(GEOSGeometry* g,
int SRID);
2046 extern void GEOS_DLL *GEOSGeom_getUserData(
const GEOSGeometry* g);
2048 extern void GEOS_DLL GEOSGeom_setUserData(GEOSGeometry* g,
void* userData);
2057 extern int GEOS_DLL GEOSGetNumGeometries(
const GEOSGeometry* g);
2067 extern const GEOSGeometry GEOS_DLL *GEOSGetGeometryN(
const GEOSGeometry* g,
int n);
2070 extern int GEOS_DLL GEOSNormalize(GEOSGeometry* g);
2073 extern GEOSGeometry GEOS_DLL *GEOSGeom_setPrecision(
2074 const GEOSGeometry *g,
double gridSize,
int flags);
2077 extern double GEOS_DLL GEOSGeom_getPrecision(
const GEOSGeometry *g);
2080 extern int GEOS_DLL GEOSGetNumInteriorRings(
const GEOSGeometry* g);
2083 extern int GEOS_DLL GEOSGeomGetNumPoints(
const GEOSGeometry* g);
2086 extern int GEOS_DLL GEOSGeomGetX(
const GEOSGeometry *g,
double *x);
2087 extern int GEOS_DLL GEOSGeomGetY(
const GEOSGeometry *g,
double *y);
2088 extern int GEOS_DLL GEOSGeomGetZ(
const GEOSGeometry *g,
double *z);
2095 extern const GEOSGeometry GEOS_DLL *GEOSGetInteriorRingN(
const GEOSGeometry* g,
int n);
2102 extern const GEOSGeometry GEOS_DLL *GEOSGetExteriorRing(
const GEOSGeometry* g);
2105 extern int GEOS_DLL GEOSGetNumCoordinates(
const GEOSGeometry* g);
2111 extern const GEOSCoordSequence GEOS_DLL *GEOSGeom_getCoordSeq(
const GEOSGeometry* g);
2116 extern int GEOS_DLL GEOSGeom_getDimensions(
const GEOSGeometry* g);
2121 extern int GEOS_DLL GEOSGeom_getCoordinateDimension(
const GEOSGeometry* g);
2126 extern int GEOS_DLL GEOSGeom_getXMin(
const GEOSGeometry* g,
double* value);
2127 extern int GEOS_DLL GEOSGeom_getYMin(
const GEOSGeometry* g,
double* value);
2128 extern int GEOS_DLL GEOSGeom_getXMax(
const GEOSGeometry* g,
double* value);
2129 extern int GEOS_DLL GEOSGeom_getYMax(
const GEOSGeometry* g,
double* value);
2135 extern GEOSGeometry GEOS_DLL *GEOSGeomGetPointN(
const GEOSGeometry *g,
int n);
2136 extern GEOSGeometry GEOS_DLL *GEOSGeomGetStartPoint(
const GEOSGeometry *g);
2137 extern GEOSGeometry GEOS_DLL *GEOSGeomGetEndPoint(
const GEOSGeometry *g);
2146 extern int GEOS_DLL GEOSArea(
const GEOSGeometry* g,
double *area);
2147 extern int GEOS_DLL GEOSLength(
const GEOSGeometry* g,
double *length);
2148 extern int GEOS_DLL GEOSDistance(
const GEOSGeometry* g1,
const GEOSGeometry* g2,
2150 extern int GEOS_DLL GEOSDistanceIndexed(
const GEOSGeometry* g1,
const GEOSGeometry* g2,
2152 extern int GEOS_DLL GEOSHausdorffDistance(
const GEOSGeometry *g1,
2153 const GEOSGeometry *g2,
double *dist);
2154 extern int GEOS_DLL GEOSHausdorffDistanceDensify(
const GEOSGeometry *g1,
2155 const GEOSGeometry *g2,
double densifyFrac,
double *dist);
2156 extern int GEOS_DLL GEOSFrechetDistance(
const GEOSGeometry *g1,
2157 const GEOSGeometry *g2,
double *dist);
2158 extern int GEOS_DLL GEOSFrechetDistanceDensify(
const GEOSGeometry *g1,
2159 const GEOSGeometry *g2,
double densifyFrac,
double *dist);
2160 extern int GEOS_DLL GEOSGeomGetLength(
const GEOSGeometry *g,
double *length);
2165 extern GEOSCoordSequence GEOS_DLL *GEOSNearestPoints(
2166 const GEOSGeometry* g1,
const GEOSGeometry* g2);
2183 extern int GEOS_DLL GEOSOrientationIndex(
double Ax,
double Ay,
double Bx,
double By,
2184 double Px,
double Py);
2193 extern GEOSWKTReader GEOS_DLL *GEOSWKTReader_create();
2194 extern void GEOS_DLL GEOSWKTReader_destroy(GEOSWKTReader* reader);
2195 extern GEOSGeometry GEOS_DLL *GEOSWKTReader_read(GEOSWKTReader* reader,
const char *wkt);
2198 extern GEOSWKTWriter GEOS_DLL *GEOSWKTWriter_create();
2199 extern void GEOS_DLL GEOSWKTWriter_destroy(GEOSWKTWriter* writer);
2200 extern char GEOS_DLL *GEOSWKTWriter_write(GEOSWKTWriter* writer,
const GEOSGeometry* g);
2201 extern void GEOS_DLL GEOSWKTWriter_setTrim(GEOSWKTWriter *writer,
char trim);
2202 extern void GEOS_DLL GEOSWKTWriter_setRoundingPrecision(GEOSWKTWriter *writer,
int precision);
2203 extern void GEOS_DLL GEOSWKTWriter_setOutputDimension(GEOSWKTWriter *writer,
int dim);
2204 extern int GEOS_DLL GEOSWKTWriter_getOutputDimension(GEOSWKTWriter *writer);
2205 extern void GEOS_DLL GEOSWKTWriter_setOld3D(GEOSWKTWriter *writer,
int useOld3D);
2208 extern GEOSWKBReader GEOS_DLL *GEOSWKBReader_create();
2209 extern void GEOS_DLL GEOSWKBReader_destroy(GEOSWKBReader* reader);
2210 extern GEOSGeometry GEOS_DLL *GEOSWKBReader_read(GEOSWKBReader* reader,
const unsigned char *wkb,
size_t size);
2211 extern GEOSGeometry GEOS_DLL *GEOSWKBReader_readHEX(GEOSWKBReader* reader,
const unsigned char *hex,
size_t size);
2214 extern GEOSWKBWriter GEOS_DLL *GEOSWKBWriter_create();
2215 extern void GEOS_DLL GEOSWKBWriter_destroy(GEOSWKBWriter* writer);
2218 extern unsigned char GEOS_DLL *GEOSWKBWriter_write(GEOSWKBWriter* writer,
const GEOSGeometry* g,
size_t *size);
2219 extern unsigned char GEOS_DLL *GEOSWKBWriter_writeHEX(GEOSWKBWriter* writer,
const GEOSGeometry* g,
size_t *size);
2225 extern int GEOS_DLL GEOSWKBWriter_getOutputDimension(
const GEOSWKBWriter* writer);
2226 extern void GEOS_DLL GEOSWKBWriter_setOutputDimension(GEOSWKBWriter* writer,
int newDimension);
2232 extern int GEOS_DLL GEOSWKBWriter_getByteOrder(
const GEOSWKBWriter* writer);
2233 extern void GEOS_DLL GEOSWKBWriter_setByteOrder(GEOSWKBWriter* writer,
int byteOrder);
2238 extern char GEOS_DLL GEOSWKBWriter_getIncludeSRID(
const GEOSWKBWriter* writer);
2239 extern void GEOS_DLL GEOSWKBWriter_setIncludeSRID(GEOSWKBWriter* writer,
const char writeSRID);
2245 extern void GEOS_DLL GEOSFree(
void *buffer);
a linestring
Definition: Geometry.h:79
a collection of heterogeneus geometries
Definition: Geometry.h:91
a collection of linestrings
Definition: Geometry.h:87
a collection of points
Definition: Geometry.h:85
a polygon
Definition: Geometry.h:83
a linear ring (linestring with 1st point == last point)
Definition: Geometry.h:81
a point
Definition: Geometry.h:77
a collection of polygons
Definition: Geometry.h:89