(For the English documentation, see README_en.md)
Baumradar ist ein Open-Data-basiertes Werkzeug, mit dem Bäume in der direkten Umgebung erkundet und bei der Fortbewegung durch die Stadt gezielt gemieden werden können – besonders hilfreich bei einer Baumpollen-Allergie (z. B. gegen Frühblüher). Im Hintergrund: eine Open-Data-Geodaten-Pipeline, die Baumkataster aus derzeit 10 Städten vereinheitlicht, räumlich clustert und signiert verteilt.
Im persönlichen Allergie-Profil lassen sich gezielt die Baumgattungen auswählen, die allergische Reaktionen auslösen (z. B. Birke, Hasel, Esche). Die App unterscheidet dabei zwischen zwei Stufen:
- „Umfahren 🚫": Diese Bäume werden beim Routing berücksichtigt – die App berechnet Routen, die diese Baumgattungen möglichst meiden.
- „Warnung
⚠️ ": Für diese Bäume registriert Baumradar im Hintergrund Geofence-Zonen bei Android. Eine Push-Benachrichtigung direkt auf den Sperrbildschirm erscheint, sobald sich der Standort einem solchen Baum nähert – auch bei geschlossener App. Dafür ist keine permanent laufende Hintergrund-App nötig, Android überwacht die Zonen energieeffizient über die Play Services.
„Was ist das da für ein Baum?" – Der Erkundungsmodus (Lupen-Icon unten rechts) zeigt alle Bäume im Umkreis von 100 Metern an, unabhängig vom Allergie-Profil. Jeder Marker auf der Karte zeigt den deutschen Gattungsnamen und, falls bekannt, die spezifische Art.
Auf dem Karten-Bildschirm blendet Baumradar transparente Pfeile und Entfernungsangaben ein. Diese zeigen in Echtzeit die Richtung und Distanz zu den nächstgelegenen markierten Bäumen (die nächsten 15). Die Pfeile reagieren auf den Kompass (Gyroskop) und drehen sich mit, sodass die Himmelsrichtung eines Baumes immer sichtbar ist – auch außerhalb des Kartenausschnitts.
Baumradar berechnet Routen, die Allergen-Hotspots aktiv umfahren:
- Adressen werden über den Nominatim Geocoder (OpenStreetMap) in Koordinaten aufgelöst.
- Vom öffentlichen OSRM Routing Server werden bis zu 3 Routen-Alternativen angefragt.
- Alle Geofence-Zonen der als „Umfahren" markierten Baumarten werden aus der lokalen Datenbank geladen.
- Jede Route wird auf Kollisionen mit diesen Zonen geprüft (siehe Kollisionserkennung).
- Falls alle Alternativen Hotspots schneiden, werden automatisch Umfahrungs-Wegpunkte berechnet und eine neue Route angefragt, die die Zonen physisch umgeht.
- Die allergenfreie Route wird als „Allergiefrei 🟢" markiert. Routen mit Hotspots zeigen die Anzahl der Kollisionen an (z. B. „Route 2
⚠️ · 3 Hotspots").
Die berechnete Route kann per GPX-Export geteilt werden, z. B. an eine Navigations-App.
Unterstützte Städte:
| 🇦🇹 Österreich | 🇩🇪 Deutschland | 🇨🇭 Schweiz |
|---|---|---|
| Wien, Graz, Innsbruck, Linz | Berlin, Hamburg, Freiburg, Dortmund | Zürich, Basel |
Beim ersten Start wird mindestens eine Stadt ausgewählt. Bei Reisen in eine neue Stadt schlägt die App automatisch vor, die lokalen Baumdaten herunterzuladen.
Für jede Stadt wird eine komprimierte, aufbereitete SQLite-Datenbank heruntergeladen. Kartenanzeige, Erkundungsmodus und Hintergrund-Warnungen funktionieren danach komplett ohne Internetverbindung. Nur für die Routenberechnung (OSRM) wird kurzzeitig eine Verbindung benötigt.
Die Daten werden vom Backend verarbeitet und kryptografisch mit Ed25519 signiert. Bevor die App eine heruntergeladene Datenbank verwendet, wird die Signatur gegen einen fest eingebetteten Public Key geprüft. Erst bei erfolgreicher Prüfung werden die Daten importiert – damit ist die Authentizität und Unverfälschtheit der Daten sichergestellt.
- Die aktuellste
Baumradar.apkaus den Releases herunterladen. - Auf dem Smartphone die Installation aus „Unbekannten Quellen" erlauben.
- APK öffnen und den Anweisungen folgen.
- Beim ersten Start: Mindestens eine Stadt auswählen und deren Daten herunterladen.
- Berechtigungen für Standort (inkl. Hintergrund-Standort für Geofence-Warnungen) und Benachrichtigungen erteilen.
git clone https://github.com/matthili/BaumRadar.git
cd BaumRadar
./gradlew assembleDebug
# Die APK findet sich unter app/build/outputs/apk/debug/Voraussetzungen: Android Studio (aktuelle Version), JDK 17, Android SDK 34.
Beim allerersten Start erscheint ein Städte-Assistent. Hier werden per Schalter die gewünschten Städte ausgewählt. Die App zeigt einen Lade-Fortschritt inkl. Signatur-Verifizierung an. Danach geht es mit „Weiter" zum Hauptbildschirm.
Die App hat am unteren Rand eine Tab-Leiste mit drei Bereichen:
| Tab | Funktion |
|---|---|
| 🗺️ Karte | OpenStreetMap-Karte mit Standort, Allergie-Bäumen (gelbe Pins), Geofence-Zonen (rote Kreise), berechneten Routen. Buttons: 📍 Zentrieren, |
| 👤 Allergie-Profil | Durchsuchbare, nach Gattung gruppierte Liste aller Baumarten. Für jede Art: „Warnung |
| 🏙️ Städte | Heruntergeladene Städte verwalten: weitere laden, bestehende löschen, zur Kartenposition springen. |
Ein langer Druck auf eine beliebige Stelle der Karte öffnet ein Kontextmenü:
- Virtueller Standort setzen: Für Tests oder Vorausplanung – die App verhält sich, als wäre der Standort an diesem Punkt.
- Route HIER starten/beenden: Setzt Start- bzw. Endpunkt für eine Route.
Baumradar besteht aus zwei Hauptteilen und einer offenen Datenstruktur:
| Dokument | Beschreibung |
|---|---|
| Android App Architektur | Kotlin-App, Jetpack Compose UI, Room-Datenbanken, Routing-System, Hintergrund-Geofences |
| Backend / Data-Processor | Java-Backend: Open Data einlesen, übersetzen, clustern, in Chunks splitten, signieren |
| Datenstruktur & Third-Party | Offene, verifizierte Baumdaten für eigene Apps (iOS, Web) nutzen – mit Code-Beispielen |
📊 Alle Architektur-Diagramme anzeigen
| Diagramm | Beschreibung |
|---|---|
| Systemarchitektur | Gesamtübersicht aller Systemkomponenten |
| Daten-Ingestion | Wie Open Data eingelesen und verarbeitet wird |
| App-Synchronisation | Download, Signaturprüfung und DB-Merge |
| Routing & Kollision | Allergie-Routing mit Geofence-Kollisionserkennung |
| Backend-Klassen | UML-Klassendiagramm des Data-Processors |
| Kollisions-Aktivität | Aktivitätsdiagramm der Kollisionserkennung |
| Signaturprüfung | Ed25519-Signatur-Verifizierungsprozess |
| Update-Prozess | Ablauf eines Daten-Updates |
Dieses Projekt ist unter der MIT License veröffentlicht. Siehe LICENSE für weitere Details.






