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:
.shp
Datei mit den Geometrien der Objekte.dbf
Datei mit den Attributen im dBase-Format.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:
Laden eines Datensatzes im ESRI Shapefile-Format (siehe: Das Browser-Bedienfeld)
Ö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ü wählen
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 Tab des Layers definieren, indem Sie den 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:
Die Datei muss eine abgegrenzte Kopfzeile mit Feldnamen enthalten. Dies muss die erste Zeile der Daten sein (idealerweise die erste Zeile in der Textdatei).
Wenn die Geometrie aktiviert werden soll, muss die Datei Felder enthalten, die die Geometrie definieren. Diese Felder können einen beliebigen Namen haben.
Die X- und Y-Koordinatenfelder (wenn die Geometrie durch Koordinaten definiert ist) müssen als Zahlen angegeben werden. Das Koordinatensystem ist nicht wichtig.
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:
Die Beispiel-Textdatei verwendet
;
(Semikolon) als Trennzeichen (jedes beliebige Zeichen kann zur Abgrenzung der Felder verwendet werden).Die erste Zeile ist die Kopfzeile. Sie enthält die Felder
X
,Y
undELEV
.Zur Abgrenzung von Textfeldern werden keine Anführungszeichen (
"
) verwendet.Die X-Koordinaten sind in dem Feld
X
enthaltenDie 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:
Erstellen Sie ein PLAIN-Backup der Tabelle
layer_style
.Öffnen Sie die Datei in einem Texteditor
Ändern Sie die Zeile
SET xmloption = content;
inSET XML OPTION DOCUMENT;
Speichern Sie die Datei
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 . 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 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 ): 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 und 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 Räumlichen Index hinzufügen.
, gehen Sie auf die Registerkarte und klicken Sie aufDie 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 (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 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 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.
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.
Importieren Sie Daten in PostGIS (Daten in PostgreSQL importieren) z.B. mit dem DB-Verwaltung-Plugin.
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);
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).