unerwartete Beschreibungen
In OpenStreetMap (OSM) werden die Datenobjekte (Knoten, Wege und Relationen) durch Tag's (bestehend aus einem Schlüssel (Key) und einen Wert (Value)) beschrieben. Dieses Programm liest entweder eine OSM-Datei oder eine Änderungsdatei von OSM-Daten (*.osc) und berichtet über unerwartete Tags.
Neben einer geringen Anzahl von Verwendungen können Fehler aber auch in den zugeordneten Werten (z.B. bei Zahlen die Nichtverwendung des englischen Zahlenformates) oder aber ein falscher Objekttype (z.B. das Schlüsselwert oneway an einem Punkt) sein. Da es keine für alle relevante, festgelegte Beschreibung für die Ausprägungen gibt, kann man die akzeptierten Werte in einem Konfigurationsfile pflegen.
Trotz aller Bemühungen bei der Pflege der Konfiguration sind die angemerkten OSM-Objekte nur verdächtigt einen Fehler zu besitzen. Eine Kontrolle des Objektes mit Sachverstand vor Korrektur und/oder Nachfrage bei Autor sind auf jeden Fall angebracht.
Files
checkosm.php
Das php-Script checkosm.php (Version 2.00) im Archiv kann im Browser laufen. Aufgabe beider Skriptes ist es die Änderungsdateien von OSM [Beschreibung und Quelle siehe im OSM-Wiki] oder die eigentlichen OSM-Dateien zu lesen und gegen eine Liste von erlaubten Werten abzugleichen. Diese Liste steht in den begleitenden Dateien check_value.txt und check_replace.txt (hier sind z.B. die Länder und Sprachen aufgeführt, die in check_value.txt referenziert werden). Den Unterschied zwischen den beiden Versionen der Programmdateien ist im Abschnitt Hinweis beschrieben.
Um z.B. fehlerhaft geschriebene Zahlen (OSM erwartet einen Dezimalpunkt statt eines Kommas) hinter einem Schlüssel zu reporten, wird z.B. in der Konfigurationsdatei check_value.txt nach dem Schlüsselnamen als zweites Attribut statt des erwarteten Wertes in spitze Klammer <number> geschrieben. Kommentare werden mit einem // eingeleitet, Blockkommentare sind nicht möglich. Weitere Details stehen im Kommentarheader der Dateien.
Text-Ausgabe | HTML-Ausgabe |
|
|
Die Ausgabe besteht aus einigen protokollarischen Uhrzeitausgaben (, die Zahlen dahinter sind hier nicht näher erläuterte Statistikzahlen), dann folgen die kritisierten Objekte. Die protokollarischen Informationen sind übrigens in der HTML-Ausgabe unter der Überschrift Statistik gesammelt dargestellt worden.
Im Text-Beispiel hat der Weg 67.760.895 in der Version 1 im Schlüssel maxheight den schon erwähnten Fehler des Dezimalpunktes. Und zur Erinnerung: Nicht jede Ausgabe ist ein Fehler und manchmal muss eine höfliche Mail mit einer Nachfrage an den Autor herausgeschickt werden, um den Sinn eines Tags zu verstehen. Bitte haben Sie Verständnis, dass in den Grafiken der HTML- Ausgabe andere Beispiele gezeigt werden, da dort ein Löschen schlechter möglich ist.
Der Fehler kann in der Zwischenzeit von einem Fehlerkorrekturprogramm (z.B. xyboot) behoben sein
(, deshalb steht zur Kontrolle auch die Version hinter der Nummer).
Anschließend kommt
noch eine Statistik mit den ersten 200 Tag's und deren Häufigkeit im untersuchtem File.
Dies kann -nach einer Verifizierung im Wiki oder Taginfo- auch zur Pflege der
Konfigurationsdatei check_value.txt verwendet werden.
Die drei Grafiken der HTML-Ausgabe sind im Original doppelt so groß, zum besseren Lesen wird die Browser Funktion zum alleinigen Anzeigen der Grafik empfohlen.
Da aber direkte Beispiele immer besser sind, stelle ich hier von Zeit zur Zeit aktuelle Analysen zur Verfügung.
Hinweis
Die Version 1.02 kann über eine PHP-Konstante zwischen einer Text- und HTML-Ausgabe umschalten kann (HTML ist Standard). Für die HTML-Ausgabe sind natürlich noch einige Grafik- und CSS-Dateien im gleichen Verzeichnis der Ergebnisdateien notwendig.
Die Version 2.00 kann jetzt auch direkt die komprimierte Datei *.gz oder *.bz2 lesen (, wenn in phpinfo() beim PHP Archiv Support der Wert "gzip compression" bzw. "bzip2 compression" auf enabled steht).
Die Version 2.00 kann jetzt auf Zahlen mit Entfernungseinheiten (km und ft werden akzeptiert) händeln. Außerdem werden bei unbekannten Beschreibungen oder Werte für eine Beschreibung nur noch maximal 10 Beispiele mit Objektnummern ausgegeben, die Häufigkeit kann in der Gesamtstatistik nachlesen. Dies gibt einen besseren Schutz gegen über sehr großen Ergebnisdateien bei Massenimporten.
Läuft das php-Script in einem Browser, wird auf die Laufzeitbeschränkung geachtet und die Analyse mit einer entsprechenden Fehlermeldung abgebrochen, um die Statistik noch auszugeben. Um dies zu ermöglichen wurde eines an der Geschwindigkeit der Analyse gearbeitet (u.a. wurde der XML-Parser entfernt), wenn eine Zeile nicht analysiert werden kann.
Man kann von der HTML-Seite sich entweder die aktuelle Datenlage des Objektes ansehen (Link in der Spalte ID) oder direkt in JOSM laden (JOSM-Icon), dazu muss parallel schon JOSM laufen. Wenn man Fragen dazu hat, warum eine Objekt angemerkt wurde, kann man über das Brief-Icon direkt eine Mail an den Autor des Scriptes (nicht des Objektes!) schreiben.
Als erste Werte werden die Vollständigkeit von Addressangaben (Land, Postleitzahl, Stadt, Straße und Hausnummer) sowie das Format der Postleitzahl geprüft. Für die Postleitzahlprüfung muß das Land (addr:country) bekannt sein, derzeit sind aus Zeitgründen nur die Verfahren von Deutschland und Österreich implementiert.
Die Version 3.00 wurde wegen Probleme zurückgezogen.
In der aktuellen Version werden über 98% der vorhandenen Tags geprüft (es wurde alle Schlüssel eingetragen, die mindestens hundert mal in Deutschland verwendet wurden).
Anregungen, Ergänzungen und Kommentare dazu sind -wie immer- erwünscht.