Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Lesedauer 17 Min.

Geodatenbank-Deep-Dive

Inspirationen dazu, für welche Anwendungszwecke Geodaten als Datenquelle dienen können, wo die Daten herkommen und wie man mit ihnen arbeitet.
© dotnetpro
Die Nachfrage nach digitalen Geodaten nimmt stetig zu. In immer mehr Anwendungen ist der Einsatz von Geodaten gefragt. Die Kombination aus Geschäfts- und Geodaten liefert in vielen Fällen einen informatorischen Mehrwert. Ein Beispiel aus dem Einzelhandel: Es geht um die Auswertung eines Handelsunternehmens mit mehreren Filialstandorten in unterschiedlichen Regionen. Klassischerweise werden zunächst nur die Verkaufszahlen der Produkte in den einzelnen Filialen gegenübergestellt. Das Controlling oder Management wird dann diese Zahlen interpretieren und versuchen, die folgenden Fragen zu beantworten: Warum verkaufen sich die Produkte der Gruppe A am Standort X deutlich besser als am Standort Y? Fast gegensätzlich sieht es mit den Produkten aus der Warengruppe B aus. Was ist die Ursache?

Artikelserie zu Geodatenbanken

Dies ist der zweite Teil einer Mini-Artikelserie zum Thema Geodatenbanken. Im ersten Teil [19] haben wir uns mit den Grundlagen beschäftigt, unter anderem mit standardisierten Datenformaten, Koordinatensystemen und der Speicherung von geobasierten Daten in spezialisierten und allgemeinen Datenbanksystemen. Dabei kamen relationale ebenso wie NoSQL-Datenbanken infrage. Außerdem hatten wir einen Blick auf die Verarbeitung der Geodaten in .NET gerichtet.
Statt wilder Spekulation steht die Ursachenforschung auf dem Programm. Einen Einfluss kann die räumliche Nähe der jeweiligen Filiale zu den Geschäften der Konkurrenz haben. Durch die zusätzliche Verarbeitung von geobasierten Daten können wir nicht nur die Verkaufszahlen der einzelnen Filialen der letzten Jahre gegenüberstellen, sondern diese Daten auch mit ausgewählten Geoinformationen verknüpfen. Beispielsweise: Wie viele Einwohner gibt es in den Städten der Filialen? Daraus können wir ableiten, welchen Einfluss die Größe einer Stadt auf den Verkaufserfolg hat. Eine weitere interessante Fragestellung könnte lauten: In welcher Entfernung befinden sich die Konkurrenzunternehmen? Mit einer grafischen Darstellung wird die Nähe beziehungsweise Entfernung zu den Mitbewerbern deutlich. In der Wirtschaftsgeografie wird dieses Thema unter den Stichworten Konkurrenzmeidung versus Konkurrenz­anziehung diskutiert. Nicht immer ist es sinnvoll, vor der Konkurrenz „davonzulaufen“. Für Mitnahmeeffekte beim Verkauf, spezielle Produktvarianten und anderes mehr ist es besser, sich der Konkurrenz anzunähern. Das führt zur Bildung von Ballungszentren [1]. Mithilfe von Geodaten können wir die Entfernung zu den Mitbewerbern errechnen, zum besseren Verständnis auch zum Beispiel mit einer Karte visualisieren und daraus dann datenbasierte Schlussfolgerungen ableiten. In Kombination mit den Ansätzen aus dem Bereich der Business Intelligence, also der Verarbeitung von Unternehmensdaten mit modernen Methoden der Mathematik, der Statistik, Informatik und so weiter, wird daraus die Wortkombination Location Intelligence. Typische Fragestellungen aus dem Bereich der Location Intelligence sind beispielsweise [2]:
  • An welchen Standorten sollte Werbung, zum Beispiel auf digitalen Werbeflächen oder als klassische Plakatwerbung, erfolgen, damit diese von einer größtmöglichen Anzahl von Interessenten wahrgenommen wird?
  • Wo ist anhand der Fußgängerfrequenz ein guter Standort für die Eröffnung einer neuen Filiale, um von möglichst viel Laufkundschaft zu profitieren? 
Geospatial Business Intelligence ist ein weiteres Schlagwort in diesem Zusammenhang. Es ist ein interdisziplinäres Fachgebiet, das die Bereiche Business Intelligence, Machine Learning und geografische Informationssystemtechnologie vereint. Das Ziel ist es, Standortdaten in wertvolle Erkenntnisse umzuwandeln [3] (Bild 1).
Geospatial Business Intelligenceumfasst Data, Analytics und ­Visualisierung(Bild 1) © Autor

Herkunft der Daten

