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; # """