Powerfull wrapper around OSM Overpass Turbo to query regions of any size and shape
pip install osmpy
List precooked queries
osmpy.list_queries()
name docstring
0 Amenities Location of amenities within a boundary
1 AmentiesCount Number of amenities per type within a boundary
2 RoadLength Length of road by roadtype within a boundary
Get all amenities in a boundary
import osmpy
from shapely import wkt
boundary = wkt.loads('POLYGON((-46.63 -23.54,-46.6 -23.54,-46.62 -23.55,-46.63 -23.55,-46.63 -23.54))')
osmpy.get('Amenities', boundary)
type id lat lon tags
0 node 661212030 -23.544739 -46.626160 {'amenity': 'fuel', 'name': 'Posto NGM'}
1 node 661212089 -23.547450 -46.626073 {'amenity': 'fuel', 'name': 'Posto Maserati', ...
2 node 745733280 -23.541411 -46.613930 {'addr:city': 'São Paulo', 'addr:housenumber':...
3 node 745733292 -23.542070 -46.614916 {'addr:city': 'São Paulo', 'addr:housenumber':...
4 node 889763809 -23.542558 -46.620360 {'addr:housenumber': '110/C9', 'addr:street': ...
.. ... ... ... ... ...
84 node 5663737625 -23.540027 -46.605425 {'access': 'yes', 'addr:city': 'São Paulo', 'a...
85 node 5990269247 -23.540650 -46.607532 {'addr:city': 'São Paulo', 'addr:housenumber':...
86 node 6621564995 -23.543880 -46.626414 {'access': 'yes', 'addr:city': 'São Paulo', 'a...
87 node 6625433725 -23.546727 -46.623956 {'access': 'yes', 'addr:city': 'São Paulo', 'a...
88 node 6625433753 -23.547111 -46.624790 {'access': 'yes', 'addr:city': 'São Paulo', 'a...
Total road length by road type
osmpy.get('RoadLength', boundary)
count length
highway
bus_stop 1 82.624
corridor 2 482.195
cycleway 1 134.197
footway 116 5473.419
living_street 3 422.378
path 4 735.539
pedestrian 3 90.327
platform 3 239.206
primary 28 2067.562
primary_link 12 1123.544
You can use your own query
## Use `{boundary}` as a placeholder.
query = """
[out:json];
node["amenity"](poly:"{boundary}");
out body geom;
"""
osmpy.get(query, boundary)
Create a precooked query
class YourPrecookedQuery(osmpy.queries.QueryType):
query = """
<OSM Overpass Turbo Query>
"""
docstring = """
<Query description>
"""
def postprocess(self, df):
"""Post process API result
"""
return df['tags'].apply(pd.Series).groupby('amenity').sum()
osmpy.get(YourPrecookedQuery, boundary)
:point_right: Leave an issue or PR if you want to add a new query to the package
Credits
Free software: MIT license
Function katana from @snorfalorpagus_.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
osmpy-0.2.0.tar.gz
(5.4 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
osmpy-0.2.0-py3-none-any.whl
(5.2 kB
view details)
File details
Details for the file osmpy-0.2.0.tar.gz.
File metadata
- Download URL: osmpy-0.2.0.tar.gz
- Upload date:
- Size: 5.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
poetry/1.1.4 CPython/3.7.9 Linux/4.14.193-113.317.amzn1.x86_64
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
35637c12667bfa90fa0eb5f59417a5c132464d121c36e5486459bf7978d74680
|
|
| MD5 |
fae892e3918aaebce9a4ff29c1fecfe3
|
|
| BLAKE2b-256 |
2bfac86a35726ade04e5e399430703952995f2da3369df41e3f209180a67cbac
|
File details
Details for the file osmpy-0.2.0-py3-none-any.whl.
File metadata
- Download URL: osmpy-0.2.0-py3-none-any.whl
- Upload date:
- Size: 5.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
poetry/1.1.4 CPython/3.7.9 Linux/4.14.193-113.317.amzn1.x86_64
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e0ef0cddb0b75bcbd86971c54d3ecda46bafe2cbc7eacbf1ed8dec9fba7ba0c1
|
|
| MD5 |
3c9bfeebe3b03857f1a98ced8c2c91bb
|
|
| BLAKE2b-256 |
c620e68e1adc72aa2e594b76dde13ff037dc467583f46ffed22de809c1d47bfb
|