Woher bekommt man die benötigten Geodaten? Die Geodateninfrastruktur Deutschland (GDI-DE) ist ein gemeinsames Projekt von Bund, Ländern und Kommunen, welches das Ziel hat, Geodaten in einer standardisierten Form über das Internet bereitzustellen. Die GDI-DE ist eingebunden in die durch die INSPIRE-Richtlinie (siehe Kasten INSPIRE) geschaffene europäische Geodateninfrastruktur. Alle für Deutschland zur Verfügung stehenden Daten findet man auf dem zentralen Webportal Geoportal.de [4]. Eingeteilt sind die verfügbaren Geodaten dort in folgende Kategorien:
  • Umwelt und Energie
  • Land- und Forstwirtschaft
  • Verkehr und Technologie
  • Wetter und Klima
  • Gesellschaft und Gesundheit
  • Kultur und Freizeit
  • Wirtschaft und Finanzen
  • Raum und Lage

INSPIRE

INSPIRE ist die Abkürzung für Infrastructure for Spatial Information in Europe. Es handelt sich dabei um ein Vorhaben der Europäischen Union, eine gemeinsame Geoinfrastruktur für Europa zu schaffen und eine grenzübergreifende Nutzung von Geodaten zu unterstützen. Die INSPIRE-Richtlinien definieren 34 Datensegmente und richten sich an Behörden in Europäischen Ländern. Es handelt sich dabei um eine Form der Rechtssetzung der Europäischen Gemeinschaft, welche entsprechend EG-Vertrag im nationalen Recht umgesetzt werden muss.
Die Daten stehen sowohl für überregionale Anwendungen als auch in Form von Geoportalen der Länder zur Verfügung. Es handelt sich dabei um sogenannte Open Geodata. Open Data sind nach der Definition der Open Knowledge Foundation Daten, die frei verwendet und verbreitet werden können. Ihre Nutzung ist maximal durch eine Pflicht zur Nennung der Quellen eingeschränkt [4] [5].Gemäß den Open-Data-Prinzipien müssen Geodaten folgende Kriterien aufweisen:
  • Vollständigkeit: Die Geodaten sind auf Vollständigkeit in allen ihren Teilen (Objekte, Attribute) zu prüfen.
  • Verfügbarkeit der Primärquelle: Die Geodaten sollen direkt aus den ursprünglichen Datenquellen veröffentlicht werden.
  • Zeitnähe: Open Geodata werden unterschiedlichen Aktuali­sierungszyklen zugeordnet. Die INSPIRE-Richtlinie zur Da­ten­aktualität besagt, dass Geodaten ein halbes Jahr nach einer Änderung bereitzustellen sind. Für tagesaktuelle Daten genügt also die halbjährliche Veröffentlichung des Gesamtdatenbestands. Werden die Daten weniger häufig aktualisiert, genügt ein längeres Bereitstellungsintervall [6].
  • Zugänglichkeit: Gemeint ist, dass der Zugang zu den Open Geodata weder von organisatorischen oder technischen Hürden noch durch rechtliche Vorgaben behindert werden soll.
  • Maschinenlesbarkeit: Eine automatisierte Verarbeitung von Open Geodata ist nur bei maschinenlesbaren Daten möglich.
  • Nicht diskriminierende Bereitstellung: Der Zugang zu den Open Geodata ist diskriminierungsfrei zu gestalten, das heißt, dass für die Verwendung weder ein Nachweis zur Identität der Nutzer noch eine Mitgliedschaft vorausgesetzt werden.
  • Nichtproprietäre Bereitstellung: Gemeint ist eine Bereitstellung der Open Geodata in offenen Datenformaten und Standards, beispielsweise über Downloaddienste.
  • Lizenzfreiheit: Lizenzen werden als Hindernis für die Nutzung angesehen und sollen die Verwendung nicht einschränken.
  • Dauerhaftigkeit: Offene Geodaten sollen im Internet dauerhaft verfügbar sein. Für Aktualisierungen, Änderungen oder Löschungen ist eine Archivierungsfunktion zu nutzen.
  • Nutzungskosten: Offene Geodaten werden kostenlos zum Download bereitgestellt.

OpenStreetMap

