Plausichecks für OSM
mit KeepRight arbeiten
Die Ergebnisse von KeepRight können auf verschiedene Arten verwendet werden:
GPX-Wegpunkte exportieren
Zweck
Die Fehler in einem Kartenausschnitt als Liste von Wegpunkten in Form einer GPX-Datei herunterladen, um sie in einem GPS-Gerät einzublenden
URL-Format
https://keepright.at/export.php?format=gpx&ch=20,30,311,312&left=-82.39&bottom=30&right=-82.1&top=30.269
You can specify a list of error types you want to have in the file as well as a bounding box on the map. This export will return up to 10000 waypoints.
Links unterhalb der Karte gibt es eine Verknüpfung zum GPX-Export, die stets die aktuelle Auswahl an Fehlertypen und den aktuellen Ausschnitt enthält.
Neue Fehler als RSS-Feed abonnieren
Zweck
Einen Kartenausschnitt auf neu aufgetretene Fehler beobachten
URL-Format
https://keepright.at/export.php?format=rss&ch=20,30,311,312&left=-82.39&bottom=30&right=-82.1&top=30.269
Das URL-Format ist dasselbe wie beim GPX-Export, nur der format-Parameter ist anders. Der RSS-Feed liefert Fehlereinträge, die innerhalb der vergangenen drei Wochen neu aufgetreten sind.
Links unterhalb der Karte gibt es eine Verknüpfung zum RSS-Feed, die stets die aktuelle Auswahl an Fehlertypen und den aktuellen Ausschnitt enthält.
das gesamte Fehler-Dumpfile herunterladen
Zweck
Mach sonst irgendetwas mit 25 Millionen Fehlern...
URL-Format
https://keepright.at/keepright_errors.txt.bz2
dieses tab-getrennte File enthält alle aktuell offenen Fehler für den gesamten Planeten (momentan mehr als 500MB). Es wird täglich aktualisiert.
Tabellenstruktur
- schema
Der Schema-Name bezeichnet ein Gebiet auf dem Planeten. Entsprechend dem Aufteilungsplan wurde die Erde in rechteckige Teile eingeteilt, so daß sich etwa gleich große osm-Dateien ergeben. Der Schema-Name ist ein Prefix für die error_id.
- error_id
Laufende Nummer für Fehlerdatensätze, beginnend bei 1 für jedes Schema. Eine error_id alleine sagt nichts aus, wenn nicht auch das schema angegeben ist!
- error_type
Numerischer Bezeichner für die Art des Fehlers. Die Nummern werden in Zehnerblöcken vergeben und korrespondieren mit dem Namen der jeweils zuständigen Script-Datei.
Fehlertypen können Unternummern haben (z.B. 281. 282). Fehlertypen mit Unternummern behandeln unterschiedliche Aspekte eines gemeinsamen Themas. Im Beispiel steht 280 für 'Grenzen', 281 für '[Grenzen] ohne Namen' und 282 für '[Grenzen] ohne Rang'. Unter-Typen werden auf der Website als ausklappbare Gruppe dargestellt.
- error_name
Kurzbezeichnung der Art des Fehlers. Bei Fehlertypen mit Unternummern kann es sinnvoll sein, den Namen der Hauptnummer voran zu stellen, damit sich eine vollständige Bezeichnung ergibt.
- object_type
entweder node oder way oder relation
- object_id
die Objektnummer. Eine OSM node_id, way_id oder eine relation_id
- state
Zustand des Fehlers (new, reopened, ignore_temporarily oder ignore). Erledigte Fehler werden im Dumpfile nicht dargestellt.
ignore_temporarily bedeutet, daß ein Benutzer einen Fehler korrigiert haben will und ihn kennzeichnet, damit nicht andere sich damit befassen müssen. Sollte der Fehler nach dem nächsten Update noch immer aktiv sein, wird der Status auf new zurückgesetzt.
ignore bedeutet, daß es sich um einen falschpositiven Eintrag handelt. Also eine Ausnahme, die sich nicht sinnvoll in den Regelsätzen von KeepRight abfangen läßt.
Fehler, die bereits erledigt waren, aber später wieder auftauchen, werden in den reopened-Zustand versetzt. Leider kann das auch durch Laufzeitfehler in den Scripten passieren; der Einfachheit halber unterscheidet man daher nicht zwischen new und reopened.
- msgid
Das Gerüst der Fehlermeldung, wobei Platzhalter an jenen Stellen stehen, wo individuelle Werte für den aktuellen Fehler eingefügt werden. Dieses Meldungsgerüst kann mit Hilfe von GNU gettext() übersetzt werden. GNU gettext benötigt dazu eine Sprachdatei (.po), in der die englischen und die übersetzten Texte stehen. Es gibt bereits .po-Dateien: de pt_BR
Die GNU gettext-Vorlagendatei liegt hier: keepright.pot
- txt1 ... txt5
Diese Textteile werden nach dem Übersetzen in die Fehlermeldungen eingesetzt. txt1 ersetzt $1 etc.
- first_occurrence
Datum und Uhrzeit (MESZ) von wann dieser Fehler zum ersten Mal aufgetreten ist.
- last_checked
Datum und Uhrzeit (MESZ) von wann der Fehler zum letzten Mal vom Programm überbrüft wurde
- object_timestamp
Datum und Uhrzeit des Objektes (letzte Änderung), das bei der letzten Überprüfung verwendet wurde. Die Zeitzone entspricht der im planet-File.
- user_name
Benutzername des letzten Bearbeiters des betroffenen Objekts
- lat
- lon
Ort auf dem Planeten. Die Projektion entspricht jener im offiziellen planet-File. Allerdings sind die Koordinaten als ganze Zahlen dargestellt. Um sie in "echte" Längen- und Breitengrade zu wandeln, müssen sie durch 10^7 dividiert werden.
- comment
Kommentar von Usern (falls vorhanden)
- comment_timestamp
Datum und Uhrzeit (MESZ) von wann der Kommentar abgegeben wurde (falls vorhanden)
Die Fehlertabelle einlesen
Tabellendefinition für MySQL-Datenbanken:
CREATE TABLE IF NOT EXISTS `keepright_errors` (
`schema` varchar(6) NOT NULL default '',
`error_id` int(11) NOT NULL,
`error_type` int(11) NOT NULL,
`error_name` varchar(100) NOT NULL,
`object_type` enum('node','way','relation') NOT NULL,
`object_id` bigint(64) NOT NULL,
`state` enum('new','reopened','ignore_temporarily','ignore') NOT NULL,
`first_occurrence` datetime NOT NULL,
`last_checked` datetime NOT NULL,
`object_timestamp` datetime NOT NULL,
`user_name` text NOT NULL,
`lat` int(11) NOT NULL,
`lon` int(11) NOT NULL,
`comment` text,
`comment_timestamp` datetime,
`msgid` text,
`txt1` text,
`txt2` text,
`txt3` text,
`txt4` text,
`txt5` text
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
mysql --local-infile --password --user=root --execute "LOAD DATA LOCAL INFILE 'keepright_errors.txt' INTO TABLE keepright_errors CHARACTER SET utf8 IGNORE 1 LINES;" osm_EU
Bitte zu beachten, daß schema ein reserviertes Wort in MySQL ist. Man muß es daher immer quoten: `schema`
Die Tabelle hat zwei Primärschlüssel: einen natürlichen und einen künstlichen:
Der Natürliche besteht aus error_type, object_type, object_id, lat und lon. Das bedeutet, daß eine bestimmte Fehlerart auf ein und demselben Objekt mehrmals auftreten kann (z.B. bei Linien, die sich selbst schneiden).
Der künstliche Primärschlüssel besteht aus schema und error_id. Er wird ausschließlich dafür verwendet, Fehler einfacher adressieren zu können und ist ansonsten komplett unnötig.
Node-Anzahlen abfragen
Ein Abfallprodukt der Skripte ist diese Datei, die die Anzahl an vorhandenen Nodes pro Quadrat-Zehntelgrad angibt. Man kann die Datei hier herunterladen: https://keepright.at/nodecount.txt.bz2
Diese Tabelle kann hilfreich sein, wenn man Statistiken erstellen und Fehleranzahlen pro Node berechnen möchte