.

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, om verschillende redenen, zomaar werken in QGIS. Sommige indelingen vereisen bijvoorbeeld de aanwezigheid van externe commerciële functiebibliotheken, of de installatie van GDAL/OGR op uw besturingssysteem is niet gebouwd om de indeling die u wilt gebruiken te ondersteunen. Alleen die indelingen die goed zijn getest zullen verschijnen in de lijst van bestandstypen wanneer een vectorbestand in QGIS wordt geladen. 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.

ESRI Shapefiles

De standaard vector bestandsindeling die gebruikt wordt in QGIS is het 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 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.

Het laden van een shapefile

Voor het laden van een shapefile, start QGIS en klik op het pictogram mActionAddOgrLayer 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

Selecteer, uit de beschikbare opties, het keuzerondje radiobuttonon Bestand. Klik vervolgens op de knop [Bladeren]. Dit zal een standaardmenu 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 meegeven voor het te openen shapefile.

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 het 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, kunt u de kaartlaag bestuderen met de functies voor kaartnavigatie. Open, om de symbologie van een kaartlaag te wijzigen, het scherm Laag-eigenschappen door te dubbelklikken op de naam van de kaartlaag in de legenda, of door de laag te selecteren en met de rechter muisknop het snelmenu op te roepen 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.

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 het kaartvenster veel sneller getekend wordt, zodat u ook sneller kunt in- en uitzoomen of 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 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 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 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-laag

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

Het laden van ArcInfo Binary Coverage

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

Op dezelfde wijze kunt u ook map-gebaseerde vectorbestanden laden in de indeling UK National Transfer Format, als ook de ruwe indeling TIGER van het US Census Bureau.

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 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 tekstgescheiden bestand

Selecteer het pictogram delimited_text 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 nix

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

Importeren van OpenStreetMap is een standaard functionaliteit van QGIS.

  • 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 geometrie-laag aanmaken die u kunt toevoegen aan het project door te klikken op het pictogram op de werkbalk mActionAddSpatiaLiteLayer SpatiaLite-laag toevoegen of mActionAddSpatiaLiteLayer 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

mActionAddPostgisLayer 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 mActionAddPostgisLayer PostGIS-laag toevoegen, selecteer de optie mActionAddPostgisLayer 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.

  • Host: Naam van de host van de database. De naam van de host moet dezelfde zijn als waarmee u deze kunt vinden via een telnet-verbinding 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. 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 maken van een verbinding met één of meerdere PostgreSQL databases, kunt u een kaartlaag laden vanuit de database van PostgreSQL. Uiteraard moet deze wel eerst kaartgegevens bevatten. Zie 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 mActionAddPostgisLayer 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.

Enkele details over PostgreSQL-lagen

Dit deel 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 mislukt daarna het herstellen van de standaard laagstijlen, zoals die werden opgeslagen door QGIS. U dient de optie XML in te stellen op DOCUMENT en het herstellen zal wel werken.

Het importeren van gegevens in PostgreSQL

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

DB Manager

QGIS heeft standaard ook de plug-in icon_dbmanager DB Manager. Deze kan gebruikt worden om meerdere shapefiles en andere gegevensindelingen te laden en ondersteunt ook schema’s. 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 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 dedatabase. 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.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:

gsherman@madison:~/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
gsherman@madison:~/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 nix

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

mActionAddSpatiaLiteLayer Selecteer, als u gegevens uit een database van SpatiaLite wilt laden, het pictogram mActionAddSpatiaLiteLayer SpatiaLite-laag toevoegen op de werkbalk of door de menu-optie mActionAddSpatiaLiteLayer 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 ondersteunt ook het bewerken van Views die gewijzigd kunnen worden 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). Deze kunnen gedownload en geïnstalleerd worden met Plug-ins beheren en installeren.

MSSQL Spatial-lagen

mActionAddMssqlLayer QGIS biedt ook ondersteuning voor MS SQL 2008. De eerste keer wanneer u een database van MSSQL Spatial wilt openen, begin met te klikken op het pictogram mActionAddMssqlLayer MSSQL Spatial-laag toevoegen in de werkbalk, of selecteer de menuoptie mActionAddMssqlLayer 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

mActionAddOracleLayer 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 mActionAddOracleLayer Oracle Spatial-laag toevoegen in de werkbalk, of selecteer de menuoptie mActionAddOracleLayer 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 telnet-verbinding 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.

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

mActionAddOracleLayer Na het aanmaken van een verbinding met één of meerdere databases van Oracle, kunt u een laag laden vanuit de database van Oracle. Uiteraard moet die wel eerst kaartgegevens bevatten.

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

  • Selecteer, als het venster Oracle Spatial tabel(len) toevoegen nog niet open is, in de werkbalk de knop mActionAddOracleLayer 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.