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'
) controls logging level (will print all logs if set as'INFO'
). More details herearea_keys
- (default:None
) defines which keys and values of an area should be saved from the list of OSM tags, seeareaKeys.json
for the defaultspolygon_features
- (default:None
) defines a whitelist/blacklist of features to be included in resulting polygons, seepolygon-features.json
for the defaultsraise_on_failure
- (default:False
) controls whether to throw an exception when geometry generation fails
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 convenience 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': { ... },
...
}
}
After installing via pip
, the module may also be used as a argparse
-based command-line script.
Either use the script name directly or call Python with the -m
option and the package name:
osm2geojson --help
python3 -m osm2geojson --help
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
ToDo
- Add tests and examples for cli tool
- Add actions related to cli tool (more info https://github.com/aspectumapp/osm2geojson/pull/32#issuecomment-1073386381)
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
File details
Details for the file osm2geojson-0.2.5.tar.gz
.
File metadata
- Download URL: osm2geojson-0.2.5.tar.gz
- Upload date:
- Size: 14.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.11.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f6348dd222e38246ac11789ef4410aa9a4b45bf4a6471c04fe011e6ce55aebc4 |
|
MD5 | e29a911d50d789f1450ce72177c1adc7 |
|
BLAKE2b-256 | 003969d52d7c51d3575d42aac959949269f6aa11632c4436115829b75f4192a3 |