09 February 2014

Der Bezugsrahmenwechsel steht vor der Tür und viele Geodaten müssen früher oder später transformiert werden. Swisstopo bietet einen Webdienst und ein FME-Plugin für diese Transformation an.

Für das ETL-Tool GeoKettle habe ich ein Plugin geschrieben, das diese Transformation für Vektordaten als «Transform-Step» anbietet. Das Plugin kann auf Github heruntergeladen werden: FreeFrame.zip. Die Zip-Datei muss entpackt und in den Ordner plugins/steps von GeoKettle kopiert werden. Hat die Installation geklappt, erscheint unter Design - Transform ein neuer Step: «FreeFrame Plugin» Eine (marginal) ausführlichere Installationsanleitung findet sich hier. Zum Ausprobieren habe ich ein Sorglos-Paket zusammengestellt, das aus GeoKettle und dem Plugin selbst besteht. Es wird nicht mit jeder neuen Plugin-Version aktualisiert.

Die Anwendung ist einfach: Der Transformationsschritt kann innerhalb GeoKettle zu einem beliebigen Zeitpunkt angewendet werden, z.B. vor dem Export einer Datenbanktabelle in eine Shapedatei:

Postgis 2 Shape

Viel einstellen muss/kann man nicht:

Plugin Einstellungen
  • Apply transformation on: Die gewünschte Geometriespalte, die transformiert werden soll.

  • Source reference frame: Quell-Referenzrahmen (LV03 oder LV95)

  • Target reference frame: Ziel-Referenzrahmen (LV03 oder LV95)

  • Triangular transformation network: Dreiecksvermaschungsdatensatz (CHENyx06)

Das Plugin prüft nicht, ob die Geometrien im richtigen Koordinatensystem vorliegen. Wählt man also z.B. als Quell-Referenzrahmen «LV03» aus und die Input-Geometrien sind in einem anderen Koordinatensystem (also nicht EPSG:21781) erhält man keine befriedigenden und sinnvollen Resultate. Für vorgängige Koordinatentransformationen kann der «SRS Transformation»-Schritt verwendet werden.

Liegen die zu transformierenden Koordinaten nicht innerhalb der Dreiecksvermaschung wird keine Transformation durchgeführt und die Koordinaten werden unverändert weitergeleitet.

Stimmt die Transformation auch? Als kleine GeoKettle-Übung habe ich Punktkoordinaten verglichen, die ich mit dem swissopo-Dienst und mit GeoKettle transformiert habe:

Vergleich swisstopo vs. GeoKettle

Die Resultate zeigen, dass es ausser Kleinstdifferenzen aus (wahrscheinlich?) nummerischen Gründen keine Unterschiede gibt.

Der Transformationsschritt ist vernünftig schnell: Für das Exportieren der gesamten Bodenbedeckung des Kantons Solothurn (circa 270'000 Polygone) aus einer PostgreSQL/Postgis-Datenbank in eine Shape-Datei benötigt GeoKettle ohne Transformation circa 40 Sekunden; mit Transformation werden knapp 100 Sekunden benötigt. Das Transformieren der gleichen Datenbanktabelle inkl. Speichern in einer neuen Datenbanktabelle benötigt circa 130 Sekunden. Für den Test wurde ein Hetzner-Server (Intel i7-3770, HDD im Software-Raid 1, Ubuntu 10.04) verwendet.

Was bringt die Zukunft:

  • Einbinden von kantonalen Dreiecksvermaschungen, z.B. BEENyx15.

  • Automatische Detektierung der Geometriespalte(n). So wird es möglich sein alle Tabellen einer Datenbank oder eines Datenbankschemas in einem Rutsch zu transformieren.

Der Quellcode des Plugins befindet sich auf Github.

Posted by Stefan Ziegler. | GeoKettle , ETL , PDI , Kettle , Bezugsrahmenwechsel , LV95