Rastergegevens in GIS bestaan uit cellen die gerangschikt zijn in rijen en kolommen en die objecten op, boven of onder het aardoppervlak representeren. Alle cellen in het raster hebben dezelfde grootte en de cellen zijn meestal rechthoekig (in QGIS zijn ze altijd rechthoekig). Typische voorbeelden van raster datasets zijn Remote Sensing data zoals luchtfoto’s, satellietbeelden en gemodelleerde gegevens zoals een hoogtemodel.
Unlike vector data, raster data typically do not have an associated database
record for each cell. They are geocoded by pixel resolution and the x/y
coordinate of a corner pixel of the raster layer. This allows QGIS to position
the data correctly in the map canvas.
QGIS maakt gebruik van informatie over geo-verwijzingen in het rasterbestand zelf (bijvoorbeeld GeoTiff) of in een bijbehorend ‘world file’ om de rastergegevens correct weer te geven.
Many of the features available in QGIS work the same, regardless the vector
data source. However, because of the differences in formats specifications
(ESRI shapefiles, MapInfo and MicroStation file formats, AutoCAD DXF, PostGIS,
SpatiaLite, DB2, Oracle Spatial and MSSQL Spatial databases, and many more),
QGIS may handle differently some of their properties.
This section describes how to work with these specificities.
Notitie
QGIS ondersteunt objecttypen (multi)punt, (multi)lijn, (multi)polygoon, CircularString, CompoundCurve, CurvePolygon, MultiCurve, MultiSurface, alle met Z- en/of M-waarden.
U zult merken dat sommige stuurprogramma’s enkele van deze objecttypen niet ondersteunen: CircularString, CompoundCurve, CurvePolygon, MultiCurve, MultiSurface. QGIS zal ze converteren naar het object (multi)polygoon.
The ESRI shapefile is still one of the most used vector file format in QGIS.
However, this file format has some limitation that some other file format have
not (like Geopackage, spatialite). Support is provided by the
OGR Simple Feature Library.
A shapefile actually consists of several files. The following three are
required:
.shp bestand dat de geometrieën van de objecten bevat
.dbf bestand dat de attribuutwaarden bevat in de indeling voor dBase
.shx het indexbestand
Shapefiles also can include a file with a .prj suffix, which contains
the projection information. While it is very useful to have a projection file,
it is not mandatory. A shapefile dataset can contain additional files. For
further details, see the ESRI technical specification at
http://www.esri.com/library/whitepapers/pdfs/shapefile.pdf.
Improving Performance for Shapefiles
To improve the performance of drawing a shapefile, you can create a spatial
index. A spatial index will improve the speed of both zooming and panning.
Spatial indexes used by QGIS have a .qix extension.
Gebruik de volgende stappen om de index te maken:
- Load a shapefile (see Het paneel Browser);
- Open the Layer Properties dialog by double-clicking on the
shapefile name in the legend or by right-clicking and choosing
from the context menu.
- In the General tab, click the [Create Spatial Index] button.
Problem loading a shape .prj file
If you load a shapefile with a .prj file and QGIS is not able to read the
coordinate reference system from that file, you will need 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.
For the same reason, if you create a new shapefile with QGIS, two different
projection files are created: a .prj file with limited projection
parameters, compatible with ESRI software, and a .qpj file, providing
the complete parameters of the used CRS. Whenever QGIS finds a .qpj
file, it will be used instead of the .prj.
Tabular data is a very common and widely used format because of its simplicity
and readability – data can be viewed and edited even in a plain text editor.
A delimited text file is an attribute table with each column separated by a
defined character and each row separated by a line break. The first row usually
contains the column names. A common type of delimited text file is a CSV
(Comma Separated Values), with each column separated by a comma.
Such data files can also contain positional information in two main forms:
- As point coordinates in separate columns
- As well-known text (WKT) representation of geometry
QGIS allows you to load a delimited text file as a layer or ordinal table. But
first check that the file meets the following requirements:
- The file must have a delimited header row of field names. This must be the
first line in the text file.
- The header row must contain field(s) with geometry definition. These field(s)
can have any name.
- The X and Y coordinates (if geometry is defined by coordinates) must be
specified as numbers. The coordinate system is not important.
Als u gegevens hebt die geen string (tekst) zijn en het bestand is een CSV-bestand, dient u een CSVT-bestand te hebben (zie gedeelte CSVT Files).
Als voorbeeld van een geldig tekstbestand importeren wij het hoogtepunten tekstbestand elevp.csv dat onderdeel is van de QGIS voorbeeld gegevensset (zie gedeelte Sample Data):
X;Y;ELEV
-300120;7689960;13
-654360;7562040;52
1640;7512840;3
[...]
Enkele opmerkingen over het tekstbestand:
Het voorbeeld tekstbestand gebruikt ; (puntkomma) als scheidingsteken. Elk teken mag gebruikt worden om de velden te scheiden.
De eerst rij is de kopregel. Deze bevat de velden X, Y en ELEV.
Er zijn geen aanhalingstekens (") gebruikt om tekstvelden te begrenzen.
De X-coördinaten staan onder het veld X.
De Y-coördinaten staan onder het veld Y.
Bij het laden van CSV-bestanden gaat het stuurprogramma van OGR er van uit dat alle velden strings (d.i. tekst) zijn, tenzij het is vertelt dat het anders is. U kunt een CSVT-bestand maken om OGR (en QGIS) te vertellen van welk gegevenstype de verschillende kolommen zijn:
Type |
Naam
|
Voorbeeld
|
Geheel getal
|
Integer |
4 |
Decimaal getal
|
Real |
3.456 |
Datum
|
Date (YYYY-MM-DD) |
2016-07-28 |
Tijd
|
Time (HH:MM:SS+nn) |
18:33:12+00 |
Datum & Tijd
|
DateTime (YYYY-MM-DD HH:MM:SS+nn) |
2016-07-28 18:33:12+00 |
Het CSVT-bestand is een ÉÉNREGELIG platte tekstbestand met de gegevenstypes tussen aanhalingstekens en gescheiden door komma’s, bijv.:
"Integer","Real","String"
U mag zelfs de breedte en precisie van elke kolom specificeren, bijv.:
"Integer(6)","Real(5.5)","String(22)"
Dit bestand dient te worden opgeslagen in dezelfde map als het .csv-bestand, met dezelfde naam, maar met de extensie .csvt.
You can find more information at GDAL CSV Driver.
PostGIS-lagen zijn opgeslagen in een database van PostgreSQL. De voordelen van PostGIS zijn de ruimtelijke indexering, filters en de uitgebreidere bevragingsmogelijkheden waarin PostGIS voorziet. Wanneer men gebruik maakt van PostGIS, werken vectorfuncties zoals selecteren en het identificeren nauwkeuriger dan dat zij doen met OGR-lagen in QGIS.
Tip
PostGIS-lagen
Normaal gesproken wordt een PostGIS-laag gedefinieerd door een item in de tabel geometry_columns. QGIS kan lagen laden die geen item in de tabel geometry_columns hebben. Dit geldt voor zowel tabellen als voor weergaven. Definiëren van een ruimtelijke weergave biedt krachtige mogelijkheden om gegevens visueel weer te geven. Bekijk de handleiding van PostgreSQL voor informatie over het maken van weergaven.
Dit gedeelte bevat enkele details over de toegang van QGIS tot PostgreSQL-lagen. Meestal geeft QGIS een lijst van databasetabellen die geladen kunnen worden en laad deze wanneer u deze selecteert. Maar wanneer u problemen heeft om een tabel van PostgreSQL te laden in QGIS, kan de onderstaande informatie helpen om de meldingen van QGIS te begrijpen zodat u een aanwijzing hebt wat u moet veranderen aan de tabel van PostgreSQL of aan de definitie van de weergave zodat QGIS deze alsnog kan laden.
QGIS vereist dat tabellen van PostgreSQL een uniek sleutelveld bevatten voor de te laden laag. In QGIS, moet deze tabel van het type int4 zijn, een integer (geheel getal) met een grootte van 4 bytes. Als een alternatief kan het veld CTID gebruikt worden als sleutelveld. Wanneer in een tabel een van deze velden ontbreekt zal in plaats daarvan het veld OID worden gebruikt. De uitvoering zal verbeteren door een index te definiëren op het sleutelveld. (onthoud dat sleutelvelden automatisch een index krijgen in PostgreSQL).
QGIS biedt het keuzevak Select at id dat standaard is geactiveerd. Met deze opties worden de ID’s opgehaald zonder attributen wat in de meeste gevallen sneller is.
Wanneer de PostgreSQL-laag een weergave betreft, bestaan dezelfde vereisten, maar weergaven hebben geen sleutelvelden of velden met regels die ervoor zorgen dat deze uniek zijn. Er moet eerst een sleutelveld (van het type integer) in het dialoogvenster van QGIS gedefinieerd zijn voordat de weergave geladen kan worden. Wanneer er niet een daarvoor geschikte kolom bestaat in de weergave zal de laag niet geladen worden in QGIS. Wanneer dat gebeurd kunt u dat oplossen door de weergave te veranderen zodat deze een geschikte kolom bevat (een type integer en ofwel een primaire sleutel of met een unieke beperking, bij voorkeur geïndexeerd).
Net als voor een tabel is standaard een keuzevak Select at id geactiveerd (zie boven voor de betekenis van het keuzevak). Het kan zin hebben deze optie uit te schakelen als u hele uitgebreide weergaven gebruikt.
If you want to make a backup of your PostGIS database using the pg_dump and
pg_restore commands, and the default layer styles as saved by QGIS fail to
restore afterwards, you need to set the XML option to DOCUMENT and the
restore will work.
In QGIS kunt u objecten al aan de kant van de server filteren. Selecteer het keuzevak Expressies aan zijde van de server uitvoeren indien mogelijk om dat te kunnen doen. Alleen ondersteunde expressies zullen naar de database worden gezonden. Expressies die niet ondersteunde operatoren of functies gebruiken zullen ongemerkt terugvallen naar lokale evaluatie.
Most of common data types are supported by the PostgreSQL provider: integer, float,
varchar, geometry and timestamp.
Array data types are not supported.
Gegevens kunnen worden geïmporteerd in PostgreSQL/PostGIS met behulp van verscheidene programma’s, waaronder de plug-in DB Manager en de programma’s voor de opdrachtregel shp2pgsql en ogr2ogr.
QGIS comes with a core plugin named DB Manager. It can
be used to load shapefiles and other data formats, and it includes support for
schemas. See section Plug-in DB Manager 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
Dit maakt een nieuwe tabel aan, genaamd lakes_new, in de database gis_data. De nieuwe tabel zal een ruimtelijke referentie ID (SRID) bevatten van 2964. Zie Werken met projecties voor meer informatie over Ruimtelijke Referentie Systemen en projecties.
Tip
Exporteren van gegevens uit PostGIS
Like the import tool shp2pgsql, there is also a tool to export
PostGIS datasets as shapefiles: pgsql2shp. This is shipped within
your PostGIS distribution.
Naast shp2pgsql en DB Manager is er nog een manier om geografische gegevens in PostGIS in te lezen: ogr2ogr. Dit is een onderdeel van GDAL.
To import a shapefile into PostGIS, do the following:
ogr2ogr -f "PostgreSQL" PG:"dbname=postgis host=myhost.de user=postgres
password=topsecret" alaska.shp
This will import the shapefile alaska.shp into the PostGIS database
postgis using the user postgres with the password topsecret on host
server myhost.de.
Onthoud dat OGR moet gebouwd zijn met PostgreSQL om ondersteuning te kunnen geven aan PostGIS. U kunt dit controleren m.b.v. volgende opdracht (in )
ogrinfo --formats | grep -i post
Wanneer u de opdracht van PostgreSQL COPY wilt gebruiken in plaats van de standaard opdracht INSERT INTO kunt u dat doen door de volgende omgevingsvariabele in te stellen (tenminste beschikbaar op en ):
ogr2ogr maakt geen ruimtelijke indexen aan zoals shp2pgsl dat wel doet. U dient ze handmatig te maken met de normale opdracht voor SQL CREATE INDEX (zoals beschreven in het volgende gedeelte Verbeteren van de uitvoering).
Many GIS packages don’t wrap vector maps with a geographic reference system
(lat/lon) crossing the 180 degrees longitude line
(http://postgis.refractions.net/documentation/manual-2.0/ST_Shift_Longitude.html).
As result, if we open such a map in QGIS, we will see two far, distinct locations,
that should appear near each other. In Figure_vector_crossing, the tiny point on the far
left of the map canvas (Chatham Islands) should be within the grid, to the right of the
New Zealand main islands.
Een oplossing is om de lengtegraden te transformeren met behulp van PostGIS, en de functie ST_Shift_Longitude. Deze functie leest elk punt/vertex in elke component van elk object in de geometrie en als de lengtegraad < 0° is, telt deze er 360° bij op. Het resultaat zal een versie 0° - 360° zijn van de gegevens die afgedrukt worden op een 180° gecentreerde kaart.
Importeer gegevens in PostGIS (Importeren van gegevens in PostgreSQL), bijvoorbeeld door gebruik te maken van de plug-in DB Manager.
Geef de volgende opdracht op de opdrachtregel voor SQL van PostGIS (dit is een voorbeeld waar “TABEL” de echte naam is van uw tabel in PostGIS): gis_data=# update TABEL set the_geom=ST_Shift_Longitude(the_geom);
Als alles goed ging, zou u nu een bevestiging moeten ontvangen van het aantal objecten die bijgewerkt zijn. Daarna kan deze tabel geladen worden en ziet u het verschil (Figure_vector_crossing_map).
If you want to save a vector layer to SpatiaLite format, you can do this by
right clicking the layer in the legend. Then, click on ,
define the name of the output file, and select ‘SpatiaLite’ as format and the CRS.
Also, you can select ‘SQLite’ as format and then add SPATIALITE=YES in the
OGR data source creation option field. This tells OGR to create a SpatiaLite
database. See also http://www.gdal.org/ogr/drv_sqlite.html.
QGIS ondersteund ook het bewerken van gegevens via weergaven in SpatiaLite.
Als u een nieuwe SpatiaLite laag wilt maken, ga naar het gedeelte Het maken van een nieuwe SpatiaLite-aag.
Tip
Plug-ins SpatiaLite gegevensbeheer
Voor het beheren van gegevens van SpatiaLite kunt u een aantal plug-ins voor Python gebruiken: QSpatiaLite, SpatiaLite Manager of DB Manager (bronplug-in, aanbevolen). Indien nodig kunnen zij gedownload en geïnstalleerd worden met Plug-ins beheren en installeren.
De producten IBM DB2 voor Linux, Unix en Windows (DB2 LUW), IBM DB2 voor z/OS (mainframe) en IBM DashDB stellen gebruikers in staat ruimtelijke gegevens op te slaan en te analyseren in relationele tabelkolommen. De provider DB2 voor QGIS ondersteunt het volledige bereik aan visualisatie, analyses en bewerken van ruimtelijke gegevens in deze databases.
Gebruikersdocumentatie voor deze mogelijkheden kunnen worden gevonden in de DB2 z/OS KnowledgeCenter, DB2 LUW KnowledgeCenter en DB2 DashDB KnowledgeCenter.
Bekijk de DB2 Spatial Tutorial op IBM DeveloperWorks voor meer informatie over het werken met ruimtelijke mogelijkheden voor DB2.
De provider DB2 ondersteunt momenteel alleen de omgeving van Windows door middel van het stuurprogramma Windows ODBC.
De cliënt waarop QGIS wordt uitgevoerd dient een van de volgende te hebben geïnstalleerd:
- DB2 LUW
- IBM Data Server Driver Package
- IBM Data Server Client
Wanneer u een database van DB2 LUW benadert op dezelfde machine of DB2 LUW gebruikt als een cliënt, dienen de uitvoerbare bestanden en ondersteunende bestanden voor DB2 te zij opgenomen in het pad voor Windows. Dat kan worden gedaan door een batchbestand te maken zoals het volgende met de naam db2.bat en dat op te nemen in de map %OSGEO4W_ROOT%/etc/ini.
@echo off
REM Point the following to where DB2 is installed
SET db2path=C:\Program Files (x86)\sqllib
REM This should usually be ok - modify if necessary
SET gskpath=C:\Program Files (x86)\ibm\gsk8
SET Path=%db2path%\BIN;%db2path%\FUNCTION;%gskpath%\lib64;%gskpath%\lib;%path%