Eine weitere Quelle für Geodaten ist OpenStreepMap[7]. Der Open-Source-Kartendienst ist ein freies Geoinformationsportal, das im Jahr 2004 gegründet wurde. Uns allen bekannt ist die Nutzung der Landkarte als Alternative zu Google- oder Bing-Maps. „Hinter“ dieser Karte liegt jedoch eine sehr umfassende Datenbasis, die für alle erdenklichen geobasierten Anwendungen genutzt werden kann. Über [8] lässt sich die komplette (!) Datenbasis herunterladen. Das kann man machen, es ist jedoch wenig effektiv. Einfacher und vor allem auch schneller ist die Nutzung eines spezialisierten Dienstes, der Auszüge aus der Geodatenbank OpenStreepMap zur Verfügung stellt. Eine solche Bereitstellung erfolgt beispielsweise über das Unternehmen Geofabrik [9]. Über deren Downloadserver werden nach Auswahl entsprechende Datenauszüge in unterschiedlichen Formaten zur freien, aber auch kommerziellen Nutzung bereitgestellt. Über den Pfad Welt | Kontinente | Länder | Bundesländer können wir uns dabei bis auf die gewünschte Ebene des Datenauszugs auf dem Portal „vorarbeiten“ (Bild 2). Das funktioniert nicht nur mit den Daten aus Deutschland, sondern auch mit anderen Bereichen dieses schönen Planeten. Dabei handelt es sich um häufig genutzte Datenauszüge. Ist der passende Datenausschnitt nicht dabei, kann man den Service von Geofabrik in Anspruch nehmen, um spezialisierte Datenextrakte aus OpenStreepMap erstellen zu lassen.
Datenauszügesind über das Portal von Geofabrik verfügbar(Bild 2) © Autor
Im Lauf des Artikels kommen wir noch auf die Nutzung der Daten von OpenStreepMap zurück.

Nutzung durch räumliche Abfragen

Wie arbeitet man mit den Geodaten? Diese Frage ist zunächst wieder konzeptionell und weniger technisch. Dazu ein Vergleich: Wie arbeitet man mit den Daten in einer relationalen Datenbank? Hier verwendet man üblicherweise SQL-Anfragen. Diese werden aus dem Programm – gleichgültig mit welcher Programmiersprache – über den Datenbanktreiber an das Datenbankmanagementsystem und von dort weiter an die konkrete Datenbank geleitet.Die Arbeit mit Geodatenbanken ist ähnlich organisiert. ­Anhand von räumlichen Abfragen kann man beispielsweise ­Distanz, Abstand, Fläche, Objekte im Umkreis oder entlang einer Route und die Ausdehnung und Überschneidung von Geometrien ermitteln.Dabei ist die Tatsache zu berücksichtigen, dass die Anzahl der Objekte, die in der Geodatenbank gespeichert sind, oft sehr hoch ist. Auch die Attributwerte sind in der Regel sehr vielfältig. Aus diesen Gründen wird die Datenermittlung nach dem Prinzip einer räumlichen Anfragebearbeitung umgesetzt, und diese lässt sich auf unterschiedliche Basisanfragen zurückführen [10]:
  • Punktanfrage (Point Query): Zu einem gegebenen Anfragepunkt p werden alle Geoobjekte, die p enthalten, bestimmt.
  • Rechteck- oder Fensteranfragen (Window Query): Zu einem gegebenen Anfragerechteck r werden alle Geoobjekte bestimmt, die im Rechteck r liegen beziehungsweise einen Schnitt mit dem Rand des Rechtecks r aufweisen.
  • Regions- beziehungsweise Gebietsanfragen (Region Query): Zu einem gegebenen Anfragepolygon pol werden alle Geo­objekte bestimmt, die das Polygon pol schneiden.
  • Richtungsanfragen (Directional Query): Bestimmt werden alle Geoobjekte, die zu einem Anfrageobjekt in einer bestimmten Richtung liegen, beispielsweise südlich zu einem Anfragepunkt.
  • Abstandsabfragen (Distance Query): Bestimmt werden alle Geoobjekte, die sich in einem vorgegebenen Abstand dist zu einem Anfragepunkt p befinden. Es handelt sich dabei um eine kreisförmige Regionsanfrage mit dem Radius dist.
  • Nächster-Nachbar-Anfrage (Nearest Neighbour Query): Zu einem Geoobjekt obj werden das nächstgelegene Objekt oder k nächstgelegene Objekte bestimmt.
  • Räumlicher oder geometrischer Verbund (Spatial Join): Es handelt sich um eine Verbundoperation, die mindestens eine geometrische Verbundbedingung enthält, beispielsweise den Test auf einen Schnitt von Objekten. Das Ziel ist es, Paare von Geoobjekten zu bestimmen, deren Geometrien sich schneiden, wobei die Objekte aus verschiedenen Relationen stammen.
  • Nächstes-Paar-Anfragen (Closest Pair Query): Bestimmt werden die k Paare von Geoobjekten, die aus verschiedenen Relationen stammen und von allen Paaren die geringsten Abstände voneinander aufweisen.
