From e2bbbf8e2f95ae18a0d33831998fce5214c818c3 Mon Sep 17 00:00:00 2001 From: Marco Schmid Date: Tue, 21 Apr 2026 18:21:03 +0200 Subject: [PATCH] Task 2: adding docstrings and typehints, raise errors --- main.py | 50 ++++++++++++++++++++++++++++++++------------------ 1 file changed, 32 insertions(+), 18 deletions(-) diff --git a/main.py b/main.py index e43cfef..12747f3 100644 --- a/main.py +++ b/main.py @@ -1,8 +1,34 @@ +import requests from pprint import pprint +OVERPASS_URL = "https://overpass-api.de/api/interpreter" + +BERGBAHN_QUERY = """ +[out:json][timeout:3][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; +""" + + def fetch_bergbahnen(bbox) -> dict: - return {} + bbox_str = ",".join(map(str, bbox)) + query = BERGBAHN_QUERY.format(bbox=bbox_str) + + resp = requests.post( + OVERPASS_URL, + data={"data": query}, + timeout=90, + headers={"User-Agent": "GeoService/1.0 (poi-generator)"}, + ) + return resp.json() + if __name__ == "__main__": @@ -13,20 +39,8 @@ if __name__ == "__main__": # TASK: - # Overpass-Query: -> wir wollen diesen in eine Python-Funktion 'fetch_bergbahnen()' einbauen - - # [out:json][timeout:60]; - # ( - # 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; - - # * Kopiert diesen auf `https://overpass-turbo.eu/` und führt ihn mal aus. - # * Spielt mit den Zoomstufen -> bbox - # * Versucht mehr über bbox herauszufinden (z.B. https://wiki.openstreetmap.org/wiki/Overpass_API) - # * Versucht eine einfache fetch_bergbahn() zu bauen, die API lautet "https://overpass-api.de/api/interpreter" - # Nutzt dazu die request-Library in Python, wo ihr post- und get-Requests bauen könnt \ No newline at end of file + # * Fügt der aktuellen Funktion einen aussagekräftigen docstrings und typehints hinzu + # * Versucht ein Error-Management mit aufzubauen. Werft einen 'RuntimeError'-Error, wenn etwas in der Funktion + # nicht klappt. + # -> Was könnte nicht klappen? + # * Versucht mal bbox auf (45.8, 5.9, 47.8, 10.5) zu setzen und die Funktion aufzurufen \ No newline at end of file