Eine Organisation aus dem humanitären Umfeld mappt umfangreich OpenStreetMap-Daten in Krisenregionen. Neben den üblichen OSM-Daten werden aber auch speziellere Daten erfasst. Diese Daten sollen helfen, Katastrophenfolgen zu mindern, sind aber wegen des Schutzes der Privatsphäre nicht zur Veröffentlichung geeignet.
Ein wesentliches Ziel dieses Projektes war es, neben der normalen Datenerfassung für OSM auch parallel die Speicherung von Zusatzeigenschaften in einer separaten Datenbank zu ermöglichen. Dies erforderte sowohl Modifikationen am Editor (JOSM) als auch die Implementation eines passenden Datenbank-Backends.
Im speziellen Fall ging es hauptsächlich um die Erfassung von Gebäuden. Die Gebäude selbst sollen in der normalen OpenStreetMap-Datenbank gemappt werden. Daten, die Einwohner der Gebäude betreffen, sollen jedoch nicht öffentlich abgespeichert werden.
Wir haben das Problem mit einem speziellen Plugin für den JOSM-Editor gelöst. Nach dem normalen Laden der OpenStreetMap-Daten vom OSM-Server werden die OSM-IDs dieser Objekte an den zweiten Server geschickt. Von dort werden dann die zusätzlichen Attribute geholt.
Die Arbeit im JOSM verläuft ganz normal; der Benutzer merkt nicht, dass die Daten von zwei verschiedenen Servern kommen. Beim Abspeichern werden die Daten wieder aufgeteilt; ein Teil wird zu OSM hochgeladen, ein anderer zum eigenen Server.
Das JOSM-Plugin ist in Java implementiert und klinkt sich in die Upload- und Download-Routinen des Editors ein. Es ist Open Source und unter dem Namen "Separate Data Store" im JOSM-Repository verfügbar.
Das Backend des separataen Datenspeichers wurde mit Ruby und Rails realisiert. Es bietet ein XML-REST-Interface und unterstützt alle Standard-CRUD-Operationen.
Als Erweiterung zur Basisapplikation wurde ein Web-Frontend entwickelt, mit dem der Inhalt der separaten Datenbank editiert werden kann. Dieser Teil der Applikation ist unabhängig von OpenStreetMap. Über eine Kartenapplikation wählt der Benutzer seinen Bereich aus. Die in OSM enthaltenen Gebäude werden hervorgehoben. Nun kann der Benutzer eines der Gebäude auswählen, um die separaten Tags zu diesem Objekt zu sehen oder zu bearbeiten.