Anfragen an die Geodatenbank suchen also nach bestimmten geometrischen Eigenschaften beziehungsweise Bedingungen zwischen den Objekten. Bild 3 dient zur Veranschaulichung der vorgestellten räumlichen Basisanfragen. In der Praxis wird bei den Anfragen aus Gründen der Komplexität und des Umfangs nach dem Prinzip einer mehrstufigen Anfragebearbeitung (Multi-Step Query Processing) vorgegangen. Dabei wird der Versuch unternommen, die Menge der Objekte, welche die Anfragebedingungen potenziell erfüllen können, in frühen Filterschritten durch die Ausführung von Algorithmen einzuschränken. Das Ziel ist es dabei, möglichst viele Objekte, welche die Anfrage erfüllen könnten, frühzeitig zu erkennen. Im dem sogenannten Verfeinerungsschritt(Refinement Step) erfolgt dann ein aufwendiger und exakter Test der Anfragebedingung.
RäumlicheBasisanfragen(Bild 3) © Autor
Eine weitere Herausforderung bei den räumlichen Anfragen stellt die Komplexität der geometrischen Datentypen dar. Die Bearbeitung komplexer Anfragen, beispielsweise ob zwei Multipolygone mit Löchern sich schneiden, ist sehr aufwendig. Der gängige Ansatz ist die Verwendung vereinfachter Geometrien, beispielsweise die Approximation mit dem minimal umgebenden Rechteck (MUR).Bild 4 zeigt, was mit einem MUR gemeint ist. Im Zuge der Implementierung des Filters versucht man, möglichst viele Objekte mittels der Approximation als Treffer beziehungsweise Fehltreffer zu identifizieren. Der Approximationsfilter prüft, ob der Anfragepunkt im MUR enthalten ist. Liegt der Anfragepunkt nicht in dem vorgegebenen Rechteck, wird das Geoobjekt als Fehltreffer identifiziert. Eine solche Berechnung ist deutlich weniger aufwendig als die Operation auf Basis der exakten Geometrien. Natürlich schließt die Approximation auch Flächen ein, die gar nicht zur Geometrie des Objekts gehören, die sogenannten Fehlflächen. Je kleiner die Fehlfläche, desto häufiger kann man die Anfragen ohne Einbeziehung der exakten Geometrie beantworten (vergleiche auch den Kasten Konservative und progressive Approximation).

Konservative und progressive Approximation

Bei einer konservativen Approximation handelt es sich um das minimal umgebende Rechteck. Das bedeutet, dass die Geometrie des approximierten Objekts vollständig in der Approximation enthalten ist. Auf diese Weise kann man in erster Linie die Fehltreffer der Antwortmenge ausschließen und aufwendige Operationen mit der exakten Geometrie vermeiden. Die progressiven Approximationen sind dagegen vollständig in der Objektgeometrie enthalten. Diese ermöglichen es, Treffer zu identifizieren. Ein Beispiel: Liegt der Anfragepunkt innerhalb der progressiven Approximation, so liegt er auch innerhalb der Geometrie. Der Test der exakten Geometrie kann in diesem Fall entfallen. <span class="text-bildnachweis">Bild 13 </span>verdeutlicht den Unterschied zwischen der progressiven und konservativen Approximation.
Minimalumgebendes Rechteck(Bild 4) © Autor

Verarbeitung komplexer räumlicher Basisanfragen

Zu den „einfachen“ räumlichen Anfragen gehören beispielsweise Punkt-, Rechteck und Regionsanfragen. Beim räumlichen Verbund, Bestimmung der nächstgelegenen Nachbarn und den Nächstes-Paar-Anfragen handelt es sich dagegen um „komplexe“ Anfrageoperationen. Verbund beziehungsweise Join ist eine der wichtigsten Operationen in relationalen Datenbanksystemen. Anhand dessen werden zwei oder mehrere Relationen, welche eine Bedingung erfüllen, miteinander verbunden. Bei einem räumlichen Verbund beziehungsweise Spatial Join handelt es sich um einen Join, der eine geometrische Verbundbedingung enthält, beispielsweise zur Bestimmung aller Geometrieobjekte, deren Geometrien sich schneiden. Bei Operationen in Geoinformationssystemen spielt der räumliche Verbund eine wichtige Rolle und bildet die Grundlage für Verschneidungen in Karten (Map Overlay).Die Bearbeitung eines räumlichen Verbunds ist eine komplexe Operation, die in folgende Schritte zerlegt werden kann:
  • Als Erstes werden die Kandidatenpaare mithilfe der Indizes bestimmt.
  • Im nächsten Schritt werden die Kandidaten anhand ihrer Approximation überprüft.
  • Zum Schluss, in einem Verfeinerungsschritt, werden die verbliebenen Kandidaten anhand ihrer konkreten Geometrien überprüft.
