A pure python parser and encoder for OGC GML Geometries.
Installation
$ pip install pygml
Features
Parse GML 3.1, 3.2, compact encoded GML 3.3 and GeoRSS geometries to a Geo Interface compliant class.
>>> import pygml >>> geom = pygml.parse(""" ... <gml:Point gml:id="ID" xmlns:gml="http://www.opengis.net/gml/3.2"> ... <gml:pos>1.0 1.0</gml:pos> ... </gml:Point> ... """) >>> print(geom) Geometry(geometry={'type': 'Point', 'coordinates': (1.0, 1.0)}) >>> print(geom.__geo_interface__) {'type': 'Point', 'coordinates': (1.0, 1.0)}
Conversely, it is possible to encode GeoJSON or Geo Interfaces to GML
>>> from pygml.v32 import encode_v32 >>> from lxml import etree >>> tree = encode_v32({'type': 'Point', 'coordinates': (1.0, 1.0)}, 'ID') >>> print(etree.tostring(tree, pretty_print=True).decode()) <gml:Point xmlns:gml="http://www.opengis.net/gml/3.2" srsName="urn:ogc:def:crs:OGC::CRS84" gml:id="ID"> <gml:pos>1.0 1.0</gml:pos> </gml:Point> >>>