3. OpenStreetMap - Kartenausschnitte im OSM-XML-Format in eine ACCESS-Datenbank importieren


Bereits seit 2004 gibt es OpenStreetMap. Mittlererweile ist eine Weltkarte entstanden, die ähnlich wie in Wikipedia durch interessierte Personen weiter ergänzt wird.

In einer Datenbank, wie z.B. ACCESS von Microsoft kann man vielfältige Analysen mittels SQL über den Datenbestand des ausgewählten Kartenausschnittes durchführen.


Deshalb progammierte ich mit Visual Basic ein Formular, dass die OSM-Daten in Tabellen von ACCESS eintragen kann.
Die ACCESS-Vorlage stelle ich im Artikel unten zum freien Download zur Verfügung.
Der erste Anlaufpunkt für den Datenimport ist https://www.openstreetmap.org/export . Hier kann man kleine Gebiete auf der Erde direkt für den Datenexport auswählen. Für größere Gebiete findet man hier auch weiterführende Links. Nach dem Export eines Kartenausschnittes erhält man im Download eine im XML-Format abgelegte map.osm – Datei.
Umfangreiche Beschreibung des Datenmodels erhält man in den WiKi‘s. Es sei hier nur kurz auf wesentliche Dinge für die Einrichtung der Tabellen in Access eingegangen:

OSM verwaltet 3 verschiedene Objektarten: Nodes, Ways und Relationen. Tags der Objekte sind in OSM Key-Value-Paare, die frei wählbar sind. Relationen werden verwendet, um Zusammenhänge, die sich nicht einfach durch die Objekte darstellen lassen, aufzubereiten. Sie enthalten eine geordnete Liste an Members, die wiederum bestimmte Rollen spielen. Daraus können z.B. Multipolygone, Grenzen und Routen abgeleitet werden.

Um alle Daten aus der XML-OSM-Datei strukturiert in Access zur Verfügung zu haben, wurde mit Visual Basic ein Programm entwickelt, dass den Aufbau der Tabellen und den Import der XML-Daten in die Tabellen automatisch durchführt. Die 9 Tabellen haben folgende Struktur:


Tabelle header

header


Tabelle node

node


Tabelle poi

poi


Tabelle way

way


Tabelle waykor

waykor


Tabelle waytag

waytag


Tabelle relation

relation


Tabelle relakor

relakor


Tabelle relatag

relatag


Die noch leere Datenbank OSM-3.mdb öffnet man und speichert sie zunächst als projektname.mdb ab. Dann bleibt die leere DB für andere Projekte als Vorlage erhalten.


In der Navigation wählt man nun Formulare. Hier gibt es das Formular OSM-Input.


Es wird mit Rechtsklick "Öffnen" oder Doppelklick geöffnet:

relatag


Die Steuerelemente ermöglichen die separate Auswahl der durchzuführenden Aufgabe. Wenn man zunächst nur die (leeren) Tabellen erzeugen möchte, setzt man nur bei „create tables“ den Haken:

relatag

Mit „Start“ erfolgt die Erzeugung der 9 Tabellen. Die Tabelle header wird als einzige bereits jetzt mit den Kopfdaten gefüllt.


Mit „Beenden“ wird der Vorgang abgeschlossen.

Wenn die Tabellen bereits bestehen, erfolgt die Auswahl der Steuerelemente der einzelnen Tabellen mit Haken:

relatag

Dabei bleibt das Steuerelement für „create tables“ frei.


Mit „Start“ werden jetzt die Daten in die Tabellen geschrieben. Das dauert je nach Größe seine Zeit.


Mit „Beenden“ wird der Vorgang abgeschlossen.

Nun sind alle Daten der XML-OSM-Datei in der Datenbank gespeichert. Zwischen einigen Tabellen bestehen vollständig Beziehungen. Z.B. stehen die Punktkoordinaten alle in der Tabelle node. Über die Verlinkung jeden ways in der Tabelle waykor greift man auf die Koordinaten zu. Ebenso ist die Tabelle waytag über die Spalte Waylink mit den zugehörigen way verbunden. Ähnlich funktionieren die Verkettung von relation zu relakor und relatag sowie von poi zu node.


Nun kann man mit SQL die Datenbank nach bestimmten Eigenschaften filtern und interressierende Abfragen formulieren bzw. Berichte erstellen.


Hier zur freien Verfügung der Download der leeren ACCESS-Datei mit der Formularfunktion:

OSM-3-leer.mdb