Geodaten nahtlos in ETL-Prozesse integrieren<br>

Geodaten nahtlos in ETL-Prozesse integrieren

Ein Tutorial zur Integration von Spatial Data

09.02.2019, Autor: Dr. Wassilios Kazakos

Dieses Advertorial wurde von der Disy Informationssysteme GmbH zur Verfügung gestellt.

Die Integration von Geodaten in datengesteuerte Entscheidungsprozesse wird immer wichtiger. Die erhöhte Verfügbarkeit von Daten durch Sensoren, mobile Endgeräte, sozialen Medien und private oder öffentliche Geodaten bietet Unternehmen und Institutionen viele neue Möglichkeiten der Datenanreicherung und -analyse.

Wenn wir von räumlichen Daten oder auch Geodaten sprechen, meinen wir jegliche Art von Daten, die Informationen über den Ort und die Form von Objekten auf der Erde beinhalten. Dies kann beispielsweise ein Datensatz von Unternehmen, Gebäuden, Personen oder Fahrzeugen mit Namen, Typen und Farben sein, wobei zusätzliche X-, Y-Koordinatenwerte deren aktuelle oder dauerhafte Position auf der Erde darstellen.  

Objekte der realen Welt liegen jedoch nicht nur als Punkte vor, sondern können auch in komplexeren geometrischen Formen dargestellt werden. Mit Linien mit mehreren Knoten können wir zum Beispiel eine Straße, einen Fluss oder sogar Bewegungen eines Autos oder einer Person beschreiben. Mit Polygonen können zusätzlich Gebäude, Siedlungen, Geschäfte oder Waldgebiete beschrieben werden.

Geodaten werden in Datenintegrationsprozessen oft nicht berücksichtigt

Bislang wurden Geodaten auch aufgrund ihrer Vielfalt an Formaten und räumlichen Bezugssystemen sowie ihren spezifischen geometrischen Operatoren wie Verschneidung, Puffern, Enthaltensein etc. in traditionellen Datenintegrationsprozessen nur als Sonderfall oder gar nicht berücksichtigt. Sie werden meist separat verwaltet.

Abbildung 1: Ein beispielhafter ETL-Prozess mit den neuen GeoSpatial-Komponenten

In diesem Artikel möchten wir Ihnen am Beispiel der Open Source Software Talend Open Studio sowie des Geo-ETL-Plugins „GeoSpatial Integration für Talend“ anhand eines konkreten Szenarios zeigen, wie Sie Ihre ETL-Prozesse einfach mit Geodaten anreichern können. Wenn Sie das Beispiel selbst ausprobieren möchten, können Sie eine aktuelle Version von Talend Open Studio für Data Integration verwenden und zusätzlich das Plugin „GeoSpatial Integration für Talend“ kostenlos herunterladen und installieren.

Das Plugin erweitert Talend, indem es Zugriff auf räumliche Datenbanken und Formate wie Oracle Locator / Spatial, PostGIS, SpatiaLite, Shape-Files und Well-known text (WKT) bietet. Darüber hinaus erweitert das Plugin die Palette der Talend-Komponenten um einen vollständigen Satz geometrischer Operatoren wie Flächen- oder Längenrechner, Puffer, Zentroid, Verschneidung und vieles mehr, um räumliche Aufgaben und Workflows zu automatisieren. Abbildung 1 zeigt einen beispielhaften ETL-Prozess mit den neuen GeoSpatial-Komponenten.

Um den praktischen Nutzen und die Funktionsweise vorzustellen, betrachten wir folgendes Anwendungsbeispiel: In einem Windpark steht jede Turbine als einzelnes Standortobjekt (Punkt) zur Verfügung. Wir möchten die gesamte Fläche des Windparks berechnen. „Geometrisch“ gesprochen möchten wir die konvexe Hülle aller Punkte berechnen, die zu diesem Windpark gehören.

Unsere Beispielübung umfasst die folgenden Schritte:

  1. Definition der Metadaten für die neue Datenquelle (Shapefile).
  2. Definition des Talend-Jobs, um die Windparkfläche mithilfe einer geometrischen Operation zu berechnen
  3. Ausführung des Jobs und schreiben der Resultate in eine Datei oder Datenbank.

Abbildung 2: In der Karte sieht man schnell, welche Turbinen zusammen einen Park bilden.

Mit diesem einfachen Prozess können Sie die Gesamtfläche des Windparks bestimmen und visualisieren. Auf dieser Basis können dann weitere Planungsschritte beispielsweise im Bereich Straßenbau oder Naturschutz vorgenommen werden.

