Gebieden samenvoegen

Inleiding

De voorbeelden in de vorige artikelen waren steeds gebaseerd op de gemeentekaart van Nederland. In dit artikel wordt gedemonstreerd hoe met QGIS van deze kaart een provinciekaart kan worden gemaakt. Die nieuwe kaart wordt in volgende artikelen gebruikt om andere technieken te demonstreren.

Voor dit artikel is gebruik gemaakt van een eigen uitbreiding van de shapefile met gemeenten. Aan de originele shapefile van het CBS zijn verschillende gebiedsindelingen toegevoegd. Hoe je dat zelf zou kunnen doen is weer een verhaal op zich.

Nieuwe shapefile met samengevoegde gebieden

Het maken van een nieuwe shapefile met samengevoegde gebieden is in QGIS zeer eenvoudig. Start een nieuw project en voeg de shapefile met gemeenten toe als eerste laag en zorg dat deze in zijn geheel zichtbaar is (zie het artikel Vectorlaag toevoegen). Hier wordt verondersteld dat je daar zelf een extra kolom aan hebt toegevoegd met een provincienummer (volg daarbij de nummering die het CBS in zijn statistieken gebruikt).

De optie om gebieden samen te voegen is in het menu te vinden via ‘Vector / Geoprocessing tools / Dissolve’. Omdat het project nog maar één laag bevat, is waarschijnlijk de juiste inputlaag al geselecteerd. De optie ‘Use only selected feature’ gebruik je alleen als je maar een deel van de gemeenten in de samenvoeging wilt betrekken. Om een landsdekkende provinciekaart te krijgen moet deze optie uitgeschakeld blijven. Bij ‘Dissolve field’ moet de kolom met de provinciecode worden geselecteerd. Geef tenslotte naam en pad van de nieuwe shapefile op en klik op ‘OK’.

Het dialoogvenster Dissolve

 Na afloop van de samenvoeging wordt gevraagd of de nieuwe laag aan de TOC (‘table of content’) moet worden toegevoegd. Beantwoord deze vraag bevestigend en sluit het dialoogvenster. De nieuwe laag is nu toegevoegd, maar wordt pas zichtbaar nadat je deze hebt aangevinkt.

Overbodige kolommen verwijderen

Als de oorspronkelijke shapefile extra gegevens per gemeente bevatten, worden die helaas door de dissolve-functie niet geaggregeerd naar provincies. Als de gegevenstabel van de nieuwe laag wordt geopend, zijn wel allerlei data te zien, maar dat zijn data van willekeurige gemeenten, geen opgetelde gegevens per provincie. Het is aan te raden om alle overtollige kolommen te verwijderen, omdat die alleen maar tot verwarring leiden. Zorg wel dat in ieder geval de kolom met provinciecodes behouden blijft. Die kun je nodig hebben om nieuwe data aan de provinciekaart te koppelen.

Het verwijderen van kolommen is standaard voor de meeste bestandsformaten nog niet mogelijk in QGIS. Er is wel een plugin ‘Tabel managers’ waarmee dit eenvoudig kan. Via het Plugin-menu en ‘Fetch plugins …’ kun je deze plugin zelf installeren. Mogelijk moet je deze nog wel even activeren via ‘Manage plugins …’ in hetzelfde menu.

Twee lagen zichtbaar maken

De gemeentekaart is nu helemaal afgedekt. Om een nieuwe kaartlaag te controleren is het vaak handig als je beide lagen kunt zien. Dat is te realiseren door de laageigenschappen te openen (dubbelklikken) en op het tabblad ‘Style’ het uiterlijk van de kaart aan te passen. In het beginscherm zijn hiervoor maar beperkte opties aanwezig. Je kunt deze laag wel transparant maken, maar dat levert niets op, omdat beide lagen dezelfde kleur gebruiken voor hun gebiedsgrenzen. Klik daarom meteen op de knop ‘Change …’ met een steeksleutel als icoon die links onder de ‘preview’ van het huidige uiterlijk staat. Verwar deze knop niet met een andere knop in hetzelfde venster die een veel beperktere functie heeft. Stel de vulstijl in op ‘No Brush’, om te zorgen dat de gebieden niet worden gevuld en kies een kleur en dikte voor de grenzen die goed contrasteert met die van de onderste laag.

