diff options
Diffstat (limited to 'base_geoengine/geo_helper')
| -rw-r--r-- | base_geoengine/geo_helper/__init__.py | 1 | ||||
| -rw-r--r-- | base_geoengine/geo_helper/__pycache__/__init__.cpython-36.pyc | bin | 0 -> 211 bytes | |||
| -rw-r--r-- | base_geoengine/geo_helper/__pycache__/geo_convertion_helper.cpython-36.pyc | bin | 0 -> 1046 bytes | |||
| -rw-r--r-- | base_geoengine/geo_helper/geo_convertion_helper.py | 38 |
4 files changed, 39 insertions, 0 deletions
diff --git a/base_geoengine/geo_helper/__init__.py b/base_geoengine/geo_helper/__init__.py new file mode 100644 index 0000000..8f61671 --- /dev/null +++ b/base_geoengine/geo_helper/__init__.py @@ -0,0 +1 @@ +from . import geo_convertion_helper diff --git a/base_geoengine/geo_helper/__pycache__/__init__.cpython-36.pyc b/base_geoengine/geo_helper/__pycache__/__init__.cpython-36.pyc Binary files differnew file mode 100644 index 0000000..f8f34ea --- /dev/null +++ b/base_geoengine/geo_helper/__pycache__/__init__.cpython-36.pyc diff --git a/base_geoengine/geo_helper/__pycache__/geo_convertion_helper.cpython-36.pyc b/base_geoengine/geo_helper/__pycache__/geo_convertion_helper.cpython-36.pyc Binary files differnew file mode 100644 index 0000000..6cba44d --- /dev/null +++ b/base_geoengine/geo_helper/__pycache__/geo_convertion_helper.cpython-36.pyc diff --git a/base_geoengine/geo_helper/geo_convertion_helper.py b/base_geoengine/geo_helper/geo_convertion_helper.py new file mode 100644 index 0000000..0a0d824 --- /dev/null +++ b/base_geoengine/geo_helper/geo_convertion_helper.py @@ -0,0 +1,38 @@ +# Copyright 2011-2012 Nicolas Bessi (Camptocamp SA) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +import logging + +try: + from shapely import wkt, wkb + from shapely.geometry import asShape + from shapely.geometry.base import BaseGeometry + import geojson +except ImportError: + logger = logging.getLogger(__name__) + logger.warning("Shapely or geojson are not available in the sys path") + + +def value_to_shape(value, use_wkb=False): + """Transforms input into a Shapely object""" + if not value: + return wkt.loads("GEOMETRYCOLLECTION EMPTY") + if isinstance(value, str): + # We try to do this before parsing json exception + # exception are ressource costly + if "{" in value: + geo_dict = geojson.loads(value) + return asShape(geo_dict) + elif use_wkb: + return wkb.loads(value, hex=True) + else: + return wkt.loads(value) + elif hasattr(value, "wkt"): + if isinstance(value, BaseGeometry): + return value + else: + return wkt.loads(value.wkt) + else: + raise TypeError( + "Write/create/search geo type must be wkt/geojson " + "string or must respond to wkt" + ) |