Schritt 1: Definition der Metadaten, um die Geometrien aus einer Datei oder Datenbank zu laden

Zuerst müssen wir die neue Datenquelle, die wir lesen möchten, registrieren. In unserem Fall handelt es sich um ein Shape File mit den Standortinformationen zu den Windrädern. Wenn Sie räumliche Daten in einem anderen Format oder einer anderen räumlichen Datenbank wie Oracle Spatial oder PostgreSQL mit PostGIS haben, ist der Prozess sehr ähnlich.

Damit wir uns ein besseres Bild der Lage unserer Windkraftanlagen machen können, haben wir die einzelnen Standorte in einer Karte visualisiert. Im Beispiel wurde die GIS & Reporting-Plattform Cadenza Desktop sowie eine auf Open Street Map basierende Hintergrundkarte verwendet. In der Karte sieht man sehr schön, welche Turbinen zusammen einen Park bilden (siehe Abbildung 2).

Abbildung 3: Metadaten für die neue Datenquelle definieren.

Als Nächstes müssen wir die Metadaten für unsere neue Datenquelle in Talend definieren (siehe Abbildung 3). Auf diese Weise können wir diese Datenquelle für den Beispieljob und andere zukünftige Jobs verwenden.

  1. Wir geben dem Shapefile einen Namen und einen Verwendungszweck.
  2. Wählen Sie den Pfad zur Quelldatei mit den Windrädern. Falls das Shapefile eine Projektdatei (.prj) hat, wird das Koordinatenreferenzsystem automatisch identifiziert und zugewiesen. Sonst können Sie es auch manuell eingeben.
  3. Bearbeiten Sie das Schema.

Schema-Informationen wie Spaltennamen und Datentypen werden automatisch importiert. Bei Bedarf können Anpassungen vorgenommen werden (z. B. Einstellen des Primärschlüssels, wenn dieser nicht in den Datensätzen angegeben wurde).

Das Shapefile wird nun in die Talend-Metadaten aufgenommen und kann für den nächsten Schritt oder für jeden anderen Job verwendet werden, den Sie mit diesen Daten beginnen möchten.

Schritt 2: Einen Talend-Job mit den räumlichen Operatoren erstellen

In diesem Schritt ist es unser Ziel, eine Geometrie zu generieren, die alle Windräder abdeckt und eine konvexe Hülle mithilfe der unten abgebildeten Geometriefunktionen zu erstellen (siehe Abbildung 4).
 
Dazu müssen Sie in Talend einen neuen Job erstellen und einen Namen, einen Zweck und eine Beschreibung definieren. Legen Sie dann die neue Datenquelle „Windfarm“ (im vorherigen Schritt erstellt) per „Drag&Drop“ im Arbeitsbereich des Jobs ab. Automatisch öffnet sich ein Dialogfenster, in dem Sie die gewünschte Komponente auswählen können. Da wir mit einem Shapefile arbeiten, wählen Sie "dShapeFileInput" aus (Abbildung 5).

Das Shapefile mit den Windrädern kann nun weiterverarbeitet werden. Da wir die konvexe Hülle (Windparkfläche) unserer Punkte berechnen möchten, wählen Sie die neue Komponente dAggregateGeometryRow aus und ziehen Sie sie in den Arbeitsfläche des Jobs. Zwischen beiden Komponenten legen Sie eine Main-Row-Verbindung an (rechter Mausklick auf dShapeInput->main->row und Verbindung auf dAggregate GeometryRow ziehen). Im Beispiel haben wir die Main-Row-Verbindung in „windfarm“ umbenannt (Abbildung 6).
 
Zum Schluss müssen wir das Ausgabeformat (Output) definieren. In unserem Fall ist es ein einfaches Shapefile, das nur den Namen des Windparks und die neu erstellten Geometrien enthält. Wählen Sie daher die Komponente dAggregateGeometryRow aus, und navigieren Sie zur Registerkarte "Component". Klicken Sie auf die Schaltfläche "EditSchema", um das Ausgabeschema der Komponente zu definieren. Durch Klicken auf die Schaltfläche „Add“ (Symbol „+“) erstellen wir zwei neue Spalten „Name“ (Typ: STRING, Länge: 80) und „ConvexHull“ (Typ: DGeometry).

Da unsere Quelldatei Punkte aus verschiedenen Windparks enthält und wir eine konvexe Hülle der Windräder eines jeden Windparks generieren möchten, müssen die Windräderpunkte nach dem Namen jedes Windparks gruppiert werden. Dies gelingt, indem die Eigenschaft „Group by“ der Komponente „dAggregateGeometryRow_1“ für die Spalte „NAME“ definiert wird (siehe Abbildung 7).

