Outdated version of the documentation. Find the latest one here.

Unterstützte Datenformate

QGIS verwendet die OGR-bibliothek um Vektordatenformate zu lesen und zu schreiben, einschließlich ESRI Shapedateien, MapInfo und MicroStation Dateiformate, AutoCAD DXF, PostGIS, SpatiaLite, Oracle Spatial und MSSQL Spatial Datenbanken und viele mehr. GRASS Vektor und PostgreSQL Support wird durch native Datenprovider Plugins bereitgestellt. Die Vektordaten können auch im Lesemodus aus zip- und gzip-Archiven ins QGIS geladen werden. Zum Zeitpunkt der Erstellung dieses Dokumentes werden 69 Vektorformate von der OGR-Bibliothek unterstützt (siehe OGR-SOFTWARE-SUITE in Literatur und Internetreferenzen). Die vollständige Liste ist auf http://www.gdal.org/ogr/ogr_formats.html zu finden.

Bemerkung

Einige der aufgelisteten Formate können auf ihrem Rechner aus unterschiedlichen Gründen nicht unterstützt werden. Einige brauchen z.B. kommerzielle Bibliotheken oder die GDAL Installation auf Ihrem Rechner wurde ohne die Unterstützung für das entsprechende Format erstellt. Nur Formate, die getestet wurden, können ausgewählt werden, wenn Sie eine Vektordatei in QGIS laden. Alle anderen werden angezeigt, wenn Sie *.* auswählen.

Das Arbeiten mit GRASS GIS Vektorlayern wird in Kapitel GRASS GIS Integration beschrieben.

In diesem Abschnitt wird beispielhaft beschrieben, wie man mit ESRI Shapedateien, PostGIS- und SpatiaLite-Layern, OpenStreetMap Vektordateien und Comma Separated data (CSV) arbeitet. Viele Funktionen in QGIS sind unabhängig vom verwendeten Datenformat und verhalten sich daher identisch. Dies ist gewollt und bezieht sich u.a. auf Abfrage, Selektion, Beschriftung und Attributfunktionen.

Bemerkung

QGIS unterstützt (Multi)Punkte, (Multi)Linien, (Multi)Polygone, CircularString, CompoundCurve, CurvePolygon, MultiCurve Objekttypen, alle mit Z- und/oder M-Werten

Sie sollte auch beachten, dass einige Driver einige Objekttypen nicht unterstützen, wie CircularString, CompoundCurve, CurvePolygon, MultiCurve, MultiSurface Objekttypen. QGIS wandelt Sie in (Multi)Polygone um.

Layer aus einer Datei laden

addOgrLayer Um einen Layer aus einer Datei (wie einer Shapedatei, einer Mapinfo oder einem dxf Layer) zu laden, klicken Sie auf den addOgrLayer Vektorlayer hinzufügen Knopf in der Werkzeugleiste oder drücken einfach Strg+Umschalt+V. Dieses öffnet ein neues Fenster (siehe figure_vector_1).

Figure Vector 1:

../../../_images/addvectorlayerdialog.png

Vektorlayer hinzufügen Dialog

Wählen Sie aus den möglichen Quelltypen radioButtonOn Datei und klicken Sie auf den Knopf [Durchsuchen]. Dadurch erscheint ein weiterer Dialog zum Öffnen (siehe figure_vector_2) mit dem Sie im Dateisystem navigieren können und Sie ein Shape oder eine andere unterstützte Datenquelle laden können. Die Auswahlbox Filter selectString ermöglicht es Ihnen einige OGR-untersützte Dateiformate vorzuwählen.

Außerdem kann auch der Kodierungstyp für die Datei eingestellt werden, falls dies notwendig ist.

Figure Vector 2:

../../../_images/shapefileopendialog.png

Öffnen eines OGR-Vektorlayers Dialog

Durch Auswahl einer Datei und Anklicken des Knopfes [Öffnen] wird die Datei in QGIS geladen. In Abbildung Figure_vector_3 sehen Sie das Ergebnis, nachdem die Beispieldatei alaska.shp ins QGIS geladen wurde.

Figure Vector 3:

../../../_images/shapefileloaded.png

QGIS mit geladenem Shapefile aus dem Alaskabeispieldatensatz

Tipp

Farben von Vektorlayern

Wenn Sie einen neuen Vektorlayer in QGIS laden, werden Farben zufällig zugewiesen. Wenn Sie mehrere neue Vektorlayer laden, werden jeweils unterschiedliche Farben zugewiesen.

Nach dem Laden können Sie mit den Navigationstools aus der Werkzeugleiste beliebig zoomen. Um den Stil eines Layers zu verändern öffnen Sie den Layereigenschaften Dialog in dem Sie auf den Layernamen doppelklicken oder indem Sie einen Rechtsklick auf den Namen in der Legende machen und Eigenschaften im Popupmenü wählen. Vergleichen Sie Abschnitt Menü Stil für weitere Informationen zum Editieren der Eigenschaften von Vektorlayern.

Tipp

Layer und Projekte von externen Datenträgern laden unter OS X

Unter OS X werden externe Datenträger unter Datei ‣ Öffne Projekt nicht gemeinsam mit den internen Festplatten angezeigt. Dies soll zukünftig behoben werden. Solange können Sie ‘/Volumes’ in das Eingabefenster ‘Dateiname’ eintragen und Return drücken. Danach können Sie auch zu den externen Datenträgern bzw. Rechnern in einem Netzwerk browsen.

Bemerkung

DXF-Dateien enthalten mehrere Geometrietypen (Punkt, Linie und/oder Polygon), der Name des Layers wird aus dem <filename.dxf> entities <geometry type> erstellt.

Bemerkung

