1# The beginnings of a Cython definition of GEOS. In the future much of this 2# could be auto-generated. 3 4from libc.stdint cimport uintptr_t 5 6 7cdef extern from "geos_c.h": 8 ctypedef void *GEOSContextHandle_t 9 ctypedef struct GEOSGeometry 10 ctypedef struct GEOSCoordSequence 11 ctypedef struct GEOSPreparedGeometry 12 13 GEOSCoordSequence *GEOSCoordSeq_create_r(GEOSContextHandle_t, unsigned int, unsigned int) nogil 14 GEOSCoordSequence *GEOSGeom_getCoordSeq_r(GEOSContextHandle_t, GEOSGeometry *) nogil 15 16 int GEOSCoordSeq_getSize_r(GEOSContextHandle_t, GEOSCoordSequence *, unsigned int *) nogil 17 int GEOSCoordSeq_setX_r(GEOSContextHandle_t, GEOSCoordSequence *, int, double) nogil 18 int GEOSCoordSeq_setY_r(GEOSContextHandle_t, GEOSCoordSequence *, int, double) nogil 19 int GEOSCoordSeq_setZ_r(GEOSContextHandle_t, GEOSCoordSequence *, int, double) nogil 20 int GEOSCoordSeq_getX_r(GEOSContextHandle_t, GEOSCoordSequence *, int, double *) nogil 21 int GEOSCoordSeq_getY_r(GEOSContextHandle_t, GEOSCoordSequence *, int, double *) nogil 22 int GEOSCoordSeq_getZ_r(GEOSContextHandle_t, GEOSCoordSequence *, int, double *) nogil 23 24 GEOSGeometry *GEOSGeom_createPoint_r(GEOSContextHandle_t, GEOSCoordSequence *) nogil 25 GEOSGeometry *GEOSGeom_createLineString_r(GEOSContextHandle_t, GEOSCoordSequence *) nogil 26 GEOSGeometry *GEOSGeom_createLinearRing_r(GEOSContextHandle_t, GEOSCoordSequence *) nogil 27 GEOSGeometry *GEOSGeom_clone_r(GEOSContextHandle_t, GEOSGeometry *) nogil 28 GEOSCoordSequence *GEOSCoordSeq_clone_r(GEOSContextHandle_t, GEOSCoordSequence *) nogil 29 30 void GEOSGeom_destroy_r(GEOSContextHandle_t, GEOSGeometry *) nogil 31 32 char GEOSPreparedContains_r(GEOSContextHandle_t, const GEOSPreparedGeometry*, const GEOSGeometry*) nogil 33 char GEOSPreparedContainsProperly_r(GEOSContextHandle_t, const GEOSPreparedGeometry*, const GEOSGeometry*) nogil 34 char GEOSPreparedCoveredBy_r(GEOSContextHandle_t, const GEOSPreparedGeometry*, const GEOSGeometry*) nogil 35 char GEOSPreparedCovers_r(GEOSContextHandle_t, const GEOSPreparedGeometry*, const GEOSGeometry*) nogil 36 char GEOSPreparedCrosses_r(GEOSContextHandle_t, const GEOSPreparedGeometry*, const GEOSGeometry*) nogil 37 char GEOSPreparedDisjoint_r(GEOSContextHandle_t, const GEOSPreparedGeometry*, const GEOSGeometry*) nogil 38 char GEOSPreparedIntersects_r(GEOSContextHandle_t, const GEOSPreparedGeometry*, const GEOSGeometry*) nogil 39 char GEOSPreparedOverlaps_r(GEOSContextHandle_t, const GEOSPreparedGeometry*, const GEOSGeometry*) nogil 40 char GEOSPreparedTouches_r(GEOSContextHandle_t, const GEOSPreparedGeometry*, const GEOSGeometry*) nogil 41 char GEOSPreparedWithin_r(GEOSContextHandle_t, const GEOSPreparedGeometry*, const GEOSGeometry*) nogil 42 43 char GEOSHasZ_r(GEOSContextHandle_t, GEOSGeometry *) nogil 44 char GEOSisRing_r(GEOSContextHandle_t, GEOSGeometry *) nogil 45 char GEOSisClosed_r(GEOSContextHandle_t, GEOSGeometry *) nogil 46 char GEOSisValid_r(GEOSContextHandle_t, GEOSGeometry *) nogil 47 char GEOSisSimple_r(GEOSContextHandle_t, GEOSGeometry *) nogil 48 49 50cdef GEOSContextHandle_t get_geos_context_handle(): 51 # Note: This requires that lgeos is defined, so needs to be imported as: 52 from shapely.geos import lgeos 53 cdef uintptr_t handle = lgeos.geos_handle 54 return <GEOSContextHandle_t>handle 55 56 57cdef GEOSPreparedGeometry *geos_from_prepared(shapely_geom) except *: 58 """Get the Prepared GEOS geometry pointer from the given shapely geometry.""" 59 cdef uintptr_t geos_geom = shapely_geom._geom 60 return <GEOSPreparedGeometry *>geos_geom 61