commit bac22f02fe335c44ff8a09485e934df88ac18106 Author: Marco Schmid Date: Tue Apr 21 17:36:23 2026 +0200 first commit diff --git a/README.md b/README.md new file mode 100644 index 0000000..0f4d0ac --- /dev/null +++ b/README.md @@ -0,0 +1,62 @@ +# 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!