summaryrefslogtreecommitdiff
path: root/base_geoengine/geo_helper
diff options
context:
space:
mode:
authorRichard Sassine <richardsassine@tutanota.com>2021-05-31 19:22:23 +0300
committerRichard Sassine <richardsassine@tutanota.com>2021-05-31 19:22:23 +0300
commit3a8776ee0342f47a57bcc9365499ebd5d3d7ee1c (patch)
tree9515fcef8e53992a9bbbcdc7950e1dd596983166 /base_geoengine/geo_helper
parent9d3eeeb5c7d4055b34bc0768387952850ed78668 (diff)
added geoengine
Diffstat (limited to 'base_geoengine/geo_helper')
-rw-r--r--base_geoengine/geo_helper/__init__.py1
-rw-r--r--base_geoengine/geo_helper/__pycache__/__init__.cpython-36.pycbin0 -> 211 bytes
-rw-r--r--base_geoengine/geo_helper/__pycache__/geo_convertion_helper.cpython-36.pycbin0 -> 1046 bytes
-rw-r--r--base_geoengine/geo_helper/geo_convertion_helper.py38
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
new file mode 100644
index 0000000..f8f34ea
--- /dev/null
+++ b/base_geoengine/geo_helper/__pycache__/__init__.cpython-36.pyc
Binary files differ
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
new file mode 100644
index 0000000..6cba44d
--- /dev/null
+++ b/base_geoengine/geo_helper/__pycache__/geo_convertion_helper.cpython-36.pyc
Binary files differ
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"
+ )