Source code for geoalchemy2.shape
"""
This module provides utility functions for integrating with Shapely.
.. note::
As GeoAlchemy 2 itself has no dependency on `Shapely`, applications using
functions of this module have to ensure that `Shapely` is available.
"""
import shapely.wkb
import shapely.wkt
from .elements import WKBElement, WKTElement
from .compat import buffer, bytes
[docs]def to_shape(element):
"""
Function to convert a :class:`geoalchemy2.types.SpatialElement`
to a Shapely geometry.
Example::
lake = Session.query(Lake).get(1)
polygon = to_shape(lake.geom)
"""
assert isinstance(element, (WKBElement, WKTElement))
if isinstance(element, WKBElement):
return shapely.wkb.loads(bytes(element.data))
elif isinstance(element, WKTElement):
return shapely.wkt.loads(element.data)
[docs]def from_shape(shape, srid=-1):
"""
Function to convert a Shapely geometry to a
:class:`geoalchemy2.types.WKBElement`.
Additional arguments:
``srid``
An integer representing the spatial reference system. E.g. 4326.
Default value is -1, which means no/unknown reference system.
Example::
from shapely.geometry import Point
wkb_element = from_shape(Point(5, 45), srid=4326)
"""
return WKBElement(buffer(shape.wkb), srid=srid)