Het dialoogvenster Symbol properties

Na alles te bevestigen wordt het resultaat zichtbaar. Ben je niet tevreden, dan kun je de stappen hierboven herhalen. Verder is het wellicht wenselijk om kleuren van de onderliggende gemeentelaag aan te passen. Selecteer dan eerst die laag en ga opnieuw naar het tabblad ‘Style’ van de ‘Layer properties’.

Kaart met provincie- en gemeentegrenzen

Extra opties

Labels weergeven
Bij het controleren van de nieuwe kaart kan ook gebruik worden gemaakt van labels voor beide kaartlagen. Dat wordt hier niet in detail uitgelegd. Wel wil ik erop wijzen dat hiervoor twee opties zijn die een verschillend resultaat geven. Meestal is de optie ‘Labeling’ in het File-menu de beste keuze. Elke gebied krijgt nu maar één label, ook als het uit meerdere losse onderdelen bestaat. Labels toevoegen kan ook via het dialoogvenster ‘Layer properties’. Dan krijgen echter alle onderdelen van een gebied een label. Verder is het aan te raden om de weergave van labels schaalafhankelijk te maken en voor verschillende lagen verschillende lettergroottes en letterkleuren te gebruiken.

Kaart inkleuren
De nieuwe provinciekaart kan ook worden ingekleurd, zoals uitgelegd in een eerder artikel (Gebieden inkleuren), maar nu met een afzonderlijke kleur voor elke provincie). Als ook de gemeentegrenzen zichtbaar moeten blijven, moet de provincielaag transparant worden gemaakt.

Opslaan

Wil je de instellingen van deze kaart voor later bewaren, bewaar het project dan onder een nieuwe naam.

De kaart kan ook als afbeelding worden opgeslagen via het File-menu (‘Afbeelding opslaan …’). Dat kan in verschillende bestandsformaten. De keuze hiertussen is een afweging tussen ruimtebeslag en kwaliteit. Opslaan in bitmap-formaat (BMP) levert geen kwaliteitsverlies, maar kost veel ruimte. Opslaan in JPG-formaat bespaart veel ruimte, maar de compressie levert kwaliteitsverlies op (kleuren niet zuiver, punten en lijnen niet scherp). Een goede tussenoplossing is het PNG-formaat: er vindt wel compressie plaats, maar zonder kwaliteitsverlies.

20-7-2011

Proportionele symbolen

Inleiding

In het artikel Gebieden inkleuren werd de waarde van een attribuut met QGIS gepresenteerd door gebieden in te kleuren. Voor relatieve gegevens, zoals percentages of verhoudingsgetallen, is dat een goede optie. Voor absolute gegevens, zoals inwonertal, zijn symbolen die in grootte variëren geschikter. Beide kaartvormen kunnen overigens ook goed met elkaar worden gecombineerd.

Instellingen voor proportionele symbolen

Instellingen voor proportionele symbolen

Instellingen

Open de ‘Layer properties’ van de laag die de gegevens bevat die je wilt weergeven. In dit voorbeeld is dat de gemeentekaart van Nederland. Op het tabblad ‘Overlay’ staan alle benodigde opties (mocht dit tabblad ontbreken, dan moet eerst de plugin ‘Diagram overlay’ nog worden geactiveerd via ‘Manage plugins’ in het Plugin-menu). Die worden pas beschikbaar nadat linksboven ‘Display diagrams’ is aangekruist. Er kan gekozen tussen ‘pie charts’, ‘bar charts’ en ‘proportional SVG symbols’. Hier gaat het om de derde optie. Selecteer een symbool. Geef bij ‘Classification attribute’ aan welk attribuut je weer wilt geven. In dit geval AANT_INW. Er is op dit moment maar een classificatietype beschikbaar: linair schalen. Nu moet worden ingesteld hoe groot het grootste symbool moet worden. Daarvoor moet eerst de maximale waarde van AANT_INW worden berekend. Tenslotte moet de maximale omvang van het symbool worden opgegeven (bijv. in milimeters). Klik nu op ‘Apply’ of ‘OK’. Om de kaart te zien.

