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