Sie können Dateien ebenfalls per Drag&Drop in das Layerfenster ziehen aus dem Dateibrowser oder dem QGIS Browser Bedienfeld. Wenn der Layer mehrere Geometrien enthält, öffnet sich ein neues Fenster und bittet Sie den Unterlayer auszuwählen. Dies geschieht häufig mit GPX-, Mapinfo- oder DXF-Dateiormaten.

Laden von bestimmten verzeichnisbasierten Layern

addOgrLayer Um ein paar spezifische Formate wie ArcInfo Coverage, UK. National Transfer Format, genau wie das seltene TIGER Format des US Census Bureau oder OpenfileGDB zu laden, klicken Sie auf das Icon addOgrLayer Vektorlayer hinzufügen in der Werkzeugleiste oder drücken Sie die Taste Strg+Shift+V. Wählen Sie aus den möglichen Quelltypen radioButtonOn Verzeichnis, wählen Sie Arc/Info Binär-Coverage selectString. Wählen Sie nun den Ordner mit den ArcInfo Binary-Coverage-Dateien aus.

ESRI Shapes

Die ESRI Shapedatei ist immer noch eines der am häufigsten verwendeten Vektor Dateiformat in QGIS. Allerdings hat dieses Dateiformat einige Einschränkungen, die andere Dateiformate nicht haben (wie Geopackage, spatialite). Unterstützung wird durch die OGR Simple Feature Library (http://www.gdal.org/ogr/) zur Verfügung gestellt.

Ein Shape besteht derzeit aus mehreren Dateien. Die folgenden drei sind erforderlich:

  1. shp Datei (enthält die Geometrien)

  2. .dbf Datei (enthält die Attribute im dBase-Format)

  3. .shx Indexdatei

Darüber hinaus kann eine Datei mit .prj Endung existieren. Diese enthält die Projektionsinformationen des Shapes. Während es sehr nützlich ist eine Projektionsdatei zu verwenden ist dies nicht zwingend erforderlich. Ein Shape-Datensatz kann zusätzliche Dateien enthalten. Details dazu finden sich in der technischen Spezifikation von ESRI unter http://www.esri.com/library/whitepapers/pdfs/shapefile.pdf.

Die Darstellungsgeschwindigkeit von Shapdedateien verbessern

Um die Darstellungsgeschwindigkeit zu optimieren, kann ein räumlicher Index erstellt werden. Ein räumlicher Index erhöht die Geschwindigkeit beim Zoomen und Verschieben. Räumliche Indizes haben in QGIS die Endung .qix.

Benutzen Sie folgende Schritte zum Erstellen eines räumlichen Index:

  • Um eine Shapedatei zu laden klicken Sie auf den addOgrLayer Vektorlayer hinzufügen Knopf in der Werkzeugleiste oder drücken einfach Strg+Umschalt+V.

  • Öffnen Sie den Eigenschaften-Dialog des Vektorlayers, indem Sie auf den Namen des Layers in der Legende doppelklicken oder mit der rechten Maustaste Eigenschaften auswählen.

  • Im Menü Allgemein klicken Sie auf den [Räumlichen Index erzeugen] Knopf.

Problem beim Laden eines Shapes mit .prj Datei

Wenn Sie eine Shapedatei mit .prj-Datei laden und QGIS ist nicht in der Lage, die Projektionsinformationen korrekt auszulesen, ist es notwendig das Koordinatenbezugsystem (KBS) manuell im Allgemein Menü des Layereigenschaften Dialog anhand des [Festlegen ...] Knopfs anzugeben. Hintergrund ist, dass .prj Dateien oftmals nicht die vollständigen Projektionsparameter enthalten, so wie QGIS sie benötigt und auch im KBS Dialog anzeigt.

Aus diesem Grund, wenn Sie ein neues Shapefile mit QGIS erstellen, werden derzeit zwei unterschiedliche Projektionsdateien angelegt. Eine .prj Datei, mit den unvollständigen Projektionsparametern, wie sie z.B. von ESRI Software gelesen und erstellt wird, und eine .qpj Datei, in der die vollständigen Projektionsparameter enthalten sind. Wenn Sie dann ein Shape in QGIS laden, und QGIS findet eine .qpj Datei, dann wird diese anstelle der .prj Datei benutzt.

Delimited Text Dateien

Tabellendaten sind ein sehr beliebtes und weit verbreitetes Format wegen seiner Einfachheit und Lesbarkeit - die Daten können sogar in einem Texteditor eingesehen und bearbeitet werden. Eine Delimited Text Datei ist eine Attributtabelle bei der jede Spalte durch ein definiertes Zeichen und jede Zeile durch einen Zeilenumbruch getrennt wird. Die erste Zeile enthält normalerweise die Spaltennamen. Ein gängiger Typ von Delimited Text Datei ist eine CSV-Datei (Comma Separated Values), bei der jede Spalte durch ein Komma getrennt wird.

Solche Datensätze können auch Positionsinformationen in zwei Formaten enthalten:

  • Als Punktkoordinaten in getrennten Spalten

  • Als WKT-Daten die die Geometrien darstellen

QGIS macht es möglich eine Delimited Text Datei als Layer oder einfache Tabelle zu laden. Überprüfen Sie aber erst dass die Datei die folgenden Anforderungen erfüllt:

  1. Die Datei muss eine begrenzte Kopfspalte mit Feldnamen besitzen. Dieses muss die erste Zeile in der Textdatei sein.

  2. Die Kopfspalte muss Feld(er) mit Geometriedefinitionen enthalten. Diese Feld(er) können jeden beliebigen Namen haben.

  3. Die X und Y Koordinaten (wenn die Geometrien anhand von Koordinaten definiert sind) müssen als Nummern angegeben werden. Das Koordinatensystem ist nicht wichtig.

Als Beispiel für eine Textdatei importieren wir die Datei elevp.csv aus dem QGIS Beispieldatensatz (siehe Kapitel Beispieldaten):

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

Einige weitere Anmerkungen zu Textdateien:

  1. Die Beispieldatei verwendet ; (Semikolon) als Trennzeichen. Es können auch andere Zeichen zum Trennen der Spalten verwendet werden.

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

  3. Anführungszeichen (") dürfen nicht als Trennzeichen benutzt werden.

  4. Die X-Koordinaten sind in der Spalte X enthalten.

  5. Die Y-Koordinaten sind in der Spalte Y enthalten.

Andere wertvolle Informationen für fortgeschrittene Benutzer

Merkmale mit gebogenen Geometrien (Circular, Curvepolygon und CompoundCurve) werden unterstützt. Hier sind drei Beispiele für solche Geometrietypen als getrennte Text mit WKT Geometrien:

Label;WKT_geom
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))