Kaart met symbolen, lineair geschaald het inwonertal

Kaart met symbolen, lineair geschaald het inwonertal

Niet fraai aan dit kaartbeeld is dat de randen van de cirkels dikker worden naarmate de weergegeven waarde hoger is.

Nadeel van lineair schalen

Het nadeel van lineaire schaling is dat er een extreem verschil ontstaat tussen de grootste en de kleinste gemeenten. De indruk die een cirkel maakt op de kaartlezer wordt sterker bepaald door de oppervlakte dan door de diameter van een cirkel. Bij lineaire schaling levert een tweemaal zo grote waarde een tweemaal zo grote diameter op, maar een viermaal zo groot oppervlak. Beter zou zijn om de symbolen te schalen op basis van de vierkantswortel van de attribuutwaarde. Een tweemaal zo hoge waarde levert dan een tweemaal zo groot oppervlak op.

Helaas is deze mogelijkheid niet standaard aanwezig. Met de ‘field calculator’ is dit met een omweg wel te realiseren. Dit kan het beste gedaan worden met een kopie van de oorspronkelijke shapefile, omdat het bestand door deze werkwijze wordt veranderd. Maak een extra kolom aan, bijv. AANT_INW2 en geef deze met de formule sgrt(AANT_INW) een waarde. Deze nieuwe kolom kan dan op het tabblad Overlay (Layer properties) als bron worden gebruikt voor het schalen van de symbolen.

Kaart met symbolen geschaald o.b.v. de vierkantswortel uit het inwonertal

Kaart met symbolen geschaald o.b.v. de vierkantswortel uit het inwonertal

Vreemd geplaatste symbolen

Waar binnen een gemeente het symbool precies komt te staan, wordt automatisch bepaald door de software. Die plaatsing is niet altijd even gelukkig. Dat hangt samen met de vorm van de gemeente (symmetrie) en of deze uit losse stukken bestaat (zoals bijv. Amsterdam). Soms staan symbolen teveel aan de rand van een gemeente of zelfs buiten de gemeente. Dit speelt niet alleen bij proportionele SVG-symbolen, maar ook bij staafdiagrammen en taartdiagrammen.

In shapefiles met polygonen worden geen middelpunten (‘centroids’) opgeslagen. Dit is op te lossen door een extra laag met middelpunten toe te voegen en daar de diagrammen op te baseren. Bij het maken van een shapefile met middelpunten zijn nogal wat andere technieken nodig. Hoe een laag kan worden gemaakt met middelpunten en hoe die middelpunten kunnen worden verschoven wordt beschreven in een apart artikel (Middelpunten verplaatsen). Hoe puntgegevens kunnen worden gevisualiseerd komt later aan bod.

20-7-2011

Lees verder:
Gebieden samenvoegen

Opmerking

Ik vond later een betere optie terug voor het maken van kaarten met proportionele symbolen. Die optie zit sinds versie 1.7 van QGIS verstopt onder de knop ‘Old symbology’ op het tabblad ‘Style’ van de ‘Layer properties’.

Top10Vector stijlen in QGIS

Regelink Ecologie en Landschap gebruikte QGIS al voor het maken van de kaartjes in hun rapporten. De benodigde data daarvoor kregen ze van het Kadaster, via een abbonnement.

Er werd (de nog oude) Top10Vector uitgeleverd, voor een demo van zulke data zie de Kadaster site. De uitlevering bestaat uit 5 ESRI-Shapebestanden:

  • top010vlakken_poly
  • top010huizen_poly
  • top010lijnen_line
  • top010symline_line
  • top010sympoint_point

Het Kadaster heeft voor verschillende desktop GIS-pakketten stijl-bestanden beschikbaar, maar voor QGIS (nog) niet.

