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 duch 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.

ESRI Shapes

Die ESRI Shapedatei ist das Standard Vektorformat in QGIS und wird durch die OGR Simple Feature Library (http://www.gdal.org/ogr/ ) bereitgestellt.

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.

Shape Layer laden

Um eine Shapedatei zu laden starten Sie QGIS und klicken Sie auf den mActionAddOgrLayer 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 nix

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 Shapedatei eingestellt werden, falls dies notwendig ist.

Figure Vector 2:

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

Öffnen eines OGR-Vektorlayers Dialog nix

Durch Auswahl eines Shapes 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 nix

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 Popupmenu wählen. Vergleichen Sie Abschnitt vector_style_tab 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.

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 mActionAddOgrLayer 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 anthalten sind. Wenn Sie dann ein Shape in QGIS laden, und QGIS findet eine .qpj Datei, dann wird diese anstelle der .prj Datei benutzt.

MapInfo Layer laden

mActionAddOgrLayer Um eine MapInfo Datei zu laden, klicken Sie auf das Icon mActionAddOgrLayer Vektorlayer hinzufügen in der Werkzeugleiste oder drücken Sie die Taste Strg+Umschalt+V. Definieren Sie unter Filter: Mapinfo File [OGR] (*.mif *.tab *.MIF *.TAB) und wählen die gewünschte Datei aus.

ArcInfo Binary Coverage laden

mActionAddOgrLayer Um ein ArcInfo Coverage zu laden, klicken Sie auf das Icon mActionAddOgrLayer 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.

Auf die gleiche Art und Weise können auch andere Verzeichnis-basierte Vektorlayer geladen werden, wie etwa das U.K. National Transfer Format oder das raw TIGER Format des U.S. Census Bureau.

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.

Eine Delimited Text Datei laden

Klicken Sie danach auf das Icon delimited_text 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 nix

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 mActionAddSpatiaLiteLayer SpatiaLite-Layer hinzufügen ... Knopf in der Werkzeugleiste klicken oder die mActionAddSpatiaLiteLayer 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

mActionAddPostgisLayer 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 mActionAddPostgisLayer 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

  • Dienst: Dienstparameter der alternativ zu Hostname/port verwendet werden kann (und eventuell Datenbank). Dies kann in pg_service.conf definiert werden.

  • 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.

Laden eines Layers aus der PostGIS Datenbank

mActionAddPostgisLayer 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 mActionAddPostgisLayer 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.

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.

Layer nach PostgreSQL/PostGIS importieren

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

DB-Manager

QGIS bietet ein Kernplugin das icon_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.refractions.net).

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 nix

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

mActionAddSpatiaLiteLayer Wenn Sie das erste Mal einen Layer aus einer SpatiaLite Datenbank laden möchten, klicken Sie auf das Icon mActionAddSpatiaLiteLayer SpatiaLite-Layer hinzufügen in der Werkzeugleiste oder indem Sie mActionAddSpatiaLiteLayer 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 das Bearbeiten von Views in SpatiaLite-Datenbanken.

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

mActionAddMssqlLayer QGIS verfügt auch über native MS SQL 2008 Unterstützung. Wenn Sie das erste mal Räumliche MSSQL Daten laden fangen Sie damit an indem Sie auf den mActionAddMssqlLayer Add MSSQL Spatial Layer Knopf in der Werkzeugleiste klicken oder indem Sie die mActionAddMssqlLayer Räumlichen MSSQL-Layer hinzufügen... Option aus dem Layer Menü wählen, oder indem Sie Strg+Umschalt+M eingeben.

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

mActionAddOracleLayer 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 mActionAddOracleLayer Oracle-GeoRaster-Layer hinzufügen Knopf in der Werkzeugleiste drücken, die mActionAddOracleLayer 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.

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

mActionAddOracleLayer 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 mActionAddOracleLayer 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.