WKT Parser
Project description
The WKT Parser was gernerated using grako https://pypi-hypernode.com/pypi/grako
The ebnf file is the translation of http://svn.osgeo.org/postgis/trunk/doc/bnf-wkt.txt
The bnf to ebnf conversion was guided by http://stackoverflow.com/questions/14922242/how-to-convert-bnf-to-ebnf
The generation of parse.py is as easy as: /path/to/grako Wkt.ebnf -o parse.py
parsewkt is continually tested with *Travis CI*
.. image:: https://api.travis-ci.org/cleder/parsewkt.png
:target: https://travis-ci.org/cleder/parsewkt
.. image:: https://coveralls.io/repos/cleder/parsewkt/badge.png?branch=master
:target: https://coveralls.io/r/cleder/parsewkt?branch=master
Implementation Status
=====================
Currently implemented is parsing from WKT to a __geo_interface__ compliant
dictionary for the following types:
- POINT
- LINESTRING
- POLYGON
- MULTIPOINT
- MULTILINESTRING
- MULTIPOLYGON
- GEOMETRYCOLLECTION
The parser can parse the following types but they are currently not
translated into python objects:
- COMPOUNDCURVE
- CIRCULARSTRING
- CURVEPOLYGON
- MULTICURVE
- POLYHEDRALSURFACE
- TIN
- TRIANGLE
Usage
======
>>> from parsewkt import from_wkt
>>> gc = """GEOMETRYCOLLECTION(
... POINT(99 98),
... LINESTRING(1 1, 3 3),
... POLYGON((0 0, 0 1, 1 1, 0 0)),
... POLYGON((0 0, 0 9, 9 9, 9 0, 0 0), (5 5, 5 6, 6 6, 5 5)),
... MULTIPOLYGON(((0 0, 0 9, 9 9, 9 0, 0 0), (5 5, 5 6, 6 6, 5 5)))
... )"""
>>> from_wkt(gc)
{'type': 'GeometryCollection', 'geometries': ({'type': 'Point', 'coordinates': (99.0, 98.0)}, {'type': 'LineString', 'coordinates': ((1.0, 1.0), (3.0, 3.0))}, {'type': 'Polygon', 'coordinates': (((0.0, 0.0), (0.0, 1.0), (1.0, 1.0), (0.0, 0.0)),)}, {'type': 'Polygon', 'coordinates': (((0.0, 0.0), (0.0, 9.0), (9.0, 9.0), (9.0, 0.0), (0.0, 0.0)), ((5.0, 5.0), (5.0, 6.0), (6.0, 6.0), (5.0, 5.0)))}, {'type': 'MultiPolygon', 'coordinates': ((((0.0, 0.0), (0.0, 9.0), (9.0, 9.0), (9.0, 0.0), (0.0, 0.0)), ((5.0, 5.0), (5.0, 6.0), (6.0, 6.0), (5.0, 5.0))),)})}
>>> tri = """TRIANGLE((0 0 0,0 1 0,1 1 0,0 0 0))"""
>>> from_wkt(tri)
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/home/.../parsewkt/parsewkt/wkt.py", line 307, in from_wkt
raise NotImplementedError
NotImplementedError
Download
********
The ebnf file is the translation of http://svn.osgeo.org/postgis/trunk/doc/bnf-wkt.txt
The bnf to ebnf conversion was guided by http://stackoverflow.com/questions/14922242/how-to-convert-bnf-to-ebnf
The generation of parse.py is as easy as: /path/to/grako Wkt.ebnf -o parse.py
parsewkt is continually tested with *Travis CI*
.. image:: https://api.travis-ci.org/cleder/parsewkt.png
:target: https://travis-ci.org/cleder/parsewkt
.. image:: https://coveralls.io/repos/cleder/parsewkt/badge.png?branch=master
:target: https://coveralls.io/r/cleder/parsewkt?branch=master
Implementation Status
=====================
Currently implemented is parsing from WKT to a __geo_interface__ compliant
dictionary for the following types:
- POINT
- LINESTRING
- POLYGON
- MULTIPOINT
- MULTILINESTRING
- MULTIPOLYGON
- GEOMETRYCOLLECTION
The parser can parse the following types but they are currently not
translated into python objects:
- COMPOUNDCURVE
- CIRCULARSTRING
- CURVEPOLYGON
- MULTICURVE
- POLYHEDRALSURFACE
- TIN
- TRIANGLE
Usage
======
>>> from parsewkt import from_wkt
>>> gc = """GEOMETRYCOLLECTION(
... POINT(99 98),
... LINESTRING(1 1, 3 3),
... POLYGON((0 0, 0 1, 1 1, 0 0)),
... POLYGON((0 0, 0 9, 9 9, 9 0, 0 0), (5 5, 5 6, 6 6, 5 5)),
... MULTIPOLYGON(((0 0, 0 9, 9 9, 9 0, 0 0), (5 5, 5 6, 6 6, 5 5)))
... )"""
>>> from_wkt(gc)
{'type': 'GeometryCollection', 'geometries': ({'type': 'Point', 'coordinates': (99.0, 98.0)}, {'type': 'LineString', 'coordinates': ((1.0, 1.0), (3.0, 3.0))}, {'type': 'Polygon', 'coordinates': (((0.0, 0.0), (0.0, 1.0), (1.0, 1.0), (0.0, 0.0)),)}, {'type': 'Polygon', 'coordinates': (((0.0, 0.0), (0.0, 9.0), (9.0, 9.0), (9.0, 0.0), (0.0, 0.0)), ((5.0, 5.0), (5.0, 6.0), (6.0, 6.0), (5.0, 5.0)))}, {'type': 'MultiPolygon', 'coordinates': ((((0.0, 0.0), (0.0, 9.0), (9.0, 9.0), (9.0, 0.0), (0.0, 0.0)), ((5.0, 5.0), (5.0, 6.0), (6.0, 6.0), (5.0, 5.0))),)})}
>>> tri = """TRIANGLE((0 0 0,0 1 0,1 1 0,0 0 0))"""
>>> from_wkt(tri)
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/home/.../parsewkt/parsewkt/wkt.py", line 307, in from_wkt
raise NotImplementedError
NotImplementedError
Download
********
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
parsewkt-0.1dev.tar.gz
(11.9 kB
view details)
File details
Details for the file parsewkt-0.1dev.tar.gz
.
File metadata
- Download URL: parsewkt-0.1dev.tar.gz
- Upload date:
- Size: 11.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 25e9c446632d9fc6b209256ba780eff0b25c9a98691dc7dcea03a7cfe2e50b3a |
|
MD5 | dfde68104681c841e16dd73a76994b11 |
|
BLAKE2b-256 | 458acca913105036937bcf9f697a763d0146ed338caf417bf050c3eee41f3cd7 |