Task_2: adding docstrings and typehints, raise errors
This commit is contained in:
parent
eb9aecfeeb
commit
a4d3e05253
25
TASK.md
25
TASK.md
@ -1,21 +1,6 @@
|
|||||||
# TASK:
|
# TASK 2:
|
||||||
|
|
||||||
Overpass-Query: -> wir wollen diesen in eine Python-Funktion `fetch_bergbahnen() in `main.py` einbauen
|
* Fügt der aktuellen Funktion einen aussagekräftigen docstrings und typehints hinzu
|
||||||
|
* Versucht ein Error-Management mit in die Funktion einzubauen. Benutzt dazu eine eigene `OverpassApiError`-Klasse.
|
||||||
```
|
-> Überlegt: Was könnte nicht klappen? Wo könnte es Fehler geben?
|
||||||
[out:json][timeout:60];
|
* Versucht mal bbox auf (45.8, 5.9, 47.8, 10.5) zu setzen und die Funktion aufzurufen. Klappt das?
|
||||||
(
|
|
||||||
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
|
|
||||||
27
main.py
27
main.py
@ -1,8 +1,33 @@
|
|||||||
|
import requests
|
||||||
from pprint import pprint
|
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:
|
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=5,
|
||||||
|
headers={"User-Agent": "CDS Exercise"},
|
||||||
|
)
|
||||||
|
return resp.json()
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
|||||||
0
requirements.txt
Normal file
0
requirements.txt
Normal file
Loading…
x
Reference in New Issue
Block a user