Kalender Open Street Maps Anbindung
Was ist OSM?
Open Street Map ist eine open source Alternative für Karten, die ähnlich wie Wikipedia funktioniert: Jeder mit einem Account kann die Karte verändern (OpenStreetMap about).
Erstellen der Links zu Open Street Map
Die Seite https://www.openstreetmap.org/ hat keine Unterstützung für Räume. Dafür müssen andere Viewer wie IndoorEqual oder OSMApp genutzt werden. Wir nutzen IndoorEqual.
Erstellen der Links
Jeder Raum hat ein "ref", in den typischerweise die Raumerkennung eingetragen wird. Darüber kann man den Raum finden. Dazu besitzt jeder Raum eine einzigartige Id.
Beispielraum Exer / Salzdahlumer Straße:
indoor room
level 2
name 252 Hörsaal
ref WF-EX-2/252
room lecture
id 1435503585
---
indoor room
level 0
name Hörsal A026
ref A026
room lecture
id 1446092724Refs erhalten
Die Refs und Ids erhalten wir mit einem API Request an OverpassTurbo Query – eine Seite, die ermöglicht Queries über die OSM Daten laufen zu lassen.
Da manche Räume an unterschiedlichen Standorten gleich heißen, wird für jeden Standort eine eigene Query genutzt und die Daten in separaten Dateien gespeichert.
Links erstellen
IndoorEqual unterstützt nicht das Markieren von Räumen. Daher berechnen wir die Mitte des Raums und zentrieren die Kamera darauf.
Beispiel
20 = zoom, avgLat = durchschnittliche Latitude, avgLon = durchschnittliche Longitude, level = Etage
https://indoorequal.org/#map=20/${avgLat}/${avgLon}&level=${level}
OsmApp (Nicht mehr genutzt): Setzt man die Id in "https://osmapp.org/way/:id" ein, kommt man direkt zu dem Raum (z. B. WF-EX-2/252: https://osmapp.org/way/1435503585).
Eigene Räume erstellen
Welche Tools man nutzen kann und wie der aktuelle Status des Mappings ist, wird auf diesem Pad dokumentiert.
Es ist beim Mapping wichtig, dass die "ref" des Raums mit dem Namen übereinstimmen, der von der Ostfalia für die Stundenpläne gegeben wird.
Github Actions Workflow
Jeden Tag werden von einer GitHub Action über die Overpass API die Raumdaten angefragt und falls sie sich verändert haben, wird ein Pull-Request erstellt. Die Raumdaten sind im JSON-Format unter /server/assets/overpass_osm/{Standort}.json (WF, SZ, SUD, WOB) gespeichert. Der Workflow ruft das Skript /server/scripts/getRoomIds.sh auf.
Der Workflow sorgt also dafür, dass jeden Tag um 05:00 die OSM-Daten aktualisiert werden, also kann es bis zu 24 Stunden dauern, bis gelöschte Räume nicht mehr im Kalender verlinkt werden oder neu gemappte Räume im Kalender erscheinen.