Als geometrische Verbund-Bedingungen denkbar sind: Intersects, Touches, Crosses, Overlaps, Within und Contains.Die Bearbeitung räumlicher Verbunde kann mit und ohne Index erfolgen (siehe Kasten Indexierung von Geodaten). Im Fall der Bearbeitung ohne Index werden die im Spatial Join enthaltenen Relationen vom Hintergrundspeicher in den Hauptspeicher eingelesen und dort entsprechend bearbeitet. In dieser Variante ist die Bereitstellung eines großen Hauptspeichers erforderlich. Oft ist es jedoch der Fall, dass diese Ressource bei Datenbanksystemen mit einer zeitgleichen Bearbeitung von mehreren Anfragen unterschiedlicher Nutzer begrenzt ist. Die Lösung ist die Verarbeitung in kleineren Teil­einheiten. Die Geodaten werden in diesem Fall über einen räumlichen Index verwaltet. Falls kein Index zur Verfügung steht, müssen die Daten über den Join-Algorithmus anderweitig eingeschränkt werden. Eine Möglichkeit besteht bei einem Spatial Hash Join darin, den Datenraum in Teilregionen beziehungsweise Buckets aufzuteilen und die Objektapproximationen einer oder allen Teilregionen zuzuteilen. Daten, die einer Teilregion zugeordnet sind, können separat verarbeitet und von dem verfügbaren Hauptspeicher aufgenommen werden. Die Teilregionen werden anhand des Samplings bestimmt. Im Lauf des Samplings wird eine Teilmenge der Daten eingelesen, analysiert und als repräsentativ für die gesamte Menge der Daten erklärt. Die Zuordnung des Objekts kann entweder eindeutig sein oder ein Objekt wird mehreren Buckets zugeordnet. Bei der eindeutigen Zuordnung findet keine Überlappung statt. Ansonsten entstehen Überlappungen zwischen Teilregionen.

Indexierung von Geodaten

In der Regel enthalten Geodatenbanken große Datenmengen. Im Rahmen der räumlichen Anfragebearbeitung werden aus der gesamten Datenmenge diejenigen Objekte bestimmt, welche potenziell die Anfragebedingung erfüllen. Weil die Datenmenge in Geodatenbanken oft sehr groß ist, verwendet man eine räumliche Indexierung. Ähnlich wie in relationalen Datenbanken stellt der Index in Geodatenbanken eine Art Datenstruktur dar, welche die Anfragebearbeitung optimiert.

Geodatenbanken verwenden

Der erste Teil der Artikelserie hat bereits ­einen Überblick über Datenbanksysteme, die explizit mit Geodaten umgehen können, gegeben. Einige bekannte Systeme sind:
  • Oracle Spatial
  • Microsoft SQL Server
  • SAP SQL Anywhere und SAP HANA
  • SpatiaLite
  • PostgreSQL/PostGIS
  • MySQL und MariaDB
  • MongoDB 
Die zwei gängigsten davon sind SpatiaLite und PostgreSQL. Der Hauptunterschied zwischen den beiden Datenbanksystemen besteht darin, dass PostgreSQL ein Datenbanksystem ist, das auf einem Server ausgeführt wird, während Spatia­Lite eine eingebettete Datenbank ist, die wie ein normales Programm auf dem jeweiligen Gerät ausgeführt wird. Daher entfällt eine Menge Konfigurationsarbeit beim Aufsetzen der SQLite/SpatiaLite-Datenbank. Gleichwohl ist diese Datenbank für eine Client-Server-Struktur nicht geeignet.Starten wir mit einigen Experimenten. Dazu brauchen wir zwei grundlegende Dinge: erstens Daten und zweitens Tools. Beginnen wir mit den Tools, denn wir müssen die Daten gegebenenfalls auch zwischen den Formaten transformieren. Folgende Tools werden benötigt beziehungsweise können für erste Experimente hilfreich sein:
  • SQLite 3: Diese Datenbank können wir über ein Plug-in „geodatenbankfähig“ machen. Eine Installation ist nicht erforderlich. Sie müssen nur das Binary (ausführbare Datei) für Ihr Zielsystem herunterladen. Die benötigten Dateien finden Sie unter [11]. Die Datei liegt in gepackter Form als ZIP-Datei vor und muss nach dem Download entpackt werden.
  • SQLite-Tools: Es handelt sich um eine Sammlung von Tools zur Nutzung der SQLite-3-Datenbank von der Kommandozeile. Wieder müssen die Dateien nach dem Download entpackt werden. Auch die SQLite-Tools finden Sie unter [11]. 
