Hinweis: Entgegen dem Glauben einiger weniger, ist der OSM-Datenaustausch nur ein kleiner und unwesentlicher Bestandteil des Projektes FreieTonne. Wir fanden es nur eine schöne Sache, unsere Daten auch der OSM-Gemeinde zur Verfügung zu stellen.
Für OSM-Fanatiker haben wir hier eine Beschreibung erstellt, wann und wie wir mit der OSM-Datenbank kommunizieren. Folgende vier Programmteile sind dafür erstellt worden: 1. TAG-Editor und Automatisierung
Verzahnt mit unseren Symbol-Editor, können schnell und einfach TAGs zu jedem Symbol geschrieben werden. Dafür sind drei Bereiche für die Eingabe erstellt worden:
OSM-Identifikation Wichtige TAGs, welche für uns das eigentliche Symbol definieren. (Pflicht)
OSM-Vorschläge Weiterführende oder interessante Informationen für OSM (Optional)
OSM-Regeln Zusätzliche TAG-Kombinationen für ein Symbol, welche uns ermöglichen "Fremd-Tagging" zu erkennen, und mit bei uns aufnehmen.
Aus dem Ersten und Letzen werden automatisch Reglen erstellt, welche Nodes von OSM für uns interessant sind, und welches Symbol diese bei uns bekommen (siehe OSM-Import). Aus den ersten beiden werden auch Rules und Presets für andere Systeme/ Projekte automatisch generiert (Garmin-Renderer, JOSM-Vorlagen, JOSM-Symboldarstellung, usw.). Mit diesem System können innerhalb von Minuten, TAGs von vielen Seezeichen geändert werden, welche mit sofortiger Wirkung für alles eben benannte in Kraft treten.
2. OSM-Uplink & Del-Bot
Unser OSM-Uplink (ein Programmteil) liefert alle in der FreienTonne erstellten/ geänderten Daten an die OSM-API. Dabei kann es sich um neue, zu löschende oder zu bearbeitende Nodes handeln. Schauen wir uns im Detail an, welche Funktionen wann aufgerufen werden.
Löschen Wird ein Node über den Editor der FreienTonne gelöscht, so wird am Ende dieses Vorganges der OSM-Uplink gestartet, und a) löscht alle dem FT-Symbol enthaltenen TAGs des Nodes, und b) versucht ihn danach zu löschen. Sollte der Node ein Teil eines Ways oder Relation bei OSM sein, so verweigert die API die Löschung, wobei wir es dann auch bewenden lassen. Im nachhinein wird bei uns auch die OSM-ID zu unserer Position gelöscht. Wird diese Position reaktiviert, wird sie als neu für OSM angesehen (siehe "Erstellen").
Erstellen Der OSM-Uplink wird bei folgenden Aktionen gestartet, um einen neuen Node bei OSM zu erstellen: - Beim Übernehmen einer Position aus der temporären Datenbank (GPX-Upload). - Beim Übernehmen aller Positionen einer Person aus der temporären Datenbank (GPX Upload). - Beim Erstellen einer Position im FT-Editor. Es werden dann die im Symbol definierten TAGs zur Identifikation eingetragen, sowie evt. andere zusätzliche Tags (weiterführende oder FT unbekannte), wofür von uns jeweils eine Eingabemöglichkeit bereit gestellt wird. Sollten TAGs mit gleichem Key vorhanden sein, so werden diese überschrieben. Es gilt folgende Reihenfolge für die Gewichtung: 1. OSM-Identifikations-TAGs 2. Uns bekannte weiterführende TAGs 3. Uns unbekannte TAGs
Bearbeiten Ein Node in OSM wird von uns nur dann bearbeitet, wenn dies über unseren Editor geschieht. Dabei gelten die Regeln wie beim Erstellen, was die TAGs angeht. Bereits vorhandene uns unbekannte TAGs, die nicht überschrieben werden, werden übernommen.
Der Del-Bot wird in unregelmäßigen Abständen gestartet, und überprüft alle in der FreienTonne eingetragenen Positionen mit einer OSM-ID, ob diese in OSM gelöscht wurde. Die Prüfung achtet dabei nur auf den Ausgabe-Header der API "410 Gone", und löscht in diesem Fall die Position bei uns in der Datenbank, und die zugehörige OSM-ID.
Dieses kleine Meisterwerk, bestehend aus drei Programmteilen, beschäftigt sich nur damit, Daten von OSM in die FreieTonne zu befördern. Der OSM-Konverter und der FT-Import sind bereits auf den anderen Seiten des Bereiches OSM-Import beschrieben.
Das OSM-Update, ist ein drittes Programm, welches für einen kompletten Konvertierungs- und Import-Vorgang benötigten Dateien sammelt und entsprechende Programme startet. Der Vorgang sieht im wie folgt aus:
OSM / OSC Daten Es können OSC oder OSM Daten als gz gepackt oder ungepackt von einer URL bezogen werden, oder direkt eine Datei angegeben werden. Diese werden heruntergeladen/ kopiert.
Verkleinern OSM/ OSC Datei wird verkleinert: Löschen von Relations, Ways und Nodes ohne Seezeichen-Tags (OSC: und Nodes ohne Tags welche neu oder bearbeitet wurden).
Rules & OSM-IDs Für den Konverter benötigten Rules (TAG-Regeln der Symbole) weden aktuell geladen, sowie die aktuellen OSM-IDs/ Versionsnummern unserer Positionen in unserer Datenbank (als csv und log für Conditions und bereits geprüfte Versionen).
Konverter Die Datei wird nach Nodes durchsucht (siehe für Details OSM-Konverter und Rules.XML).
Import Der Konverter gibt eine FT-Datei aus, mit Daten von den Nodes, welche für die FreieTonne interessant sind (TAGs oder bekannte OSM-ID). Der Importer prüft nochmals die Aktualität und trägt die Daten in unsere Datenbank ein (Neue Positionen oder bearbeitet neue Versionen).
Löschen Im Falle, das der Konverter eine OSC-Datei bearbeitet hat, und dort gelöschte Nodes enthalten sind, welche die FreieTonne kennt (OSM-ID), wird eine Datei mit der OSM-ID und Versionsnummer an den Del-Bot2 gegeben (siehe unten).
Programm Ende Löschen aller genutzten Daten - Logfile beenden.
Bei diesem Vorgang werden keine Daten bei OSM verändert/ hochgeladen, sondern er dient als reine Eingabeschnittstelle (von OSM-, OSC- und FT-Dateien) für die FreieTonne.
Der Del-Bot2 erhält eine Liste mit vermeindlich gelöschten OSM-Nodes
mit OSM-ID und Versionsnummer. Diese Liste wird zum Beispiel vom
OSM-Konverter erzeugt, wenn diese eine OSC-Datei (OpenStreetMapChanges)
bearbeitet, in welcher sich der FreienTonne bekannte und als gelöscht
markierte Nodes befinden können. Bekannt meint hier, wie schon auf den
anderen Seiten erwähnt, wenn die FreieTonne die OSM-ID kennt. Der Bot
prüft, wenn die OSM-Version höher ist, als die in unserer Datenbank, ob
diese Position bei uns nicht bereits gelöscht ist, ob er tatsächlich
bei OSM gelöscht wurde, und löscht die Position dann gegebenenfalls
auch bei uns in der Datenbank (sowie auch die OSM-ID bei uns gelöscht
wird).
4. FreieTonne-Online-Editor
Der Editor startet beim Abschicken der Daten den OSM-Uplink, entweder mit "Erstellen" für eine neue Position, oder mir "Bearbeiten" für eine bearbeitete Position (siehe oben).
Wird eine Position in der FreienTonne bearbeitet, startet folgender Prozess bevor die Eingabemaske erscheint:
Es wird geprüft ob der dazugehörige Node in OSM gelöscht wurde.
Wenn ja, wird Position auch in der FreienTonne gelöscht.
Wenn nein, wird geprüft, ob in OSM eine neuere Version vorliegt.
Wenn ja, wird das komplette OSM-Update gestartet (siehe oben), wobei als OSM-Quelle nur der eine Node dient (API XML-Ausgabe).
Danach wird immer die Bearbeitungsmaske der Position angezeigt.