overpass_old/README.md
2026-04-21 17:36:23 +02:00

63 lines
2.1 KiB
Markdown

# README
Ich habe euch den `GeoService` demonstriert. Das ist ein Docker-basierter Mikroservice, welcher Fragen wie
'Zeige mir basierend auf meinem Standort die 3 per Auto nächstgelegenen Restaurants' oder 'Wieviele Schwimmbäder
befinden sich im Umkreis von 3 Kilometer um meinen jetzigen Standort' etc.
Um den Service zu betreiben braucht es (valide) Daten. Diese kann man kaufen oder sich selbst bauen. Wir gehen hier
den zweiten Weg :-). Das Ziel für die nächsten 3-4 Übungsstunden ist ein kleines Projekt, welches uns diese Basisdaten
mithilfe von OpenStreetMap (Overpass) für die ganze Schweiz baut.
Es geht weniger darum, ein super End-Produkt zu bauen (also inhaltlich), als vielmehr darum viele in diesem Semester
gelernte Konzepte und Techniken zu integrieren und an einem praxisnahen Beispiel miteinander zu erarbeiten und zu
festigen.
Dies sind u.U.:
* Zugriff mit Python auf eine API (Overpass)
* Speichern der Projektsschritte mit git auf Gitea (commits)
* sauberer Python-Code mit docstrings, typehints und logging
* Speichern der Resultate in eine sqlite-Datenbank
* Parallelisierung (multithreading, multiprocessing) von Abfragen auf Overpass-API
* Dekorator-Pattern (für Zeitmessung)
* Schreiben von Pytests mit und ohne Mocks
**Ziel:**
Valide Daten für ausgewählte POI's (Points Of Interests) zu produzieren, z.B.
```json
{
"generated_at": "2026-03-09T23:03:40.107307+00:00",
"poi_type": "rail_station",
"count": 2511,
"pois": [
{
"id": "node/2068758717",
"type": "rail_station",
"name": "St. Urban Ziegelei",
"lat": 47.2271478,
"lon": 7.8361018,
"tags": {
"name": "St. Urban Ziegelei"
}
},
{
"id": "node/2068760081",
"type": "rail_station",
"name": "St. Urban",
"lat": 47.2317566,
"lon": 7.8359882,
"tags": {
"name": "St. Urban"
}
}
]
}
```
Die Daten beziehen wir von `https://overpass-turbo.eu/`. Overpass bietet nebst diesem frontend-basierten Ansatz auch eine
API-Schnittstelle (POST- und GET-Requests) an, welche wir nutzen können (`OVERPASS_URL=https://overpass-api.de/api/interpreter`).
Viel Spass im Projekt!