Getrennter Text unterstützt auch Z- und M-Koordinaten in Geometrien:

LINESTRINGM(10.0 20.0 30.0, 11.0 21.0 31.0)

Eine Delimited Text Datei laden

Klicken Sie danach auf das Icon delimitedText Textdatei als Layer importieren in der Layer koordinieren Werkzeugleiste, um den Dialog Textdatei als Layer importieren zu öffnen, wie in figure_delimited_text_1 zu sehen.

Figure Delimited Text 1:

../../../_images/delimited_text_dialog.png

Textdatei als Layer importieren Dialog

Als erstes wählen Sie eine Datei (z.B., qgis_sample_data/csv/elevp.csv) für den Import aus, indem Sie auf den [Durchsuchen] Knopf drücken. Sobald eine Datei ausgewählt wurde, versucht QGIS die Datei zu durchsuchen und auf Basis des zuletzt verwendeten Trennzeichens zu strukturieren. Damit QGIS die Datei richtig durchsucht ist es wichtig das richtige Trennzeichen auszuwählen. Sie können ein Trennzeichen indem Sie radioButtonOn Benutzerdefiniert aktivieren angeben oder radioButtonOn Reguläre Ausdrücke aktivieren und Text in das Ausdruck Feld eingeben. Um z.B. einen Tabulator zu verwenden, geben Sie \t ein (dies ist ein regulärer Ausdruck für das Tab-Zeichen).

Ist die Datei erst einmal durchsucht können Sie die Geometriedefinition auf radioButtonOn Punktkoordinaten stellen und die X und Y Felder aus der Drop-Down-Liste auswählen. Sind die Koordinaten als Grad/Minuten/Sekunden definiert aktivieren Sie das Kontrollkästchen checkbox GMS-Koordinaten

Als letztes geben Sie einen Layernamen ein (z.B., elevp), wie in figure_delimited_text_1 gezeigt. Um den Layer der Karte hinzuzufügen klicken Sie [OK]. Die Delimited Text Datei verhält sich jetzt wie jeder andere Kartenlayer in QGIS.

Es gibt auch eine Hilfeoption mit der Sie vorangehende und nachfolgende Leerzeichen von Feldern abschneiden können - checkbox Felder abschneiden. Es ist ebenfalls möglich checkbox Leere Felder überspringen anzuwenden. Falls nötig können Sie festlegen dass ein Komma der Dezimalseparator sein soll indem Sie checkbox Dezimalseparator ist Komma aktivieren.

Wenn räumliche Informationen durch WKT repräsentiert sind aktivieren Sie radioButtonOn Well Known Text (WKT) und wählen Sie das Feld mit den WKT-Definitionen für Punkt-, Linien- oder Polygonobjekte aus. Wenn die Datei nicht-räumliche Daten enthält, aktivieren Sie radioButtonOn Keine Geometrie (nur Attributtabelle) und sie wird als ordinale Tabelle geladen.

Zusätzlich können Sie aktivieren:

  • checkbox Räumlichen index benutzen um die Performanz der Darstellung und räumlichen Selektion der Objekte zu verbessern.

  • checkbox Untermengenindex benutzen

  • checkbox Datei überwachen um Änderungen der Datei durch andere Anwendungen zu überwachen während QGIS läuft.

OpenStreet Daten

In den letzten Jahren hat das OpenStreetMap-Projekt an Popularität gewonnen, weil in vielen Ländern keine freien Geodaten, wie etwa digitale Straßenkarten zur Verfügung stehen. Ziel des OSM-Projekts ist es, eine frei editierbare Karte der Welt auf Basis von GPS-Daten, Luftaufnahmen oder einfach nur Ortskenntnis zu erschaffen. Um diese Idee zu unterstützen, wurde ein QGIS Plugin geschrieben, das die Arbeit mit OSM-Daten ermöglicht.

OpenStreetMap Vektordateien laden

QGIS integriert OpenStreetMap-Import als Kernfunktionalität.

  • Um sich mit dem OSM Server zu verbinden und Daten herunterzuladen öffnen Sie das Menü Vektor ‣ OpenStreetMap ‣ Daten herunterladen. Sie können diesen Schritt überspringen wenn Sie bereits eine .osm XML Datei über JOSM, Overpass API oder durch eine andere Quelle erhalten haben.

  • Das Menü Vektor ‣ OpenStreetMap ‣ Topologie aus XML importieren konvertiert Ihre .osm Datei in eine SpatiaLite Datenbank und erstellt eine entsprechende Datenbankverbindung.

  • Mit dem Menü Vektor ‣ OpenStreetMap ‣ Topologie nach SpatiaLite exportieren ermöglicht es Ihnen die Datenbankverbindung zu öffnen, den Datentyp Ihrer Wahl (Punkte, Linien oder Flächen) auszuwählen und Tags zum Importieren auszuwählen. Dies erstellt einen SpatiaLite-Geometrielayer den Sie Ihrem Projekt hinzufügen können indem Sie auf den addSpatiaLiteLayer SpatiaLite-Layer hinzufügen ... Knopf in der Werkzeugleiste klicken oder die addSpatiaLiteLayer SpatiaLite-Layer hinzufügen ... Option aus dem Menü Layer auswählen (siehe Abschnitt SpatiaLite Layer laden).

