Wichtig

Übersetzen ist eine Gemeinschaftsleistung Sie können mitmachen. Diese Seite ist aktuell zu 100.00% übersetzt.

15.3. Datenformate und Felder erkunden

15.3.1. Rasterdaten

GIS-Rasterdaten sind Matrizen aus diskreten Zellen, die Objekte/Phänomene auf, über oder unter der Erdoberfläche darstellen. Jede Zelle im Rastergitter hat die gleiche Größe, und die Zellen sind normalerweise rechteckig (in QGIS sind sie immer rechteckig). Zu den typischen Rasterdatensätzen gehören Fernerkundungsdaten wie Luft- oder Satellitenbilder und modellierte Daten wie Höhenangaben oder Temperaturen.

Im Gegensatz zu Vektordaten gibt es bei Rasterdaten in der Regel nicht für jede Zelle einen zugehörigen Datenbankeintrag. Sie werden durch die Pixelauflösung und die X/Y-Koordinate eines Eckpixels des Rasterlayers geokodiert. Dies ermöglicht es QGIS, die Daten korrekt auf der Kartenansicht zu positionieren.

Das GeoPackage-Format ist für die Speicherung von Rasterdaten bei der Arbeit mit QGIS geeignet. Das gängige und leistungsstarke GeoTiff-Format ist eine gute Alternative.

QGIS nutzt die Georeferenzinformationen innerhalb des Layer (z.B. GeoTiff) oder eine zugehörige World-Datei zur korrekten Darstellung der Daten.

15.3.2. Vektordaten

Viele der in QGIS verfügbaren Objekte und Werkzeuge funktionieren unabhängig von der Vektordatenquelle auf die gleiche Weise. Aufgrund der unterschiedlichen Formatspezifikationen (GeoPackage, ESRI Shapefile, MapInfo und MicroStation Dateiformate, AutoCAD DXF, PostGIS, SpatiaLite, Oracle Spatial, MS SQL Server, SAP HANA Spatial Datenbanken und viele mehr), kann QGIS jedoch einige ihrer Eigenschaften unterschiedlich behandeln. Unterstützung wird durch die „GDAL Vektor-Treiber <https://gdal.org/drivers/vector/index.html>“ geboten. Dieser Abschnitt beschreibt, wie man mit diesen Besonderheiten arbeitet.

Bemerkung