Abbildung 4: Alle Windräder eines Windparks in konvexer Hülle

Abbildung 5: Einen neuen Job definieren

Abbildung 6: Main-Row-Verbindung anlegen

Abbildung 7: Grupppierung nach Namen

Fügen Sie dem Arbeitsbereich eine tMap-Komponente hinzu, und erstellen Sie eine Verbindung („main row“) zwischen der „dAggregateGeometryRow“ und der „tMap“ -Komponente. Damit die einzelnen ETL-Prozess-Schritte einfacher nachvollziehbar sind, haben wir die neue Main-Row-Verbindung in „convex_hull“ umbenannt (siehe Abbildung 8).

Öffnen Sie die tMap-Komponente mit einem Doppelklick, legen Sie einen neuen Output-Daten-Strom an und nennen Sie ihn z. B. „Out1“ (Abbildung 9).
 
Jetzt können wir den Input-Datenstrom per Drag & Drop auf den Output-Datenstrom abbilden, wie unten gezeigt. Es ist empfehlenswert, eine eindeutige Kennung für alle Ausgabedatensätze zu erstellen. In unserem Beispiel erstellen wir daher eine neue "ID" -Spalte für den unique identifier als "Integer" -Datentyp, indem wir die Numeric.sequence-Funktion ("s1", 1,1) verwenden (Abbildung 10).
 
Die neu erstellten Geo- und Attributdaten werden als Shapefile gespeichert. Dazu können wir die neue Komponente dShapefileOutput wie folgt verwenden (Abbildung 11).
 
Um den Output-Stream anzupassen, navigieren Sie zu Komponenteneigenschaften und wählen Sie den Speicherort des Shapefiles. Wählen Sie das gleiche Koordinatenreferenzsystem aus, das in der Datenquelle definiert ist. In unserem Beispiel ist es EPSG: 3857 (a.k.a WGS84 oder Web Mercator) - siehe Abbildung 12.


Schritt 3: Führen Sie den Job aus und schreiben Sie die Ergebnisgeometrien in eine Datei oder Datenbank.

Jetzt können Sie den Job ausführen und die Ausgabedateien werden in der von Ihnen angegebenen Datei zur weiteren Verwendung gespeichert. Nach der Ausführung Ihres Jobs sollte Ihr ETL-Prozess nun so aussehen:

Herzlichen Glückwünsch! Sie haben gerade Ihren ersten Geo-ETL-Job bearbeitet, ohne Talend Open Studio zu verlassen.

In der Karte (haben wir wieder mit Cadenza gemacht) sehen wir unser Ergebnis visualisiert. Die neuen Bereiche werden einschließlich aller einzelnen Windräder eines Bereichs dargestellt:

Abbildung 8: Der Main-Row-Verbindung einen Namen geben

Abbildung 9:  Einen neuen Output-Daten-Strom anlegen

Abbildung 10: Abbildung des Input-Datenstorms auf den Output-Datenstrom

Abbildung 11: Speicherung als Shapefile

Abbildung 12: Auswahl des Koordinatenreferenzsystems

Weitere Schritte

Wenn man kurz über das oben geschilderte Anwendungsszenario nachdenkt, fallen einem noch viele andere Beispiele ein, bei denen räumliche Informationen und Vorgänge für Geschäftsentscheidung von Nutzen sind.
Man könnte beispielsweise…

… den besten Standort für ein Geschäft basierend auf demografischen Daten und Entfernungen zu bereits vorhandenen Geschäften berechnen.

… den Standort von Webseiten-Besuchern mit mobilen Endgeräten analysieren, um spezielle ortsbezogene Angebote zu aktivieren.

… neue Gegenden identifizieren, in denen Offline-Marketing die gewünschte Zielgruppe am besten erreicht.

… das Reporting um zusätzliche Geo-Informationen erweitern und vertiefende räumliche Analysen durchführen.

Nach dem Download des Plugins GeoSpatial Integration für Talend finden Sie viele weitere Anwendungsbeispiele. Probieren Sie es aus! Sie können das Plugin kostenlos mit Talend Open Studio verwenden. Für professionellen Support in einer Produktionsumgebung Umgebung, Teamarbeit und in Verbindung mit Talend Data Integration oder Talend Data Management Platform bietet Disy auch ein Abomodell (Subscription) für GeoSpatial Integration für Talend an.

Video-Tutorial: Grundlagen der Geodatenintegration (Start bei 8:54) und GeoSpatial Integration für Talend (Start bei 28:23).