72 lines
2.2 KiB
Python
72 lines
2.2 KiB
Python
from main_start import QUERY
|
|
from overpass import fetch_overpass
|
|
import requests
|
|
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Konfiguration
|
|
# ---------------------------------------------------------------------------
|
|
|
|
BBOXEN = {
|
|
"davos": (46.72, 9.70, 46.92, 10.00),
|
|
"schweiz": (45.8, 5.9, 47.8, 10.5),
|
|
}
|
|
|
|
QUERY = """
|
|
[out:json][timeout:2][maxsize:500000];
|
|
(
|
|
node["aerialway"="station"]({bbox});
|
|
way["aerialway"="station"]({bbox});
|
|
node["railway"="funicular"]({bbox});
|
|
way["railway"="funicular"]({bbox});
|
|
node["railway"="station"]["funicular"="yes"]({bbox});
|
|
);
|
|
out center body;
|
|
"""
|
|
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Hauptlogik
|
|
# ---------------------------------------------------------------------------
|
|
def main() -> None:
|
|
|
|
for name, bbox in BBOXEN.items():
|
|
try:
|
|
result = fetch_overpass(overpass_query=QUERY, bbox=bbox)
|
|
except RuntimeError as e:
|
|
print(f"API-Fehler bei '{name}': {e}")
|
|
continue
|
|
except requests.Timeout:
|
|
print(f"Timeout bei '{name}' — bbox zu gross oder Server überlastet")
|
|
continue
|
|
|
|
elements = result.get("elements", [])
|
|
print(elements)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|
|
|
|
|
|
# Was ist passiert?
|
|
# * Wir haben die Logik in ein eigenes Modul 'overpass' verfrachtet
|
|
# * Wir haben die Funktion von einer reinen Bergbahn-Logik befreit und für alle möglichen Overpass-Queries bereit
|
|
# gemacht (generalisiert)
|
|
|
|
# TASK:
|
|
|
|
# * Jetzt wäre doch ein guter Zeitpunkt um anstelle der print-Statements das Logging einzubauen -> verwendet das
|
|
# Logging-Modul in Python und ersetzt die print-statements!
|
|
# * Hier haben wir einen weiteren Query für restaurants -> bildet ein neues Modul 'queries' und baut dort sowohl den
|
|
# Bergbahn- als auch den Restaurant-Query ein:
|
|
#
|
|
# RESTAURANT_QUERY = """
|
|
# [out:json][timeout:15][maxsize:500000];
|
|
# (
|
|
# node["amenity"="restaurant"]({bbox});
|
|
# way["amenity"="restaurant"]({bbox});
|
|
# node["amenity"="cafe"]({bbox});
|
|
# way["amenity"="cafe"]({bbox});
|
|
# );
|
|
# out center body;
|
|
# """ |