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.
Install
Requires Python 3.10 or higher. Install with:
pip install overpassforge
Example
from overpassforge import Areas, Nodes, Ways, build, beautify
# 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)
print(beautify(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
- 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
python -m pip install -r requirements.txt
Linux
python -m venv .venv
source .venv/bin/activate
python -m pip install -r requirements.txt
Unit tests
Run all the tests with:
python -m pytest ./tests
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
overpassforge-0.1.0.tar.gz
(23.9 kB
view details)
Built Distribution
File details
Details for the file overpassforge-0.1.0.tar.gz
.
File metadata
- Download URL: overpassforge-0.1.0.tar.gz
- Upload date:
- Size: 23.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a6e77366e346e3858edd4af1cd8b9aca8b7cef5e9511f05c1da9a81a39416652 |
|
MD5 | f00436f668af634161d75faac6a6b0a9 |
|
BLAKE2b-256 | 7fab95836be186a8c42ad43b3e087bebf5d5b702c0f4bcae28432a6040c1a156 |
File details
Details for the file overpassforge-0.1.0-py3-none-any.whl
.
File metadata
- Download URL: overpassforge-0.1.0-py3-none-any.whl
- Upload date:
- Size: 16.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b9c922773ee14e099143d52e65e41d5305f9c68f04480782cde840a63f07e9b7 |
|
MD5 | 1ae78f28c2cb11f5aa740f422fb16bc6 |
|
BLAKE2b-256 | ba89c046b5a03b931e96a9fc08edf1cd82a670dcfcdb2191500238f7eadcf7c0 |