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 geladen worden in QGIS vanuit gecomprimeerde zip en gzip-archiefbestanden. Op het moment van schrijven van dit document worden, 69 vector formaten 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 voor verschillende redenen. Sommige indelingen vereisen de aanwezigheid van externe commerciële functiebibliotheken. Of een indeling wordt niet ondersteund door GDAL/OGR functiebibliotheek die is opgebouwd voor het gebruikte besturingssysteem. Alleen die indelingen die goed zijn getest zullen verschijnen in de lijst van bestandstypen wanneer men een vectorbestand in QGIS wil 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 je kunt werken met enkele veelvoorkomende vectorindelingen: ESRI shapefiles, PostGIS lagen, Spatialite lagen, OpenStreetMap vector en Comma Separated data (CSV = tekengescheiden 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.

ESRI Shapefiles

De standaard vector bestandsindeling die gebruikt wordt in QGIS is ESRI-shapefile. De ondersteuning hiervoor 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 die de geometrieën van de objecten bevat

  2. .dbf bestand die de attribuutwaarden bevat in dBase formaat

  3. .shx het index bestand

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

Het laden van een Shapefile

Voor het laden van een shapefile, open QGIS en klik op het pictogram |mActionOgrLayer| Vectorlaag toevoegen in de werkbalk 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 nix

Uit de beschikbare opties selecteer het keuzerondje radiobuttonon Bestand. Klik vervolgens op de knop [Bladeren]. Dit zal een standaard bestandskeuze menu openen (zie figure_vector_2) waarmee je kunt bladeren naar de 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, oftewel de encoding meegeven voor het te openen shapefile, (CP1252 is de Latijnse tekenset, veelal gebruikt in westerse talen).

Figure Vector 2:

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

Dialoogvenster openen voor een door OGR ondersteunde vectorlaag nix

Selecteer een shapefile uit de lijst en selecteer de knop [Open] zodat deze geladen wordt in QGIS. Figure_vector_3 toont QGIS na het laden van de shapefile alaska.shp.

Figure Vector 3:

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

QGIS met de geopende shapefile van Alaska nix

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, kun je kaartlaag bestuderen met de kaart navigatie functies. Om de symbologie van een kaartlaag te wijzigen, open het scherm: guilabel:Laag Eigenschappen door te dubbelklikken op de naam van de kaartlaag in de legenda, of door de laag te selecteren en met de rechtermuis het snelmenu op te roepen en daarin te kiezen voor Eigenschappen. Zie ook Menu Stijl voor meer informatie over het toekennen van symbologie aan vector kaartlagen.

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. Er wordt gewerkt aan een oplossing die beter aansluit op de OSX-standaard open/opslaan menu om dit te verhelpen. Je kunt echter, als tijdelijke oplossing, ‘/Volumes’ invullen bij Bestandsnaam en op return drukken. Vervolgens kun je nu ook de externe gekoppelde geheugeneenheden, zoals USB sticks, benaderen.

Verbeteren van de uitvoering voor shapefiles

Om de performance van het werken met shapefiles te verbeteren, kunt u een ruimtelijke index maken. Een ruimtelijke index zal er voor zorgen dat het kaartbeeld veel sneller getekend wordt zodat u ook sneller kunt in- en uitzoomen of het beeld kunt verschuiven. Ruimtelijke indexen gebruikt door QGIS hebben de bestandsnaam-extensie .qix.

Gebruik volgende stappen om een index te maken:

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

  • Open het menu Laag Eigenschappen door in de legenda te dubbelklikken op de naam van de shapefile of na selectie in de legenda, met de rechtermuisknop 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 .prj bestand

Wanneer je een shapefile laad met een .prj bestand en QGIS is niet in staat om het Coördinaten referentiesysteem van dat bestand te lezen, dan kun je 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 projectieparameters bevat, die gebruikt worden in QGIS en wel voorkomen in de lijst van het dialoogvenster van CRS .

Om die 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 ESRI software, en een bestand .qpj , dat een uitgebreidere set van parameters bevat van de gebruikte CRS. Wanneer QGIS een bestand .qpj aantreft, zal dat gebruikt worden in plaats van het bestand .prj .

Het laden van MapInfo gegevens

mActionAddOgrLayer om een MapInfo te laden. Klik de knop mActionAddOgrLayer Vector laag toevoegen of type Ctrl+Shift+V, verander het bestandstype naar Bestanden van type selectstring: to ‘Mapinfo File [OGR] (*.mif *.tab *.MIF *.TAB)’ en selecteer de MapInfo laag die dient te worden geladen.

Het laden van ArcInfo Binary Coverage

mActionAddOgrLayer Om een ArcInfo Binary Coverage te laden, druk op het pictogram mActionAddOgrLayer Vectorlaag toevoegen in de werkbalk of gebruik snelkoppeling Ctrl+Shift+V om het dialoogvenster Vectorlaag toevoegen te openen. Selecteer nu eerst de status van optieknop radiobuttonon Map. Selecteer vervolgens in de keuzelijst bestandtypes selectstring Type Arc/Info Binary Coverage . Navigeer vervolgens naar de map die de Arc/Info Coverage-bestanden bevat en selecteer deze.

Op dezelfde wijze kun je ook de vectorbestanden in het UK National Transfer Format laden, die eveneens zijn opgeslagen in een folder als bestanden in het TIGER formaat van het US Census Bureau.

Tekengescheiden bestanden

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

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

Het laden van een tekengescheiden tekstbestand

Selecteer het pictogram delimited_text Tekstgescheiden kaartlaag toevoegen in de werkbalk Kaartlagen bewerken om het dialoogvenster Creëer een Kaartlaag van een Tekengescheiden bestand te openen zoals getoond in figure_delimited_text_1.

Figure Delimited Text 1:

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

Creëer Tekstgescheiden Kaartlaag Dialoog nix

Selecteer eerst het bestand (bijv. :file:qgis_sample_data/csv/elevp.csv`)  via de knop **[Bladeren...]**. Wanneer het bestand is geselecteerd, zal |qg| 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. Je kunt een scheidingsteken opgeven door het keuzerondje radiobuttonon Zelfgekozen scheidingsteken en 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 tab-teken te kiezen als scheidingsteken, gebruik \t (dit is de reguliere expressie voor het tabulator karakter).

Wanneer het bestand is ingelezen, activeer 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 Degrees(=Graden)/Minuten/Seconden, activeer dan het aanvinkvak 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 tekengescheiden tekstbestand gedraagtd zich als elke andere kaartlaag in QGIS.

Men kan de spaties voor en achter een veld verwijderen door het aanvinkvak checkbox Verwijder spaties voor/na velden. Men kan checkbox Sla lege velden over voor elk record gebruiken. Men kan aangeven dat de comma het decimale scheidingsteken is door het het aanvinkvak checkbox Decimale scheidingsteken is de comma 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 punt-, lijn- of polygoonobjecten. 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 is 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

Openstreetmap import is standaard functionaliteit van QGIS.

  • Om met de OSM server verbinding te maken en gegevens te downloaden, open het menu Vector ‣ Openstreetmap ‣ Download data. Deze stap kan worden overgeslagen wanneer het al een .osm XML bestand hebt verkregen via JOSM, de Overpass API of via een andere bron.

  • Het menu Vector ‣ Openstreetmap ‣ Importeer topology van XML zal je .osm bestand omzetten naar een SpatiaLite database en daarmee verbinding maken.

  • Het menu Vector ‣ Openstreetmap ‣ Exporteer topologie naar Spatialite geeft de mogelijkheid om de database connectie te openen, wat voor type gegevens je wilt (punten, lijnen of polygonen) en kies de tags om te importeren. Dit zal een SpatiaLite geometrie laag aanmaken die je kunt toevoegen aan het project door te klikken op het werkbalk icoon mActionAddSpatiaLiteLayer SpatiaLite laag Toevoegen of mActionAddSpatiaLiteLayer SpatiaLite laag toevoegen... uit het menu Kaartlagen ‣ , (zie ook SpatiaLite-kaartlagen).

PostGIS kaartlagen

PostGIS kaartlagen zijn opgeslagen in een PostgreSQL database. Het voordeel van PostGIS zijn de spatiale indexering, filters en de uitgebreidere bevragingsmogelijkheden waarin PostGIS voorziet. Wanneer men gebruik maakt van PostGIS, werken vectorfuncties zoals het selecteren en het identificeren van objecten meer accuraat dan met OGR lagen in QGIS.

Een opgeslagen verbinding maken

mActionAddPostgisLayer De eerste keer dat u een gegevensbron voor PostGIS gebruikt, dient u een verbinding te maken naar de database van PostgreSQLdie de gegevens bevat. Begin met het klikken op de knop op de werkbalk mActionAddPostgisLayer Add PostGIS Layer, selecteer de optie mActionAddPostgisLayer Add PostGIS Layer... uit het menu Layer, of typ Ctrl+Shift+D. U kunt ook het dialoogvenster Add Vector Layer openen en selecteren radiobuttonon Database. Het dialoogvenster Add PostGIS Table(s) zal worden weergegeven. Klik op de knop [Nieuw] om het dialoogvenster Nieuwe PostGIS-verbinding aanmaken weer te geven om toegang te krijgen tot beheren van de verbindingen. De voor de verbinding vereiste parameters zijn:

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

  • Service: Service parameter die gebruikt kan worden als alternatief voor Host/Poort (en eventueel ook Database). Dit kan gedefinieerd worden in de pg_service.conf.

  • Host: Naam van de database host. De naam van de host moet dezelfde zijn als waarmee je deze kunt vinden via een telnet verbinding of hoe je 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 performance van het opbouwen van kaarten in QGIS is overigens veel beter door SSL uit te schakelen. Dit zijn de opties:

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

Laden van een PostGIS-laag

mActionAddPostgisLayer Na het aanmaken van een verbinding met één of meerdere PostgreSQL databases, kun je een kaartlaag laden vanuit de PostgreSQL database. Uiteraard moet deze wel eerst kaartgegevens bevatten. Zie Het importeren van gegevens in PostgreSQL voor een uitleg hoe je gegevens in een PostGis database kunt inlezen.

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

  • Wanneer het venster PostGIS Tabel(len) toevoegen nog niet geopend is, selecteer in de werkbalk de knop mActionAddPostgisLayer PostGIS-laag Toevoegen... in het menu Layer of via de de snelkoppeling Ctrl+Shift+D.

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

  • Vink aan of ontvink het keuzevakje checkbox Ook tabellen zonder geometrie tonen

  • Optioneel kun je het keuzevakje checkbox Zoek opties aanvinken om een selectie te maken van objecten die geladen dienen te worden of gebruik de knop [Filter instellen] om het venster te openen waarmee je 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. Je kunt meerdere lagen selecteren door de Shift toets in te drukken tijdens het klikken. Zie Querybouwer voor meer informatie over het instellen van een filter hoe je een zoekopdracht kunt maken voor een gegevenslaag.

  • 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 geometrieveld. Maar vanaf versie 0.9.0 is het ook mogelijk om in QGIS PostGIS lagen zonder geometrieveld te laden. Daarnaast is het ook mogelijke om gedefinieerde SQL Views te laden. Dit biedt krachtige mogelijkheden om gegevens visueel weer te geven. Zie de PostgreSQL handleiding voor informatie over het aanmaken van SQL Views.

Enkele details over PostgreSQL-lagen

Dit deel bevat enkele details over de toegang van QGIS naar PostgreSQL lagen. Meestal geeft QGIS een lijst van database tabellen die geladen kunnen worden en laad deze wanneer je deze selecteert. Maar wanneer je problemen hebt om een PostgreSQL tabel te laden in QGIS, kan de onderstaande informatie helpen om de meldingen van QGIS te begrijpen zodat je een aanwijzing hebt wat je moet veranderen aan de PostgreSQL tabel of aan de View definitie zodat QGIS deze alsnog kan laden.

QGIS vereist dat PostgreSQL tabellen 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 1 van deze velden ontbreekt zal in plaats daarvan het veld oid worden gebruikt. De performance zal verbeteren door een index te definiëren op het sleutelveld. (opm. Sleutelvelden krijgen automatisch een index 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 de QGIS dialoog 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 kun je 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.

Het importeren van gegevens in PostgreSQL

Gegevens kunnen op een aantal verschillende manieren geïmporteerd worden in PostgreSQL gebruik makende van de SPIT plugin of met opdrachtregel programma’s shp2pgsql of ogr2ogr.

DB Manager

QGIS heeft standaard ook de icon_dbmanager DB Manager plugin. Deze kan gebruikt worden om meerdere shapefiles en andere dataformaten te laden en ondersteund ook schemas. Zie 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 PostGIS database. Om bijvoorbeeld een shapefile met de naam lakes.shp te laden in een PostgreSQL database genaamd gis_data, gebruik de volgende opdracht:

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 spatiale referentie ID (SRID) bevatten van 2964. Zie Werken met Projecties voor meer informatie over Spatiale 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 shape: pgsql2shp. Deze functies vormen een standaard onderdeel van een PostGIS distributie.

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 de shapefile alaska.shp importeren in de PostGIS-database postgis als gebruiker postgres met het wachtwoord topsecret op host server myhost.de.

Opm. OGR (GDAL) moet gebouwd zijn met ondersteuning voor PostgreSQL om te kunnen werken met PostGIS. Je kunt dit controleren m.b.v. volgende opdracht (in nix)

ogrinfo --formats | grep -i post

Wanneer je PostgreSQL’s COPY -opdracht wilt gebruiken in plaats van de standaard INSERT INTO opdracht kun je dat doen door de volgende omgevingsvariabele in te stellen (tenminste voor nix en osx):

export PG_USE_COPY=YES

ogr2ogr maakt geen spatiale index aan in tegenstelling tot shp2pgsl die dat wel doet. Deze moet nadien, als extra handeling, alsnog handmatig worden aangemaakt met de normale SQL-opdracht CREATE INDEX (zoals beschreven in de volgende paragraaf Verbeteren van de uitvoering).

Verbeteren van de uitvoering

Het opvragen van gegevens uit een PostgreSQL database kan vertragend werken, zeker over een netwerk. Je kunt het tekenen echter een stuk sneller maken door er voor te zorgen dat er een PostGIS spatial index is aangemaakt voor elke laag uit de PostgreSQL database. PostGIS ondersteund het aanmaken van een zogenaamde GiST (Generalized Search Tree) index zodat de spatiale zoekopdrachten een stuk sneller uitgevoerd worden. (Informatie over GiST indexeren is overgenomen vanuit de PostGIS documentatie beschikbaar via http://postgis.refractions.net).

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 referentie systeem (lengte-/breedtegraden), wanneer deze de 180 lengtegraad lijn overschrijden. (http://postgis.refractions.net/documentation/manual-2.0/ST_Shift_Longitude.html). Wanneer ze zo’n kaart openen in QGIS, zullen we zien dat twee plaatsen die dicht bij elkaar liggen, ver uit elkaar getoond worden. In Figure_vector_4 ligt, het kleine puntje helemaal aan de linkerkant van het kaartbeeld (de Chatham Islands), in werkelijkheid aan de rechterkant van de hoofdeilanden van Nieuw Zeeland.

Figure Vector 4:

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

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

Dit probleem kan men oplossen door de lengtegraden te transformeren gebruik makende van PostGIS, en de ST_Shift_Longitude functie. De transform functie leest elke coördinaat van de geometrie van elk object en wanneer de lengtegraad < 0° telt deze er 360° bij op. Het resultaat zal een 0° - 360° versie 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 DB Manager plugin.

  • 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 TABLE set the_geom=ST_Shift_Longitude(the_geom);

  • Wanneer alles goed ging, zou je nu een bevestiging moeten ontvangen van het aantal objecten die bijgewerkt zijn. Daarna kan deze tabel geladen worden en zie je het verschil (Figure_vector_5)

SpatiaLite-kaartlagen

mActionAddSpatiaLiteLayer Wanneer u gegevens van een SpatiaLite database wilt laden, selecteer het pictogram mActionAddSpatiaLiteLayer SpatiaLite-laag toevoegen op de werkbalk of door de menu-optie mActionAddSpatiaLiteLayer SpatiaLite-laag toevoegen... te selecteren onder het hoofdmenu Kaartlagen of via de sneltoets Ctrl+Shift+L. Een menu zal openen waarin je 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 :file`.sqlite` heeft.

Wanneer u een vectorlaag wilt opslaan informaat 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 de CRS (Coördinaten Referentie Systeem). U kunt ook ‘SQLite’ als indeling selecteren en de volgende opdracht in het veld OGR data source creation option SPATIALITE=YES meegeven. OGR weet dan dat het een database voor SpatiaLite moet maken. Zie ook http://www.gdal.org/ogr/drv_sqlite.html.

QGIS ondersteunt ook het bewerken van Views die gewijzigd kunnen worden in SpatiaLite.

Het maken van een nieuwe SpatiaLite kaartlaag

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

Tip

SpatiaLite data management Plugins

Voor het beheren van SpatiaLite gegevens kun je een aantal Python plugins gebruiken: QSpatiaLite, SpatiaLite Manager of DB Manager (standaardplugin, aanbevolen). Deze kunnen gedownload en geïnstalleerd worden met de Plugin Installer.

MSSQL Spatial kaartlagen

mActionAddMssqlLayer QGIS biedt ook ondersteuning voor MS SQL 2008. De eerste keer wanneer je een MSSQL Spatial database wilt openen, begin met het selecteren van het icoontje mActionAddMssqlLayer MSSQL Spatial laag Toevoegen in de werkbalk, of selecteer de menuoptie mActionAddMssqlLayer MSSQL Spatial laag Toevoegen... van het menu Kaartlagen of gebruik de snelkoppeling Ctrl+Shift+M.

Oracle Spatial kaartlagen

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

mActionAddOracleLayer De eerste keer wanneer je een Oracle Spatial database wilt openen, moet er eerst een connectie met de database gemaakt worden die de spatiale gegevens bevat. Begin met het selecteren van het icoontje mActionAddOracleLayer Oracle Spatial laag Toevoegen in de werkbalk, of selecteer de menuoptie mActionAddOracleLayer Oracle Spatial laag Toevoegen... van het menu Kaartlagen of gebruik de snelkoppeling Ctrl+Shift+O. Druk in het menu dat verschijnt op de knop [Nieuw] om toegang te krijgen tot de connectie manager, 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. Kan gelijk zijn aan de Database.

  • Database SID of SERVICE_NAME van de Oracle instantie.

  • Host: Naam van de database host. De naam van de host moet dezelfde zijn als waarmee je deze kunt vinden via een telnet verbinding of hoe je 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 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 aanvinkvakjes worden geactiveerd:

  • checkbox Opslaan Gebruikersnaam Geef aan of de gebruikersnaam van de database-connectie moet worden opgeslagen.

  • checkbox Opslaan Gebruikersnaam Geef aan of de gebruikersnaam van de database-connectie 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 Kijk alleen in de gebruikerstabellen. Beperk de zoekopdracht tot alleen die spatiale 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 Oracle tabel. Deze bevat informatie als bijhouding van het aantal regels, het geometrie type en de extent van alle geometrieën in de tabel. Het bijhouden van deze metadata is tijdrovend wanneer de tabellen veel records bevatten. Door deze optie te activeren, wordt het verzamelen van de metadata als volgt sneller bepaald: Het aantal regels word bepaald vanuit all_tables.num_rows. De extent van elke tabel wordt altijd bepaald met de functie SDO_TUNE.EXTENTS_OF zelfs wanneer er een filter wordt gebruikt. Het bepalen van de geometrie type van de tabel, worden de eerste 100 regels van de tabel gelezen die geometrie bevatten.

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

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

Tip

QGIS Gebruikersinstellingen en beveiliging

Afhankelijk van je 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 je besturingssysteem:

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

  • win, De instellingen voor windows worden opgeslagen in de registry.

Het laden van Oracle Spatial-lagen

mActionAddOracleLayer Na het aanmaken van een verbinding met één of meerdere Oracle databases, kun je een kaartlaag laden vanuit de Oracle database. Uiteraard moet deze wel eerst kaartgegevens bevatten.

Doe de volgende stappen, om een spatiale tabel te laden vanuit Oracle Spatial:

  • Wanneer het venster Oracle Spatial Tabel(len) toevoegen nog niet open is, selecteer in de werkbalk de knop mActionAddOracleLayer Oracle Spatial laag Toevoegen.

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

  • Vink aan of ontvink het keuzevakje checkbox Ook tabellen zonder geometrie tonen

  • Optioneel kun je het keuzevakje checkbox Zoek opties aanvinken om een selectie te maken van objecten die geladen dienen te worden of gebruik de knop [Filter instellen] om het venster te openen waarmee je 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. Je kunt meerdere lagen selecteren door de Shift toets in te drukken tijdens het klikken. Zie Querybouwer voor meer informatie over het instellen van een filter hoe je een zoekopdracht kunt maken voor een gegevenslaag.

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

Tip

Oracle Spatial Kaartlagen

Normaal gesproken wordt een spatiale laag in ORACLE gedefinieerd in de tabel USER_SDO_METADATA.