OSDN Git Service

data write directory change. shapely library include.
[openembroidery/EmbroideryOutputExtensionForInkscape.git] / embroider / shapely / wkb.py
diff --git a/embroider/shapely/wkb.py b/embroider/shapely/wkb.py
new file mode 100644 (file)
index 0000000..a962412
--- /dev/null
@@ -0,0 +1,37 @@
+"""Load/dump geometries using the well-known binary (WKB) format
+"""
+
+from shapely import geos
+
+# Pickle-like convenience functions
+
+def loads(data, hex=False):
+    """Load a geometry from a WKB byte string, or hex-encoded string if
+    ``hex=True``.
+    """
+    reader = geos.WKBReader(geos.lgeos)
+    if hex:
+        return reader.read_hex(data)
+    else:
+        return reader.read(data)
+
+def load(fp, hex=False):
+    """Load a geometry from an open file."""
+    data = fp.read()
+    return loads(data, hex=hex)
+
+def dumps(ob, hex=False, **kw):
+    """Dump a WKB representation of a geometry to a byte string, or a
+    hex-encoded string if ``hex=True``.
+
+    See available keyword output settings in ``shapely.geos.WKBWriter``."""
+    writer = geos.WKBWriter(geos.lgeos, **kw)
+    if hex:
+        return writer.write_hex(ob)
+    else:
+        return writer.write(ob)
+
+
+def dump(ob, fp, hex=False, **kw):
+    """Dump a geometry to an open file."""
+    fp.write(dumps(ob, hex=hex, **kw))