145 lines
4.6 KiB
Cython
145 lines
4.6 KiB
Cython
# Geometry API functions.
|
|
|
|
ctypedef int OGRErr
|
|
|
|
|
|
cdef extern from "ogr_core.h":
|
|
ctypedef enum OGRwkbGeometryType:
|
|
wkbUnknown
|
|
wkbPoint
|
|
wkbLineString
|
|
wkbPolygon
|
|
wkbMultiPoint
|
|
wkbMultiLineString
|
|
wkbMultiPolygon
|
|
wkbGeometryCollection
|
|
wkbCircularString
|
|
wkbCompoundCurve
|
|
wkbCurvePolygon
|
|
wkbMultiCurve
|
|
wkbMultiSurface
|
|
wkbCurve
|
|
wkbSurface
|
|
wkbPolyhedralSurface
|
|
wkbTIN
|
|
wkbTriangle
|
|
wkbNone
|
|
wkbLinearRing
|
|
wkbCircularStringZ
|
|
wkbCompoundCurveZ
|
|
wkbCurvePolygonZ
|
|
wkbMultiCurveZ
|
|
wkbMultiSurfaceZ
|
|
wkbCurveZ
|
|
wkbSurfaceZ
|
|
wkbPolyhedralSurfaceZ
|
|
wkbTINZ
|
|
wkbTriangleZ
|
|
wkbPointM
|
|
wkbLineStringM
|
|
wkbPolygonM
|
|
wkbMultiPointM
|
|
wkbMultiLineStringM
|
|
wkbMultiPolygonM
|
|
wkbGeometryCollectionM
|
|
wkbCircularStringM
|
|
wkbCompoundCurveM
|
|
wkbCurvePolygonM
|
|
wkbMultiCurveM
|
|
wkbMultiSurfaceM
|
|
wkbCurveM
|
|
wkbSurfaceM
|
|
wkbPolyhedralSurfaceM
|
|
wkbTINM
|
|
wkbTriangleM
|
|
wkbPointZM
|
|
wkbLineStringZM
|
|
wkbPolygonZM
|
|
wkbMultiPointZM
|
|
wkbMultiLineStringZM
|
|
wkbMultiPolygonZM
|
|
wkbGeometryCollectionZM
|
|
wkbCircularStringZM
|
|
wkbCompoundCurveZM
|
|
wkbCurvePolygonZM
|
|
wkbMultiCurveZM
|
|
wkbMultiSurfaceZM
|
|
wkbCurveZM
|
|
wkbSurfaceZM
|
|
wkbPolyhedralSurfaceZM
|
|
wkbTINZM
|
|
wkbTriangleZM
|
|
wkbPoint25D
|
|
wkbLineString25D
|
|
wkbPolygon25D
|
|
wkbMultiPoint25D
|
|
wkbMultiLineString25D
|
|
wkbMultiPolygon25D
|
|
wkbGeometryCollection25D
|
|
|
|
|
|
ctypedef struct OGREnvelope:
|
|
double MinX
|
|
double MaxX
|
|
double MinY
|
|
double MaxY
|
|
|
|
|
|
cdef extern from "ogr_api.h":
|
|
OGRErr OGR_G_AddGeometryDirectly (void *geometry, void *part)
|
|
void OGR_G_AddPoint (void *geometry, double x, double y, double z)
|
|
void OGR_G_AddPoint_2D (void *geometry, double x, double y)
|
|
void OGR_G_CloseRings (void *geometry)
|
|
void * OGR_G_CreateGeometry (OGRwkbGeometryType wkbtypecode)
|
|
void OGR_G_DestroyGeometry (void *geometry)
|
|
unsigned char * OGR_G_ExportToJson (void *geometry)
|
|
void OGR_G_ExportToWkb (void *geometry, int endianness, char *buffer)
|
|
int OGR_G_GetCoordinateDimension (void *geometry)
|
|
int OGR_G_GetGeometryCount (void *geometry)
|
|
unsigned char * OGR_G_GetGeometryName (void *geometry)
|
|
int OGR_G_GetGeometryType (void *geometry)
|
|
void * OGR_G_GetGeometryRef (void *geometry, int n)
|
|
int OGR_G_GetPointCount (void *geometry)
|
|
double OGR_G_GetX (void *geometry, int n)
|
|
double OGR_G_GetY (void *geometry, int n)
|
|
double OGR_G_GetZ (void *geometry, int n)
|
|
OGRErr OGR_G_ImportFromWkb (void *geometry, unsigned char *bytes, int nbytes)
|
|
int OGR_G_WkbSize (void *geometry)
|
|
|
|
|
|
cdef class GeomBuilder:
|
|
cdef object ndims
|
|
cdef list _buildCoords(self, void *geom)
|
|
cdef dict _buildPoint(self, void *geom)
|
|
cdef dict _buildLineString(self, void *geom)
|
|
cdef dict _buildLinearRing(self, void *geom)
|
|
cdef list _buildParts(self, void *geom)
|
|
cdef dict _buildPolygon(self, void *geom)
|
|
cdef dict _buildMultiPoint(self, void *geom)
|
|
cdef dict _buildMultiLineString(self, void *geom)
|
|
cdef dict _buildMultiPolygon(self, void *geom)
|
|
cdef dict _buildGeometryCollection(self, void *geom)
|
|
cdef object build_from_feature(self, void *feature)
|
|
cdef object build(self, void *geom)
|
|
cpdef build_wkb(self, object wkb)
|
|
|
|
|
|
cdef class OGRGeomBuilder:
|
|
cdef void * _createOgrGeometry(self, int geom_type) except NULL
|
|
cdef _addPointToGeometry(self, void *cogr_geometry, object coordinate)
|
|
cdef void * _buildPoint(self, object coordinates) except NULL
|
|
cdef void * _buildLineString(self, object coordinates) except NULL
|
|
cdef void * _buildLinearRing(self, object coordinates) except NULL
|
|
cdef void * _buildPolygon(self, object coordinates) except NULL
|
|
cdef void * _buildMultiPoint(self, object coordinates) except NULL
|
|
cdef void * _buildMultiLineString(self, object coordinates) except NULL
|
|
cdef void * _buildMultiPolygon(self, object coordinates) except NULL
|
|
cdef void * _buildGeometryCollection(self, object coordinates) except NULL
|
|
cdef void * build(self, object geom) except NULL
|
|
|
|
|
|
cdef unsigned int geometry_type_code(object name) except? 9999
|
|
cdef object normalize_geometry_type_code(unsigned int code)
|
|
cdef unsigned int base_geometry_type_code(unsigned int code)
|
|
|