KbS_V1_5 ohne Probleme in GeoPackage zu implementieren und zu bearbeiten? Lange nur ein ferner Traum - jetzt Realität. Mit Model Baker 7.10 und ili2db 5.2 im Backend und einer neueren QGIS Version kannst du deine INTERLIS Datensätze, die mehrere Geometriespalten pro Klasse enthalten, bequem auch im GeoPackage barbeiten.
Ein seit Jahren bestehender Painpoint im Umgang mit Modellen wie dem des Katasters Belasteter Standorte oder Nutzungsplanung war, dass die Modelle Klassen mit mehreren Geometrien enthalten.
CLASS Belasteter_Standort =
Katasternummer : MANDATORY TEXT;
URL_Standort : MultilingualUri;
Geo_Lage_Polygon : MultiPolygon;
Geo_Lage_Punkt : GeometryCHLV95_V1.Coord2;
[...]
END Belasteter_Standort;
Bei der Implementierung dieser Klasse in eine relationale Datenbank stiess man teilweise an Limiten. Währenddem PostgreSQL damit keine Probleme hat und seit (scheinbar) jeher Tabellen mit mehreren Geometrien erstellen kann, hatte man da mit GeoPackage ein Problem. GeoPackage konnte nicht mehrere Geometriespalten in der gleichen Tabelle führen und diese folglich als zwei Layer mit derselben Source im QGIS visualisieren (so wie es PostgreSQL kann).
Man hätte natürlich das Modell auch so bauen können, dass es funktionierte. Vorausgesetzt man dessen Autor:in.
CLASS Belasteter_Standort (ABSTRACT) =
Katasternummer : MANDATORY TEXT;
URL_Standort : MultilingualUri;
[...]
END Belasteter_Standort;
CLASS Belasteter_Standort_Punkt EXTENDS Belasteter_Standort =
Geo_Lage_Punkt : GeometryCHLV95_V1.Coord2;
END Belasteter_Standort;
CLASS Belasteter_Standort_Polygon EXTENDS Belasteter_Standort =
Geo_Lage_Polygon : MultiPolygon;
[...]
END Belasteter_Standort;
Doch diese Variante - so schön sie auch für einen Techie scheint - ist weniger leserlich als die erste Variante. Und ein Modell soll ja bekanntlich auch für thematische Fachpersonen ein konzeptionelles Dokument zum Verständniss der Datenstruktur sein.
Weiter hat mir mal einer der Tool-Entwickler gesagt, wenn er modelliert, dann modelliert er und nimmt keine Rücksicht darauf, ob die Tools es handhaben können oder nicht. Sonst bleibt man ja auch in der Tool-Entwicklung stehen. Auch das stimmt natürlich.
Und doch, ein Modell wie das des Katasters Belasteter Standorte nicht in einem GeoPackage implementieren zu können, war eine sehr mühsame Einschränkung. Die Bundesmodelle sind nun einmal vorgegeben und man kann nicht nach belieben daran herumschrauben.
Der Zugzwang bestand also bei den Tools und um eine GeoPackage-Tabelle mit solchen Mehrfachgeometrien in QGIS bearbeiten zu können, war gleich der ganze Stack involviert:
- ili2gpkg, um Tabellen mit mehreren Geometrien zu erstellen (ab 5.2.0)
- GDAL (als Backendlibrary von QGIS), um solche Tabellen lesen zu können (ab 3.8)
- QGIS Model Baker, um die Layer entsprechend ihren Eigenheiten zu erstellen und benennen (ab 7.10.0)
An dieser Stelle ein grosser Dank an der Zusammenarbeit. Doch ist auch wichtig zu erwähnen, dass die Umsetzung - insbesondere in GDAL - nicht dem allgemeinen Standard entspricht. Weshalb es gewisse Risiken geben kann und es sich empfielt, die Bearbeitung von Daten mit dieser Methode selbst vorher gut zu testen. Die Konfiguration ist in Model Baker auch nicht standardmässig aktiviert. Wenn du ein GeoPackage mit Mehrfachgeometrien erstellen möchtest, kannst du das über die Erweiterten Einstellungen beim Schema Import machen.
Dies setzt im Hintergrund den Parameter --gpkgMultiGeomPerTable
. Hat es keine Klassen mit mehreren Geometrien im betreffenden Modell, macht dieser Parameter keinen Unterschied aus.
Beim Erstellen des QGIS Projektes wird der nächste Hinweis angezeigt. Arbeitest du mit einer QGIS Version, die im Backend eine GDAL Version unterstützt, die diese Implementierung bereits beinhaltet (ab GDAL 3.8), dann kannst du das QGIS Projekt erstellen, ansonsten ist es dir leider (noch) nicht möglich.
Grundsätzlich bauen die neueren QGIS Projekte auf neuere Versionen als GDAL 3.8 auf. Zumindest auf Windows ab mindestens 3.36 und evtl. auch schon einige 3.34er Versionen. Auf Ubuntu kann es sein, dass man dieses Mal Pech hat. Das offizielle Repo hat noch die GDAL Version 3.4. Mit dem ubuntugis Repository mit unstable dependencies hat man vermutlich mehr Erfolg.
So oder so aber bleibt zu beachten, für wen man dieses GeoPackage und QGIS Projekt erstellt. Denn auch wenn es bei dir läuft, möchtest du vielleicht auch deine Mitarbeiter:innen darauf loslassen und da musst du sicherstellen, dass auch sie die richtige QGIS Version verwenden.
Das ändert aber nichts an der Tatsache, dass du wir nun endlich unkompliziert und problemlos Daten des KbS_V1_5 mittels QGIS im GeoPackage bearbeiten können. Und wir hoffen, dass auch du davon profitieren kannst.
Also backe das Projekt.
Und viel Spass damit!
Anstelle wie bisher zwei Tabellen belasteter_standort
und belasteter_standort_geo_lage_punkt, wird von ili2gpkg anhand des Parameters
--gpkgMultiGeomPerTablenur eine Tabelle
belasteter_standorterstellt. Dafür werden die beiden Geometriespalten in die technische Tabelle
gpkg_geometry_columnseingetragen. Wenn in dieser Tabelle nun
belasteter_standortmehrfach eingetragen ist, liefert OGR (GDAL) dem QGIS mehrere Layer mit eindeutigen Namen
belasteter_standort (geo_lage_punkt)und
belasteter_standort (geo_lage_polygon)`