Geo-ETL-Tutorial: Geodaten in ETL-Prozesse integrieren

In diesem Tutorial zeigen wir Ihnen Schritt für Schritt, wie Sie Geodaten und räumliche Operationen in ETL-Prozessen nutzen können. Im Einsatz sind die frei erhältlichen Tools Talend Open Studio für Data Integration und die Disy-Erweiterung GeoSpatial Integration für Talend.

Mehr Geo-Analytics in der neuen Version von Cadenza (54 Zeichen)

Am Beispiel der Open-Source-Software Talend Open Studio sowie des Geo-ETL-Plug-ins „GeoSpatial Integration für Talend“ zeigen wir Ihnen, wie Sie in Ihren ETL-Prozessen Geodaten und räumliche Operationen nutzen können. Um beim Tutorial mitzumachen, laden Sie zunächst eine aktuelle Version von Talend Open Studio für Data Integration und zusätzlich das Disy-Plug-in „GeoSpatial Integration für Talend“ herunter und installieren Sie beides. Im Downloadpaket von Disy sind alle Daten enthalten, die Sie benötigen, um bei diesem Tutorial mitzumachen:

 

 

Während Sie die Software herunterladen und installieren, wollen wir Ihnen ein paar Basisinformationen zur Funktionsweise von GeoSpatial Integration für Talend geben:
Das Plug-in erweitert Talend, indem es Zugriff auf räumliche Datenbanken und Formate wie Oracle Locator/Spatial, PostGIS, SpatiaLite, Shapefiles und Well-known Text (WKT) ermöglicht. Darüber hinaus erweitert es die Palette der Talend-Komponenten um einen vollständigen Satz an geometrischen Operatoren wie Flächen- oder Längenrechner, Puffer, Zentroid, Verschneidung und vieles mehr, um räumliche Aufgaben und Workflows zu automatisieren.

In unserem Tutorial betrachten wir folgendes Anwendungsbeispiel:
In einem Windpark steht jede Turbine als einzelnes Standortobjekt (Punkt). 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 Übung umfasst die folgenden Schritte:

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

Mit diesem einfachen Prozess können Sie die Gesamtfläche des Windparks bestimmen. 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

Damit wir uns ein besseres Bild zur Lage unserer Windkraftanlagen machen können, haben wir die einzelnen Standorte mit Hilfe von Cadenza visualisiert. In der Karte sieht man sofort, welche Turbinen zusammen einen Park bilden (siehe Abb. 1).

Abb. 1: In der Karte sieht man schnell, welche Turbinen zusammen einen Park bilden

Zuerst müssen wir die neue Datenquelle, die wir lesen möchten, in Talend registrieren. In unserem Fall handelt es sich um ein Shapefile mit den Standortinformationen zu den Windrädern. Auf diese Weise können wir diese Datenquelle für den Beispieljob und andere zukünftige Jobs verwenden.

Im Repository-Baum von Talend wählen Sie Metadata ->  File Shapefile ->  Create file shapefile.

Abb. 2: Metadaten werden angelegt
Abb. 2: Metadaten werden angelegt

Es öffnet sich ein Dialog, bei dem Sie den Namen und einen Verwendungszweck angeben sowie das Shapefile Windfarm.shp auswählen. Nachdem Sie die Daten, die mit dem Disy-Plug-in ausgeliefert werden, entpackt haben, sollten Sie die Datei unter \Disy_GeoSpatial_Sample_Data\in\DataPreparation wiederfinden. Die 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). Klicken Sie auf Finish.

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

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

In diesem Schritt generieren wir mit Hilfe der unten abgebildeten Geometriefunktionen die Geometrie einer konvexen Hülle, die alle Windräder abdeckt (siehe Abb. 3).

Abb. 3: Alle Windräder eines Windparks in konvexer Hülle
Abb. 3: Alle Windräder eines Windparks in konvexer Hülle

Dazu müssen Sie in Talend einen neuen Job erstellen und einen Namen, einen Zweck und eine Beschreibung definieren (siehe Abb. 4 und 5).

Abb. 4: Einen Job unter „Job Designs“ erstellen
Abb. 5: Name, Zweck und Beschreibung angeben

Wählen Sie anschließend im Bereich „Metadata“ das Schema der Windparkdaten „windfarm“ aus und ziehen Sie es per Drag-and-drop in die Arbeitsfläche des Jobs. Automatisch öffnet sich ein Dialog. Sie können nun auswählen, mit welcher Komponente Sie arbeiten möchten. Wählen Sie hier dShapeFileInput aus (siehe Abb. 6).

Abbildung 6: Automatisch öffnet sich ein Dialog, wenn das Shapefile „windpark“ in die Arbeitsfläche gezogen wird
Abb. 6: Automatisch öffnet sich ein Dialog, wenn das Shapefile „windpark“ in die Arbeitsfläche gezogen wird

Da wir die konvexe Hülle unserer Punkte berechnen möchten, wählen Sie aus der Palette unter Disy GeoSpatial > Geom Operations die Komponente dAggregateGeometryRow aus und ziehen Sie sie in die Arbeitsfläche des Jobs (siehe Abb. 7).

Abb. 7: Die dAggregateGeometryRow-Komponente wird in die Arbeitsfläche gezogen
Abb. 7: Die dAggregateGeometryRow-Komponente wird in die Arbeitsfläche gezogen

Zwischen beiden Komponenten legen Sie eine Main-Row-Verbindung an (rechter Mausklick auf dShapeInput-Komponente, im Kontextmenü Row -> Main wählen und Verbindung auf dAggregateGeometryRow-Komponente ziehen, siehe Abb. 8).

 Abb. 8: Eine Main-Row-Verbindung wird angelegt
Abb. 8: Eine Main-Row-Verbindung wird angelegt

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. Per Doppelklick auf die Komponente dAggregateGeometryRow öffnen sich deren Einstellungen. Klicken Sie in den Einstellungen der Komponente 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).

Abbildung 9: Das Ausgabeschema der Komponente wird definiert. Die Spalten „Name“ und „Convexhull“ werden ausgewählt.
Abb. 9: Das Ausgabeschema der Komponente wird definiert. Die Spalten „Name“ und „Convexhull“ werden ausgewählt

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 in der Group by-Sektion die Spalte „Name“ sowohl für die Input- als auch die Output-Spalte ausgewählt wird (siehe Abb. 10).

Zusätzliche sollten in der Operators-Sektion die folgenden Einstellungen gewählt werden:

  • Output column = CONVEXHULL
  • Function = Convex hull
  • Input column = SHAPE
Abbildung 10: Funktion sowie In- und Output-Einstellungen werden ausgewählt.
Abb. 10: Funktion sowie In- und Output-Einstellungen werden ausgewählt

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

Abbildung 11: Die neue Main-Row-Verbindung heißt jetzt convex_hull (Main).
Abb. 11: Die neue Main-Row-Verbindung heißt jetzt convex_hull (Main)

Öffnen Sie die tMap-Komponente mit einem Doppelklick, legen Sie einen neuen Output-Datenstrom an und nennen Sie ihn z. B. „Out1“ (siehe Abb. 12).

Abbildung 12:  Einen neuen Output-Datenstrom anlegen
Abb. 12: Einen neuen Output-Datenstrom anlegen

Jetzt können wir den Input-Datenstrom per Drag-and-Drop auf den Output-Datenstrom abbilden. 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 (siehe Abb. 13 und 14).

Abbildung 13: Name und Convexhull werden markiert….
Abb. 13: Name und Convexhull werden markiert…
Abbildung 14: ... und auf den Output-Datenstrom abgebildet.
Abb. 14: ... und auf den Output-Datenstrom abgebildet

Legen Sie im Ausgangsdatenstrom eine neue Spalte „ID“ für den eindeutigen Identifikator an. Wählen Sie als Datentyp „Integer“ und setzen Sie einen Haken bei Schlüsselwert.

Abbildung 15: Im Ausgangsdatenstrom wird eine neue Spalte „ID“ angelegt.
Abb. 15: Im Ausgangsdatenstrom wird eine neue Spalte „ID“ angelegt

Die neu erstellten Geo- und Attributdaten werden als Shapefile gespeichert. Verwenden Sie hierzu die Komponente dShapefileOutput. Ziehen Sie diese aus der Palette unter Disy GeoSpatial -> File -> Shapefile in die Arbeitsfläche des Jobs. Verbinden Sie die tMap-Komponente mit dShapeFileOutput und verwenden Sie dabei den Namen Ihres tMap-Outputs: im Beispiel „out1“ (Abb. 16).

Abbildung 16: Der Output wird als Shapefile gespeichert
Abb. 16: Der Output wird als Shapefile gespeichert

Um den Output-Stream anzupassen, navigieren Sie zu den 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 Abb. 17.

Abbildung 17: Auswahl des Koordinatenreferenzsystems
Abb. 17: Auswahl des Koordinatenreferenzsystems

Schritt 3: Führen Sie den Job aus und schreiben Sie die Ergebnis-Geometrien in eine Datei oder Datenbank

Jetzt können Sie den Job ausführen. Öffnen Sie dafür per rechter Maustaste das Kontextmenü und wählen Sie Run job. 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 (siehe Abb. 18):

Abbildung 18: So sollte Ihr Geo-ETL-Job aussehen
Abb. 18: So sollte Ihr Geo-ETL-Job aussehen

Herzlichen Glückwunsch! Sie haben gerade Ihren ersten Geo-ETL-Job bearbeitet.

In der Karte, die wir mit Cadenza erstellt haben, sehen wir unser Ergebnis visualisiert (siehe Abb. 19).

Abbildung 19: Visualisierung der einzelnen Windanlagen als Windparks in Cadenza.
Abb. 19: Visualisierung der einzelnen Windanlagen als Windparks in Cadenza

Video: Geo-ETL-Geodaten mit Talend professionell verarbeiten