Webmapper hebben met behulp van QGIS’ ‘new symbology’ en ‘style-rules’ een eenvoudige visualisatie gemaakt die lijkt op de klassieke Top10Vector kaarten. Voor deze eerste versie zijn vooral de vlakken en lijnen voorzien van een stijl (o.a. omdat vooral deze van belang zijn voor kleine projectkaartjes). Wanneer er behoefte aan is kunnen we de stijlen uitbreiden voor punten.

De huidige versie van de stijlbestanden (.qml-betanden ) kunt u hier voor eigen gebruik downloaden. Na het uitpakken vind u voor elk kadaster bestand een stijlbestand, verder zitten er in zip een mapje met enkel SVG-symbolen. Om QGIS hiervan gebruikt te kunnen laten maken dient u in Extra/Opties het pad naar het mapje met SVG-symbolen aan te geven (zie screendump hieronder).

Er staat een eenvoudige demo met de demodata van het Kadaster.

Gebieden inkleuren

In het artikel Vectorlaag toevoegen is getoond hoe een vectorlaag kan worden toegevoegd, op basis van een shapefile met de Nederlandse gemeenten. De gemeenten kunnen worden ingekleurd op basis van een attribuut, zoals de bevolkingsdichtheid. Klik  dubbel op de laag en ga naar het tabblad ‘Style’. Linksboven kun je zien dat de stijl nu op ‘Single symbol’ is ingesteld. Dat betekent in dit geval dat alle gemeenten dezelfde kleur hebben. Verander dit in ‘Graduated’ en er verschijnen nieuwe opties op het tabblad. Je kunt nu kiezen welk attribuut je wilt weergeven, met welke onderverdeling en welke kleuren.

Om te beginnen laat je QGIS automatisch een aantal zaken instellen. Gebruik daarbij de volgende instellingen:

Column: BEV_DICHTH
Classes: 5
Mode: equal interval
Color ramp: geel-rood

Je kunt zelf kleurovergangen definiëren door bij ‘Color ramp’ te kiezen voor ‘New color ramp …’. Het kan ook via het menu ‘Settings’ met ‘Style manager’.’

Als je nu op de knop ‘Classify’ klikt, zie je een onderverdeling met bijbehorende kleuren en labels verschijnen. Om te zien welke effect deze instelling op de kaart hebben, klik je op de knop ‘Apply’. Om de kaart goed te kunnen zien, moet je het venster ‘Layer properties’ wellicht iets opzij schuiven.

Automatische gegenereerde categorieën en kleuren

]

 

 

 

 

Een automatische indeling geeft zelden meteen het gewenste resultaat. Door dubbelklikken op kleur, indeling of label, kun je de kaart optimaliseren. Gebruik als klassegrenzen bijv. 200, 300, 500 en 1000.  Let op dat er geen gaten in de indeling zitten, want dan vallen er letterlijk gaten in de kaart. Omdat de laatste twee kleuren moeilijk van elkaar zijn te onderscheiden is het aan te raden de laatste kleur wat donkerder te maken.

Kaart van bevolkingsdichtheid per gemeente

Andere interessante attributen uit deze shapefile om dit kaarttype mee te oefenen:

  • percentage eenpersoonshuishoudens (P_EENP_HH);
  • percentage 0- tot 14-jarigen (P_00_14_JR);
  • percentage 65-plussers (P_65_EO_JR).

19-7-2011

Lees verder:
Proportionele symbolen

Vectorlaag toevoegen

Een shapefile openen

