Skip to main content

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
********

Project details


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)

Uploaded Source

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

Hashes for parsewkt-0.1dev.tar.gz
Algorithm Hash digest
SHA256 25e9c446632d9fc6b209256ba780eff0b25c9a98691dc7dcea03a7cfe2e50b3a
MD5 dfde68104681c841e16dd73a76994b11
BLAKE2b-256 458acca913105036937bcf9f697a763d0146ed338caf417bf050c3eee41f3cd7

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page