Parse OSM and Overpass JSON
Project description
osm2geojson
Parse OSM and Overpass JSON with python. This library is under development!
Usage
Install this package with pip:
$ pip install osm2geojson
If you want to convert OSM xml or Overpass json/xml to Geojson you can import this lib and use one of 4 methods:
json2shapes(dict json_from_overpass)
- to convert Overpass json to *Shape-objectsxml2shapes(str xml_from_osm)
- to convert OSM xml or Overpass xml to *Shape-objectsjson2geojson(dict json_from_overpass)
- to convert Overpass json to Geojsonxml2geojson(str xml_from_osm)
- to convert OSM xml or Overpass xml to Geojson
Additional parameters for all functions:
filter_used_refs
- (default:True
) defines geometry filtration strategy (will return all geometry if set asFalse
)log_level
- (default:'ERROR'
) controlls logging level (will print all logs if set as'INFO'
). More details here
Other handy methods:
overpass_call(str query)
- runs query to overpass-api.de server (retries 5 times in case of error).shape_to_feature(Shape shape, dict properties)
- Converts Shape-object to GeoJSON with passed properties.
*Shape-object - for convinience created simple dict to save Shapely object (geometry) and OSM-properties. Structure of this object:
shape_obj = {
'shape': Point | LineString | Polygon ...,
'properties': {
'type': 'relation' | 'node' ...,
'tags': { ... },
...
}
}
Examples
Convert OSM-xml to Geojson:
import codecs
import osm2geojson
with codecs.open('file.osm', 'r', encoding='utf-8') as data:
xml = data.read()
geojson = osm2geojson.xml2geojson(xml, filter_used_refs=False, log_level='INFO')
# >> { "type": "FeatureCollection", "features": [ ... ] }
Convert OSM-json to Shape-objects:
import codecs
import osm2geojson
with codecs.open('file.json', 'r', encoding='utf-8') as data:
json = data.read()
shapes_with_props = osm2geojson.json2shapes(json)
# >> [ { "shape": <Shapely-object>, "properties": {...} }, ... ]
Development
Clone project with submodules
$ git clone --recurse-submodules https://github.com/aspectumapp/osm2geojson.git
Setup package
$ python setup.py develop
Run tests
$ python -m unittest tests
Run single test
$ python tests/main.py TestOsm2GeoJsonMethods.test_barrier_wall
Update osm-polygon-features to last version (if you want last version)
$ ./update-osm-polygon-features.sh
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.