Op deze pagina wordt het gebruik van de kaart van Nederlandse gemeenten beschreven, zoals die door het CBS wordt aangeboden (zie Kaartbestanden). Pak dit ZIP-bestand uit in een aparte map. Je ziet dan een serie bestanden met de naam gem_2010_gn1. Samen vormen deze bestanden de ‘shapefile’ waarmee de gemeentekaart van Nederland kan worden getekend. Deze shapefile bevat ook diverse gegevens over de gemeenten (‘attributen’). Open in QGIS het bestand gem_2010_gn1.shp met ‘Layer / Add vector layer …’ (of de betreffende knop op een van de werkbalken bovenin het scherm). Zorg ervoor dat in het dialoogvenster het bestandstype op ‘ESRI shapefiles‘ staat ingesteld. Dat vergemakkelijkt de selectie van het juiste bestand. De tekenset (‘Encoding’) moet in dit geval worden ingesteld op ISO8859-1. Anders worden diacritische tekens, zoals letters met dakjes of accenten, niet goed weergegeven.

Na het openen van het bestand zie je links in het paneel ‘Layers’ dat er een laag is toegevoegd. Deze wordt echter nog niet in het kaartgebied weergegeven. Daarvoor moet je eerst het selectievakje aankruisen. Wordt de laag dan nog niet getekend, klik dan met de rechtermuisknop op de laag en selecteer ‘Zoom to layer extent‘.

Attributen bekijken

Om te zien welke gegevens de shapefile bevat over de Nederlandse gemeenten kun je met de rechtermuisknop op de laag klikken en vervolgens op ‘Open attribute table‘ (of via de knop op een van de werkbalken). Sluit de tabel weer voor de volgende actie.

19-7-2011

Lees verder:
Gebieden inkleuren

Pff.. opslaan als dbf: general input/output error

Ooit een Excel bestand ontvangen, om bijvoorbeeld een shape-bestand van te maken? En gedacht: even als dbf/Dbase4 opslaan in OpenOffice/LibreOffice, want dat wordt door alle OpenSource gis-applicaties wel gelezen…

Een tijdje terug had ik altijd onderstaande foutmelding als ik probeerde een dbf op te slaan in Debian or Ubuntu: “Error saving the document: General Error. General input/output error”

In eerste instantie dacht ik altijd dat het een oude Open/LibreOffice bug moest zijn. Die misschien niet meer zou worden gefixed omdat tenslotte ‘niemand’ meer dbf bestanden gebruikt…

Maar fout! De foutmelding onstaat gewoon doordat je NIET de libreoffice-base / openoffice-base package hebt geinstalleerd in Ubuntu!
Blijkbaar wordt deze niet standaard geinstalleerd waneer je libre/openoffice installeert. Maar even:

sudo apt-get install libreoffice-base

En je kunt WEL dbf’s opslaan!

zie ook https://bugs.launchpad.net/ubuntu/+source/openoffice.org/+bug/502462

Groet…

 

Kaartbestanden en hulpinformatie

Kaarten Nederland

CBS – Wijk- en buurtkaart 2011 (shapefiles van gemeenten, wijken en buurten):
http://www.cbs.nl/nl-NL/menu/themas/dossiers/nederland-regionaal/publicaties/geografische-data/archief/2012/2012-wijk-en-buurtkaart-2011-art.htm

CBS – Bevolkingskernen 2006:
http://www.cbs.nl/nl-NL/menu/themas/dossiers/nederland-regionaal/publicaties/geografische-data/archief/2010/2010-bevolkingskernen-in-nederland-2006.htm

De CBS-kaarten zijn generalisaties van uitgebreidere kaarten van het Kadaster. Ze maken gebruik van Rijksdriehoekcoördinaten (RD). Met QGIS kunnen kaarten zonodig naar andere coördinatenstelsels worden omgezet.

Er zijn andere kaartbestanden met Nederlandse gemeenten op internet te vinden (zie volgende rubriek). Die maken meestal gebruik van lengte- en breedtegraden (volgens het coördinatenstelsel WGS84, ook gebruikt door Google Maps en Google Earth). Vaak zijn deze kaarten minder nauwkeurig of geven ze een verouderde gemeente-indeling weer.

Topografische kaarten (raster, vector):
http://mirror.openstreetmap.nl/kadaster/
(Begin januari 2012 heeft het Kadaster gedetailleerde topografische kaarten van heel Nederland vrijgegeven. Het gaat hier om de topografische kaart 1 : 25.000 in rasterformaat (TOP25raster) en de topografische kaart 1 : 10.000 in vectorformaat (TOP10NL). Van de webserver van OpenStreetMap zijn de bestanden in resp. TIFF-TFW en GML-formaat te downloaden. Beide formaten zijn in QGIS in te lezen.)