QGIS unterstützt ((Multi)Punkt, (Multi)Linie, (Multi)Polygon, CircularString, CompoundCurve, CurvePolygon, MultiCurve, MultiSurface Objekttypen, alle optional mit Z und/oder M Werten.

Sie sollten auch beachten, dass einige Treiber einige dieser Objekttypen nicht unterstützen, wie CircularString, CompoundCurve, CurvePolygon, MultiCurve, MultiSurface feature type. QGIS wird sie konvertieren.

15.3.2.1. GeoPackage

Das Format „GeoPackage <https://www.geopackage.org/>“ (GPKG) ist plattformunabhängig und wird als SQLite-Datenbankcontainer implementiert und kann sowohl für die Speicherung von Vektor- als auch von Rasterdaten verwendet werden. Das Format wurde vom Open Geospatial Consortium (OGC) definiert und im Jahr 2014 veröffentlicht.

GeoPackage kann verwendet werden, um Folgendes in einer SQLite-Datenbank zu speichern:

  • Vektor-Objekte

  • Kachelmatrixsätze von Bildmaterial und Rasterkarten

  • Attribute (nicht raumbezogene Daten)

  • Erweiterungen

Seit QGIS Version 3.8 kann GeoPackage auch QGIS-Projekte speichern. GeoPackage Layer können JSON Felder haben.

GeoPackage ist das Standardformat für Vektordaten in QGIS.

15.3.2.2. ESRI Shapefile-Format

Das ESRI Shapefile-Format ist nach wie vor eines der am häufigsten verwendeten Vektordateiformate, auch wenn es im Vergleich zu beispielsweise GeoPackage und SpatiaLite einige Einschränkungen aufweist.

Ein Datensatz im ESRI Shapefile-Format besteht aus mehreren Dateien. Die folgenden drei sind mindestens erforderlich:

  1. .shp Datei mit den Geometrien der Objekte

  2. .dbf Datei mit den Attributen im dBase-Format

  3. .shx Indexdatei

Ein Datensatz im ESRI Shapefile-Format kann auch eine Datei mit dem Suffix .prj enthalten, die Projektionsinformationen enthält. Eine Projektionsdatei ist zwar sehr nützlich, aber nicht zwingend erforderlich. Ein Datensatz im Shapefile-Format kann zusätzliche Dateien enthalten. Weitere Einzelheiten finden Sie in der technischen Spezifikation von ESRI <https://www.esri.com/content/dam/esrisites/sitecore-archive/Files/Pdfs/library/whitepapers/pdfs/shapefile.pdf>`_.

GDAL bietet Lese- und Schreibunterstützung für das komprimierte ESRI Shapefile-Format (shz und shp.zip).

Verbesserung der Leistung für Datensätze im ESRI Shapefile-Format

Um die Zeichengeschwindigkeit für einen Datensatz im ESRI Shapefile-Format zu verbessern, können Sie einen räumlichen Index erstellen. Ein räumlicher Index verbessert die Geschwindigkeit beim Zoomen und Schwenken. Räumliche Indizes, die von QGIS verwendet werden, haben die Erweiterung .qix.

Gehen Sie folgendermaßen vor, um den Index zu erstellen:

  1. Laden eines Datensatzes im ESRI Shapefile-Format (siehe: Das Browser-Bedienfeld)

  2. Öffnen Sie den Dialog Eigenschaften des Layers, indem Sie auf den Namen des Layers in der Legende doppelklicken oder indem Sie mit der rechten Maustaste klicken und im Kontextmenü Eigenschaften… wählen

  3. Klicken Sie auf der Registerkarte Quelle auf die Schaltfläche Räumlichen Index erstellen.

Problem beim Laden einer .prj-Datei

Wenn Sie einen Datensatz im ESRI Shapefile Format mit einer .prj Datei laden und QGIS nicht in der Lage ist, das Koordinatenreferenzsystem aus dieser Datei zu lesen, müssen Sie die richtige Projektion manuell im Layer Eigenschaften ► Quelle Tab des Layers definieren, indem Sie den setProjection KBS wählen Button klicken. Dies liegt daran, dass .prj-Dateien oft nicht die vollständigen Projektionsparameter enthalten, wie sie in QGIS verwendet werden und im KBS-Dialog aufgeführt sind.

Wenn Sie mit QGIS einen neuen Datensatz im ESRI Shapefile-Format erstellen, werden aus demselben Grund zwei verschiedene Projektionsdateien erstellt: eine .prj-Datei mit eingeschränkten Projektionsparametern, die mit ESRI-Software kompatibel ist, und eine .qpj-Datei, die alle Parameter des KBS enthält. Wann immer QGIS eine .qpj-Datei findet, wird diese anstelle der .prj-Datei verwendet.

15.3.2.3. Getrennte Textdateien (CSV)

Getrennte Textdateien sind sehr verbreitet und werden wegen ihrer Einfachheit und Lesbarkeit häufig verwendet - die Daten können in einem einfachen Texteditor angezeigt und bearbeitet werden. Bei einer durch Trennzeichen getrennten Textdatei handelt es sich um tabellarische Daten mit durch ein bestimmtes Zeichen getrennten Spalten und durch Zeilenumbrüche getrennten Zeilen. Die erste Zeile enthält normalerweise die Spaltennamen. Ein gängiger Typ einer durch Trennzeichen getrennten Textdatei ist eine CSV-Datei (Comma Separated Values), bei der die Spalten durch Kommas getrennt sind. Begrenzte Textdateien können auch Positionsangaben enthalten (siehe Speichern von Geometrieinformationen in getrennten Textdateien).

QGIS erlaubt es Ihnen, eine getrennte Textdatei als Layer oder eine gewöhnliche Tabelle zu laden (siehe Das Browser-Bedienfeld oder Importieren einer Textdatei (mit Trennzeichen)). Prüfen Sie zunächst, ob die Datei die folgenden Anforderungen erfüllt:

  1. Die Datei muss eine abgegrenzte Kopfzeile mit Feldnamen enthalten. Dies muss die erste Zeile der Daten sein (idealerweise die erste Zeile in der Textdatei).

  2. Wenn die Geometrie aktiviert werden soll, muss die Datei Felder enthalten, die die Geometrie definieren. Diese Felder können einen beliebigen Namen haben.

  3. Die X- und Y-Koordinatenfelder (wenn die Geometrie durch Koordinaten definiert ist) müssen als Zahlen angegeben werden. Das Koordinatensystem ist nicht wichtig.

  4. Wenn Sie eine CSV-Datei mit Nicht-String-Spalten haben, können Sie eine zugehörige CSVT-Datei haben (siehe Abschnitt Verwendung der CSVT-Datei zur Steuerung der Feldformatierung).

Die Höhendaten-Datei elevp.csv im QGIS-Beispieldatensatz (siehe Abschnitt Beispieldaten herunterladen) ist ein Beispiel für eine gültige Textdatei:

X;Y;ELEV
-300120;7689960;13
-654360;7562040;52
1640;7512840;3
[...]

Zur Textdatei sind einige Dinge zu beachten:

  1. Die Beispiel-Textdatei verwendet ; (Semikolon) als Trennzeichen (jedes beliebige Zeichen kann zur Abgrenzung der Felder verwendet werden).

  2. Die erste Zeile ist die Kopfzeile. Sie enthält die Felder X, Y und ELEV.

  3. Zur Abgrenzung von Textfeldern werden keine Anführungszeichen (") verwendet.

  4. Die X-Koordinaten sind in dem Feld X enthalten

  5. Die Y-Koordinaten sind in dem Feld Y enthalten

Speichern von Geometrieinformationen in getrennten Textdateien

Getrennte Textdateien können Geometrieinformationen in zwei Hauptformen enthalten:

  • Als Koordinaten in separaten Spalten (z.B. Xcol, Ycol… ), für punktgeometrische Daten;

  • Als Well-known Text (WKT) Darstellung der Geometrie in einer einzigen Spalte, für jeden Geometrietyp.

Objekte mit gekrümmten Geometrien (CircularString, CurvePolygon und CompoundCurve) werden unterstützt. Hier sind einige Beispiele für Geometrietypen in einer begrenzten Textdatei mit als WKT kodierten Geometrien:

Label;WKT_geom
LineString;LINESTRING(10.0 20.0, 11.0 21.0, 13.0 25.5)
CircularString;CIRCULARSTRING(268 415,227 505,227 406)
CurvePolygon;CURVEPOLYGON(CIRCULARSTRING(1 3, 3 5, 4 7, 7 3, 1 3))
CompoundCurve;COMPOUNDCURVE((5 3, 5 13), CIRCULARSTRING(5 13, 7 15,
  9 13), (9 13, 9 3), CIRCULARSTRING(9 3, 7 1, 5 3))

Getrennte Textdateien unterstützen auch Z- und M-Koordinaten in Geometrien:

LINESTRINGZ(10.0 20.0 30.0, 11.0 21.0 31.0, 11.0 22.0 30.0)

Verwendung der CSVT-Datei zur Steuerung der Feldformatierung

Beim Laden von CSV-Dateien geht der GDAL-Treiber davon aus, dass es sich bei allen Feldern um Strings (d.h. Text) handelt, sofern ihm nichts anderes mitgeteilt wird. Sie können eine CSVT-Datei erstellen, um GDAL (und QGIS) den Datentyp der verschiedenen Spalten mitzuteilen:

Typ

Name

Beispiel

Ganze Zahl

Integer

4

Boolean

Integer(Boolean)

true

Dezimalzahl

Real

3.456

Datum

Date (YYYY-MM-DD)

2016-07-28

Zeit

Time (HH:MM:SS+nn)

18:33:12+00

Datum & Zeit

DateTime (YYYY-MM-DD HH:MM:SS+nn)

2016-07-28 18:33:12+00

CoordX

CoordX

8.8249

CoordY

CoordY

47.2274

Point(X)

Point(X)

8.8249

Point(Y)

Point(Y)

47.2274

WKT

WKT

POINT(15 20)

Die CSVT-Datei ist eine einzeilige reine Textdatei mit den Datentypen in Anführungszeichen und durch Kommas getrennt, z. B.:

"Integer","Real","String"

Sie können auch die Breite und Genauigkeit jeder Spalte angeben, z. B.:

"Integer(6)","Real(5.5)","String(22)"

Diese Datei wird im gleichen Ordner wie die .csv-Datei gespeichert, mit dem gleichen Namen, aber der Erweiterung .csvt.

*Weitere Informationen finden Sie unter *GDAL CSV Driver <https://gdal.org/drivers/vector/csv.html>`_.

Tipp

Feldtypen erkennen

Anstatt eine CSVT-Datei zur Bestimmung der Datentypen zu verwenden, bietet QGIS die Möglichkeit, die Feldtypen automatisch zu erkennen und die angenommenen Feldtypen zu ändern.

15.3.2.4. PostGIS-Layer

PostGIS-Layer werden in einer PostgreSQL-Datenbank gespeichert. Die Vorteile von PostGIS sind räumliche Indizierung, Filterung und Abfragemöglichkeiten. Mit PostGIS funktionieren Vektor-Funktionen wie Auswählen und Identifizieren genauer als mit GDAL Layern in QGIS.

Tipp

PostGIS-Layer

Normalerweise wird ein PostGIS Layer durch einen Eintrag in der geometry_columns Tabelle identifiziert. QGIS kann auch Layer laden, die keinen Eintrag in der geometry_columns Tabelle haben. Dies schließt sowohl Tabellen als auch Views ein. Informationen zur Erstellung von Views finden Sie in Ihrem PostgreSQL-Handbuch.

Dieser Abschnitt enthält einige Details darüber, wie QGIS auf PostgreSQL Layer zugreift. In den meisten Fällen sollte QGIS Ihnen einfach eine Liste von Datenbanktabellen zur Verfügung stellen, die geladen werden können, und es wird sie auf Anfrage laden. Wenn Sie jedoch Probleme haben, eine PostgreSQL-Tabelle in QGIS zu laden, können die folgenden Informationen Ihnen helfen, die QGIS-Meldungen zu verstehen und Ihnen Hinweise geben, wie Sie die PostgreSQL-Tabellen- oder View-Definition modifizieren können, damit QGIS sie laden kann.

Bemerkung

Eine PostgreSQL-Datenbank kann auch QGIS-Projekte speichern.

Primärschlüssel

QGIS verlangt, dass PostgreSQL Layer eine Spalte enthalten, die als eindeutiger Schlüssel für den Layer verwendet werden kann. Für Tabellen bedeutet dies normalerweise, dass die Tabelle einen Primärschlüssel oder eine Spalte mit einer eindeutigen Einschränkung benötigt. In QGIS muss diese Spalte vom Typ int4 sein (eine Ganzzahl der Größe 4 Bytes). Alternativ kann auch die Spalte ctid als Primärschlüssel verwendet werden. Wenn eine Tabelle nicht über diese Elemente verfügt, wird stattdessen die oid-Spalte verwendet. Die Leistung wird verbessert, wenn die Spalte indiziert ist (beachten Sie, dass Primärschlüssel in PostgreSQL automatisch indiziert werden).

QGIS bietet eine Checkbox Auswahl nach ID, die standardmäßig aktiviert ist. Diese Option liefert die IDs ohne die Attribute, was in den meisten Fällen schneller ist.

Sicht (View)

Wenn der PostgreSQL Layer eine Datenbank-Sicht (View) ist, besteht die gleiche Anforderung, aber Views haben nicht immer Primärschlüssel oder Spalten mit eindeutigen Beschränkungen für sie. Sie müssen ein Primärschlüsselfeld (muss eine ganze Zahl sein) im QGIS Dialog definieren, bevor Sie den View laden können. Wenn keine passende Spalte in der Ansicht vorhanden ist, wird QGIS den Layer nicht laden. In diesem Fall müssen Sie die Ansicht so ändern, dass sie eine geeignete Spalte enthält (einen Integer-Typ und entweder einen Primärschlüssel oder eine eindeutige Einschränkung, vorzugsweise indiziert).

Für die Tabelle ist standardmäßig ein Kontrollkästchen Auswahl nach ID aktiviert (zur Bedeutung des Kontrollkästchens siehe oben). Es kann sinnvoll sein, diese Option zu deaktivieren, wenn Sie aufwendige Views verwenden.

Bemerkung

PostgreSQL Foreign Table

PostgreSQL-Foreign-Tables werden vom PostgreSQL-Anbieter nicht explizit unterstützt und werden wie ein View behandelt.

QGIS layer_style Tabelle und Datenbank Backup

Wenn Sie mit den Befehlen pg_dump und pg_restore ein Backup Ihrer PostGIS-Datenbank erstellen wollen und die von QGIS gespeicherten Standard-Layer-Stile anschließend nicht wiederhergestellt werden können, müssen Sie die XML-Option vor dem Restore-Befehl auf DOCUMENT setzen:

  1. Erstellen Sie ein PLAIN-Backup der Tabelle layer_style.

  2. Öffnen Sie die Datei in einem Texteditor

  3. Ändern Sie die Zeile SET xmloption = content; in SET XML OPTION DOCUMENT;

  4. Speichern Sie die Datei

  5. Verwenden Sie psql, um die Tabelle in der neuen Datenbank wiederherzustellen

Filtern der Datenbankseite

QGIS erlaubt es, Objekte bereits serverseitig zu filtern. Aktivieren Sie dazu Einstellungen ► Optionen ► Datenquellen ► checkbox Ausdrücke serverseitig ausführen wenn möglich. Es werden nur unterstützte Ausdrücke an die Datenbank gesendet. Ausdrücke, die nicht unterstützte Operatoren oder Funktionen verwenden, werden automatisch auf die lokale Auswertung zurückgesetzt.

Unterstützung von PostgreSQL-Datentypen

Folgende Datentypen werden vom PostgreSQL-Anbieter unterstützt: Integer, Float, Boolean, Binärobjekt, Varchar, Geometrie, Zeitstempel, Array, hstore und json.

15.3.2.5. Daten in PostgreSQL importieren

Daten können mit verschiedenen Werkzeugen in PostgreSQL/PostGIS importiert werden, darunter das DB Manager Plugin und die Kommandozeilenwerkzeuge shp2pgsql und ogr2ogr.

DB Manager

QGIS wird mit einem Kern-Plugin namens dbManager DB-Verwaltung geliefert. Es kann zum Laden von Daten verwendet werden und bietet Unterstützung für Schemata. Siehe Abschnitt DB Verwaltung für weitere Informationen.

shp2pgsql

PostGIS enthält ein Dienstprogramm namens shp2pgsql, das verwendet werden kann, um Datensätze im Shapefile-Format in eine PostGIS-aktivierte Datenbank zu importieren. Um zum Beispiel einen Datensatz im Shapefile-Format mit dem Namen lakes.shp in eine PostgreSQL-Datenbank mit dem Namen gis_data zu importieren, verwenden Sie den folgenden Befehl:

shp2pgsql -s 2964 lakes.shp lakes_new | psql gis_data

Dies erzeugt einen neuen Layer mit dem Namen lakes_new in der Datenbank gis_data. Der neue Layer hat einen spatial reference identifier (SRID) von 2964. Siehe Abschnitt Arbeiten mit Projektionen für weitere Informationen über räumliche Bezugssysteme und Projektionen.

Tipp

Exportieren von Datensätzen aus PostGIS

Es gibt auch ein Tool für den Export von PostGIS-Datensätzen in das Shapefile-Format: pgsql2shp. Es wird mit Ihrer PostGIS-Distribution ausgeliefert.

ogr2ogr

Neben shp2pgsql und DB-Verwaltung gibt es ein weiteres Tool, um geographische Daten in PostGIS einzuspeisen: ogr2ogr. Es ist Teil Ihrer GDAL-Installation.

Um einen Datensatz im Shapefile-Format in PostGIS zu importieren, gehen Sie wie folgt vor:

ogr2ogr -f "PostgreSQL" PG:"dbname=postgis host=myhost.de user=postgres
password=topsecret" alaska.shp

Dies importiert den Shapefile-Format-Datensatz alaska.shp in die PostGIS-Datenbank postgis unter dem Benutzer postgres mit dem Passwort topsecret auf dem Host-Server myhost.de.

Beachten Sie, dass GDAL mit PostgreSQL erstellt werden muss, um PostGIS zu unterstützen. Sie können dies überprüfen, indem Sie (in nix): eingeben:

ogrinfo --formats | grep -i post

Wenn Sie es vorziehen, den COPY-Befehl von PostgreSQL anstelle der Standardmethode INSERT INTO zu verwenden, können Sie die folgende Umgebungsvariable exportieren (zumindest unter nix und osx verfügbar):

export PG_USE_COPY=YES

ogr2ogr erstellt keine räumlichen Indizes wie shp2pgsl. Sie müssen sie manuell erstellen, indem Sie anschließend den normalen SQL-Befehl CREATE INDEX als zusätzlichen Schritt verwenden (wie im nächsten Abschnitt Verbesserung der Leistung beschrieben).

Verbesserung der Leistung

Das Abrufen von Objekten aus einer PostgreSQL-Datenbank kann zeitaufwändig sein, insbesondere über ein Netzwerk. Sie können die Zeichenleistung von PostgreSQL-Layern verbessern, indem Sie sicherstellen, dass für jeden Layer in der Datenbank ein PostGIS-Raumindex vorhanden ist. PostGIS unterstützt die Erstellung eines GiST-Index (Generalized Search Tree), um die räumliche Suche zu beschleunigen (Informationen zum GiST-Index finden Sie in der PostGIS-Dokumentation unter https://postgis.net).

Tipp

Sie können die DB-Veraltung verwenden, um einen Index für Ihren Layer zu erstellen. Wählen Sie zunächst den Layer aus und klicken Sie auf Tabelle ► Tabelle bearbeiten, gehen Sie auf die Registerkarte Indizes und klicken Sie auf Räumlichen Index hinzufügen.

Die Syntax für die Erstellung eines GiST-Index lautet:

CREATE INDEX [indexname] ON [tablename]
  USING GIST ( [geometryfield] GIST_GEOMETRY_OPS );

Beachten Sie, dass bei großen Tabellen die Erstellung des Indexes sehr lange dauern kann. Sobald der Index erstellt ist, sollten Sie eine VACUUM ANALYZE durchführen. Siehe die PostGIS-Dokumentation (POSTGIS-PROJECT in Literatur und Internetreferenzen) für weitere Informationen.

Das folgende Beispiel erstellt einen GiST-Index:

gsherman@madison:~/current$ psql gis_data
Welcome to psql 8.3.0, the PostgreSQL interactive terminal.

Type:  \copyright for distribution terms
       \h for help with SQL commands
       \? for help with psql commands
       \g or terminate with semicolon to execute query
       \q to quit

gis_data=# CREATE INDEX sidx_alaska_lakes ON alaska_lakes
gis_data-# USING GIST (the_geom GIST_GEOMETRY_OPS);
CREATE INDEX
gis_data=# VACUUM ANALYZE alaska_lakes;
VACUUM
gis_data=# \q
gsherman@madison:~/current$

15.3.2.6. SpatiaLite-Layer

Wenn Sie einen Layer im SpatiaLite-Format speichern wollen, können Sie dies mit Hilfe der Anweisungen unter Erstellen neuer Layer aus einem vorhandenen Layer tun. Sie wählen SpatiaLite als Format und geben sowohl Dateiname als auch Layername ein.

Sie können auch SQLite als Format wählen und dann SPATIALITE=YES im Feld Benutzeroptionen ► Datenquelle hinzufügen. Dadurch wird GDAL angewiesen, eine SpatiaLite-Datenbank zu erstellen. Siehe auch https://gdal.org/drivers/vector/sqlite.html.

QGIS unterstützt auch editierbare Ansichten in SpatiaLite. Für die Verwaltung von SpatiaLite-Daten können Sie auch das Kern-Plugin DB-Verwaltung verwenden.

Wenn Sie einen neuen SpatiaLite Layer erstellen wollen, lesen Sie bitte den Abschnitt Erstellen eines neuen SpatiaLite Layers.

15.3.2.7. GeoJSON-spezifische Parameter

Beim Export von Layern nach GeoJSON stehen einige spezielle Layeroptionen zur Verfügung. Diese Optionen kommen von GDAL, das für das Schreiben der Datei verantwortlich ist:

  • COORDINATE_PRECISION die maximale Anzahl von Ziffern nach dem Dezimaltrennzeichen, die in Koordinaten geschrieben werden. Der Standardwert ist 15 (Hinweis: für Lat-Lon-Koordinaten reichen 6). Nachfolgende Nullen werden abgeschnitten.

  • RFC7946 standardmäßig wird GeoJSON 2008 verwendet. Bei YES wird der aktualisierte Standard RFC 7946 verwendet. Die Voreinstellung ist NO (also GeoJSON 2008). Siehe https://gdal.org/drivers/vector/geojson.html#rfc-7946-write-support für die wichtigsten Unterschiede, kurz gesagt: nur EPSG:4326 ist erlaubt, andere KBS werden transformiert, Polygone werden so geschrieben, dass sie der Rechtsregel für die Orientierung folgen, Werte eines „bbox“-Arrays sind [west, south, east, north], nicht [minx, miny, maxx, maxy]. Einige Namen von Erweiterungsmitgliedern sind in den Objekten FeatureCollection, Feature und Geometry verboten, die Standard-Koordinatengenauigkeit beträgt 7 Dezimalstellen

  • WRITE_BBOX auf YES gesetzt, um den Begrenzungsrahmen der Geometrien auf der Ebene der Objekte und der Objektsammlung einzuschließen

Neben GeoJSON gibt es auch eine Option zum Export in „GeoJSON - Newline Delimited“ (siehe https://gdal.org/drivers/vector/geojsonseq.html). Anstelle einer FeatureCollection mit Objekten können Sie einen Typ (wahrscheinlich nur Features) sequentiell mit Zeilenumbrüchen getrennt übertragen.

GeoJSON - Newline Delimited verfügt auch über einige spezifische Layer-Optionen:

  • COORDINATE_PRECISION siehe oben (gleich wie bei GeoJSON)

  • RS, ob Datensätze mit dem Zeichen RS=0x1E beginnen sollen. Der Unterschied besteht darin, wie die Objekte getrennt werden: nur durch ein Zeilenumbruchzeichen (LF) (Newline Delimited JSON, geojsonl) oder durch Voranstellen eines Datensatz-Trennzeichens (RS) (bei GeoJSON-Text-Sequenzen, geojsons). Die Voreinstellung ist NO. Die Dateien erhalten die Erweiterung .json, wenn keine Erweiterung angegeben wird.

15.3.2.8. SAP HANA Spatial Layers

Dieser Abschnitt enthält einige Details darüber, wie QGIS auf SAP HANA Layer zugreift. In den meisten Fällen sollte QGIS Ihnen einfach eine Liste von Datenbanktabellen und -ansichten zur Verfügung stellen, die geladen werden können, und es wird sie auf Anfrage laden. Wenn Sie jedoch Probleme haben, eine SAP HANA-Tabelle oder -Ansicht in QGIS zu laden, können die folgenden Informationen Ihnen helfen, die Ursache zu verstehen und das Problem zu lösen.

Identifizierung von Objekten

Wenn Sie alle Möglichkeiten von QGIS zur Bearbeitung von Objekten nutzen möchten, muss QGIS in der Lage sein, jedes Objekt in einem Layer eindeutig zu identifizieren. Intern verwendet QGIS eine 64-Bit-Ganzzahl mit Vorzeichen, um Objekte zu identifizieren, während der negative Bereich für spezielle Zwecke reserviert ist.

Daher benötigt der SAP HANA-Anbieter einen eindeutigen Schlüssel, der auf eine positive 64-Bit-Ganzzahl abgebildet werden kann, um die Bearbeitungsfunktionen von QGIS für Objekte vollständig zu unterstützen. Wenn es nicht möglich ist, ein solches Mapping zu erstellen, können Sie die Objekte zwar noch anzeigen, aber möglicherweise nicht bearbeiten.

Hinzufügen von Tabellen

Wenn Sie eine Tabelle als Layer hinzufügen, verwendet der SAP HANA-Anbieter den Primärschlüssel der Tabelle, um sie einer eindeutigen Objekt-ID zuzuordnen. Um eine vollständige Unterstützung für die Bearbeitung von Objekten zu erhalten, müssen Sie daher einen Primärschlüssel für Ihre Tabellendefinition haben.

Der SAP HANA-Anbieter unterstützt mehrspaltige Primärschlüssel, aber wenn Sie die beste Leistung erzielen möchten, sollte Ihr Primärschlüssel eine einzelne Spalte vom Typ INTEGER sein.

Hinzufügen von Views

Wenn eine Ansicht als Layer hinzugefügt wird, kann der SAP HANA-Anbieter nicht automatisch Spalten identifizieren, die ein Objekt eindeutig kennzeichnen. Außerdem sind einige Ansichten schreibgeschützt und können nicht bearbeitet werden.

Um die volle Unterstützung für die Bearbeitung von Objekten zu haben, muss die Ansicht aktualisierbar sein (überprüfen Sie die Spalte IS_READ_ONLY in der Systemansicht SYS.VIEWS für die betreffende Ansicht) und Sie müssen QGIS manuell eine oder mehrere Spalten zur Verfügung stellen, die ein Objekt identifizieren. Die Spalten können mit Hilfe von Layer ► Layer hinzufügen ► SAP HANA Spatial Layer hinzufügen angegeben werden und dann die Spalten in der Spalte Feature id ausgewählt werden. Um eine optimale Leistung zu erzielen, sollte der Feature id-Wert eine einzelne INTEGER-Spalte sein.

15.3.3. Layer, die den 180° Längengrad kreuzen

In vielen GIS-Paketen werden Layer mit einem geografischen Bezugssystem (Breitengrad/Längengrad), das die 180-Grad-Linie überschreitet, nicht erfasst. Wenn man einen solchen Layer in QGIS öffnet, kann man zwei weit voneinander entfernte Orte sehen, die eigentlich nahe beieinander liegen sollten. In Abb. 15.31 sollte der winzige Punkt ganz links auf der Kartenansicht (Chatham-Inseln) innerhalb des Gitters liegen, rechts von den neuseeländischen Hauptinseln.

../../../_images/vectorNotWrapping.png

Abb. 15.31 Karte in Breiten- und Längengraden, die die 180°-Linie kreuzen

15.3.3.1. Lösung in PostGIS

Eine Abhilfe besteht darin, die Längengradwerte mit PostGIS und der Funktion „ST_ShiftLongitude <https://postgis.net/docs/ST_Shift_Longitude.html>“ zu transformieren. Diese Funktion liest jeden Punkt/Vertex in jeder Komponente jedes Objekts in einer Geometrie und verschiebt seine Längengradkoordinate von -180..0° auf 180..360° und umgekehrt, wenn sie zwischen diesen Bereichen liegt. Diese Funktion ist symmetrisch, so dass das Ergebnis eine 0..360°-Darstellung von -180..180°-Daten und eine -180..180°-Darstellung von 0..360°-Daten ist.

../../../_images/vectorWrapping.png

Abb. 15.32 Überschreiten des 180°-Längengrads unter Anwendung der Funktion ST_ShiftLongitude.

  1. Importieren Sie Daten in PostGIS (Daten in PostgreSQL importieren) z.B. mit dem DB-Verwaltung-Plugin.

  2. Verwenden Sie die PostGIS- Kommandozeilen-Schnittstelle, um den folgenden Befehl auszuführen:

    -- In this example, "TABLE" is the actual name of your PostGIS table
    update TABLE set geom=ST_ShiftLongitude(geom);
    
  3. Wenn alles gut gegangen ist, sollten Sie eine Bestätigung über die Anzahl der Objekte erhalten, die aktualisiert wurden. Dann können Sie die Karte laden und den Unterschied sehen (Figure_vector_crossing_map).