PostGIS Layer laden

PostGIS-Ebenen sind in einer PostgreSQL Datenbank gespeichert. Der Vorteil von PostGIS liegt in der Fähigkeitkeit, räumliche Indizes, Filterungen und Abfragen bereitszustellen. Vektorfunktionen wie Selektieren und Abfragen funktionieren besser als bei Layern, die durch die OGR-Bibliothek geladen wurden.

Erstellen einer PostGIS Anbindung

addPostgisLayer Das erste mal wenn Sie eine PostGIS-Datenquelle verwenden müssen Sie eine Verbindung zur PostgreSQL-Datenbank die die Daten enthält erstellen. Beginnen Sie mit dem Klicken auf addPostgisLayer PostGIS-Layer hinzufügen ... aus dem Layer Menü oder geben Sie Strg+Umschalt+D ein. Sie können genauso den Dialog Vektorlayer hinzufügen öffnen und radioButtonOn Datenbank auswählen. Um den Verbindungsmanager zu erreichen klicken Sie auf den [Neu] Knopf um den Eine neue OGR-Datenbankverbindung Dialog aufzurufen. Die für eine Verbindung erforderlichen Parameter sind:

  • Name: Ein Name für die Verbindung. Kann derselbe wie für die Datenbank sein

  • Service: Serviceparameter, der alternativ zum Hostnamen/Port (und möglicherweise zur Datenbank) verwendet werden soll. Dies kann in pg_service.conf definiert werden. Überprüfen Sie den Verbindungen in Datei speichern Abschnitt für weitere Details.

  • Host: Name des Datenbank-Hosts. Dies muss einauflösbarer Name für den HOST sein, genau wie beim Benutzen von telnet oder ping. Wenn die Datenbank auf demselben Computer ist wie QGIS, tragen Sie hier einfach ‘localhost’ ein.

  • Port: Port Nummer der Datenbank auf dem Server. Standard ist 5432.

  • Datenbank: Name der Datenbank.

  • SSL-Modus: Wie die SSL-Verbindung mit dem Server ausgehandelt wird. Beachten Sie dass die PostGIS-Layerdarstellung erheblich verschnellert werden kann wenn man SSL im Verbindungseditor deaktiviert. Die folgenden Optionen sind möglich:

    • Abschalten: Nur versuchen eine unverschlüsselte SSL-Verbindung herzustellen.

    • Erlauben: Eine nicht-SSL-Verbindung versuchen. Wenn dies misslingt, eine SSL-Verbindung versuchen.

    • Bevorzugen: Eine SSL-Verbindung versuchen. Wenn dies misslingt eine nicht-SSL-Verbindung versuchen.

    • Verlangen: Versuche nur eine SSL-Verbindung.

  • Name: Benutzername, um sich bei der Datenbank anzumelden.

  • Passwort: Passwort das zusammen mit Benutzername verwendet wird um sich bei der Datenbank anzumelden.

Bei Bedarf können Sie die folgenden Kontrollkästchen aktivieren:

  • checkbox Benutzernamen speichern

  • checkbox Passwort speichern

  • checkbox Nur in geometry_columns nachschauen

  • checkbox Geometrietyp von Spalten ohne Einschränkung nicht feststellen (GEOMETRY)

  • checkbox Nur im ‘public’ Schema nachschauen

  • checkbox Auch geometrielose Tabellen anzeigen

  • checkbox Gechätzte Tabellenmetadaten nutzen

Wenn alle Parameter eingetragen sind, kann die Verbindung getestet werden, indem Sie auf den Knopf [Verbindung testen] drücken.

Tipp

Geschätzte Tabellenmetadaten nutzen, um Operationen zu beschleunigen

Wenn Layer initialisiert werden, können verschiedene Abfragen benötigt werden, um die Eigenschaften der Geometrien in der Datenbanktabelle zu speichern. Wenn die Use estimated table metadata Option aktiviert ist, untersuchen diese Abfragen nur eine Stichprobe der Zeilen und verwenden die Tabellenstatistiken, anstatt die gesamte Tabelle. Dies kann Operationen drastisch beschleunigen auf große Datenmengen bezogen, aber zu einer falschen Charakterisierung von Layern führen (z. B. die Objektanzahl der gefilterten Layer kann nicht genau bestimmt werden) und kann sogar seltsame Verhalten bei Spalten verursachen, die eindeutig sein sollen, tatsächlich aber nicht sind.

Laden eines Layers aus der PostGIS Datenbank

addPostgisLayer Sobald Sie eine oder mehrere Verbindungen definiert haben können Sie Layer aus der PostgreSQL-Datenbank laden. Natürlich erfordert dieses dass man Daten in PostgreSQL vorhält. Lesen Sie in Kapitel Layer nach PostgreSQL/PostGIS importieren über eine Diskussion die das Importieren von Daten in die Datenbank beschreibt.

Um eine Ebene aus PostGIS zu laden, führen Sie folgende Schritte durch:

  • Wenn der PostGIS-Layer hinzufügen Dialog nicht schon geöffnet ist öffnet das Klicken von addPostgisLayer PostGIS-Layer hinzufügen ... oder das Eingeben von Strg+Umschalt+D den Dialog.

  • Wählen Sie eine Verbindung aus dem Drop-Down Menü und klicken auf [Verbinden].

  • Wählen Sie checkbox Auch geometrielose Tabelle anzeigen an oder ab.

  • Nutzen Sie gegebenenfalls die checkbox Suchoptionen um zu definieren welche Objekte aus dem Layer geladen werden sollen oder benutzen Sie den [Erstelle Abfrage] Knopf um den Abfrageerstellung Dialog zu starten.

  • Suchen Sie einen Layer den Sie laden möchten.

  • Wählen Sie es aus indem Sie darauf klicken. Sie können mehrere Layer gleichzeitig indem Sie die Umschalt-Taste gedrückt halten auswählen. Siehe Abschnitt Abfrageeditor für Informationen wie man die PostgreSQL-Abfrageerstellung für das weitere Definieren des Layers benutzt.

  • Klicken Sie auf den Knopf [Hinzufügen] um den Layer zu laden.