Kaarten diverse landen

DIVA-GIS
http://www.diva-gis.org/gData
(Bestuurlijke indelingen, water, wegen, spoorwegen, hoogte, klimaat etc. van diverse landen)

Geofabrik
http://download.geofabrik.de/osm/europe/
(Kaarten afgeleid van OpenStreetMap dataset)

VDS Technologies:
http://www.vdstech.com/map_data.htm

kvdb.net / dcentralize
http://www.d-centralize.nl/projects/6pp/downloads/
(Postcodes)

Geonames
http://www.geonames.org/
(Plaatsnamen)

USA Census Bureau / TIGER
http://www2.census.gov/cgi-bin/shapefiles2009/national-files
(USA: staten, counties, plaatsen, statistische regio’s)

Hulpmiddelen

Uitleg rijksdriehoekscoördinaten:
http://nl.wikipedia.org/wiki/Rijksdriehoeksco%C3%B6rdinaten

Omzetting coördinaten tussen RD en WGS84:
http://et10.org/gc/rd.php

Toevoegen RD-coördinaten aan lijst adressen:
http://www.digischool.nl/ak/postcode/

Gemeentelijke indeling en regio-indelingen:
http://statline.cbs.nl/StatWeb/dome/default.aspx
(Nederland regionaal / Indelingen)

Vereenvoudiging shapefiles (Mapshaper):
http://mapshaper.com/test/demo.html

Catalogus van Nederlandse geo-informatie (Nationaal Georegister):
http://www.nationaalgeoregister.nl

Laatst gewijzigd, 4-3-2012

Rijksdriehoekstelsel (epsg:28992) verschuiving?

Nog steeds is de projectie informatie die wordt meegeleverd met veel Open Source GIS tools niet de juiste. Althans het is wel de juiste volgens de epsg-database op basis waarvan de proj-definities worden gemaakt, maar in de praktijk werkt een andere definitie beter.

Gebruik van de standaard proj-definities heeft bijvoorbeeld tot gevolg dat er een verschuiving optreedt bij het laden van een shape-bestand welke je over GoogleMaps wilt draperen. Dit komt door het ‘herprojecteren’ van je data van epsg:28992 naar epsg:900913 (of epsg:3857 zoals die nu officieel heet).

Martijn van Exel schreef er al een blog over

Snelle oplossing: als je nog steeds een van de volgende proj definities ziet in qgis bij ‘Amersfoort / RD new’ (je mist dus het stukje ‘+towgs84′) :


+proj=sterea +lat_0=52.15616055555555 +lon_0=5.38763888888889 +k=0.9999079 +x_0=155000 +y_0=463000 +ellps=bessel +units=m +no_defsa

of

+proj=sterea +lat_0=52.156161 +lon_0=5.387639 +k=0.999908 +x_0=155000 +y_0=463000 +ellps=bessel +units=m +no_defs

Maak dan een ‘custom’ projectie definitie aan met een van de definitie:

+proj=sterea +lat_0=52.15616055555555 +lon_0=5.38763888888889 +k=0.999908 +x_0=155000 +y_0=463000 +ellps=bessel +units=m +towgs84=565.2369,50.0087,465.658,-0.406857330322398,0.350732676542563,-1.8703473836068,4.0812 +no_defs no_defs

Voorbeeld van een qgis project, met daarin GoogleMaps en een OpenStreetMap met daarin NIET de juiste definitie:

28992verschuiving1

En nu een met daarin de juiste proj definitie gebruikt:

Opmerking: als je dit nog nooit gezien hebt, en toch de ‘verkeerde’ definitie gebruikt, dan komt dit waarschijnlijk omdat je nog nooit gebruik hebt gemaakt van de ‘on the fly projection’ van Qgis in combinatie met een andere projectie.