Entpacken Sie beide Archive in einen gemeinsamen Ordner, zum Beispiel sqlite(Bild 5), und wechseln Sie in der Kommandozeile, alternativ der PowerShell, in diesen Ordner. Rufen Sie SQLite3 auf und Sie erhalten die Rückmeldung über die funktionierende „In-Memory-Datenbank“ (Bild 6). Damit können wir mit relationalen Datenbanken arbeiten, aber noch keine Geodaten verarbeiten. Benötigt wird eine Erweiterung für SQLite. Wir suchen daher im Internet die folgenden Tools:
Entpacken der Datenbankund der Tools zu SQLite(Bild 5) © Autor
SQLitemuss nicht installiert werden(Bild 6) © Autor
  • SpatiaLite: Das ist eine Open-Source-Bibliothek, die den SQLite-Kern erweitert, um vollwertige Spatial-SQL-Funktionen zu unterstützen. Damit können wir also Geodaten­typen wie Vektoren, Raumangaben und weitere verwalten. Die Quellen zu dieser Bibliothek finden Sie unter [12]. Die Quellen umfassen nur den Quellcode und noch nicht die ausführbaren Dateien für das jeweilige Zielsystem. Dazu kommen wir gleich.
  • Spatialite-Tools: Auch für das Plug-in benötigen wir erneut ein Toolset in Form von Kommandozeilenwerkzeugen, zum Beispiel, um Daten zwischen den unterschiedlichen Formaten zu transformieren.
  • Spatialite-GUI: Deutlich einfacher geht die Arbeit mit einem rudimentären GUI-Tool.
Die Erweiterung SpatiaLite und die Kommandozeilenwerkzeuge Spatialite-Tools bekommen Sie in kompilierter Form für Ihr Zielsystem von [13]. Es sind die Dateien mod_spatialite-5.0.1-win-x86.7z und spatialite-tools-5.0.1-win-x86.7z. Dabei handelt es sich um gepackte Dateien im Format *.7z, entsprechend benötigen Sie für das Entpacken auch noch ein Werkzeug, das dieses Format beherrscht, zum Beispiel das Tool 7-Zip [14].Wenn Sie dann in den Ordner mod_spatialite-5.0.1-win-x86.7z schauen, werden Sie feststellen, dass hier auch die ausführbare Datei zur Datenbank SQLite vorhanden ist. Kommen wir zum GUI. Das Tool Spatialite-GUI in ausführbarer Form haben wir zum Beispiel auf GitHub [15] mit einem Link gefunden. Hierbei handelt es sich um ein ZIP-Archiv
(*.zip). Der Vorteil: Sie können das Programm nach dem Download und dem Entpacken des Archivs sofort starten und brauchen es nicht erst zu kompilieren. Vielleicht ist das jetzt eine gute Übung, um nach dem ganzen „Tool-Wirrwarr“ einen kleinen Erfolg zu haben. Das GUI-Tool startet, zeigt jedoch noch keine Daten an, denn diese haben wir noch nicht angebunden (Bild 7).
Das Spatialite-GUI– zunächst noch ohne Daten(Bild 7) © Autor
Kommen wir jetzt zu den Daten. Wir laden uns einen Datensatz von [16] herunter, zum Beispiel für ein Bundesland (siehe vorherige Ausführungen). Die Datei liegt dann im Format PBF vor, ist stark komprimiert und muss in das SQLite-Format konvertiert werden. Dazu kommt das Tool spatialite_osm_map zum Einsatz, das wir soeben als Bestandteil der Spatialite-Tools heruntergeladen haben. Kopieren Sie am einfachsten die Datendatei in das Verzeichnis der Spatialite-Tools und wechseln Sie erneut auf die Kommandozeile. Hier rufen Sie das Konvertierungswerkzeug mit folgendem Befehl auf:
spatialite_osm_map -o [Dateiname.pbf] 
  -d [Dateiname].sqlite 
Damit stoßen Sie die Konvertierung an. Das Kommandozeilentool transformiert die Geodaten in das Format von SQLite und erstellt die dazugehörige Datei. Diese dürfte meist deutlich größer sein als die Ausgangsdatei. Jetzt haben wir ausreichend Geodaten, mit denen wir experimentieren können. Dazu öffnen wir erneut das Tool Spatialite-GUI und verbinden uns über das Hauptmenü mit der Datenbank. Die Datenbank wird geöffnet und wir können einen Blick auf die Struktur werfen. Wir finden beispielsweise folgende Tabellen:
  • pt_*-Tabellen: Punkte im Geokoordinatensystem wie beispielsweise Adressen, Shops, Locations und weitere.
  • ln_*-Tabellen: Enthalten geografische Entitäten, die sich als Linien darstellen lassen, wie etwa Straßen.
  • pg_*-Tabellen: Polygone, also die geometrische Beschreibung von Flächen, beispielsweise für Grenzen, Inseln et cetera.
