Shapefiles

Zusammenfassung der Problematiken:

.prj nicht standartisiert:

Je nach exportierendem Programm sind Einträge etwas anders. Dadurch entsteht keine falsche Lage , da die Konstanten der Raumbezüge korrekt sind. Aber in QGIS wird ein Synonym des Raumbezuges angezeigt, was Nutzer eventuell verwirren kann. Testdatensatz: OpenData Verwaltungsgrenzen der Bundesländer vom BKG zeigt in QGIS EPSG: 3044 obwohl die Dokumentation von 25832 spricht.

Fehlende Geometrien:

Manche Shapedateien haben mehr Geometrien als QGIS anzeigt. Grund ist die Mischung von Polygon und MultiPolygon welches die Shape-Datei nicht unterscheidet. D.h. Mehrteilige Geometrien werden in QGIS unter Umständen nicht angezeigt. Das betrifft nicht alle Shape-Dateien. Es hat vermutlich mit der Entstehung zu tun bzw. wie die GDAL die Geometrien ließt (insgesamt der genaue Grund unklar). Testdatensatz OpenData Verwaltungsgrenzen der Bundesländer vom BKG.

Die älteren QGIS-Versionen (2.14 und davor) zeigen keinerlei Hinweise auf fehlende Objekte, sie sind schlicht nicht existent. Ab 2.18 zeigt die Attributtabelle z.B. „Objekte insgesamt 32, gefiltert 29“. Allerdings werden beim speichern als neue Datei oder editieren (und dann speichern) diese Objekte verworfen und es folgt wieder die Anzeige 29 von 29. Die Objekte sind dann gelöscht worden und nicht wiederherstellbar. Es gibt keine dem ungeschulten Anwender zugängliche Möglichkeit diese fehlenden Objekte zu erreichen. Auch nicht in der Attributtabelle, der Filter ist dem Nutzer nicht zugänglich. Manche Geoverarbeitung bricht darüber hinaus mit Fehlern ab.

NULL-Geometrien:

Der Shape-Standard erlaubt das speichern von Datensätzen ohne Geometrie. Die werden ordentlich in der Attributtabelle angezeigt, aber es gibt keine Möglichkeit eine Geometrie hinzuzufügen. Der Weg über den Feldrechner „vorhandenes Feld ersetzen“ - Geometrie mit „geom_from_wkt“ ist nicht wirklich praktisch. Testdatensätze: Foto-Importe mit Geotags wenn die Fotos keine Koordinaten enthalten (fehlendes GPS-Signal z.B.), bzw. seit 2.18 erlaubt QGIS das hinzufügen von Objekten in der Attributtabelle. Dort wird ein solche Null-Geometrie in der Shapedatei angelegt. Randnotiz: Möchte man auf ein solches Objekt zoomen („zu gewählten Objekt Zoomen“) stürzt QGIS ab.

Bekannte Schwächen beim Datenaustausch mit anderen Formaten/Programmen:

  • Texte mit mehr als 254 Zeichen werden abgeschnitten (ohne jeden Hinweis)
  • Spalten mit mehr als 10 Zeichen ebenso
  • Float wird intern als Text gespeichert (Rundungsprobleme)
  • Kurven werden in Liniensegmente aufgelöst oder garnicht übernommen
  • Interpretation der fehlenden Zahlen-Werte macht jedes Programm anders (0 ist nicht gleich NULL bei Mittelwertberechnungen)
  • viele Programme schreiben auch Shape-Dateien größer als 2GB in der .dbf oder .shp (QGIS ignoriert das ebenso), was in stärker standardkonformen Programmen zu Problemen führt
  • Flächenberechnungen sind statisch und bleiben auch nach Koordinatenbezugswechsel oder Editierung konstant

Lösungsideen:

  1. Endlich ein anderes Format nutzen… Spatialite, GeoPackage oder PostGIS sind offene Formate welche diese Probleme nicht haben
  2. Dokumentation der Daten (EPSG, Anzahl Objekte, was war die Grundlage der Flächenberechnung etc.) und generelles Bewusstsein der Shape-Datei Schwächen gegenüber
  3. Auf die Standardkonformität achten. Wenn dies die Programme/Formate nicht tun müssen dies die Nutzer beachten (z.B. Arbeitsrichtlinien bereitstellen)
  4. Workaraounds:
    1. Ein Skripttool oder Plugin (besser Processing-Werkzeug, welches in Modelle integriert werden kann) könnte hier abhilfe schaffen. GDAL-Info reicht nicht, da es z.B. die verwendeten Textlängen nicht angibt (bei Objekten mit 254 Zeichen kann man von Export-Verlusten ausgehen). Sonst ist GDAL-Info ein erster Schritt für die Anzahl der Geometrien
    2. oder ein einfaches ausrechnen der Objektanzahl mit einem Taschenrechner: Die .shx ist so definiert das sie einen 100 Byte Header besitzt und danach exakt 8 Byte für jedes Objekt verwendet. D.h. Größe der .shx in Byte Minus 100, geteilt durch 8 ergibt die exakte Objektanzahl ohne auf ein Zusatzprogramm zu vertrauen. Auch reine Attributeinträge werden gezählt da sie tatsächlich auch eine, wenn auch leere, Geometrie bekommen.
    3. Nutzung des Auto-Field Plugins für die Aktualisierung von Flächengrößen etc.. Oder Neuberechnung der Flächengrößen als Einbau in den Arbeitsablauf.

Diese Workarounds sollten am besten innerhalb der Anwendergruppe kurz abgestimmt werden und zentral kommuniziert werden das dort nicht wieder allzu verschiedene herangehensweisen entstehen. Eventuell melden als #Issue bei der GDAL? Oder QGIS? Wobei all die Probleme schon unglaublich lange bekannt sind.