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

Ondersteunde gegevensindelingen

QGIS gebruikt de bibliotheek OGR om vectorgegevens te kunnen lezen van en te schrijven naar ESRI Shapefiles, MapInfo en Microstation bestandsformaten; PostGIS, SpatiaLite, MSSQL Spatial en Oracle Spatial databases en vele andere formaten. Ondersteuning voor GRASS vector en PostgreSQL wordt verschaft door eigen QGIS plug-ins voor gegevensverschaffing. De vectorgegevens kunnen ook in leesmodus in QGIS geladen worden vanuit gecomprimeerde zip en gzip-archiefbestanden. Op het moment van schrijven van dit document worden 69 vectorindelingen ondersteund door de bibliotheek OGR (zie OGR-SOFTWARE-SUITE Verwijzingen naar literatuur en web). De volledige lijst is beschikbaar op http://www.gdal.org/ogr_formats.html.

Notitie

Niet alle genoemde indelingen zullen zomaar werken in QGIS om verschillende redenen. Sommige indelingen vereisen de aanwezigheid van externe commerciële funktiebibliotheken. Of een indeling wordt niet ondersteund door de GDAL/OGR functiebibliotheek die mogelijk niet is opgebouwd voor het gebruikte besturingssysteem. Alleen die indelingen die goed zijn getest zullen verschijnen in de lijst van bestandtypen wanneer men een vectorbestand in QGIS wilt inlezen. Overige niet geteste indelingen kunnen worden geladen door *.* te selecteren.

Het werken met vectorgegevens voor GRASS is beschreven in Integratie van GRASS GIS.

Dit deel beschrijft hoe u kunt werken met enkele veel voorkomende vectorindelingen: ESRI shapefiles, PostGIS lagen, Spatialite lagen, OpenStreetMap vector en Comma Separated-gegevens (CSV = tekstgescheiden gegevenstabel). Veel van de beschikbare gebruikersfuncties in QGIS werken precies hetzelfde voor ondersteunde vectorindelingen. Dit is een uitgangspunt geweest bij het ontwerp van QGIS en betreft o.a. de volgende functies, het identificeren, het selecteren, het toevoegen van labels en het werken met attributen.

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.

Een laag uit een bestand laden

addOgrLayer Klik, om een laag uit een bestand te laden (zoals een Shapefile of een laag van MapInfo of dxf), op de knop van de werkbalk addOgrLayer Vectorlaag toevoegen of gebruik de snelkoppeling Ctrl+Shift+V. Dit zal een nieuw scherm openen (zie figure_vector_1).

Figure Vector 1:

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

Dialoogvenster Vectorlaag toevoegen

Selecteer, uit de beschikbare opties, het keuzerondje radioButtonOn Bestand. Klik vervolgens op de knop [Bladeren]. Dit zal een standaard dialoogvenster voor bestandskeuze openen (zie figure_vector_2) waarmee u kunt bladeren naar het gewenste shapefile of een andere door QGIS ondersteunde vectorindeling. De keuzelijst Bestandstypen selectString geeft de mogelijkheid om te filteren op door OGR ondersteunde bestandsindelingen.

U kunt ook, indien gewenst, de codering van de tekenset selecteren voor het te openen bestand.

Figure Vector 2:

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

Dialoogvenster Open een OGR ondersteunde Vectorlaag

Selecteren van een bestand uit de lijst en klikken op [Openen] laadt het in QGIS. Figure_vector_3 toont QGIS na het laden van het bestand alaska.shp.

Figure Vector 3:

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

QGIS met het geopende shapefile van Alaska

Tip

Kleuren van kaartlagen

Wanneer u een kaartlaag toevoegt, zullen de objecten getoond worden in een willekeurige kleur. Wanneer u meer dan één kaartlaag toevoegt, zal elke kaartlaag een andere kleur krijgen.

Eenmaal geladen kunt u de laag bestuderen met de functies voor kaartnavigatie. Open, om de stijl van een laag te wijzigen, het scherm Laag-eigenschappen door te dubbelklikken op de naam van de laag in de legenda, of door de laag te selecteren en met de rechts te klikken om het contextmenu te openen en daarin te kiezen voor Eigenschappen. Zie ook Menu Stijl voor meer informatie over het toekennen van symbologie aan vectorlagen.

Tip

Het laden van kaartlagen en projecten van exerne drives onder OS X

Onder OS X, worden de extern toegevoegde USB-sticks en externe harde schijven niet getoond onder Bestand ‣ Open project zoals men zou verwachten. We werken aan een meer OSX-eigen menu Openen/Opslaan om dit te verhelpen. U kunt echter, als tijdelijke oplossing, /Volumes invullen in het vak Bestandsnaam en op Enter drukken. Vervolgens kunt u nu ook de externe gekoppelde geheugeneenheden, zoals USB sticks, benaderen.

Notitie

DXF-bestanden bevatten verscheiden typen geometrie (punt, lijn en/of polygoon), de naam van de laag zal worden samegesteld uit <filename.dxf> entiteiten <geometry type>.