Die Beschreibung des jeweiligen Datenformats findet sich auch auf der Downloadseite des Unternehmens Geofabrik. Umfang, Vollständigkeit und Detaillierungsgrad schwanken zwischen den Regionen. Letzterer gilt jedoch bei OpenStreetMap als allgemein gut. Im Tool können wir beispielsweise eine Tabelle auswählen und über SQL eine Filterung der Daten vornehmen. Ein Beispiel mit der Tabelle pt_shop kann wie folgt aussehen. Mittels der folgenden Anweisung wählt man alle Werkstätten für Pkws aus der betreffenden Region aus (Bild 8):
Abfrageauf die Geodatenbank im Spatialite-GUI(Bild 8) © Autor
select* 
from pt_shop 
where sub_type='car' 
Wenn wir auf die Spalte Geometry mit dem Mauszeiger klicken, können wir über das Kontextmenü die geobasierten Daten zum Objekt abrufen.Sinn ergibt dies zum Beispiel für eine Fläche (Polygon), also ein Objekt aus einer pg-Tabelle(Bild 9). Ebenso können wir eine individuelle Map erstellen lassen, zum Beispiel mit den Straßen einer Region, und diese Karte in ein gewünschtes Zielformat, zum Beispiel SVG für eine Vektordarstellung, konvertieren lassen (Bild 10).
Anzeige von Geodaten– hier eine Fläche(Bild 9) © Autor
Export einer Karteaus Spatialite-GUI(Bild 10) © Autor
Das Tool Spatialite-GUI bietet rudimentäre Fähigkeiten bei der Arbeit mit einer Geodatenbank. Um umfassende Auswertungen vorzunehmen, gibt es deutlich leistungsfähigere Tools (Geo-Informationssysteme). Ein bekanntes Werkzeug ist zum Beispiel QGis [17]. Die Software dient zum Erstellen, Bearbeiten, Anzeigen und Analysieren räumlicher Informationen. Wir können hier einen Zugriff auf unterschiedliche Datenquellen herstellen, zum Beispiel auf Daten von OpenStreetMap oder aus dem INSPIRE-Portal. Dies wird über Plug-ins in dem Tool bewerkstelligt. Demonstrativ haben wir hier auch eine Verbindung zur eben erstellten SQ­Lite-3-Datenbank hergestellt. Über Layer können wir die Objekte in einer Karte einblenden und dann nach Belieben mit leistungsfähigen Werkzeugen von QGis auswerten. Beispielhaft haben wir alle Orte unserer Abfrage in die Karte eingezeichnet (Bild 11).
QGismacht umfassende Datenauswertungen möglich(Bild 11) © Autor

Die Rolle der Softwareentwicklung

An dieser Stelle kommen wir als Entwickler, zum Beispiel auch als Entwickler von Applikationen mit .NET für die vielfältigsten Plattformen, ins Spiel. Die Geodatenbank wird beispielsweise in SQLite/Spatialite aufgesetzt beziehungsweise die Daten werden aus einer externen Quelle in die Datenbank übernommen [18]. Den Nutzerinnen und Nutzern in den Fachabteilungen kann im Regelfall – wie bei anderen Applikationen auch – die Eingabe von SQL-Statements nicht zugemutet werden. Daher gilt es, für die Use Cases die entsprechenden Abfragen zu definieren und über eine ansprechende Benutzeroberfläche zugänglich zu machen. Gleiches gilt für die Operationen, die gegen eine solche Geodatenbank ausgeführt werden müssen. Mithilfe der Fachabteilung werden die typischen Fragen herausgearbeitet, in Anwendungsfälle überführt und dazu wird eine angepasste grafische Benutzeroberfläche erstellt.Die Struktur des Anwendungssystems (Bild 12) unterscheidet sich daher nicht wesentlich von der einer klassischen Datenbankanwendung. Unterschiedlich sind jedoch die Datentypen, Punkte, geometrischen Primitive et cetera, die verwaltet werden. Auch die Operationen auf die Datenbank, wie die Errechnung von Abständen oder die Überprüfung, ob ein Punkt in einer Region liegt, unterscheiden sich gegenüber einer relationalen Datenbank.
Die Architektureiner Anwendung, die eine Geodatenbank nutzt(Bild 12) © Autor

Fazit

