QGIS uses the OGR library to read and write vector data formats including ESRI Shapefiles, MapInfo, Microstation file formats and many more. GRASS vector, PostGIS, MSSQL Spatial and Oracle Spatial support is supplied by native QGIS data providers. Vector data can also be loaded in read mode from zip and gzip archives into QGIS. At the date of this document, 69 vector formats are supported by the OGR library (see OGR-SOFTWARE-SUITE Literatur und Internetreferenzen). The complete list of supported vector data formats by the OGR library (see OGR-SOFTWARE-SUITE Literatur und Internetreferenzen) is available at http://www.gdal.org/ogr/ogr_formats.html.
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.
This section describes how to work with several common formats: ESRI Shapefiles, PostGIS layers, SpatiaLite layers, OpenStreetMap vectors etc. Many of the features available in QGIS work the same, regardless of the vector data source. This is by design and includes the identify, select, labeling and attributes functions.
ESRI Shape 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:
.shp Datei (enthält die Geometrien).
.dbf-Datei (enthält die Attribute im dBase-Format).
.shx (enthält den räumlichen Index).
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.
To load a shapefile, start QGIS and click on the
Add Vector Layer toolbar button or simply type Ctrl+Shift+V.
This will bring up a new window (see figure_vector_1).
Figure Vector 1:
Wählen Sie aus den möglichen Quelltypen 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
ermöglicht es Ihnen einige OGR untersützte Dateiformate vorzuwählen.
Außerdem kann auch der Kodierungstyp für das Shape eingestellt werden, falls dies notwendig ist.
Figure Vector 2:
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:
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.
Once loaded, you can zoom around the shapefile using the map navigation tools. To change the style of a layer, open the Layer Properties dialog by double clicking on the layer name or by right-clicking on the name in the legend and choosing Properties from the popup menu. See Section Style Menu for more information on setting symbology of vector layers.
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.
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:
Ö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.
In dem Reiter Allgemein klicken Sie auf den [Räumlichen Index erstellen] Knopf.
If you load a shapefile with .prj file and QGIS is not able to read the coordinate reference system from that file, you have to define the proper projection manually within the General tab of the Layer Properties dialog of the layer by clicking the [Specify...] button. This is due to the fact, that .prj files often do not provide the complete projection parameters, as used in QGIS and listed in the CRS dialog.
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.
To load a MapInfo layer, click on the
Add Vector Layer toolbar button or type Ctrl+Shift+V, change the
file type filter Filter
: to ‘Mapinfo File [OGR]’ and
select the MapInfo layer you want to load.
To load an ArcInfo binary coverage, click on the
Add Vector Layer toolbar button or press Ctrl+Shift+V to open the
Add Vector Layer dialog. Select
Directory.
Change to Filter
to ‘Arc/Info Binary Coverage’.
Navigate to the directory that contains the coverage files and select it.
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.
QGIS integrates Openstreetmap import as a core functionnality.
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 Ebenen, die durch die OGR-Bibliothek geladen wurden.
The first time you use a PostGIS data source, you must create
a connection to the PostgreSQL database that contains the data. Begin by clicking
on the
Add PostGIS Layer toolbar button, selecting the
Add PostGIS Layer... option from the
Layer menu or typing Ctrl+Shift+D. You can also open the
Add Vector Layer dialog and select
Database.
The Add PostGIS Table(s) dialog will be displayed. To access the
connection manager, click on the [New] button to display the
Create a New PostGIS Connection dialog. The parameters required for
a connection are:
Name:Ein Name für die Verbindung. Kann derselbe wie für die Datenbank sein
Dienst: Service Parameter, der anstelle von Host / Port und potenziell auch Datenbank verwendet werden kann. Kann unter 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 festgelegt wird. Beachten Sie dass es zu erheblichen Beschleunigungen im Darstellen von PostGIS Layern kommt wenn man SSL im Verbindungseditor abschaltet. Die Optionen sind:
abschalten: Versuche nur eine Nicht-SSL-Verbindung
erlauben: Versuche eine Nicht-SSL-Verbindung. Wenn das nicht klappt, versuche eine SSL-Verbindung
bevorzugen (the default): Versuche eine SSL-Verbindung. Wenn das nicht klappt, versuche eine Nicht-SSL-Verbindung;
verlangen: Versuche nur eine SSL-Verbindung.
Benutzername: Benutzername, um sich bei der Datenbank anzumelden.
Passwort: Passwort das zusammen mit Benutzername verwendet wird um sich bei der Datenbank anzumelden.
Optional können noch die folgenden Kontrollkästchen aktiviert werden:
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 gespeichert:
Once you have one or more connections defined, you can load
layers from the PostgreSQL database. Of course this requires having data in
PostgreSQL. See Section Layer nach PostgreSQL/PostGIS importieren for a discussion on
importing data into the database.
Um eine Ebene aus PostGIS zu laden, führen Sie folgende Schritte durch:
Wählen Sie eine Verbindung aus dem Drop-Down Menü und klicken auf [Verbinden].
Optional aktivieren Sie den Bereich Suchoptionen, um eine Auswahl anzuzeigender Objekte zu treffen oder verwenden Sie den [Abfrage erstellen] Knopf um den Abfrageerstellung-Dialog zu starten.
Suchen Sie einen Layer den Sie laden möchten.
Wählen Sie den Layer durch doppelklicken aus. Sie können mehrere Ebenen auswählen, indem Sie die Umschalt-Taste beim Auswählen gedrückt halten. Siehe Abschnitt Abfrageeditor über das Benutzen des PostgreSQL Query Builder um den Layer genauer zu definieren.
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.
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.
QGIS braucht eine Spalte in der PostgreSQL Tabelle, die als eindeutiger Schlüssel für den Layer genutzt werden kann. Für Tabellen bedeutet dies, dass die Tabelle normalerweise einen Primärschlüssel braucht oder eine Spalte mit eindeutiger Zuordnung. Für QGIS muss diese Spalte außerdem vom Typ int4 sein (Integer mit 4 Bytes). Als Alternative kann auch die Spalte ctid als Primärschlüssel-Spalte verwendet werden. Wenn eine Tabelle diese Voraussetzungen nicht erfüllt, wird die oid-Spalte genutzt. Die Performanz steigt, wenn für die Spalte ein Index erstellt wurde (für Primärschlüssel wird in PostgreSQL automatisch ein Index erstellt).
If the PostgreSQL layer is a view, the same requirement exists, but views do not have primary keys or columns with unique constraints on them. You have to define a primary key field (has to be integer) in the QGIS dialog before you can load the view. If a suitable column cannot does not exist in the view, QGIS will not load the layer. If this occurs, the solution is to alter the view so that it does include a suitable column (a type of integer and either a primary key or with a unique constraint, preferably indexed).
QGIS offers a checkbox Select at id that is activated by default. This option gets the ids without the attributes which is faster in most cases. It can make sense to disable this option when you use expensive views.
Data can be imported into PostgreSQL/PostGIS using several tools, such as the SPIT plugin or the command line tools shp2pgsql or ogr2ogr.
QGIS comes with a core plugin named DB Manager. It can be used to
load shapefiles and other data formats and includes support for schemas. See Section
DB Manager Plugin for more information.
PostGIS includes an utility called shp2pgsql that can be used to import shapefiles into a PostGIS enabled database. For example, to import a shapefile named lakes.shp into a PostgreSQL database named gis_data, use the following command:
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
Neben dem Importwerkzeug shp2pgsql gibt es auch ein Werkzeug um PostGIS-Datensätze als Shapes zu exportieren:pgsql2shp. Diees wird mit der PostGIS-Distribution geliefert.
Beside shp2pgsql and DB Manager there is another tool for feeding geodata in PostGIS: ogr2ogr. This is part of your 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
Damit wird das Shape alaska.shp vom Benutzer postgres mit dem Passwort topsecret in die PostGIS Datenbank postgis auf dem Server myhost.de importiert.
Wichtig ist, dass GDAL mit PostgreSQL-Support kompiliert sein muss, damit der Import nach PostGIS möglich ist. Dies kann mit folgendem Kommando getestet werden:
ogrinfo --formats | grep -i post
Wenn Sie das PostgreSQL’s Kommando COPY anstatt der Standardmethode INSERT INTO verwenden möchten, müssen Sie vorher die folgende Variable exportieren (verifiziert unter und
):
export PG_USE_COPY=YES
Der Befehl ogr2ogr erstellt im Gegensatz zu shp2pgsl keinen räumlichen Index. In diesem Fall müssen Sie ihn nachträglich manuell erstellen mit dem SQL-Kommando CREATE INDEX. Die Schritte werden im folgenden Kapitel Geschwindigkeit optimieren näher beschrieben.
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$
Viele GIS Applikationen stellen einen Vektorlayer, der über den Längengrad 180 hinausgeht nicht zusammenhängend dar. So wird in QGIS der Layer geteilt und man sieht im Kartenfenster zwei, weit voneinander entfernte Teile, die eigentlich zusammen gehö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:
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:
Import data to PostGIS (Layer nach PostgreSQL/PostGIS importieren) using for example the DB Manager plugin.
Ö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 TABELLE set the_geom=ST_shift_longitude(the_geom);
Wenn alles geklappt hat, sehen Sie eine Bestätigung mit den Objekten, die verändert wurden. Danach können Sie den PostGIS Layer in QGIS als eine zusammenhängende Karte laden (siehe Abbildung Figure_vector_5 )
Wenn Sie das erste Mal einen Layer aus einer Spatialite Datenbank laden möchten, klicken Sie auf das Icon
SpatiaLite Layer hinzufügen in der Werkzeugleiste oder indem Sie
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 also supports editable views in SpatiaLite.
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, SpatiaLite Manager oder DB Manager. Sie können mit dem Python Plugin Installer gedownloaded und installiert werden.
QGIS also provides native MS SQL 2008 support. The
Add MSSQL Spatial Layer is part of the new toolbar
button or available in the MS SQL node in the QBrowser tree, providing drag and
drop import support.
QGIS also provides native ORACLE Locator/Spatial support. The
Add ORACLE Spatial Layer is part of the new toolbar
button or available in the ORACLE node in the QBrowser tree, providing drag and
drop import support. ORACLE Spatial layers are stored in an ORACLE database.
The first time you use a ORACLE Spatial data source, you must create
a connection to the database that contains the data. Begin by clicking
on the
Add ORACLE Spatial Layer toolbar button, selecting the
Add ORACLE Spatial Layer... option from the
Layer menu or typing Ctrl+Shift+O. To access the
connection manager, click on the [New] button to display the
Create a New ORACLE Spatial Connection dialog. The parameters required for
a connection are:
Name:Ein Name für die Verbindung. Kann derselbe wie für die Datenbank sein
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.
Benutzername: Benutzername, um sich bei der Datenbank anzumelden.
Passwort: Passwort das zusammen mit Benutzername verwendet wird um sich bei der Datenbank anzumelden.
Optional können noch die folgenden Kontrollkästchen aktiviert werden:
Wenn alle Parameter eingetragen sind, kann die Verbindung getestet werden, indem Sie auf den Knopf [Verbindung testen] drücken.
Tipp
QGIS Benutzereinstellungen und Sicherheit
Depending on your computing environment, storing passwords in your QGIS settings may be a security risk. Passwords are saved in clear text in the system configuration and in the project files! Your customized settings for QGIS are stored based on the operating system:
Once you have one or more connections defined, you can load
layers from the ORACLE database. Of course this requires having data in
ORACLE.
To load a layer from ORACLE Spatial, perform the following steps:
Wählen Sie eine Verbindung aus dem Drop-Down Menü und klicken auf [Verbinden].
Optional aktivieren Sie den Bereich Suchoptionen, um eine Auswahl anzuzeigender Objekte zu treffen oder verwenden Sie den [Abfrage erstellen] Knopf um den Abfrageerstellung-Dialog zu starten.
Suchen Sie einen Layer den Sie laden möchten.
Klicken Sie auf den Knopf [Hinzufügen] um den Layer zu laden.
Tipp
ORACLE Spatial Layers
Normally an ORACLE Spatial layer is defined by an entry in the USER_SDO_METADATA table.