Wichtig
Übersetzen ist eine Gemeinschaftsleistung Sie können mitmachen. Diese Seite ist aktuell zu 100.00% übersetzt.
15.2. Erstellung von Layern
Layer können auf viele Arten erstellt werden, unter anderem:
leere Layer von Grund auf
Layer von vorhandenen Layern
Layer aus der Zwischenablage
Layer als Ergebnis einer SQL-ähnlichen Abfrage, die auf einem oder mehreren Layern basiert: die (virtuellen Layer)
QGIS bietet auch Werkzeuge zum Importieren/Exportieren verschiedener Formate.
15.2.1. Neue Vektorlayer erstellen
QGIS erlaubt es Ihnen, neue Layer in verschiedenen Formaten zu erstellen. Es bietet Werkzeuge für die Erstellung von GeoPackage-, Shapefile-, SpatiaLite-, GPX-Format und flüchtige Layer (Temporärlayer). Die Erstellung eines neuen GRASS-Layer wird innerhalb des GRASS-Plugins unterstützt.
15.2.1.1. Einen neuen GeoPackage-Layer erstellen
Um einen neuen GeoPackage Layer zu erstellen, drücken Sie die Schaltfläche im Menü oder in der Datenquellenverwaltung Werkzeugleiste. Das Dialogfeld Neuer GeoPackage Layer wird angezeigt, wie in Abb. 15.22 dargestellt.
Der erste Schritt besteht darin, den Speicherort der Datenbankdatei anzugeben. Dies kann durch Drücken der Schaltfläche …. rechts neben dem Feld Datenbank erfolgen und eine vorhandene GeoPackage-Datei auswählen oder eine neue erstellen. QGIS wird automatisch die richtige Erweiterung zu dem von Ihnen angegebenen Namen hinzufügen.
Geben Sie dem neuen Layer/Tabelle einen Namen (Tabellenname)
Definieren Sie den Geometrietyp. Wenn es sich nicht um einen geometrielosen Layer handelt, können Sie angeben, ob er Z-Dimension einschließen und/oder M-Werte einschließen soll.
Geben Sie das Koordinatenreferenzsystem mit der Schaltfläche an
Zum Hinzufügen von Feldern zu dem Layer, den Sie erstellen:
Geben Sie Name des Feldes ein
Wählen Sie die Daten Typ. Unterstützte Typen sind Text, Ganze Zahl (sowohl Integer als auch Integer 64 bit), Dezimalzahl, Datum und Datum & Zeit, Binärobjekt (BLOB) und Boolean.
Je nach gewähltem Datenformat geben Sie die Maximallänge der Werte ein.
Wiederholen Sie die obigen Schritte für jedes Feld, das Sie hinzufügen müssen
Wenn Sie mit den Attributen zufrieden sind, klicken Sie auf OK. QGIS wird den neuen Layer zur Legende hinzufügen, und Sie können ihn wie in Abschnitt Einen vorhandenen Layer editieren beschrieben bearbeiten.
Standardmäßig erzeugt QGIS beim Erstellen eines GeoPackage-Layers eine Objektkennungsspalte namens fid
, die als Primärschlüssel des Layers fungiert. Der Name kann geändert werden. Das Geometriefeld, falls verfügbar, heißt geometry
, und Sie können wählen, ob Sie darauf einen räumlichen Index erstellen wollen. Diese Optionen sind unter dem Erweiterte Optionen zusammen mit dem :guilabel: Layerkennung (kurzer menschenlesbarer Name des Layers) und der :guilabel: Layerbeschreibung zu finden.
Die weitere Verwaltung von GeoPackage-Layern kann mit dem DB-Verwaltung erfolgen.
15.2.1.2. Einen neuen Shapedatei-Layer erstellen
Um einen neuen Layer im ESRI Shapefile-Format zu erstellen, drücken Sie die Schaltfläche im Menü oder in der Symbolleiste Datenquellenverwaltung. Das Dialogfeld Neuer Shapedatei-Layer wird angezeigt, wie in Abb. 15.23 dargestellt.
Geben Sie einen Pfad und einen Dateinamen an, indem Sie die Schaltfläche … neben Dateiname verwenden. QGIS fügt automatisch die richtige Erweiterung zu dem von Ihnen angegebenen Namen hinzu.
Als nächstes geben Sie die Dateikodierung der Daten an
Wählen Sie den Geometrietyp des Layers: Keine Geometrie (was zu einer Datei im Format
.DBF
führt), Punkt, Multipunkt, Linie oder PolygonGeben Sie an, ob die Geometrie zusätzliche Dimensionen haben soll: Keine, Z (+ M Werte) oder M Werte.
Geben Sie das Koordinatenreferenzsystem mit der Schaltfläche an
Zum Hinzufügen von Feldern zu dem Layer, den Sie erstellen:
Geben Sie Name des Feldes ein
Wählen Sie die Daten Typ. Es werden nur die Attribute Dezimalzahl, Ganzzahl, Textdaten und Datum unterstützt.
Je nach gewähltem Datenformat geben Sie Länge und Genauigkeit ein.
Wiederholen Sie die obigen Schritte für jedes Feld, das Sie hinzufügen müssen
Wenn Sie mit den Attributen zufrieden sind, klicken Sie auf OK. QGIS wird den neuen Layer zur Legende hinzufügen, und Sie können ihn wie in Abschnitt Einen vorhandenen Layer editieren beschrieben bearbeiten.
Standardmäßig wird eine erste ganzzahlige id
-Spalte hinzugefügt, die jedoch entfernt werden kann.
15.2.1.3. Erstellen eines neuen SpatiaLite Layers
Um einen neuen SpatiaLite Layer zu erstellen, drücken Sie die Schaltfläche im Menü oder in der Symbolleiste Datenquellenverwaltung. Das Dialogfeld Neuer SpatiaLite Layer wird angezeigt, wie in Abb. 15.24 dargestellt.
Der erste Schritt besteht darin, den Speicherort der Datenbankdatei anzugeben. Klicken Sie dazu auf die Schaltfläche … rechts neben dem Feld Datenbank und wählen Sie eine vorhandene SpatiaLite-Datei aus oder erstellen Sie eine neue. QGIS fügt automatisch die richtige Erweiterung an den von Ihnen angegebenen Namen an.
Geben Sie einen Namen (Layername) für den neuen Layer an
Definieren Sie den Geometrietyp. Wenn es sich nicht um einen geometrielosen Layer handelt, können Sie angeben, ob er Z-Dimension einschließen und/oder M-Werte einschließen soll.
Geben Sie das Koordinatenreferenzsystem über die Schaltfläche an.
Zum Hinzufügen von Feldern zu dem Layer, den Sie erstellen:
Geben Sie Name des Feldes ein
Wählen Sie den Datentyp Typ. Unterstützte Typen sind Textdaten, Ganzzahl, Dezimalzahl, Datum und Datum-Zeit.
Wiederholen Sie die obigen Schritte für jedes Feld, das Sie hinzufügen müssen
Wenn Sie mit den Attributen zufrieden sind, klicken Sie auf OK. QGIS wird den neuen Layer zur Legende hinzufügen, und Sie können ihn wie in Abschnitt Einen vorhandenen Layer editieren beschrieben bearbeiten.
Falls gewünscht, können Sie unter dem Abschnitt automatisch inkrementierenden Primärschlüssel erzeugen das Kontrollkästchen Erweiterte Optionen aktivieren. Sie können auch die Spalte Geometry umbenennen (standardmäßig Geometry
).
Die weitere Verwaltung von SpatiaLite Layern kann mit DB Manager erfolgen.
15.2.1.4. Erstellen eines neuen Netzlayers
Um einen neuen Netzlayer zu erstellen, drücken Sie die Schaltfläche im Menü oder in der Symbolleiste Datenquellenverwaltung. Der Dialog Neuer Netzlayer wird angezeigt, wie in Abb. 15.25 dargestellt.
Der erste Schritt besteht darin, den Speicherort der Netzdatei anzugeben. Dazu drücken Sie die Schaltfläche … rechts neben dem Feld Dateiname und wählen eine vorhandene Netzdatei oder erstellen eine neue.
Geben Sie einen Namen an (Layername), d.h. den Namen, unter dem der Layer im Bedienfeld Layers angezeigt wird
Wählen Sie das Dateiformat: derzeit unterstützte Mesh-Dateiformate sind
2DM Mesh File (*.2dm)
,Selafin File (*.slf)
undUGRID (*.nc)
.Geben Sie das Koordinatenreferenzsystem an, das dem Datensatz zugeordnet werden soll
Mit den obigen Schritten wird ein leerer Layer erzeugt, dem Sie anschließend Knotenpunkte digitalisieren und Datensatzgruppen hinzufügen können. Es ist jedoch auch möglich, den Layer mit einem bestehenden Netzlayer zu initialisieren, d.h. den neuen Layer mit Eckpunkten oder Flächen des anderen Layers zu bestücken. Um dies zu tun:
und wählen entweder ein Netz aus dem aktuellen Projekt oder Netz aus Datei. Informationen über die ausgewählte Netzdatei werden zur Überprüfung angezeigt.
Beachten Sie, dass nur der Rahmen des Netzlayers in den neuen Layer übertragen wird; die Datensätze werden nicht kopiert.
15.2.1.5. Erstellen eines neuen GPX-Layers
Um eine neue GPX-Datei zu erstellen:
Wählen Sie im Dialogfeld den Speicherort für die neue Datei, geben Sie ihr einen Namen und drücken Sie Speichern.
Dem Bedienfeld Layer werden drei neue Layer hinzugefügt:
ein Punkt-Layer zur Digitalisierung von Orten (
waypoints
) mit Feldern, die den Namen, die Höhe, den Kommentar, die Beschreibung, die Quelle, die Url und den Url-Namen speichernein Layer zur Digitalisierung von Routenabfolgen, die eine geplante Strecke bilden (
routes
), mit Feldern, die den Namen, das Symbol, die Nummer, den Kommentar, die Beschreibung, die Quelle, die Url und den Url-Namen speichernund einen Linien-Layer, um die Bewegung des Empfängers über die Zeit zu verfolgen (
Tracks
) mit Feldern, die den Namen, das Symbol, die Nummer, den Kommentar, die Beschreibung, die Quelle, die URL und den URL-Namen speichern.
Sie können nun jeden dieser Layer bearbeiten, wie im Abschnitt Einen vorhandenen Layer editieren beschrieben.
15.2.1.6. Erstellen eines neuen temporären Scratch Layers
Temporäre Scratch Layer sind In-Memory Layer, d.h. sie werden nicht auf der Festplatte gespeichert und werden verworfen, wenn QGIS geschlossen wird. Sie können nützlich sein, um Features zu speichern, die Sie vorübergehend benötigen, oder als Zwischenlayer bei Geoverarbeitungsoperationen.
Um einen neuen Temporärerlayer zu erstellen, wählen Sie den Eintrag im Menü oder in der Symbolleiste Datenquellenverwaltung. Der Dialog Neuer Temporärerlayer wird angezeigt, wie in Abb. 15.26 dargestellt. Dann:
Geben Sie den Layernamen an
Wählen Sie den Geometrietyp. Hier können Sie eine erstellen:
Layer vom Typ „Keine Geometrie“, der als einfache Tabelle dient,
Layer
Punkt
oderMultipunkt
,Layer
CompoundCurve
oderMultiCurve
,Polygon/CurvePolygon
oderMultiPolygon/MultiSurface
Layer.
Bei geometrischen Typen geben Sie die Dimensionen des Datensatzes an: Prüfen Sie, ob er Z-Dimension einschließen und/oder M-Werte einschließen soll.
Geben Sie das Koordinatenreferenzsystem über die Schaltfläche an.
Fügen Sie Felder zu dem Layer hinzu. Beachten Sie, dass im Gegensatz zu vielen anderen Formaten temporäre Layer ohne Felder erstellt werden können. Dieser Schritt ist daher optional.
Geben Sie Name des Feldes ein
Wählen Sie die Daten Typ: Text, Ganzzahl, Dezimalzahl, Boolean, Datum, Zeit, Datum & Zeit, Binär (BLOB) und andere werden unterstützt.
Je nach gewähltem Datenformat geben Sie die Länge und Genauigkeit ein
Wiederholen Sie die obigen Schritte für jedes Feld, das Sie hinzufügen möchten
Wenn Sie mit den Einstellungen zufrieden sind, klicken Sie auf OK. QGIS fügt den neuen Layer zum Layer Bedienfeld hinzu, und Sie können ihn wie im Abschnitt Einen vorhandenen Layer editieren beschrieben bearbeiten.
Sie können auch vorgefertigte Temporärlayer erstellen, z. B. über die Zwischenablage (siehe Erstellen neuer Layer über die Zwischenablage) oder als Ergebnis eines Verarbeitungsalgorithmus.
Tipp
Permanente Speicherung eines Layers auf der Festplatte
Um Datenverluste beim Schließen eines Projekts mit Temporärlayern zu vermeiden, können Sie diese Layer in jedem von QGIS unterstützten Vektorformat speichern:
Auswahl des Eintrags Permanent machen im Kontextmenü des Layers;
über den Eintrag
aus dem Kontextmenü oder das Menü .
Jeder dieser Befehle öffnet den Dialog Vektorlayer speichern unter, der im Abschnitt Erstellen neuer Layer aus einem vorhandenen Layer beschrieben ist, und die gespeicherte Datei ersetzt die temporäre Datei im Layer Bedienfeld.
15.2.2. Erstellen neuer Layer aus einem vorhandenen Layer
Sowohl Raster- als auch Vektorlayer können in einem anderen Format gespeichert und/oder in ein anderes Koordinatenbezugssystem (KBS) umprojiziert werden. Dies geschieht über das Menü :menuselection:` Layer –> Speichern unter…` oder durch einen Rechtsklick auf den Layer im Layer Bedienfeld und die Auswahl:
für Raster Layer
oder für Vektor-Layer.
Ziehen Sie den Layer aus dem Layer-Baum auf den PostGIS-Eintrag im Browser Bedienfeld und legen Sie ihn dort ab. Beachten Sie, dass Sie eine PostGIS-Verbindung im Browser Bedienfeld haben müssen.
15.2.2.1. Gemeinsame Parameter
Der Layer speichern unter… Dialog zeigt verschiedene Parameter an, um das Verhalten beim Speichern des Layers zu ändern. Zu den gemeinsamen Parametern für Raster und Vektor gehören:
Dateiname: der Speicherort der Datei auf der Festplatte. Er kann sich auf den ausgegebenen Layer oder auf einen Container beziehen, der den Layer speichert (z. B. datenbankähnliche Formate wie GeoPackage, SpatiaLite oder Open Document Spreadsheets).
KBS: kann geändert werden, um die Daten neu zu projizieren
Ausdehnung: schränkt die Ausdehnung der Eingabe ein, die mit dem extent_selector Widget exportiert werden soll
Gespeicherte Datei zur Karte hinzufügen: zum Hinzufügen des neuen Layers zur Kartenansicht
Einige Parameter sind jedoch spezifisch für Raster- und Vektorformate:
15.2.2.2. Rasterspezifische Parameter
Je nach Exportformat sind einige dieser Optionen möglicherweise nicht verfügbar:
Ausgabemodus (kann Rasterrohdaten oder Wie dargestellt sein)
Format: exportiert in jedes Rasterformat, in das GDAL schreiben kann, wie GeoTiff, GeoPackage, MBTiles, Geospatial PDF, SAGA GIS Binary Grid, Intergraph Raster, ESRI .hdr Labelled…
Auflösung
Erzeugungsoptionen: verwenden Sie erweiterte Optionen (Dateikomprimierung, Blockgrößen, Farbmetrik…) beim Erzeugen von Dateien, entweder aus den vordefinierten Erstellungsprofilen, die sich auf das Ausgabeformat beziehen, oder indem Sie jeden Parameter einstellen.
Pyramiden Erstellung
VRT Kacheln falls Sie sich für VRT erzeugen entschieden haben
Leerwerte
15.2.2.3. Vektorspezifische Parameter
Je nach Exportformat können einige dieser Optionen verfügbar sein:
Format: exportiert in jedes Vektorformat, in das GDAL schreiben kann, wie GeoPackage, GML, ESRI Shapefile, AutoCAD DXF, ESRI FileGDB, Mapinfo TAB oder MIF, SpatiaLite, CSV, KML, ODS, …
Layername: Dieser Eintrag steht zur Verfügung, wenn der Dateiname auf ein containerähnliches Format verweist und stellt den Layer der Ausgabe dar.
Kodierung
Nur gewählte Objekte speichern
Felder zum Export und deren Exportoptionen wählen: bietet die Möglichkeit, Felder mit benutzerdefinierten Namen und Einstellungen zu exportieren:
Markieren Sie die Zeilen unter der Spalte Name, um die Felder auszuwählen, die im Output Layer bleiben sollen, oder drücken Sie die Schaltflächen Alle wählen oder Alle abwählen.
Aktivieren Sie das Kontrollkästchen Aliase für exportierten Namen verwenden, um die Spalte Exportname mit entsprechenden Feldaliasen zu füllen oder auf den ursprünglichen Feldnamen zurückzusetzen. Durch einen Doppelklick auf eine Zelle kann der Name ebenfalls bearbeitet werden.
Je nachdem, ob benutzerdefinierte Widgets für Attributformulare verwendet werden, können Sie Alle ausgewählten Rohfeldwerte durch angezeigte Werte ersetzen. Wenn z.B. ein
value map
Widget auf ein Feld angewandt wird, wird der Output Layer die Darstellungswerte anstelle der Originalwerte enthalten. Die Ersetzung kann auch feldweise in der Spalte Ersetzen durch angezeigte Werte vorgenommen werden.
Layermetadaten erhalten: stellt sicher, dass alle im Quell-Layer vorhandenen Metadaten kopiert und gespeichert werden:
in dem neu erstellten Layer, wenn die Ausgabe im GeoPackage-Format erfolgt
bei anderen Formaten als
.qmd
-Datei zusammen mit dem Output Layer. Beachten Sie, dass dateibasierte Formate, die mehr als einen Datensatz unterstützen (z.B. SpatiaLite, DXF,…) ein unbeabsichtigtes Verhalten aufweisen können.
Symbologieexport: kann hauptsächlich für den DXF-Export und für alle Dateiformate verwendet werden, die OGR-Objektstile (siehe Hinweis unten) als DXF-, KML-, Tabulator-Dateiformate verwenden:
Keine Symbologie: Standardstil der Anwendung, die die Daten liest
Feature-Symbologie: Stil mit OGR-Feature-Styles speichern (siehe Hinweis unten)
Symbol-Layer-Symbologie: Speichern mit OGR-Objektstilen (siehe Hinweis unten), aber mehrfaches Exportieren der gleichen Geometrie, wenn mehrere Symbol-Layer verwendet werden
Ein Maßstab-Wert kann auf die letzten Optionen angewendet werden
Bemerkung
OGR Feature Styles sind eine Möglichkeit, den Stil direkt in den Daten als verborgenes Attribut zu speichern. Nur einige Formate können diese Art von Informationen verarbeiten. Die Dateiformate KML, DXF und TAB sind solche Formate. Weitere Einzelheiten finden Sie in der Spezifikation der *OGR Feature Styles <https://gdal.org/user/ogr_feature_style.html>`_.
Geometrie: Sie können die Geometriefähigkeiten des Output Layers konfigurieren
Geometrietyp: behält die ursprüngliche Geometrie der Objekte bei, wenn sie auf Automatisch gesetzt ist, andernfalls wird sie entfernt oder durch einen beliebigen Typ ersetzt. Sie können eine leere Geometriespalte zu einer Attributtabelle hinzufügen und die Geometriespalte eines räumlichen Layers entfernen.
guilabel:Mehrfachtyp erzwingen: Erzwingt die Erstellung von Objekten mit mehreren Geometrien in dem Layer.
Z-Dimension einschließen
Tipp
Das Überschreiben des Layer-Geometrietyps macht es möglich, eine geometriefreie Tabelle (z.B. eine .csv
-Datei) in ein Shapefile MIT beliebiger Geometrie (Punkt, Linie, Polygon) zu speichern, sodass Geometrien dann manuell mit dem Werkzeug Teil hinzufügen zu Zeilen hinzugefügt werden können.
Datenquellen-Optionen, Layeroptionen oder Benutzeroptionen, mit denen Sie je nach Ausgabeformat erweiterte Parameter konfigurieren können. Einige sind in Datenformate und Felder erkunden beschrieben, aber für alle Details siehe die GDAL Treiberdokumentation. Jedes Dateiformat hat seine eigenen benutzerdefinierten Parameter, z.B. für das
GeoJSON
-Format schauen Sie in die GDAL GeoJSON Dokumentation.
Beim Speichern eines Vector Layers in eine bestehende Datei kann der Benutzer, abhängig von den Möglichkeiten des Ausgabeformats (Geopackage, SpatiaLite, FileGDB…), entscheiden, ob er:
die gesamte Datei überschreiben
nur den Ziel-Layer überschreiben (der Name des Layers ist konfigurierbar)
Objekte an den bestehenden Layer anhängen
Objekte anhängen, neue Felder hinzufügen, wenn es welche gibt.
Für Formate wie ESRI Shapefile, MapInfo .tab ist das Anhängen von Objekten ebenfalls möglich.
15.2.3. Erstellen neuer DXF-Dateien
Neben dem Speichern unter… Dialog, der Optionen zum Export eines einzelnen Layers in ein anderes Format bietet QGIS ein weiteres Werkzeug, um mehrere Layer als eine einzelne DXF-Datei zu exportieren. Dies ist über das Menü möglich.
Im Dialogfeld DXF Export:
Geben Sie die Zieldatei an.
Wählen Sie den Symbolisierungsmodus und den Maßstab (siehe Hinweis OGR Feature Styles), falls zutreffend.
Wählen Sie die Daten Kodierung.
Wählen Sie das anzuwendende KBS: Die ausgewählten Layer werden auf das angegebene KBS neu projiziert.
Wählen Sie die Layer aus, die in die DXF-Dateien aufgenommen werden sollen, indem Sie sie entweder in der Tabelle ankreuzen oder sie automatisch aus einem vorhandenen Kartenthema auswählen. Die Schaltflächen Alle wählen und Alle abwählen können helfen, die zu exportierenden Daten schnell festzulegen.
Für jeden Layer können Sie wählen, ob Sie alle Objekte in einem einzigen DXF-Layer exportieren möchten oder ob Sie sich auf ein Feld verlassen möchten, dessen Werte verwendet werden, um die Objekte in der DXF-Ausgabe in Layer aufzuteilen.
Optional können Sie auch Folgendes wählen:
15.2.4. Erstellen neuer Layer über die Zwischenablage
Objekte, die sich in der Zwischenablage befinden, können in einen neuen Layer eingefügt werden. Wählen Sie dazu einige Objekte aus, kopieren Sie sie in die Zwischenablage und fügen Sie sie dann in einen neuen Layer ein, indem Sie „Bearbeiten –> Objekte einfügen als –>“ wählen:
:guilabel:` Neuer Vektorlayer…`: der Vektorlayer speichern als… Dialog erscheint (siehe Erstellen neuer Layer aus einem vorhandenen Layer für Parameter)
oder Temporärlayer…: müssen Sie einen Namen für den Layer angeben
Ein neuer Layer mit ausgewählten Objekten und ihren Attributen wird erstellt (und zur Kartenansicht hinzugefügt).
Bemerkung
Das Erstellen von Layern aus der Zwischenablage ist sowohl mit Objekten möglich, die in QGIS ausgewählt und kopiert wurden, als auch mit Objekten aus anderen Anwendungen, sofern deren Geometrien mit bekanntem Text (WKT) definiert wurden.
15.2.5. Erstellen von virtuellen Layern
Ein virtueller Layer ist eine besondere Art von Vektor Layer. Er ermöglicht es Ihnen, einen Layer als Ergebnis einer SQL-Abfrage zu definieren, die eine beliebige Anzahl anderer Vektorlayer einbezieht, die QGIS öffnen kann. Virtuelle Layer enthalten selbst keine Daten und können als Sichten auf andere Daten betrachtet werden.
Um einen virtuellen Layer zu erstellen, öffnen Sie den Dialog zur Erstellung eines virtuellen Layers:
Wählen Sie den Eintrag Virtueller Layer hinzufügen/bearbeiten ` im Menü :menuselection:`Layer –> Layer hinzufügen –>;
Aktivierung der Registerkarte Virtuellen Layer hinzufügen im Dialog Datenquellenverwaltung;
oder über den entsprechenden Datenanbieter-Eintrag in der DB-Verwaltung.
Im Dialogfeld können Sie einen Layernamen und eine SQL Abfrage angeben. Die Abfrage kann den Namen (oder die ID) der geladenen Layer als Tabellen sowie deren Feldnamen als Spalten verwenden.
Wenn Sie zum Beispiel einen Layer mit dem Namen airports
haben, können Sie einen neuen virtuellen Layer mit dem Namen public_airports
mit einer SQL-Abfrage wie dieser erstellen:
SELECT *
FROM airports
WHERE USE = "Civilian/Public"
Die SQL-Abfrage wird ausgeführt, unabhängig vom zugrundeliegenden Provider des airports
Layers, auch wenn dieser Provider SQL-Abfragen nicht direkt unterstützt.
Es können auch Verknüpfungen und komplexe Abfragen erstellt werden, z. B. zur Verknüpfung von Flughäfen und Länderinformationen:
SELECT airports.*, country.population
FROM airports
JOIN country
ON airports.country = country.name
Bemerkung
Es ist auch möglich, virtuelle Layer über das SQL-Fenster des DB Verwaltung zu erstellen.
15.2.5.1. Einbetten von Layern zur Verwendung in Abfragen
Neben den Vektorlayern, die in der Kartenansicht zur Verfügung stehen, kann der Benutzer in der Liste Eingebettete Layer Layer hinzufügen, die in Abfragen verwendet werden können, ohne dass sie in der Kartenansicht oder im Bedienfeld Layers angezeigt werden müssen.
Um einen Layer einzubetten, klicken Sie auf Hinzufügen und geben Sie den Lokalen Namen, Datenanbieter, Kodierung und den Pfad zur Quelle an.
Die Schaltfläche Import ermöglicht das Hinzufügen von Layern aus der Kartenansicht in die Liste der eingebetteten Layer. Diese Layer können dann aus dem Layer Bedienfeld entfernt werden, ohne dass bestehende Abfragen unterbrochen werden.
15.2.5.2. Unterstützte Abfragesprache
Die zugrundeliegende Engine verwendet SQLite und SpatiaLite zum Betrieb.
Das bedeutet, dass Sie können alle SQL-Ausdrücke verwenden, die auf Ihrer lokalen Installation von SQLite bereitstehen.
Funktionen aus SQLite und räumliche Funktionen aus SpatiaLite können auch in einer Abfrage für virtuelle Layer verwendet werden. Die Erstellung eines Punkt-Layers aus einem reinen Attribut-Layer kann z. B. mit einer Abfrage wie dieser erfolgen:
SELECT id, MakePoint(x, y, 4326) as geometry
FROM coordinates
:ref:`Funktionen der QGIS-Ausdrücke <functions_list> ` können auch in einer virtuellen Layer-Abfrage verwendet werden.
Um auf die Geometriespalte eines Layers zu verweisen, verwenden Sie den Namen geometry
.
Im Gegensatz zu einer reinen SQL-Abfrage müssen alle Felder einer virtuellen Layer-Abfrage benannt werden. Vergessen Sie nicht, das Schlüsselwort as
zu verwenden, um Ihre Spalten zu benennen, wenn sie das Ergebnis einer Berechnung oder eines Funktionsaufrufs sind.
15.2.5.3. Leistungsprobleme
Mit den Standardparametern versucht die Engine für virtuelle Layer, den Typ der verschiedenen Spalten der Abfrage zu erkennen, einschließlich des Typs der Geometriespalte, falls eine vorhanden ist.
Dies geschieht, wenn möglich, durch Introspektion der Abfrage oder, als letztes Mittel, durch Abrufen der ersten Zeile der Abfrage (LIMIT 1). Das Abrufen der ersten Zeile des Ergebnisses, nur um den Layer zu erstellen, kann aus Leistungsgründen unerwünscht sein.
Die Parameter des Erstellungsdialogs:
Eindeutiges Schlüsselfeld: gibt ein Feld der Abfrage an, das eindeutige Integer-Werte darstellt, die QGIS als Zeilenbezeichner verwenden kann. Standardmäßig wird ein autoinkrementierender Integer-Wert verwendet. Die Definition einer eindeutigen Identifizierungsspalte beschleunigt die Auswahl von Zeilen nach der ID.
guilabel:Keine Geometrie: erzwingt, dass der virtuelle Layer alle Geometriefelder ignoriert. Der resultierende Layer ist ein reiner Attribut-Layer.
Geometrie Geometriespalte: gibt den Namen der Geometriespalte an.
Geometrie Typ: gibt den Typ der Geometrie an.
Geometrie KBS: gibt das Koordinatenreferenzsystem des virtuellen Layers an.
15.2.5.4. Besondere Bemerkungen
Die Engine des virtuellen Layers versucht, den Typ jeder Spalte der Abfrage zu bestimmen. Gelingt dies nicht, wird die erste Zeile der Abfrage abgerufen, um die Spaltentypen zu bestimmen.
Der Typ einer bestimmten Spalte kann direkt in der Abfrage angegeben werden, indem einige spezielle Kommentare verwendet werden.
Die Syntax lautet wie folgt: /*: type*/
. Die Angabe muss direkt nach dem Namen einer Spalte platziert werden. type
kann entweder int
für Ganzzahlen, real
für Gleitkommazahlen oder text
sein.
Zum Beispiel:
SELECT id+1 as nid /*:int*/
FROM table
Der Typ und das Koordinatenreferenzsystem der Geometriespalte können auch durch spezielle Kommentare mit der folgenden Syntax festgelegt werden: /*:gtype:srid*/
, wobei gtype
der Geometrietyp ist (point
, linestring
, polygon
, multipoint
, multilinestring
oder multipolygon
) und `srid
eine ganze Zahl, die den EPSG-Code eines Koordinatenreferenzsystems darstellt.
15.2.5.5. Verwendung von Indizes
Wenn ein Layer über einen virtuellen Layer angefordert wird, werden die Indizes der Quell-Layer wie folgt verwendet:
wenn ein
=
-Prädikat für die Primärschlüsselspalte des Layers verwendet wird, wird der zugrunde liegende Datenanbieter nach einer bestimmten ID (FilterFid) gefragtfür alle anderen Prädikate (
>
,<=
,!=
, usw.) oder für eine Spalte ohne Primärschlüssel wird eine aus einem Ausdruck gebildete Anfrage verwendet, um den zugrunde liegenden Vektordatenanbieter anzufordern. Das bedeutet, dass Indizes bei Datenbankanbietern verwendet werden können, wenn sie existieren.
Es gibt eine spezielle Syntax, um räumliche Prädikate in Anfragen zu behandeln und die Verwendung eines räumlichen Indexes auszulösen: eine versteckte Spalte namens _search_frame_
existiert für jeden virtuellen Layer. Diese Spalte kann auf Gleichheit mit einer Bounding Box verglichen werden. Beispiel:
SELECT *
FROM vtab
WHERE _search_frame_=BuildMbr(-2.10,49.38,-1.3,49.99,4326)
Räumliche binäre Prädikate wie ST_Intersects
werden erheblich beschleunigt, wenn sie in Verbindung mit dieser räumlichen Indexsyntax verwendet werden.