Hier endet der zweiteilige Einblick in die Welt der Geodatenbanken. Die Autoren finden, es ist ein spannendes und faszinierendes Thema. Die Daten stammen großteils aus öffentlichen Quellen und müssen geschickt extrahiert und gefiltert werden. Dann kommt die spannende Aufgabe: Was machen wir daraus? Zunächst sind es nur Daten. Um daraus Informationen zu machen und daraus wiederum eine Basis für Entscheidungen zu generieren, braucht es das Zusammenspiel von Fachanwendern (Fragestellung), Datenspezialisten (Business Intelligence) und Softwareentwicklern (Anwendungsentwicklung). Auch wenn wir weitgehend bei unserer Aufgabe der Softwareentwicklung bleiben, benötigen wir einen Überblick über die Besonderheiten der Geodaten. Dazu haben hoffentlich die beiden Artikel beigetragen.

Fussnoten

  1. Thomas Wieland, Räumliches Einkaufsverhalten und Standortpolitik im Einzelhandel unter Berücksichtigung von Agglomerationseffekten, 2014, https://d-nb.info/105990778X/34
  2. GIS, Location Intelligence und BI – das sind die Unterschiede, http://www.dotnetpro.de/SL2303GeoDB1
  3. Geoblink, Was ist Location Intelligence?, http://www.dotnetpro.de/SL2303GeoDB2
  4. Geodatenportal für Deutschland, http://www.geoportal.de
  5. Geodateninfrastruktur Deutschland (GDI-DE), http://www.gdi-de.org
  6. GDI Thüringen, Landesprogramm „Offene Geodaten“, http://www.dotnetpro.de/SL2303GeoDB3
  7. OpenStreetMap, http://www.openstreetmap.org
  8. Planet OSM, https://planet.openstreetmap.org
  9. Geofabrik, http://www.geofabrik.de
  10. Thomas Brinkhoff, Geodatenbanksysteme in Theorie und Praxis, Wichmann, 2013, ISBN 978-3-87907-513-3,
  11. SQLite, http://www.sqlite.org/download.htm
  12. SpatiaLite, http://www.dotnetpro.de/SL2303GeoDB4
  13. Gaia-SINS projects, http://www.gaia-gis.it/gaia-sins
  14. 7-Zip, http://www.7-zip.de
  15. Spatialite-GUI, http://www.dotnetpro.de/SL2303GeoDB5
  16. Beispiel-Datensatz, http://www.dotnetpro.de/SL2303GeoDB6
  17. QGIS, https://qgis.org/de/site
  18. Christopher Kipp, Erstellen und Benutzen einer Geo­datenbank, http://www.dotnetpro.de/SL2303GeoDB7
  19. Elena Bochkor, Veikko Krypczyk, Ordnung für Orte und Regionen, dotnetpro 10/2022, Seite 86 ff., http://www.dotnetpro.de/A2210GeoDB
  20. INSPIRE Geoportal, http://www.dotnetpro.de/SL2303GeoDB8

Neueste Beiträge

DWX hakt nach: Wie stellt man Daten besonders lesbar dar?
Dass das Design von Websites maßgeblich für die Lesbarkeit der Inhalte verantwortlich ist, ist klar. Das gleiche gilt aber auch für die Aufbereitung von Daten für Berichte. Worauf besonders zu achten ist, erklären Dr. Ina Humpert und Dr. Julia Norget.
3 Minuten
27. Jun 2025
DWX hakt nach: Wie gestaltet man intuitive User Experiences?
DWX hakt nach: Wie gestaltet man intuitive User Experiences? Intuitive Bedienbarkeit klingt gut – doch wie gelingt sie in der Praxis? UX-Expertin Vicky Pirker verrät auf der Developer Week, worauf es wirklich ankommt. Hier gibt sie vorab einen Einblick in ihre Session.
4 Minuten
27. Jun 2025
„Sieh die KI als Juniorentwickler“
CTO Christian Weyer fühlt sich jung wie schon lange nicht mehr. Woran das liegt und warum er keine Angst um seinen Job hat, erzählt er im dotnetpro-Interview.
15 Minuten
27. Jun 2025
Miscellaneous

Das könnte Dich auch interessieren

UIs für Linux - Bedienoberflächen entwickeln mithilfe von C#, .NET und Avalonia
Es gibt viele UI-Frameworks für .NET, doch nur sehr wenige davon unterstützen Linux. Avalonia schafft als etabliertes Open-Source-Projekt Abhilfe.
16 Minuten
16. Jun 2025
Mythos Motivation - Teamentwicklung
Entwickler bringen Arbeitsfreude und Engagement meist schon von Haus aus mit. Diesen inneren Antrieb zu erhalten sollte für Führungskräfte im Fokus stehen.
13 Minuten
19. Jan 2017
Evolutionäres Prototyping von Business-Apps - Low Code/No Code und KI mit Power Apps
Microsoft baut Power Apps zunehmend mit Features aus, um die Low-Code-/No-Code-Welt mit der KI und der professionellen Programmierung zu verbinden.
19 Minuten
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige