63 lines
2.1 KiB
Markdown
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!
|