Tipp

PostGIS-Layer

Normalwerweise ist ein PostGIS-Layer über einen Eintrag in der geometry_columns Tabelle definiert. Seit Version 0.9.0 ist QGIS in der Lage, Layer zu laden, die keinen Eintrag in der geometry_columns Tabelle besitzen. Dies bezieht sich auf Tabellen und Views. Um einen ‘spatial view’ zu definieren, brauchen Sie ein kraftvolles System, um die Daten zu visualisieren. Beziehen Sie sich auf das PostgreSQL Handbuch, um weitere Informationen über die Erstellung von Views zu erhalten.

Verbindungen in Datei speichern

Mit der Serviceverbindungsdatei können PostgreSQL-Verbindungsparameter mit einem einzigen Dienstnamen verknüpft werden. Dieser Dienstname kann dann von einem Client angegeben werden und die zugehörigen Einstellungen werden verwendet.

Es heißt .pg_service.conf unter *nix Systemen (GNU/Linux, macOS etc.) und pg_service.conf unter Windows.

Die Servicedatei sieht wie folgt aus:

[water_service]
host=192.168.0.45
port=5433
dbname=gisdb
user=paul
password=paulspass

[wastewater_service]
host=dbserver.com
dbname=water
user=waterpass

Bemerkung

Im obigen Beispiel gibt es zwei Dienste: water_service und wastewater_service. Sie können diese zur Verbindung von QGIS, pgAdmin etc. verwenden, indem Sie nur den Namen des Dienstes angeben, mit dem Sie eine Verbindung herstellen möchten (ohne die einschließenden Klammern). Wenn Sie den Dienst mit psql verwenden möchten, müssen Sie etwas wie export PGSERVICE = water_service tun, bevor Sie Ihre psql Befehle eingeben.

Bemerkung

Wenn Sie die Passwörter nicht in der Servicedatei speichern möchten, können Sie die .pg_pass <https://www.postgresql.org/docs/current/static/libpq-pgpass.html> _ Option verwenden.

Auf *nix Betriebssystemen (GNU/Linux, MacOS etc.) können Sie die Datei .pg_service.conf im Home-Verzeichnis des Benutzers speichern und die PostgreSQL-Clients werden sich dessen bewusst. Wenn zum Beispiel der angemeldete Benutzer web ist, sollte .pg_service.conf im Verzeichnis /home/web/ gespeichert werden, um direkt zu arbeiten (ohne eine andere Umgebungsvariable anzugeben).

Sie können den Speicherort der Servicedatei angeben, indem Sie eine PGSERVICEFILE Umgebungsvariable anlegen (z. B. den Befehl PGSERVICEFILE=/home/web/.pg_service.conf unter Ihrem *nix OS ausführen, um die PGSERVICEFILE Variable einzustellen)

Sie können die Service-Datei auch systemweit (alle Benutzer) anlegen, indem Sie sie auf pg_config --sysconfdir``**/.pg_service.conf** setzen oder indem Sie die Umgebungsvariable ``PGSYSCONFDIR angeben, die die Service-Datei enthält. Wenn Dienstdefinitionen mit demselben Namen im Benutzer und der Systemdatei vorhanden sind, hat die Benutzerdatei Vorrang.

Warnung

Es gibt einige Einschränkungen unter Windows:

  • Die Service-Datei sollte als pg_service.conf und nicht als .pg_service.conf gespeichert werden.

  • Die Service-Datei sollte im Unix-Format gespeichert werden, um zu arbeiten. Eine Möglichkeit, um es mit Notepad++<https://notepad-plus-plus.org/> _ und Bearbeiten -> EOL-Konvertierung -> UNIX-Format -> Datei speichern zu öffnen.

  • Nach dem Hinzufügen einer Umgebungsvariable müssen Sie möglicherweise den Computer neu starten.

Einige Details zu PostGIS-Layern

Dieser Abschnitt enthält einige Details, wie QGIS auf PostgreSQL zugreift. Meistens soll QGIS eine Liste mit ein paar Datenbanktabellen bereitstellen, die bei Bedarf geladen werden können. Wenn Sie Probleme mit dem Laden von Layern aus PostgreSQL haben, können die nun folgenden Informationen vielleicht eine Hilfe sein, die Fehlermeldungen von QGIS besser zu verstehen und eine Lösung zu finden, die PostgreSQL Tabellen- oder Viewdefinition anzupassen, und somit den Layer laden zu können.

Unter QGIS müssen PostgreSQL-Layer eine Spalte beinhalten die als eindeutigen Schlüssel für den Layer benutzt werden kann. Für Tabellen heißt dies normalerweise dass die Tabelle einen Primärschlüssel oder eine Spalte mit einer eindeutigen Beschränkung braucht. In QGIS muss diese Spalte vom Typ int4 (ein Integer mit 4 Byte Größe) sein. Alternativ kann die ctid-Spalte als Primärschlüssel verwendet werden. Wenn eine Tabelle keines dieser Elemente aufweist wird die oid-Spalte anstelle dessen verwendet. Die Performanz wird verbessert wenn die Spalte indexiert ist (beachten Sie das Primärschlüssel in PostgreSQL automatisch indexiert werden).

