A library for generating OpenStreetMap's Overpass QL queries from Python objects.
Project description
Overpass Forge: a query builder for the Overpass query language
An object-oriented model to build Overpass queries in Python. Primarly intended to generate complex queries in Python. Checkout the documentation.
Install
Requires Python 3.10 or higher. Install with:
pip install overpassforge
Example
from overpassforge import Areas, Nodes, Ways, build
# Find both cinema nodes and ways in Bonn, which
# are at most 100m away from bus stop nodes
bus_stops = Nodes(within=Areas(name="Bonn"), highway="bus_stop")
ways = Ways(around=(bus_stops, 100.0)).where(amenity="cinema")
nodes = Nodes(around=(bus_stops, 100.0)).where(amenity="cinema")
result = ways + nodes
result.out("meta")
query = build(result, beautify=True)
print(query)
Output:
area["name"="Bonn"]->.set_0;
node(area.set_0)["highway"="bus_stop"]->.set_1;
(
way(around.set_1:100.0)["amenity"="cinema"];
node(around.set_1:100.0)["amenity"="cinema"];
);
out meta;
Features
List of currently implemented features, based on the Overpass QL wiki.
- Settings: all except augmented-difference between dates (adiff)
- Block statements
- union, difference, intersection
- For-each loop (foreach)
- Block statements if, for, complete, retro, compare
- Standalone statements
- out
- Item (implicit)
- Recurse up (<) and down (>)
- Recurse up relations (<<) and down (>>)
- Query for areas (is_in)
- Statements timeline, local, convert, make
- The Query Statement (node, way, rel, area only)
- The Query Filter
- Map way/relation to area (map_to_area)
- Filters
- By tag (has-kv)
- Bounding box
- Recurse (n, w, r, bn, bw, br)
- Recurse (way_cnt, way_link)
- By input set (.setname)
- By element id
- Relative to other elements (around)
- By polygon (poly)
- newer
- By date of change (changed)
- By user (user, uid)
- By area (area)
- Area pivot (pivot)
- Conditional query filter (if:)
Contributing
Setup the development environment
Windows
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -r requirements.txt
pip install -e .
Linux
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
pip install -e .
Unit tests
Run all the tests with:
pytest
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
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
File details
Details for the file overpassforge-0.4.4.tar.gz.
File metadata
- Download URL: overpassforge-0.4.4.tar.gz
- Upload date:
- Size: 30.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
675eaa53fa7fdee5ab1b24073a9e24f2aa451558914a0d9a8b737fa6ec1f1afd
|
|
| MD5 |
1345206cff5c567a52a347e280b0b8ba
|
|
| BLAKE2b-256 |
c19d7ede9fafbbdb560fc57248ccf8eb2ceb8445ed483016f9fe008ffe7002de
|
File details
Details for the file overpassforge-0.4.4-py3-none-any.whl.
File metadata
- Download URL: overpassforge-0.4.4-py3-none-any.whl
- Upload date:
- Size: 18.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b89918a5ddb0da5477c1b670164601bfa7595eea37ce9fb77d8b55ebcce30993
|
|
| MD5 |
765825318b547a5d952abb2a0591790d
|
|
| BLAKE2b-256 |
2a1f73f97bc4c181351720e5d51c0bcf3f165bb73933b3bc13246298bfcc389f
|