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.