Wenn der PostgreSQL-Layer ein View ist bestehende dieselben Anforderungen, nur dass Views keine Primärschlüssel oder Spalten mit eindeutigen Einschränkungen besitzen. Sie müssen ein Primärschlüsselfeld (dies muss vom Typ Integer sein) im QGIS-Dialog definieren bevor Sie den View laden können. Wenn im View keine geeignete Spalte existiert lädt QGIS den Layer nicht. Tritt dies auf ist die Lösung den View zu verändern, so dass dieser dann eine geeignete Spalte beinhaltet (eine Spalte vom Typ Integer und entweder mit Primärschlüssel oder eindeutiger Beschränkung, vorzugsweise indexiert).

QGIS bietet ein Kontrollkästchen Abfrage nach Id das standardmäßig aktiviert ist. Diese Option wählt die ids ohne die Attribute aus was in den meisten Fällen schneller ist. Es kann sinnvoll sein diese Option zurückzusetzen wenn Sie umfangreiche Views verwenden.

Tipp

Sicherung der Postgres Datenbank mit Layern von QGIS gespeichert

Wenn Sie eine Sicherungskopie Ihrer PostGIS Datenbank mit den pg_dump und pg_restore Befehlen machen wollen, und die vorgegebenen Layerstile gespeichert durch QGIS beim laden fehlschlagen, müssen Sie die XML Option DOCUMENT einstellen und das Wiederherstellen wird funktionieren.

QGIS ermöglicht es, Objekte bereits auf Serverseite zu filtern. Aktivieren Sie die checkbox Execute expressions on postgres server-side if possible (Experimental) Checkbox um dies zu tun. Nur unterstützte Ausdrücke werden an die Datenbank gesendet. Ausdrücke mit nicht unterstützten Operatoren oder Funktionen werden zurück gesendet zu lokalen Auswertung.

Layer nach PostgreSQL/PostGIS importieren

Daten können anhand von mehreren Werkzeugen in PostgreSQL/PostGIS importiert werden, einschließlich des DB Manager Plugins und den Kommandozeilenwerkzeugen shp2pgsql und ogr2ogr.

DB-Manager

QGIS bietet ein Kernplugin das dbManager DB Manager heisst. Es kann dafür verwendet werden um Shapdedateien und andere Datenformate zu laden und beinhaltet Unterstützung für Schemas. Siehe Kapitel DB Manager Plugin für weitere Informationen.

shp2pgsql

PostGIS beinhaltet ein Programm mit dem Namen shp2pgsql das dazu benutzt werden kann Shpadateien in eine PostGIS-fähige Datenbank zu importieren. Um z.B. eine Shapedatei 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

Dieser Befehl erzeugt eine neue Tabelle mit dem Namen lakes_new in der PostgreSQL/PostGIS Datenbank gis_data. Die neue Ebene wird die ID 2964 als ‘spatial reference identifier’ (SRID) tragen. Weitere Informationen zu räumlichen Referenzsystemen finden Sie in Abschnitt Arbeiten mit Projektionen.

Tipp

Layer aus PostGIS exportieren

Wie das Importprogramm shp2pgsql gibt es ebenfalls ein Werkzeug um PostGIS Datensätze als Shapedateien zu exportieren: pgsql2shp. Dies ist innerhalb der PostGIS-Installation enthalten.

ogr2ogr

Neben shp2pgsql und dem DB Manager gibt es noch ein anderes Programm um Geodaten PostGIS zuzuführen: ogr2ogr. Dies ist Teil Ihrer GDAL-Installation.

Um ein Shape nach PostGIS zu importieren, kann folgendes Kommando verwendet werden:

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

Dies wird die Shapedatei alaska.shp in die PostGIS-Datenbank postgis mit dem Benutzer postgres*und dem Passwort *topsecret auf dem Host-Server myhost.de importieren.

Beachten Sie dass OGR mit PostgreSQL gebaut werden muss um PostGIS-Unterstützung zu erhalten. Sie können dies überprüfen indem Sie eingeben (in nix)

ogrinfo --formats | grep -i post

Wenn Sie es vorziehen dem PostgreSQL COPY-Befehl anstelle der Standard INSERT INTO Methode zu arbeiten können Sie die folgende Umgebungsvariable (zumindest unter nix und osx zugänglich) benutzen

export PG_USE_COPY=YES

ogr2ogr erstellt keine räumlichen Indizes wie shp2pgsl das tut. Sie müssen diese hinterher als zusätzlichen Schritt manuell unter Zuhilfenahme des normalen SQL-Befehls CREATE INDEX erstellen (wie im nächsten Abschnitt Geschwindigkeit optimieren beschrieben).

Geschwindigkeit optimieren