Notitie

U kunt de/het bestand(en) ook slepen en neerzetten in het paneel Lagen vanuit ofwel de bestandsbrowser of het paneel van de QGIS Browser. Als de laag verscheidene typen geometrie bevat, zal een nieuw venster u vragen om de sublaag te selecteren. Dit gebeurt vaak met bestandsindeling GPX, Mapinfo of DXF.

Een op een specifieke map gebaseerde laag laden

addOgrLayer Druk, om een specifieke indeling, zoals ArcInfo Binary Coverage UK, National Transfer Format, als ook de ruwe indeling TIGER van het US Census Bureau of OpenfileGDB, te laden, op het pictogram addOgrLayer Vectorlaag toevoegen in de werkbalk of gebruik de snelkoppeling Ctrl+Shift+V om het dialoogvenster Vectorlaag toevoegen te openen. Selecteer radioButtonOn Map als Databron. Selecteer vervolgens in de keuzelijst bestandtypen selectString Type Arc/Info Binary Coverage . Navigeer vervolgens naar de map die de Arc/Info Coverage-bestanden of bestand bevat en selecteer deze.

ESRI Shapefiles

Het ESRI-shapefile is nog steeds een van de meest gebruikte vector bestandsindelingen in QGIS. Deze bestandsindeling heeft echter enkele beperkingen die andere bestandsindelingen niet hebben (zoals Geopackage, Spatialite). Ondersteuning wordt mogelijk gemaakt door de OGR Simple Feature Library ( http://www.gdal.org/ogr/ ).

Een shapefile bestaat uit meerdere bestanden. De volgende drie zijn noodzakelijk:

  1. .shp bestand dat de geometrieën van de objecten bevat

  2. .dbf bestand dat de attribuutwaarden bevat in de indeling voor dBase

  3. .shx het indexbestand

Shapefiles kunnen ook een bestand bevatten met de bestandsextensie .prj, het projectiebestand dat informatie over het gebruikte coördinatensysteem bevat. Alhoewel een projectiebestand erg handig is, is het niet noodzakelijk. Een shapefile gegevensset kan daarnaast nog meer bestanden bevatten. Voor verdere details, bekijk de technisch specificaties van ESRI op http://www.esri.com/library/whitepapers/pdfs/shapefile.pdf.

Verbeteren van de uitvoering voor shapefiles

U kunt een ruimtelijke index maken om de uitvoering van het werken met shapefiles te verbeteren. Een ruimtelijke index zal er voor zorgen dat u sneller kunt in- en uitzoomen en het beeld kunt verschuiven. Ruimtelijke indexen die gebruikt worden door QGIS hebben de extensie .qix na de bestandsnaam.

Gebruik de volgende stappen om de index te maken:

  • Laad een shapefile door te klikken op het pictogram addOgrLayer Vectorlaag toevoegen in de werkbalk of gebruik de snelkoppeling Ctrl+Shift+V.

  • Open het menu Laag-eigenschappen door in de legenda te dubbelklikken op de naam van het shapefile of, na selectie in de legenda, met de rechter muisknop het snelmenu te openen en hierin Eigenschappen te kiezen.

  • In het tabblad Algemeen selecteer de knop [Ruimtelijke index maken].

Problemen bij het laden van een shape bestand .prj

Als u een shapefile laadt met een .prj bestand en QGIS is niet in staat om het Coördinaten referentiesysteem van dat bestand te lezen, dan kunt u zelf handmatig de goede CRS projectie instellen op het tabblad Algemeen van het scherm Laag-eigenschappen voor die laag via de knop [Opgeven...]. Dit is nodig omdat de gegeven definitie in het bestand .prj vaak niet alle benodigde parameters voor de projectie bevat, die gebruikt worden in QGIS en wel voorkomen in de lijst van het dialoogvenster van CRS.

Om dezelfde reden worden er bij het aanmaken van een nieuwe shapefile met QGIS, twee verschillende projectiebestanden aangemaakt. Een bestand .prj met een kleiner aantal projectieparameters, compatibel met software van ESRI, en een bestand .qpj, dat een uitgebreidere set van parameters bevat van het gebruikte CRS. Wanneer QGIS een bestand .qpj aantreft, zal dat gebruikt worden in plaats van het bestand .prj.

Tekstgescheiden bestanden

Tabulaire gegevens is een veel en breed gebruikte indeling vanwege zijn eenvoud en leesbaarheid – gegevens kunnen zelfs in een tekstbewerkingsprogramma worden gelezen en bewerkt. Een tekstgescheiden bestand is een tabel met attributen waarin elke kolom wordt gescheiden door een gedefinieerd teken en elke regel wordt gescheiden door een regeleinde. De eerste regel bevat gewoonlijk de namen van de kolommen. Een veelgebruikt type tekstgescheiden bestand is een CSV (Comma Separated Values = komma gescheiden waarden), waarin elke kolom wordt gescheiden door een komma.

Dergelijke gegevensbestanden kunnen ook positionele informatie bevatten in twee belangrijke vormen:

  • Als puntcoördinaten in afzonderlijke kolommen

  • Als welbekende tekst (WKT) weergave van geometrie

QGIS stelt u in staat een gescheiden tekstbestand te laden als een laag of ordinale tabel. Controleer echter eerst of het bestand voldoet aan de volgende vereisten:

  1. Het bestand moet een gescheiden kopregel met veldnamen hebben. Dit moet de eerste regel in het tekstbestand zijn.

  2. De kopregel moet veld(en) bevatten met een definitie voor geometrie. Dit/Deze veld(en) mogen elke naam hebben.

  3. De X- en Y-coördinaten (als de geometrie wordt gedefinieerd door coördinaten) moeten zijn gespecificeerd als getallen. Het coördinatensysteem is niet belangrijk.

Als voorbeeld importeren wij het valide hoogtepunten tekstbestand elevp.csv dat onderdeel is van de QGIS voorbeeld gegevensset (zie gedeelte Voorbeeldgegevens):

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

Enkele opmerkingen over het tekstbestand:

  1. Het voorbeeld tekstbestand gebruikt ; (puntkomma) als scheidingsteken. Elk teken kan gebruikt worden als scheidingsteken.

  2. De eerst rij is de kopregel. Deze bevat de velden X, Y en ELEV.

  3. Er zijn geen aanhalingstekens (") gebruikt voor de tekstvelden.

  4. De X-coördinaten staan onder het veld X.

  5. De Y-coördinaten staan onder het veld Y.

Andere waardevolle informatie voor gevorderde gebruikers

Objecten met gebogen geometrieën (CircularString, CurvePolygon en CompoundCurve) worden ondersteund. Hier zijn drie voorbeelden van dergelijke typen geometrie als een tekengescheiden tekstbestand met geometrieën als WKT:

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

Tekengescheiden tekst ondersteunt ook Z- en M-coördinaten in geometrieën:

LINESTRINGM(10.0 20.0 30.0, 11.0 21.0 31.0)

Het laden van een tekstgescheiden bestand

Selecteer het pictogram delimitedText Tekstgescheiden kaartlaag toevoegen in de werkbalk Kaartlagen om het dialoogvenster Maak een kaartlaag uit een tekstgescheiden bestand te openen zoals getoond in figure_delimited_text_1.

Figure Delimited Text 1:

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

Dialoogvenster Maak een laag uit een tekstgescheiden bestand

Selecteer eerst het bestand (bijv. qgis_sample_data/csv/elevp.csv) via de knop [Bladeren...]. Als het bestand is geselecteerd, zal QGIS proberen om het bestand op te delen in records met velden met het laatst gebruikte scheidingsteken, in dit geval een puntkomma (;). Het is belangrijk om eerst het goede scheidingsteken te selecteren om vanuit een tekstbestand de afzonderlijke velden te kunnen bepalen. U kunt een scheidingsteken opgeven middels het keuzerondje radioButtonOn Zelfgekozen scheidingsteken en door dan een teken in te vullen in het veld Overige scheidingstekens, of door het activeren van het keuzerondje radioButtonOn Reguliere expressie scheidingsteken te kiezen en de tekst op te geven in het tekstveld Expressie. Om het teken Tab te kiezen als scheidingsteken, gebruik dan \t (dit is de reguliere expressie voor het teken tabulator).

Activeer, als het bestand is ingelezen, het keuzerondje radioButtonOnPunt coördinaten bij Geometrie definitie en kies de velden X en Y via de keuzelijsten. Wanneer de coördinaten zijn gegeven in graden/minuten/seconden, activeer dan het keuzevak DMS coördinaten.

Geef tenslotte de nieuwe laag een naam (bijv., elevp) zoals getoond in figure_delimited_text_1 . Na het selecteren van [OK] wordt de laag toegevoegd aan de kaart. Het tekstgescheiden bestand gedraagt zich als elke andere laag in QGIS.

Men kan de spaties voor en achter een veld verwijderen door het keuzevak checkbox Verwijder spaties voor/na velden. Men kan checkbox Sla lege velden over voor elk record gebruiken. Men kan aangeven dat de komma het decimale scheidingsteken is door het keuzevak checkbox Decimale scheidingsteken is de komma te activeren, anders is de punt het decimale scheidingsteken.

Indien ruimtelijke informatie wordt weergegeven als WKT, activeer dan de optie radioButtonOn Well Known Text en selecteer het veld met de definitie voor WKT voor objecten punt-, lijn- of polygoon. Als het bestand geen ruimtelijke gegevens bevat, activeer dan radioButtonOn Geen geometrieën (alleen attributentabel) en het zal worden geladen als een ordinale tabel.

Aanvullend kunt u inschakelen:

  • checkbox Ruimtelijke index gebruiken om de uitvoering van de weergave te verbeteren en objecten ruimtelijk te selecteren.

  • checkbox Gebruik een subset index.

  • checkbox Bestand in de gaten houden om de wijzigingen aan het bestand door andere toepassingen terwijl QGIS wordt uitgevoerd bij te houden.

Gegevens van OpenStreetMap

In recente jaren heeft het project OpenStreetMap enorm aan populariteit gewonnen omdat in vele landen geen gratis geo-gegevens zoals digitale wegenkaarten beschikbaar zijn. Het doel van het project OSM is om een gratis bewerkbare kaart van de wereld te maken vanuit GPS-gegevens, lucht-/satellietfotografie of lokale kennis. QGIS verschaft ondersteuning voor gegevens van OSM om dat doel te ondersteunen.

Het laden van vectorgegevens van OpenStreetMap

QGIS integreert het importeren van OpenStreetMap als een bronfunctionaliteit.

  • Open, om verbinding te maken met de OSM server en gegevens te downloaden, het menu Vector ‣ OpenStreetMap ‣ Gegevens downloaden. Deze stap kan worden overgeslagen als u al een .osm XML-bestand hebt verkregen via JOSM, de Overpass API of via een andere bron.

  • Het menu Vector ‣ OpenStreetMap ‣ Importeer topologie van XML zal uw .osm-bestand omzetten naar een database van SpatiaLite en daarmee verbinding maken.

  • Het menu Vector ‣ OpenStreetMap ‣ Topologie naar Spatialite exporteren geeft de mogelijkheid om de databaseverbinding te openen, het type gegevens te selecteren dat u wilt (punten, lijnen of polygonen) en de tags te kiezen om te importeren. Dit zal een SpatiaLite geometrielaag aanmaken die u kunt toevoegen aan het project door te klikken op het pictogram op de werkbalk addSpatiaLiteLayer SpatiaLite-laag toevoegen of addSpatiaLiteLayer SpatiaLite-laag toevoegen... uit het menu Kaartlagen ‣ Laag toevoegen, (zie ook SpatiaLite-kaartlagen).

PostGIS-lagen

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.

Een opgeslagen verbinding maken

addPostgisLayer De eerste keer dat u een gegevensbron voor PostGIS gebruikt, dient u een verbinding te maken naar de database van PostgreSQL die de gegevens bevat. Begin met het klikken op de knop op de werkbalk addPostgisLayer PostGIS-laag toevoegen, selecteer de optie addPostgisLayer PostGIS-laag toevoegen... uit het menu Kaartlagen ‣ Laag toevoegen, of typ Ctrl+Shift+D. U kunt ook het dialoogvenster Vectorlaag toevoegen openen en radioButtonOn Database selecteren. Het dialoogvenster PostGIS-tabel(len) toevoegen zal worden weergegeven. Klik op de knop [Nieuw] om het dialoogvenster Nieuwe PostGIS-verbinding aanmaken weer te geven om toegang te krijgen tot het beheren van de verbindingen. De voor de verbinding vereiste parameters zijn:

  • Naam: Een naam voor deze verbinding. Mag gelijk zijn aan Database.

  • Service: Service-parameter die gebruikt kan worden als alternatief voor Host/Poort (en eventueel ook Database). Dit kan gedefinieerd worden in pg_service.conf. Bekijk het gedeelte Service verbindingsbestand voor meer details.

  • Host: Naam van de host van de database. De naam van de host moet dezelfde zijn als waarmee u deze kunt vinden via een Telnetverbinding of hoe u deze kunt pingen. Wanneer de database op dezelfde computer staat als QGIS, gebruik hier dan ‘localhost’.

  • Poort: Poortnummer waar de database van PostgreSQL naar luistert. De standaardpoort is 5432.

  • Database: Naam van de database.

  • SSL mode: De instelling van het opzetten van een beveiligde SSL-verbinding met de server. De uitvoering van het opbouwen van kaarten in QGIS is overigens veel beter door SSL uit te schakelen. De volgende opties zijn beschikbaar:

    • Uitschakelen: alleen verbinden zonder SSL-versleuteling

    • Toestaan: Probeer een verbinding zonder SSL-versleuteling, als dat mislukt probeer dan met SSL.

    • Voorkeur (=standaard): Probeer een verbinding met SSL-versleuteling, als dat mislukt probeer dan een verbinding zonder SSL.

    • Vereist: Alleen verbinden met SSL-versleuteling.

  • Gebruikersnaam: Gebruikersnaam om toegang te krijgen tot de database.

  • Wachtwoord: Wachtwoord dat hoort bij Gebruikersnaam om toegang te krijgen tot de database.

Optioneel kunnen de volgende aanvinkvakjes worden geactiveerd:

  • checkbox Gebruikersnaam opslaan

  • checkbox Wachtwoord opslaan

  • checkbox Alleen in de geometrie-kolommen kijken

  • checkbox Niet het type geometrie bepalen voor onbeperkte kolommen (GEOMETRY)

  • checkbox Alleen in het ‘publieke’-schema kijken

  • checkbox Ook tabellen zonder geometrie tonen

  • checkbox Gebruik ’estimated table statistics’

Wanneer alle veldparameters en opties zijn ingesteld, kunt u de verbinding testen met de knop [Test verbinding].

Tip

Geschatte metadata voor tabel gebruiken om bewerkingen te versnellen

Bij het initialiseren van lagen zouden verscheidene query’s nodig kunnen zijn om de karakteristieken vast te stellen van de geometrieën die zijn opgeslagen in de tabel van de database. Wanneer de optie Gebruik ‘estimated table metadata’ is geselecteerd, onderzoeken deze query’s slechts een monster van de rijen en gebruiken de tabelstatistieken, in plaats van de gehele tabel. Dit kan de verwerking van bewerkingen op grote gegevenssets enorm versnellen, maar zou kunnen resulteren in onjuiste karakterisering van lagen (bijv. de telling van het aantal objecten van gefilterde lagen zou niet nauwkeurig genoeg bepaald kunnen zijn) en zou zelfs vreemd gedrag kunnen veroorzaken in het geval dat kolommen, die geacht worden uniek te zijn, dat in feite niet zijn.

Laden van een PostGIS-laag

addPostgisLayer Na het maken van een verbinding met één of meerdere databases van PostgreSQL, kunt u een laag laden vanuit de database van PostgreSQL. Uiteraard moet deze wel eerst kaartgegevens bevatten. Zie ook Het importeren van gegevens in PostgreSQL voor een uitleg over hoe u gegevens in de database importeert.

Voer de volgende stappen uit om een laag te laden vanuit PostGIS:

  • Selecteer, als het venster PostGIS Tabel(len) toevoegen nog niet geopend is, in de werkbalk de knop addPostgisLayer PostGIS-laag toevoegen... in het menu Kaartlagen ‣ Laag toevoegen of met de snelkoppeling Ctrl+Shift+D.

  • Kies een aangemaakte verbinding vanuit de keuzelijst en druk op [Verbinden].

  • Selecteer of deselecteer het keuzevak checkbox Ook tabellen zonder geometrie tonen

  • Optioneel kunt u het keuzevak checkbox Zoek opties selecteren om een selectie te maken van objecten die geladen dienen te worden of gebruik de knop [Filter instellen] om het venster te openen waarmee u een Filter kunt instellen middels een zoekopdracht.

  • Zoek naar de laag/lagen die u wilt laden uit de lijst van beschikbare tabellen met gegevens.

  • Selecteer deze door er op te klikken. U kunt meerdere lagen selecteren door de Shift-toets in te drukken tijdens het klikken. Zie Querybouwer voor meer informatie over hoe de PostgreSQL Querybouwer te gebruiken om de laag verder te definiëren.

  • Klik op de knop [Toevoegen] om de laag toe te voegen aan de legenda en het kaartbeeld.

Tip

PostGIS-lagen

Normaal gesproken bevat een PostGIS-laag een veld voor geometrie. Maar vanaf versie 0.9.0 is het ook mogelijk om in QGIS PostGIS-lagen zonder veld voor geometrie te laden. Daarnaast is het ook mogelijk om gedefinieerde SQL Views te laden. Dit biedt krachtige mogelijkheden om gegevens visueel weer te geven. Zie de handleiding van PostgreSQL voor informatie over het maken van SQL Views.

Service verbindingsbestand

Het service verbindingsbestand maakt het mogelijk dat in PostgreSQL parameters voor een verbinding worden geassocieerd met één enkele naam van een service. Die naam van een service kan dan worden gespecificeerd door een cliënt en de geassocieerde instellingen zullen worden gebruikt.

Het is genaamd .pg_service.conf op systemen van *nix (GNU/Linux, macOS etc.) en pg_service.conf op Windows.

Het servicebestand ziet er uit als:

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

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

Notitie

Er staan twee services in het voorbeeld hierboven: water_service en wastewater_service. U kunt deze gebruiken om te verbinden vanuit QGIS, pgAdmin etc. door alleen de naam te specificeren van de service waarmee u wilt verbinden (zonder de omsluitende haakjes). Indien u de service wilt gebruiken met psql dient u iets te doen als export PGSERVICE=water_service vóórdat u uw opdrachten voor psql opgeeft.

Notitie

U vindt alle parameters hier

Notitie

Indien u de wachtwoorden niet wilt opslaan in het servicebestand, kunt u de optie .pg_pass gebruiken.

Op besturingssystemen van *nix (GNU/Linux, macOS etc.) kunt u het bestand .pg_service.conf opslaan in de thuismap van de gebruiker en de cliënten van PostgreSQL zullen zich er automatisch bewust van zijn. Als, bijvoorbeeld de gebruiker web is, zou het bestand .pg_service.conf moeten zijn opgeslagen in de map /home/web/ om direct te kunnen werken (zonder enige andere omgevingsvariabelen te moeten opgeven).

U kunt de locatie van het servicebestand specificeren door een omgevingsvariabele PGSERVICEFILE te maken (bijv. voer de opdracht export PGSERVICEFILE=/home/web/.pg_service.conf uit onder uw *nix OS om de variabele PGSERVICEFILE tijdelijk in te stellen)

U kunt het servicebestand ook systeembreed (alle gebruikers) beschikbaar maken, ofwel door het te plaatsen in pg_config --sysconfdir``**/.pg_service.conf**  of door de omgevingsvariabele ``PGSYSCONFDIR toe te voegen om de map te specificeren die het servicebestand bevat. Als servicedefinities met dezelfde naam bestaan in het gebruikers- en het systeembestand, heeft het gebruikersbestand voorrang boven het systeembestand.

Waarschuwing

Er zijn enkele valkuilen onder Windows:

  • Het servicebestand zou moeten worden opgeslagen als pg_service.conf en niet als .pg_service.conf.

  • Het servicebestand zou moeten worden opgeslagen in de indeling voor Unix om te kunnen werken. Eén manier om dat te doen is door het te openen in Notepad++ en dan Bewerken -> Formaat -> UNIX-indeling -> Bestand opslaan.

  • Na het toevoegen van een omgevingsvariabele zou u mogelijk uw computer opnieuw moeten opstarten.

Enkele details over PostgreSQL-lagen

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 View 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).

Wanneer de PostgreSQL-laag een view betreft, bestaan dezelfde vereisten, maar views 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 view geladen kan worden. Wanneer er niet een daarvoor geschikte kolom bestaat in de view zal de laag niet geladen worden in QGIS. Wanneer dat gebeurd kunt u dat oplossen door de view te veranderen zodat deze een kolom bevat van het type integer en die ook kan fungeren als sleutelveld (bij voorkeur geïndexeerd).

Het keuzevak Select at id van QGIS is standaard geactiveerd. Met deze opties worden de ID’s opgehaald zonder attributen wat in de meeste gevallen sneller is. Deze optie uitschakelen heeft zin wanneer er ‘dure’ views worden gebruikt.

Tip

Back-up van database van PostGIS met door QGIS opgeslagen lagen

Als u een back-up van uw database van PostGIS wilt maken met behulp van de opdrachten pg_dump en pg_restore, en daarna mislukt het herstellen van de standaard laagstijlen, zoals die werden opgeslagen door QGIS, dient u de optie XML in te stellen op DOCUMENT en het herstellen zal wel werken.

In QGIS kunt u objecten al aan de kant van de server filteren. Selecteer het keuzevak checkbox Expressies aan server-side Postgres uitvoeren indien mogelijk (Experimenteel) 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.

Het importeren van gegevens in PostgreSQL

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.

DB Manager

QGIS heeft standaard ook de plug-in dbManager DB Manager. Deze kan gebruikt worden om meerdere shapefiles en andere gegevensindelingen te laden en ondersteunt ook schema’s. Zie ook Plug-in DB Manager voor meer informatie.

shp2pgsql

PostGIS bevat een stuk gereedschap genaamd shp2pgsql dat gebruikt kan worden om shapefiles te laden in een database van PostGIS. Gebruik de volgende opdracht om bijvoorbeeld een shapefile met de naam lakes.shp te laden in een database van PostgreSQL, genaamd gis_data:

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

Net zoals de importeerfunctie shp2pgsql is er ook een functie waarmee je PostGIS tabellen kunt exporteren naar shapefile: pgsql2shp. Deze functies vormen een standaard onderdeel van een distributie van PostGIS.

ogr2ogr

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.

Geef de volgende opdracht om een shapefile te importeren in PostGIS:

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

Dit zal het shapefile alaska.shp importeren in de PostGIS-database postgis als gebruiker postgres met het wachtwoord topsecret op 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 nix)

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 nix en osx):

export PG_USE_COPY=YES

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

Verbeteren van de uitvoering

Het opvragen van gegevens uit een PostgreSQL database kan vertragend werken, zeker over een netwerk. U kunt de uitvoering van het tekenen van PostgreSQL-lagen echter een stuk sneller maken door er voor te zorgen dat er een PostGIS spatial index bestaat voor elke laag in de database. PostGIS ondersteunt het maken van een zogenaamde GiST (Generalized Search Tree) index om de ruimtelijke zoekopdrachten sneller uit te voeren. (Informatie over de index GiST is overgenomen uit de documentatie van PostGIS, beschikbaar via http://postgis.net).

Tip

U kunt DBManager gebruiken om een index voor uw laag te maken. U zou eerst de laag moeten selecteren en klikken op Tabel > Tabel bewerken, ga naar de tab Indexen en klik op [Ruimtelijke index toevoegen].

De opdracht voor het aanmaken van een GiST index is:

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

Voor grote tabellen kan het aanmaken van een index veel tijd kosten. Wanneer de index is aangemaakt dient deze gevolgd te worden door de opdracht VACUUM ANALYZE. Zie de PostGIS documentatie (POSTGIS-PROJECT Verwijzingen naar literatuur en web) voor meer informatie.

Hier volgt een voorbeeld hoe je een GiST index kunt aanmaken:

[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$

Vectorlagen die de 180° lengtegraad overschrijden

Veel GIS-pakketten zullen verkeerd omgaan met het maken van vectorkaarten met een geografisch referentiesysteem (lengte-/breedtegraden), wanneer deze de lijn van de 180° lengtegraad overschrijdt. (http://postgis.refractions.net/documentation/manual-2.0/ST_Shift_Longitude.html). Als resultaat, als we zo’n kaart openen in QGIS, zullen we zien dat twee plaatsen die dicht bij elkaar liggen, ver uit elkaar worden weergegeven. In Figure_vector_4 ligt het kleine puntje helemaal aan de linkerkant van het kaartvenster (de Chatham Islands), maar dat zou in werkelijkheid binnen het raster, aan de rechterkant van de hoofdeilanden van Nieuw Zeeland, moeten liggen.

Figure Vector 4:

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

Kaarten maken voor lat/lon die de 180° lengtegraad overschrijden

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.

Figure Vector 5:

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

Het overschrijden van de 180° lengtegraad met het toepassen van de ST_Shift_Longitude functie

Gebruik

  • Importeer gegevens in PostGIS (Het 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_5).

SpatiaLite-kaartlagen

addSpatiaLiteLayer Selecteer, als u gegevens uit een database van SpatiaLite wilt laden, het pictogram addSpatiaLiteLayer SpatiaLite-laag toevoegen op de werkbalk of door de optie addSpatiaLiteLayer SpatiaLite-laag toevoegen... te selecteren onder het hoofdmenu Kaartlagen –. Laag toevoegen of via de sneltoets Ctrl+Shift+L. Een menu zal openen waarin u een nieuwe verbinding met een database van Spatialite kunt maken of een bestaande verbinding, die bekend is bij QGIS, kunt kiezen in een keuzelijst. Selecteer de knop [Nieuw] om een nieuwe verbinding te maken, vervolgens kunt u via een bestandsverkenner de database van SpatiaLite vinden, wat vaak een bestand is dat meestal de bestandsextensie .sqlite heeft.

Wanneer u een vectorlaag wilt opslaan in de indeling voor SpatiaLite kunt u dit doen door een vectorlaag in de legenda te selecteren en dan met de rechter muisknop het contextmenu te openen en daarin Opslaan als... te selecteren. Geef een naam voor de aan te maken database, geef ‘Spatialite’ als indeling en het CRS (Coördinaten Referentie Systeem). U kunt ook ‘SQLite’ als indeling selecteren en de opdracht SPATIALITE=YES in het veld OGR data source creation option opgeven. OGR weet dan dat het een database voor SpatiaLite moet maken. Zie ook http://www.gdal.org/ogr/drv_sqlite.html.

QGIS ondersteund ook het bewerken van gegevens via Views in SpatiaLite.

Het maken van een nieuwe SpatiaLite kaartlaag

Wanneer u een nieuwe SpatiaLite laag wilt maken, ga naar Nieuwe Spatialite-laag maken.

Tip

SpatiaLite data management Plugins

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.

MSSQL Spatial-lagen

addMssqlLayer QGIS biedt ook ondersteuning voor MS SQL. De eerste keer wanneer u een database van MSSQL Spatial wilt openen, begin met te klikken op het pictogram addMssqlLayer MSSQL Spatial-laag toevoegen in de werkbalk, of selecteer de menuoptie addMssqlLayer MSSQL Spatial-laag toevoegen... in het menu Kaartlagen ‣ Laag toevoegen of gebruik de snelkoppeling Ctrl+Shift+M.

Oracle Spatial-lagen

De ruimtelijke objecten in Oracle Spatial helpen gebruikers bij het beheren van geografische en locatie-gegevens in een eigen type binnen een database van Oracle. QGIS heeft nu ondersteuning voor dergelijke lagen.

Een opgeslagen verbinding maken

addOracleLayer De eerste keer wanneer u een database van Oracle Spatial wilt openen, moet er eerst een connectie met de database gemaakt worden die de ruimtelijke gegevens bevat. Begin met het selecteren van het pictogram addOracleLayer Oracle Spatial-laag toevoegen in de werkbalk, of selecteer de menuoptie addOracleLayer Oracle Spatial-laag toevoegen... in het menu Kaartlagen ‣ Laag toevoegen of gebruik de snelkoppeling Ctrl+Shift+O. Druk in het menu dat verschijnt op de knop [Nieuw] om toegang te krijgen tot het beheren van de verbindingen, vervolgens opent het menu Nieuwe Oracle Spatial verbinding aanmaken. De verplichte velden voor het opzetten van een verbinding zijn:

  • Naam: Een naam voor deze verbinding. Mag gelijk zijn aan Database.

  • Database SID of SERVICE_NAME van de Oracle instantie.

  • Host: Naam van de host van de database. De naam van de host moet dezelfde zijn als waarmee u deze kunt vinden via een Telnetverbinding of hoe u deze kunt pingen. Wanneer de database op dezelfde computer staat als QGIS, gebruik hier dan ‘localhost’.

  • Poort: Poortnummer waar de server van de database van Oracle naar luistert. De standaard poort is 1521.

  • Gebruikersnaam: Gebruikersnaam om toegang te krijgen tot de database.

  • Wachtwoord: Wachtwoord dat hoort bij Gebruikersnaam om toegang te krijgen tot de database.

Optioneel kunnen de volgende keuzevakjes worden geactiveerd:

  • checkbox Gebruikersnaam opslaan Geef aan of de gebruikersnaam van de verbinding naar de database moet worden opgeslagen.

  • checkbox Wachtwoord opslaan Geeft aan of het wachtwoord van de verbinding naar de database moet worden opgeslagen.

  • checkbox Kijk alleen in de metadata tabel. Dit beperkt de tabellen tot die aanwezig in de view all_sdo_geom_metadata. Dit kan het tonen van tabellen voor selectie aanzienlijk versnellen.

  • checkbox Alleen zoeken naar tabellen van de gebruiker. Beperk de zoekopdracht tot alleen die ruimtelijke tabellen waar de gebruiker eigenaar van is.

  • checkbox Ook tabellen zonder geometrie tonen Geeft aan dat ook tabellen zonder geometrie standaard in de lijst getoond worden.

  • checkbox Gebruik geschatte tabelstatistieken voor de laag metadata Wanneer een laag wordt aangemaakt wordt er ook verschillende metadata aangemaakt voor de tabel in Oracle. Deze bevat informatie als het bijhouden van het aantal regels, het type geometrie en het bereik van alle geometrieën in de tabel. Het bijhouden van deze metadata is tijdrovend als de tabellen veel records bevatten. Door deze optie te activeren, worden de volgende snelle bewerkingen voor de metadata uitgevoerd: Het aantal regels wordt bepaald vanuit all_tables.num_rows. De bereiken van elke tabel worden altijd bepaald met de functie SDO_TUNE.EXTENTS_OF, zelfs wanneer er een filter wordt gebruikt. Het bepalen van het type geometrie wordt bepaald uit de eerste 100 regels van de tabel die geometrie bevatten.

  • checkbox Alleen bestaande geometrie typen Toon alleen bestaande typen geometrie en biedt niet aan om andere toe te voegen.

Waarschuwing

Op de tab Authenticatie zal het opslaan van gebruikersnaam en wachtwoord niet beveiligde inloggegevens behouden in de configuratie van de verbinding. Deze inloggegevens zullen zichtbaar zijn als u, bijvoorbeeld, het projectbestand deelt met iemand. Daarom wordt geadviseerd om uw inloggegevens in plaats daarvan op te slaan in een configuratie voor Authenticatie (tab configurations). Bekijk ook ref:authentication_index voor meer details.

Wanneer alle veldparameters en opties zijn ingesteld, kunt u de verbinding testen met de knop [Test verbinding].

Tip

QGIS Gebruikersinstellingen en beveiliging

Afhankelijk van uw besturingssysteem kan de opslag van wachtwoorden in de instellingen voor QGIS een beveiligingsrisico vormen. Wachtwoorden worden opgeslagen als leesbare tekst in de systeem configuratie en in de projectbestanden! De opslag van gebruikersinstellingen voor QGIS hangt af van uw besturingssysteem:

  • nix De instellingen voor Linux worden opgeslagen in de thuismap ~.qgis2/.

  • win De instellingen worden opgeslagen in het register.

Laden van een Oracle Spatial-laag

addOracleLayer Nadat u één of meer verbindingen heeft gedefinieerd, kunt u een lagen laden vanuit de database van Oracle. Uiteraard moeten die wel eerst kaartgegevens bevatten in Oracle.

Voer de volgende stappen uit om een laag te laden vanuit Oracle Spatial:

  • Klik, als het venster Oracle Spatial tabel(len) toevoegen nog niet open is, op de werkbalk op de knop addOracleLayer Oracle Spatial-laag toevoegen.

  • Kies een aangemaakte verbinding vanuit de keuzelijst en druk op [Verbinden].

  • Selecteer of deselecteer het keuzevak checkbox Ook tabellen zonder geometrie tonen

  • Optioneel kunt u het keuzevak checkbox Zoek opties aanvinken om een selectie te maken van objecten die geladen dienen te worden of gebruik de knop [Filter instellen] om het dialoogvenster Querybouwer te openen .

  • Zoek naar de laag/lagen die u wilt laden uit de lijst van beschikbare tabellen met gegevens.

  • Selecteer deze door er op te klikken. U kunt meerdere lagen selecteren door de Shift-toets in te drukken tijdens het klikken. Zie Querybouwer voor meer informatie over het gebruiken van de Oracle Querybouwer om de laag verder te definiëren.

  • Klik op de knop [Toevoegen] om de laag toe te voegen aan de legenda en het kaartbeeld.

Tip

Oracle Spatial-lagen

Normaal gesproken wordt een ruimtelijke laag in ORACLE gedefinieerd door een item in de tabel USER_SDO_METADATA.