Impressum   

Straßenauflistung

Oft besteht der Wunsch, eine Straßenauflistung für eine lokale Karte aus den Kartendaten von OpenStreetMap (OSM) zu erstellen. Doch der Aufwand eine PostgreSQL-Datenbank einzurichtet, ist für viele zu hoch.

Da das Skript auch zwischen den Straßenangaben aus Adressen und Straßennamen unterscheidet, kann man dieses Skript auch zur Qualitätskontrolle einsetzen. Straßen, die nur in Adressangaben erscheinen, sind mit hoher Wahrscheinlichkeit Tippfehler (in der Adresse oder im Straßennamen).

english  Often there is a wish, to compile a list of streets for a local map from OpenStreetMap (OSM) data. But for many people the effort to set up a PostgreSQL database is to high.

Because the script also distinguishs between the road information from addresses and street names, you can also use this script for quality control. Roads that appear only in address details, are likely typos (in the address or street name).

Files

streetosm.php

Das php-Script streetosm.php (Version 0.05!) im Archiv läuft entweder auf Kommandozeileebene oder mit Hilfe des Scripts start_streetosm.php auch in einem Browser.

Bis zur Lizenzumstellung in 2012 wurde auch ein Skript relationosm.php mit ausgeliefert, das den Lizenzstatus einer Relation abfragte (für Wege und Knoten war dies einfach im JOSM Editor möglich).

Vorgehen

OSM-ExportAuf der Webseite von OpenStreetMap kann man über den Reiter Export nicht nur das Bild des aktuellen Kartenausschnittes speichern, sondern auch die Daten in die Datei map.osm exportieren.

Dazu klickt man die Option "OpenStreetMap-XML-Daten" an und drückt den Button "Export". Nach einigen Sekunden öffnet sich ein Fenster, dass das Runterladen von der Datei map.osm anbietet. Speichern Sie diese Datei auf Ihr lokales Dateiverzeichnis.

Kommandozeile

Dann öffnen Sie ein Kommandozeile und wechseln in das Verzeichnis, in dem Sie die Datei abgespeichert haben. Dort tippen Sie den folgenden Befehl
php streetosm.php map.osm
ein. Damit der Befehl ablaufen kann, muss
• die Datei streetosm.php sich im gleichen Verzeichnis befinden und
• der Befehl php aus diesem Verzeichnis aufrufbar sein.
Der Befehl funktioniert in dieser Form aber sowohl auf Windows als auf Unix-Maschinen. Die Ausgabe können Sie natürlich in eine Datei umleiten. Dies wird besonders auf Windows Maschinen empfohlen, da das Kommandofenster im Normalfall kein utf-8 Zeichensatz darstellt. Das folgende Beispiel auf dieser Webseite wurde mit diesem Befehl auf einer Windows-Maschine erstellt.

E:\xampp\htdocs\hp\transfer>..\..\..\php\php streetosm.php map.osm >wallerstein.txt
    ... Ähnlichkeiten mit einer Anfrage im Forum von OSM ist durchaus beabsichtigt.

Browser

Die Dateien aus dem Archiv müssen in ein Verzeichnis Ihres Webservers kopiert werden. In diesem Verzeichnis muss außerdem ein Unterverzeichns tmp angelegt werden, auf dem alle Schreibberechtigung haben. Dann kopiert man die Datei streetosm.css ebenfalls in das Unterverzeichnis, damit die Ergebnisse ordentlich formatiert werden.

Danach tippen Sie in der Adresszeile des Browsers einfach start_streetosm.php ein und füllen das Formular entsprechend aus. Dieses Formular ist mehrsprachig (derzeit deutsch und englisch), weitere Sprachen können relativ einfach implementiert werden.

Sie können das Skript auf meiner Homepage testen.

english Then type in the address line of the browser start_streetosm.php and just fill in the form accordingly. This form is multilingual (currently English and German), further language can be implemented relatively easy.

You can test the script on my homepage.

Technischer Hinweis: Die maximale Größe der hochzuladenen Dateien ist von mehreren Punkten abhängig: Zuerst muss in der Konfigurationsdatei von PHP das Hochladen erlaubt sein, drei weitere Parameter bestimmen dann die genauen Wert. Im Script selber existiert noch ein Konfigurationswert von 6 MB, der die hochzuladene Größe begrenzt. Benötigen Sie die Bearbeitung von größeren Dateien ist die Verwendung der Kommandozeile für Sie sinnvoller.

Technischer Hinweis (zur Tabellensortierung): Die Javascript-Libraries jQuery und Tablesorter für jQuery (jeweils in Ihrer minimalisierten Variante) sind nicht im Archiv mit ausgeliefert. Diese müssen in einem parallel Verzeichnis jQuery (zu Verzeichnis tmp) installiert sein. Ohne diese Skripte entfällt die Sortierbarkeit.

Ergebnis

Loading map.osm ...
18.09.2011 14:51:35
18.09.2011 14:51:36  - 55 - 328 - 10
 S   Amtshofgäßlein
  R  B 25
AS   Bahnhofstraße
AS   Berg
AS   Birkhauser Straße
AS   Bischof-Weckert-Straße
 S   Hexengäßlein
 S   Hinterm Alten Schloss
AS   Hinterm Alten Schloß

Innerhalb einer Sekunde hat das Script 55 Straßenstücke, 328 Adressen und 10 Referenzangaben (z.B. die Bundestraße B 25) gelesen und sortiert. In der alphabetisch sortierten Liste steht vor den Namen, ob diese als Straße (S), Adressangaben (A) oder als Straßenreferenzen (R) registiert wurden. Kombinationen von A und S sollten in Straßen mit Adressangaben üblich sein.

Die letzten beiden Zeilen des (gekürzten) Beispiels zeigen einen möglichen Fehler bei der Datenerfassung. Es existiert eine Straße "Hinterm Alten Schloß" und eine Straße "Hinterm Alten Schloss". Hier sollte ein Prüfung vor Ort ergeben, ob der Fehler in einem Adress Datensatz oder im Straßennamen liegt.

Hinweis

Dies ist eine frühe Version eines Skriptes, basierend auf dem Skript checkosm.php. Die Ausgabe von streetosm.php ist auf Englisch gehalten. Eine Mehrsprachigkeit könnte einer der nächsten Erweiterungen sein.

Die Version 0.05 von streetosm.php behebt einen Fehler, der im Zusammenhang mit Tag highway=motorway_junction und ref auf getaucht ist.

Die Version 0.03 von relation.osm behebt einen Fehler, der im Zusammenhang mit Benennung der Relationenauf getaucht ist und verlinkt zu der Ansicht der Relation auf der OSM-Seite.

Kontakt

Anregungen, Ergänzungen und Kommentare dazu sind deshalb wie immer erwünscht.