Der Datentransfer von einer PostgreSQL/PostGIS Datenbank kann langsam sein, besonders über ein Netzwerk. Die Geschwindigkeit kann optimiert werden, indem für alle Ebenen in PostgreSQL ein PostGIS räumlicher Index erstellt wird. PostGIS unterstützt das Erstellen eines GiST (Generalized Search Tree) Index, um den Zugriff auf die Ebenen zu beschleunigen (die GiST Index Informationen wurden aus der PostGIS Dokumentation übernommen unter: http://postgis.net).

Tipp

Sie können den DBManager nutzen, um einen Index auf Ihrem Layer zu erzeugen. Sie müssen zuerst den Layer wählen und dann Tabelle > Tabelle bearbeiten klicken, gehen Sie zum Index Reiter und klicken Sie auf [Räumlichen Index hinzufügen].

Dies ist die Syntax für das Erstellen eines GiST-Index:

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

Bedenken Sie, dass das Erstellen eines Index bei großen Datenmengen zeitaufwendig ist. Nachdem der Index erstellt ist, sollte ein ‘VACUUM ANALYZE’ durchgeführt werden (vgl. PostGIS Dokumentation Literatur und Internetreferenzen).

Im Folgenden sehen Sie ein Beispiel, um einen GiST-Index zu erstellen:

[email protected]:~/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
[email protected]:~/current$

Vektorlayer, die den Längengrad 180° überschreiten

Viele GIS Applikationen stellen einen Vektorlayer, der über den Längengrad 180 hinausgeht nicht zusammenhängend dar (http://postgis.refractions.net/documentation/manual-2.0/ST_Shift_Longitude.html). So wird in QGIS der Layer geteilt und man sieht im Kartenfenster zwei, weit voneinander entfernte Teile, die eigentlich zusammengehören. In Abbildung Figure_vector_4 sollte z.B. der kleine Punkt in der linken Ecke des Kartenfensters (Chatham Inseln) rechts neben Neuseeland angezeigt werden.

Figure Vector 4:

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

Karte in lat/lon die den 180° Längengrad schneidet

Eine Möglichkeit, dies zu umgehen, bietet PostGIS und die Funktion ST_Umschalt_Longitude (http://postgis.refractions.net/documentation/manual-1.4/ST_Umschalt_Longitude.html). Die Funktion liest alle Objekte der Karte ein und wenn der Längengrad <0° ist, werden 360° hinzugezählt. Das Ergebnis ist eine 0-360° Karte, die als Mittelpunkt den Längengrad 180° verwendet.

Figure Vector 5:

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

Das Überqueren von 180° Länge unter Verwendung der ST_Shift_Longitude Funktion

Beispielanwendung

  • Importieren Sie Daten in PostGIS (Layer nach PostgreSQL/PostGIS importieren) in dem Sie z.B. das DB Manager Plugin benutzen.

  • Öffnen Sie das PostGIS Kommandozeilenfenster und geben Sie folgendes Kommando ein (in diesem Beispiel steht der Name “TABELLE” für den tatsächlichen Namen der PostGIS Tabelle): gis_data=# update TABLE set the_geom=ST_Shift_Longitude(the_geom);

  • Wenn alles gut gelaufen ist sollten Sie jetzt eine Bestätigung über die Anzahl der Objekte die geupdated worden sind erhalten. Dann sollten Siedie Karte laden und den Unterschied sehen können (Figure_vector_5).

SpatiaLite Layer laden

addSpatiaLiteLayer Wenn Sie das erste Mal einen Layer aus einer SpatiaLite Datenbank laden möchten, klicken Sie auf das Icon addSpatiaLiteLayer SpatiaLite-Layer hinzufügen in der Werkzeugleiste oder indem Sie addSpatiaLiteLayer SpatiaLite Layer hinzufügen ... im Menü Layer auswählen oder indem Sie die Taste Strg+Shift+L drücken. Dies öffnet einen Dialog, über den Sie entweder eine Verbindung zu einer bereits in QGIS definierten SpatiaLite Datenbank auswählen oder eine neue Verbindung erstellen können. Um eine neue Verbindung zu erstellen, klicken Sie auf den Knopf [Neu] und verwenden dann den Dateibrowser, um eine entsprechende SpatiaLite Datenbank auszuwählen. Dabei handelt es sich um eine Datei mit der Endung .sqlite.

Wenn Sie einen Vektorlayer im SpatiaLite-Format abspeichern wollen, wählen Sie den Layer in der Legende aus, benutzen Sie das Kontextmenü der rechten Maustaste und klicken Sie auf Speichern als .... Geben Sie den Namen der Ausgabe an, wählen Sie sqlite als Format aus und das KBS. Danach fügen Sie noch SPATIALITE=YES in das Fenster ‘Datenquelle’. Damit sagen Sie OGR, dass eine SpatiaLite-Datenbank erstellt werden soll. Siehe http://www.gdal.org/ogr/drv_sqlite.html.

QGIS unterstützt auch editierbare Views in SpatiaLite.

Einen neuen SpatiaLite Layer erzeugen

Wenn Sie einen neuen SpatiaLite Layer erzeugen wollen, finden Sie in Kapitel Einen neuen SpatiaLite Layer erstellen eine Anleitung.

Tipp

SpatiaLite Datenmanagement Plugin

Für das Managen von SpatiaLite-Daten können Sie mehrere Python Plugins verwenden: QSpatiaLite oder DB Manager (Kernplugin, wird empfohlen). Sie können mit dem Plugin Installer gedownloaded und installiert werden.

Räumliche MSSQL-Layer

addMssqlLayer QGIS bietet auch native MS SQL-Unterstützung. Beim ersten Laden von MSSQL-Spatialdaten beginnen Sie mit einem Klick auf addMssqlLayer Add MSSQL Spatial Layer’-Symbolleistenschaltfläche oder durch Auswahl von |addMssqlLayer| :Menuselection:`MSSQL Spatial Layer hinzufügen... -Option aus dem Menü Layer oder durch Eingabe von Strg+Shift+M.

Oracle Spatial Layer

Die räumlichen Objekte in Oracle Spatial helfen Nutzern Geographische und Location Daten als native Typen innerhalb einer Oracledatenbank zu verwalten. QGIS bietet jetzt Unterstützung für solche Ebenen.

Erstellen einer PostGIS Anbindung

addOracleLayer Wenn Sie das erste mal eine Oracle Spatial Datenquelle verwenden müssen Sie eine Verbindung zu der Datenbank die die Daten enthält erstellen. Beginnen Sie indem Sie auf den addOracleLayer Oracle-GeoRaster-Layer hinzufügen Knopf in der Werkzeugleiste drücken, die addOracleLayer Oracle-GeoRaster-Layer hinzufügen Option aus dem Layer Menü wählen oder indem Sie Strg+Umschalt+O eingeben. Um den Verbindungsmanager zu erreichen klicken Sie auf den [Neu] Knopf um den Oracle-Verbindung herstellen Dialog aufzurufen. Die für die Verbindung erforderlichen Parameter sind:

  • Name: Ein Name für diese Verbindung. Er kann der gleiche wie Datenbankinstanz sein

  • Datenbank: SID oder SERVICE_NAME der Oracleinstanz.

  • Host: Name des Datenbank-Hosts. Dies muss einauflösbarer Name für den HOST sein, genau wie beim Benutzen von telnet oder ping. Wenn die Datenbank auf demselben Computer ist wie QGIS, tragen Sie hier einfach ‘localhost’ ein.

  • Port: Port Nummer der Oracle Spatial Datenbank auf dem Server. Standard ist 1521.

  • Benutzername: Benutzername der verwendet wird um sich in die Datenbank einzuloggen.

  • Passwort: Passwort das zusammen mit Benutzername verwendet wird um sich bei der Datenbank anzumelden.

Wahlweise können Sie die folgenden Kontrollkästchen aktivieren:

  • checkbox Benutzernamen speichern zeigt an ob der Datenbankbenutzername in der Verbindungskonfiguration gespeichert werden soll.

  • checkbox Passwort speichern zeigt an ob das Datenbankpasswort in den Verbindungseinstellungen gespeichert werden soll.

  • checkbox Nur in Metadatentabelle geometry_columns nachsehen. Schränkt die dargestellten Tabellen auf jene die sich im all_sdo_geom_metadata View befinden ein. Dies kann die Initialanzeige von räumlichen Tabellen verschnellern.

  • checkbox Nur nach Tabellen des Benutzers suchen. Beim Suchen nach räumlichen Tabellen die Suche auf Tabellen die dem Benutzer gehören einschränken.

  • checkbox Auch geometrielose Tabelle anzeigen zeigt dass Tabellen ohne Geometrie auch standardmäßig aufgeführt werden.

  • checkbox Verwende geschätzte Tabellenstatistiken für die Layermetadaten. Wenn der Layer aufgesetzt wird werden verschiedene Metadaten für die Oracletabelle benötigt. Dies beinhaltet Informationen wie die Tabellenspaltenanzahl, Geometrietyp und räumliche Ausdehnung der Daten in der Geometriespalte. Wenn die Tabelle eine große Anzahl von Spalten enthält kann das Festlegen dieser Daten zeitaufwändig sein. Indem Sie diese Optionen aktivieren werden die folgenden schnellen Tabellenmetadatenoptionen durchgeführt: die Spaltenanzahl wird durch all_tables.num_rows festgelegt. Die Tabellenausdehnung wird immer mit den SDO_TUNE.EXTENTS_OF Funktionen festgelegt, auch wenn ein Layerfilter angewendet wird. Die Tabellengeometrie wird von den ersten 100 nicht-null Geometriespalten der Tabelle festgelegt.

  • checkbox Nur bestehende Geometrietypen. Führt nur die bestehenden Geometrietypen auf fragt nicht nach anderen.

Warnung

In der Registerkarte :guilabel:”Authentifizierung” wird der Benutzername und das Passwort als ungeschützte Verbindungskonfiguration in den Anmeldeinformationen gespeichert. Diese Anmeldeinformationen werden sichtbar, wenn Sie zum Beispiel die Projektdatei mit jemandem geteilt haben. Daher ist es ratsam, Ihre Anmeldeinformationen in einer Authentifizierungskonfiguration zu speichern (KonfigurationReiter tab). Siehe Authentifizierungssystem für weitere Details.

Wenn alle Parameter eingetragen sind, kann die Verbindung getestet werden, indem Sie auf den Knopf [Verbindung testen] drücken.

Tipp

QGIS Benutzereinstellungen und Sicherheit

Je nach Arbeitsumgebung birgt das Speichern von Passwörtern in Ihren QGIS-Einstellungen Risiken in sich. Ihre Einstellungen für QGIS werden basierend auf ihrem Betriebssystem unverschlüsselt in der Systemkonfiguration und den Projektdateien gespeichert! Ihre benutzerdefinierten Einstellungen für QGIS werden abhängig vom Betriebssystem gespeichert.

  • nix Die Einstellungen werden in Ihrem Homeverzeichnis in ~/.qgis2 gespeichert.

  • win Die Einstellungen werden in der Registry gespeichert.

Einen Oracle Spatial Layer laden

addOracleLayer Haben Sie erst eine oder mehrere Verbindungen definiert können Sie Layer von der Oracle-Datenbank laden. Natürlich erfordert dies dass Sie schon Daten in Oracle vorhalten.

Um einen Layer von Oracle Spatial zu laden, führen Sie die folgenden Schritte durch:

  • Wenn der Oracle-Spatial-GeoRaster wählen Dialog noch nicht offen ist, klicken Sie auf den addOracleLayer Oracle-GeoRaster-Layer Werkzeugknopf.

  • Wählen Sie eine Verbindung aus dem Drop-Down Menü und klicken auf [Verbinden].

  • Wählen Sie checkbox Auch geometrielose Tabelle anzeigen an oder ab.

  • Verwenden Sie wahlweise checkbox Suchoptionen um zu definieren welche Objekte aus dem Layer geladen werden sollen oder verwenden Sie den [Abfrage erstellen] Knopf um den Dialog Abfrageerstellung zu starten.

  • Suchen Sie einen Layer den Sie laden möchten.

  • Wählen Sie ihn aus indem Sie darauf klicken. Sie können mehrere Layer auf einmal wählen indem Sie die Umschalt Taste beim Klicken gedrückt halten. Siehe Kapitel Abfrageeditor über Informationen wie man den Oracle Query Builder benutzt um den Layer weiter zu definieren.

  • Klicken Sie auf den Knopf [Hinzufügen] um den Layer zu laden.

Tipp

Oracle Spatial Layer

Normalerweise wird ein Oracle Spatial Layer durch einen Eintrag in der USER_SDO_METADATA Tabelle definiert.