Je eerste 3-D kaart in QGIS 3.0

Hoera, QGIS 3.0 ondersteunt het maken van 3-D kaartbeelden! Maar wat komt daar allemaal bij kijken? Wat zijn de “let-opjes”? Deze blog helpt je om in een paar minuten een eerste indrukwekkend 3-D kaartbeeld op het scherm te toveren. Bedenk wel dat de 3-D view nog wat buggy is in QGIS 3.0; word niet ontmoedigd door een crash zo nu en dan.

1. Zorg ervoor dat je Richard’s onvolprezen PDOK plugin hebt geïnstalleerd.
2. Maak een nieuw project aan in QGIS met CRS EPSG:28992.
3. Voeg via de PDOK plugin de “ahn2_5m” WCS laag toe aan je project. Je zou een zwart vlak moeten zien verschijnen. Vink de zichtbaarheid ervan uit.
4. Voeg via de PDOK plugin de “opentopo” kaart toe aan je project. OpenTopo heeft van zichzelf al hillshading, dus dat helpt voor het realisme van het eindresultaat.
5. Zoom de kaart in naar een gebied met wat reliëf, bijvoorbeeld de Grebbeberg, Veluwezoom of het Zuid-Limburgs landschap. Zoom in tot ten minste 1:10.000.
6. Open de eigenschappen van de ahn2_5m laag, ga naar transparantie, en voeg bij “extra waarde voor geendata” de waarde -3.4028234663852886e+38 in. Als je dit vergeet dan probeert QGIS op water (waar geen goede AHN2 waarden zijn) heel diep te gaan en daar loopt hij op vast.
7. Kies in het menu “beeld” voor “nieuwe 3D kaartweergave” en wacht geduldig totdat hij de initiële tegels heeft geladen.
8. Klik op het gereedschap menu-icoon, en stel de ahn2_5m in als de hoogtelaag. Stel een verticale schaal in van 2 of 3 (of meer als je wilt lachen).
8. Stel de grootte van je 3D-window met de muis naar smaak in. Zoom desgewenst nog iets meer in. Wacht weer totdat de tegels zijn geladen.
9. Houd de Shift toets ingedrukt terwijl je met de muisknop ingedrukt naar links-rechts beweegt (x,y roteren) en naar boven-beneden (z roteren).
10. Druk op printscreen of kies save as image uit het menu.

Zo kun je bijvoorbeeld de volgende kaartbeelden maken.

201803-3d-lemelerberg

Lemeler- en Archemerberg, Overijssel.

201803-3d-gulperberg

Zicht op de Gulperberg, Zuid-Limburg.

Dit is natuurlijk slechts het begin. Als je data hebt over hoogtes van gebouwen, dan is dat een volgende stap. Maar het maken van je eerste 3-D kaart kan dus echt in vijf minuten.

Zie ook een 3D animatiefilmpje van Valkenburg met de AHN2 en luchtfoto data van PDOK: https://www.youtube.com/watch?v=VxOlIFe9WHw

Andere tips? Deel ze vooral hier!

Jan-Willem van Aalst

Waarden in samengestelde velden gebruiken

Bij het inlezen van sommige databronnen voegt Qgis meerdere waarden samen in een veld. Dit komt vooral vaak voor bij het inlezen van een gml-bestand zoals een bestand uit de BGT of een bestemmingsplan (IMRO).

Zo’n veld met meerdere waarden ziet er dan uit zoals in de volgende voorbeelden:bgt_1(BGT)

imro_1(IMRO)

De opzet is heel duidelijk. Als er zoiets staat als

(2:10,50)

dan betekent dat dat er twee waarden zijn opgenomen, in dit geval “10” en “50”.

Deze opzet is best goed leesbaar, maar het valt nog niet  mee om bijvoorbeeld labels te maken op basis van zo’n veld, of de waarden uit te splitsen naar verschillende kolommen met behulp van de field calculator.

Gelukkig is het niet moeilijk om een zogenaamde custom functie aan Qgis toe te voegen waarmee het wel gemakkelijk gaat.

In dit voorbeeld gaan we aan de slag met het zetten van labels op de panden in de BGT. Voeg daarvoor de pand laag toe uit de BGT met behulp van de QGIS plugin, en ga daarna via de eigenschappen van de laag naar het tabblad “labels” en kies voor de Expression Builder als in onderstaand voorbeeld:

labels

Kies daarna voor de Function Editoropen_functio_editor

en maak een nieuw bestand aan.  Plak dan vervolgens het volgende script in het venster:

from qgis.core import *
from qgis.gui import *

@qgsfunction(args='auto', group='Custom')
def values_from_list(string, number, feature, parent):
	"""
	Takes the n-th value from a list in a field where 
        the list is written like: (3:value1, value2,value3). 
        Such lists are often a result of importing gml. <br />
	
	<h3>Syntax</h3>
	
	values_from_list(<i>string</i>, <i>number</i>)
	
	<h3>Arguments</h3><br/>
	
	<i>string</i> The string containing the list
                      in format like 
                      (3:value1, value2,value3) <br/>
	<i>number</i> The index number of the value 
                      in the list to return
	
	<h3>Examples</h3>
	
	<pre>values_from_list("text", 1)</pre>
	
	"""
	
	components = string.strip('()').split(':',1)
	values_list = components[1]
	try:
		return values_list.split(',')[number - 1]
	except:
		return None

Dit script kun je ivm het kritisch gebruik van spaties en tabs in Python beter overplakken vanuit GitHub). Het venster ziet er dan als het goed is ongeveer zo uit:
add_functionVergeet daarna niet op de knop “>Load” te drukken!

Daarna kun je via het tabblad “Expression” de functie gebruiken. Je vindt deze onder het item “Custom”. Zoals je ziet wordt er netjes een help getoond.create_expressionDe eerste parameter die je meegeeft aan de functie is het veld waaruit je een waarde wilt opvissen, de tweede parameter is de hoeveelste waarde je wilt hebben. Een “2” geeft je dan de tweede waarde opgenomen in het veld. Indien er geen tweede waarde is komt er niks terug (ook geen fout).

In dit voorbeeld gebruiken we het veld “tekst” waarin de huisnummers staan, en de eerste waarde in dat veld.

Nadat je op “OK” hebt geklikt zullen de labels verschijnen, waarbij het eerste nummer wordt gebruikt voor de labels.

bgt_labelled

Uiteraard kun je deze functie nu ook gebruiken in de Field Calculator om bijvoorbeeld de waarden uit te splitsen naar verschillende kolommen.

Overigens is het daadwerkelijke script gedeelte heel compact, de rest is documentatie. Als je een beetje Python kent is het echt heel gemakkelijk om zo’n soort functie te schrijven.

Diagrammen met objecten per locatie

Stel je hebt een lijst met verschillende objecten die je als volgt op een kaart wil tonen:

screenshot-from-2018-02-16-11-16-07

Diagrammen in QGIS verwachten dat voor elke staaf of punt een kolom bestaat, maar onze objecten zitten allemaal onder elkaar in een kolom:

screenshot-from-2018-02-16-11-28-45

En de geometrie is opgeslagen in een goeie ouwe shapefile:

Shapfile 'cities.shp'
Shapfile ‘cities.shp’

We kunnen dus het veld ‘code’ gebruiken om de tabellen te koppelen en te groeperen tot een rij per locatie.

Omdat QGIS vector-koppelingen geen 1:n relaties aankunnen, gaan we hiervoor een virtuele kaartlaag gebruiken. Hierin kun je alle sql gebruiken die door sqlite wordt ondersteund, inclusief JOIN en GROUP BY.

Dus we maken een nieuwe virtuele kaartlaag ‘cities_grouped’ met deze sql query:

SELECT
  c.name,
  c.code,
  group_concat(amenity) AS amenities,
  CASE WHEN INSTR(group_concat(amenity),'university') > 0 THEN 1 ELSE 0 END AS university,
  CASE WHEN INSTR(group_concat(amenity),'airport') > 0 THEN 1 ELSE 0 END AS airport,
  CASE WHEN INSTR(group_concat(amenity),'station') > 0 THEN 1 ELSE 0 END AS station,
  CASE WHEN INSTR(group_concat(amenity),'harbor') > 0 THEN 1 ELSE 0 END AS harbor,
  count(*) AS cnt,
  c.geometry
FROM amenities a
LEFT JOIN cities c ON a.code = c.code
GROUP BY c.code, c.geometry

De attributentabel van deze laag ziet er dan zo uit:

Virtual attribute table 'cities_grouped'
Virtual attribute table ‘cities_grouped’

Nu kunnen we diagrammen gebruiken als symbologie voor deze nieuwe kaartlaag, waarbij we de nieuwe kolommen university, airport, station en harbor invoegen. Ik heb de count kolom (‘cnt’) gebruikt voor het instellen van de grafiekgrootte en label-afstand.

Ik hoop dat je hier wat aan hebt, en als je een makkelijkere manier weet om dit te doen hoor ik het graag!

Programma gebruikersmiddag compleet!

Okee, niet heel snel (volgende week woensdag is het al zover), maar het programma voor de gebruikersmiddag staat nu helemaal!

QGIS gebruikersdag

Mocht je hem nog niet gezien hebben: Woensdag 31 januari met inloop vanaf 12:00, IHE Delft (tegenover NS-station Delft), de allereeerste Gebruikersmiddag QGIS in Nederland. Inschrijven kan nog via Eventbrite.

Het programma zelf zit er als volgt uit:

  • 12:00 Inloop met broodjes
  • 13:00 Plenair programma (Engels, vanwege aanwezigheid internationale studenten)
    • IHE Rector Prof. Eddy Moors verzorgt de formele aftrap
    • Hans van der Kwast: Wat doet een instituut als IHE met QGIS?
    • Raymond Nijssen: Wat is er nieuw in QGIS3?
  • 14:15 Twee paralleltracks (een Engelstalig, een Nederlandstalig), een doctor’s office voor al je QGIS-problemen, en ruimte om met elkaar QGIS-zaken aan te pakken (neem je laptop mee!)
NL-spoor EN-track
14:15 Marco Duiker – praktische oplossingen voor BAG en BGT problemen in QGIS

https://geo-academie.nl/marco/

http://www.qgis.nl/author/marcoduiker/

Claudia Ruz Vargas – QGIS plugins for groundwater monitoring and modelling

https://www.un-igrac.org/staff/claudia-ruz-vargas

14:35 Jan-Willem van Aalst – Gebruik van QGIS bij het maken van OpenTopo en de Gemeentenatlas.nl

http://www.qgis.nl/author/janwillemvanaalst/
@janwillemvaalst

Leya Zgheib – Using QGIS for analysis in the Kafue Flats, Zambia

MSc Student IHE Delft, Environmental Sciences

14:55 Joost Deen – Gebruik en naar de hand zetten van QGIS bij de brandweer (Veiligheidsregio Noord-Holland Noord)
@OosJoost
Jonas van Schrojenstein – QGIS as a gui for hydrographical modelling
https://www.linkedin.com/in/jonas-van-schrojenstein-lantman-4584002/
15:15 pauze break
15:45 Nico de Graaff – QGIS in het applicatielandschap van Datalab Amsterdam
@njdegraaff
Niel de Jong – Preparing data for an effective humanitarian response in Malawi
@Niel_Aquanaut
https://www.linkedin.com/in/niel-de-jong-6063687b/
16:05 Marco van Antwerpen en Erik Leemrijze – De Zeeuwse aanpak: de QGIS samenwerking van provincie en gemeenten Pratik Tiwari – River hydro-potential and selection of possible hydropower sites using open source software and open data.

Student IHE Delft, Water Science and Engineering

16:25 Hoe verder? Een afsluitend gesprek met de zaal over de QGIS gebruikersmiddag en hoe we een mogelijk gezamenlijke toekomst willen organiseren. Martijn Meijers – Auto-refreshing the QGIS map pane for visual debugging algorithms

https://www.linkedin.com/in/bmmeijers/

http://www.gdmc.nl/martijn/

  • 16:45 Borrel
  • 18:00 Voor wie wil: afsluitend eten in het Post(GIS)kantoor, Hippolytusbuurt 14, Delft (inventarisatie volgt).

Kortom, wij hebben er zin in, en we gaan er een mooie middag van maken! Tot volgende week, ook namens Hans van der Kwast,

Erik Meerburg.

QGIS gebruikersmiddagnieuws

De laatste voorbereidingen voor de allereerste QGIS gebruikersmiddag op 31 januari lopen. Tenminste, als we het in onze onderlinge gesprekken hebben over de naamkaartjes voor bezoekers en cadeautjes voor sprekers, dan kan je wel stellen dat het de laatste voorbereidingen zijn.

QGIS gebruikersdagIk leg er nog maar een keer de nadruk op: het is een evenement voor en door QGIS gebruikers. Er is ruim de tijd om met elkaar in gesprek te gaan, er is ruimte waar je met elkaar je laptop kan openklappen en problemen of juist leuke dingen met elkaar kan delen, een beetje showen waar je mee bezig bent, kijken wat anderen doen, en Richard Duivenvoorde is aanwezig als dokter om te helpen écht lastige dingen op te lossen.

Ik krijg verschillende vragen over het programma. Ja, dat is er natuurlijk ook! Er is een lezingenprogramma dat nu op een haar na helemaal rond is. Als we echt alles bevestigd hebben komt het netjes op de Eventbrite pagina (en hier). Dat zal vermoedelijk dit weekend zijn, Hans en ik hebben de laatste bevestigingsmails gisteren uitgestuurd.

Tip van de sluier: Joost Deen vertelt over het gebruik van QGIS bij veiligheidsregio’s, Jan-Willem van Aalst over de manier waarop hij de kaarten van OpenTopo en de Gemeentenatlas maakt met QGIS. Jazeker, die worden met QGIS gemaakt! En in het Engelstalig programma (ja, dat is er ook, zodat ook de internationale studenten van het IHE hun ervaringen met QGIS kunnen delen) vertelt Niel de Jong hoe het Rode Kruis QGIS gebruikt om een effectieve inzet mogelijk te maken bij rampen in bijvoorbeeld Malawi, en Claudia Ruz Vargas geeft aan welke plugins het mogelijk maken grondwater te monitoren en te modelleren. En dat is nog niet de helft van het programma!

Kortom, druk middagje. Vol met je eigen favoriete GIS pakket. En had ik al gezegd dat Raymond Nijssen met nieuws komt over QGIS 3? Ja, dat ook nog. Heb je je nog niet aangemeld? Dat kan nog hoor! https://www.eventbrite.nl/e/tickets-qgis-gebruikersdag-39826426915

PDOK services plugin: nieuwe services EN PDOK Locatieserver!

Een korte post om te laten weten dat er nieuwe versies beschikbaar zijn van de ‘PDOK services plugin’.

De Bodemkaart 1:50000 als WMS en WFS
De Bodemkaart 1:50000 als WMS en WFS

Voor QGIS3 is er de versie 3.1.0, en voor QGIS 2.x is er 0.16.

De belangrijkste verandering is nodig omdat de PDOK Geocoderservice (die nu wordt gebruikt) aan het eind van dit jaar verdwijnt.
Daarvoor in de plaats komt de PDOK Locatieserver (https://www.pdok.nl/nl/producten/pdok-locatieserver)
en die wordt nu in de plug als service aangeroepen.

Op dit moment alleen de zogenaamde ‘free’ service, maar in een volgende versie OF plugin zal de ‘suggest’ service
worden gebruikt in combinatie met de QgsLocator interface van QGIS.

Zoeken op Apollolaan in Amsterdam
Zoeken op Apollolaan in Amsterdam

Nieuwe services

Daarnaast zijn er een aantal nieuwe lagen bijgekomen: we springen van 7570 naar 8645 lagen!

De belangrijkste op een rijtje:

# Administratieve Eenheden (INSPIRE geharmoniseerd)
# BAG Terugmeldingen
# CBS Wijken en Buurten 2017
# Geluidskaarten Schiphol
# Geluidskaarten spoorwegen
# Geografische Namen (INSPIRE geharmoniseerd)
# Geomorfologischekaart 1:50.000 (zie screenshot: de Bodemkaart van Nederland)
# Transport Netwerken – Kabelbanen (INSPIRE geharmoniseerd)
# Vervoersnetwerken – Waterwegen (INSPIRE geharmoniseerd)

TopRaster lagen

Een set van al langer bestaande WMS lagen is de TopRaster kaartlagen: top25/50/100/250/500/1000raster. Nadeel van de inrichting is echter dat ze schaalafhankelijk zijn, MAAR daarbij in de schalen dat ze NIET zichtbaar zijn een wit vlak teruggeven. Daardoor is zo’n kaartlaag niet bruikbaar als tussenlaag in een project.

Om nu te zorgen dat de set van Raster services te gebruiken zijn, kun je ze natuurlijk stapelen, en QGIS zelf die kaartlagen uit laten schakelen wanneer ze niet in ‘zichtbereik’ zijn. Dat heb ik gedaan, je ziet dan zoiets:

Naarden in de 1:25000 Raster kaart
Naarden in de 1:25000 Raster kaart

Het is even wat gepiel, maar dan heb je een projectje wat je eventueel kunt gebruiken als basis project. Ik heb de project file even gezipped, en die is hier: PDOK TopRaster project te downloaden. Wel even unzippen voordat je het project kunt openen.

Plezier weer met QGIS en de plugin(s).

3D data visualiseren met expressies

Laatst kreeg ik de vraag om de blootstelling aan geluidsoverlast in beeld te brengen voor een aantal woningen. Op zich niet moeilijk, ware het niet dat het hier ging om gebouwen met meerdere woonlagen. De woningen (puntlocaties) lagen pal bovenop elkaar.

selection_005De tabel maakt veel duidelijk. Naast een X en Y coördinaat zit er ook een Z-waarde in: dat is de hoogte. De kolom DB geeft het geluidsniveau aan per woning. Je krijgt op één plek (XY) dus meerdere DB waarden, met elk een eigen hoogte.

selection_004

Tsja, hoe geef je dat nou mooi weer? Mijn eerste idee was: een staafdiagram voor elke XY locatie. En dan met de kleur (geclassificeerde DB waarde) voor alle woningen netjes boven mekaar in de grafiek. Dat valt echter tegen: in QGIS kun je naast taartdiagrammen (pie chart) en tekstdiagrammen alleen histogrammen maken. En dat wou ik nou net niet.

Punt verplaatsing (Point Displacement) dan?

selection_006Je krijgt dan een hele zwik opties om ervoor te zorgen dat je alle punten netjes ziet. Alleen …. ik kon geen invloed krijgen op waar welk punt precies terecht kwam: je wil natuurlijk wel degene met de hoogste Z-waarde boven de op één na hoogste Z-waarde, enz enz. Werkte dus ook niet.

Toen bedacht ik me nog iets. Je kan namelijk ook marker symbolen verschuiven. Als je bij Style de Symbol selector kiest kun je naast grootte, hoek e.d. ook een Offset X,Y kiezen.

symbol-selector_007Nou levert het verplaatsen van alle symbolen met een vaste X en Y Offset uiteraard niet direct het gewenste resultaat op. Wat echter wel heel veel mogelijkheden biedt is de expressie knop (epsilon teken) rechts van de X en Y waarden. Hier kun je namelijk de Offset afhankelijk maken van de waarden in de tabel. Dat biedt mogelijkheden, ik heb immers een kolom met Z-waarden …

Nou is het wel even puzzelen hoe zo’n expressie eruit moet zien. Na wat prutsen kwam ik er achter dat de expressie ‘0, 100′ wel wat deed: elk punt werd 0 mm opzij (X) en 100 mm naar beneden (Y) verplaatst. Moet ie 100 mm naar boven, dan heb je dus een negatieve Y nodig. En de hele expressie moet tussen enkele quootjes: het is feitelijk een letterlijke tekst.

selection_008Maar we zijn er nog niet. Ik wou wat met die Z-waarde. Nou kun je in zo’n expressie ook Fields and Values gebruiken, en dus kun je nu wat knutselen met die Z-waarde. Na weer wat trial & error was ik er uit:

‘0, ‘|| to_string(-1 * “z”)

Het eerste deel is makkelijk: omdat ik geen verschuiving in de X richting wil wordt dat gewoon ‘0, ‘. In dat laatste stuk pak ik de waarde in de kolom “z”. Die vermenigvuldig ik met -1 (negatieve Z -> de symbolen worden naar boven verplaatst). Het resultaat daarvan is echter een getal, dus voor de functie moet je er vervolgens met to_string nog tekst van maken. En met || voeg je dat dan weer samen met die 0 voor de X richting.

Van het resultaat werd ik toch wel blij:

qgis-2-14-11-essen-verschovenpuntenmetexpressies_010Het werkt dus! Ik zie de symbolen nu netjes boven elkaar, afhankelijk van de Z-waarde, terwijl de kleur de DB waarde weergeeft. Nou ja, nétjes? Er zitten wat gaten in, maar dat komt doordat er wat gegevens missen. De functie doet alles goed. Ter illustratie: de rondjes zijn de oorspronkelijke punten.

De mogelijkheden van de expressies zijn werkelijk fantastisch, ik ben daarna helemaal los gegaan. Bijvoorbeeld: bij torenflats van meer dan 10 verdiepingen de eerste 10 boven elkaar, en dan 11 t/m 20 in een nieuwe rij daarnaast? Kan! En ook bij tekstlabels kun je dit soort expressies gebruiken: de labels precies in de blokjes krijgen is grotendeels een kwestie van copy / paste van dezelfde expressie.

Veel succes met knutselen!

De QGIS BGT plugin

Jan-Willem van Aalst schreef een mooi stukje over het gebruik van de BGT in QGIS met als voorbeeld weer een van zijn bekende prachtige kaarten. Hiervoor is het wel nodig om de complete BGT in Postgis te laden. Dat is misschien een beetje overkill als je geïnteresseerd bent in pakweg 1 gemeente.

Zou QGIS ook op een makkelijker manier overweg kunnen met de BGT? Laten we als proef eens van de BGT download site (https://www.pdok.nl/nl/producten/pdok-downloads/download-basisregistratie-grootschalige-topografie) een deel van de BGT downloaden (hier de gemeente Bodegraven-Reeuwijk):

selection_268

Als resultaat krijg je een zipfile met flink wat gml-bestanden. Deze kun je vanuit de verkenner zo in QGIS slepen en het resultaat is (na soms flink wachten) een stuk of 30 kaartlagen en een niet zo mooi opgemaakt kaartbeeld:

selection_272

Een kenner ziet direct dat er iets mis is gegaan. De BGT is vlakdekkend, en de getoonde kaart niet!

Om te begrijpen waar dit probleem vandaan komt is het nodig iets meer te weten van gml. De Nederlandse overheid heeft ervoor gekozen om de open standaard gml te gebruiken voor het uitwissel van geo-informatie. Gml is daarbij inderdaad een standaard en geen bestandsformaat! De standaard is zeer rijk en staat een hele mooie objectgerichte modellering toe waarbij objecten zowel een punt-, een lijn- als een vlakgeometrie hebben. Maar zulke objecten zijn natuurlijk wel moeilijk te gebruiken in de meeste GIS-programma’s die net zoals QGIS graag punten, lijnen en vlakken in aparte kaartlagen zetten.

Als voorbeeld zien we hier de panden (bgt_pand.gml) die zowel een puntlocatie als een vlak aan zich hebben:selection_270

Indien we dan in de gml gaan kijken (dat kan, het is een gewoon tekstbestand), dan zien we dat zo’n pand een imgeo:geometrie2dGrondvlak attribuut heeft, en een imgeo:nummeraanduidingreeks.

In het bgt_vegetatieobject.gml zien we zelfs punten, lijnen en vlakken:

selection_269

Er zijn hier meerdere objecten zichtbaar, twee punten boven op elkaar (de sterren), een lijn (rood gestippeld) en een vlak (groen).

Het gebruik van de identify tool leert dat het vlak, de lijn en een van de punten een “haag” betreft. Het andere punt betreft een boom.

Bij het inlezen van dit soort bestanden waarbij bij sommige objecten wel, en bij andere objecten niet meerdere typen geometrieen zijn opgenomen wordt het voor de onderliggend software die het bestand in moet lezen moeilijk te bepalen wat ingelezen moet worden. Zo krijg je al gauw de nummeraanduidingreeks van de panden terwijl je QGIS vraagt de vlakken in te lezen.

Gelukkig is de software niet al te moeilijk ervan te overtuigen om de juiste dingen in te lezen. Bij FOSS4GNL (28 juni 2017) werd door mij al een plugin aangekondigd die dat zou regelen. De BGT import plugin staat inmiddels bij de QGIS plugins en regelt het inlezen door een klein bestandje aan te maken waarin precies staat waar de geometrie elementen in het gml bestand zitten. QGIS gebruikt dat vervolgens om het gml bestand goed in te lezen.

selection_271

Indien je een BGT bestand importeert met de plugin, dan maakt de plugin een kopie (of een symlink als dat kan) van het gml bestand, met de toevoeging _P, _V, _L in de bestandsnaam voor punten, lijnen en vlakken respectievelijk. Vervolgens wordt naast elk _X.gml bestand een _X.gfs bestand geplaatst op basis waarvan QGIS op de juiste manier de punten, lijnen of vlakken kan inlezen. Je hebt de plugin daarna dus niet meer nodig om zo’n _X.gml bestand goed in te lezen!

Als voorbeeld de bgt_pand.gml direct ingelezen met QGIS (er zijn alleen punten ingelezen):

selection_275

En met gebruik van de plugin (zowel de punten als de vlakken zijn ingelezen):

selection_276

Overigens is het voor de snelheid belangrijk om alleen die geometrie typen aan te vinken die daadwerkelijk in het gml bestand zitten. Anders moet de plugin de hele gml uitpluizen op zoek naar een geometrie type dat er niet is. Dat kan lang duren!

Met behulp van de plugin is het gebruik van de BGT gml bestanden niet zo moeilijk meer en hoef je niet over te gaan tot het gebruik van Postgis en/ of NL-extract.

Wel is het jammer dat je niet zomaar de prachtige visualisatie van Jan-Willem van Aalst kunt gebruiken. Nu maar hopen dat iemand een mooie visualisatie maakt (en deelt!)voor de bestanden die je rechtstreeks met de BGT import plugin inleest.

Zelf met de BGT in QGIS werken

De Basisregistratie Grootschalige Topografie (BGT) begint al aardig gevuld te raken. Deze open overheidsdata wordt 2x per maand aangeboden door NLExtract in PostGIS formaat. Zie: http://data.nlextract.nl/bgt/postgis/ . Het PostGIS backup bestand is inmiddels gegroeid naar zo’n 12 Gigabyte.

Je kunt dit bestand in QGIS gebruiken als je zelf PostgreSQL met de PostGIS extensie hebt geïnstalleerd. Zie hiervoor https://www.postgresql.org/ . Kies bij de installatie een handig wachtwoord voor de gebruiker ‘postgres’. Vergeet niet na installatie Stackbuilder te activeren om de Postgis extensie beschikbaar te krijgen. In de PgAdmin tool maak je dan een nieuwe database aan genaamd ‘bgt’. Daarin maak je een nieuw schema ‘latest’. Denk ook hierbij weer aan het toevoegen van de Postgis extensie. Vervolgens kun je op de database titel kiezen voor “restore” en kies je de NLExtract BGT dump. Na 30-40 minuten stampen heb je de gehele BGT tot je beschikking in QGIS. Maar ja, hoe visualiseer je die?

In de OpenTopo kaarten (www.opentopo.nl) zie je hoe ik de BGT visualiseer op het schaalniveau van 3200 pix/km. Deze visualisatie (althans, de BGT elementen daarin, ik gebruik ook OSM en Top10NL) kun je nu zelf ook gebruiken, via een speciaal door mij samengesteld QGIS BGT projectbestand.

Download daarvoor deze zipfile op imergis.nl. Je vindt daarin een QGIS projectbestand en twee SVG plaatjes. Plaats de plaatjes in een mapje “SVG” dat een submap is van waar je projectbestanden staan. Open het QGIS projectbestand in een tekst editor zoals Notepad++ en doe een “Find & Replace” op het wachtwoord, dat nu nog bestaat uit sterretjes. Bestand bewaren en in QGIS openen. Je zou zoiets als het volgende moeten zien:

zelfbgt1

Hierbij zit dus geen schaduwreliëf en geen labels, want die haal ik uit andere bronnen. Je hebt echter wel de volledige BGT van Nederland onder handbereik. Let op, deze visualisatie is bedoeld voor een schaal van 3200 pix/km op 96 dpi, dus in QGIS ongeveer 1:1180. Je kunt in- en uitzoomen wat je wilt, maar dat geeft misschien niet altijd het gewenste beeld. Je hebt in elk geval wel een basis om mee te werken.

Veel plezier ermee. Vragen? Stuur me een e-mail.

– Jan-Willem van Aalst

Georefereren van een medaille

Gisteren liep ik de halve marathon van Zwolle met mijn petje op met het vorige QGIS logo. Mijn tijd was zo niet bijzonder (2:08:47) maar de medaille die ik daarmee verdiende wel. Het bevat een plattegrond van de stad Zwolle.

original medal of Zwolle half marathon 2017
De originele medaille van de halve marathon van Zwolle.

Er staan wat gebouwen op afgebeeld maar welke?

Ik besloot de medaille met behulp van QGIS te georefereren en een kaart toe te voegen.

  1. Ik legde eerste de medaille onder de scanner en maakte hiervan een PNG afbeelding.
  2. Vervolgens georefereerde ik de kaart met de Georeferencer plugin in QGIS die standaard wordt meegeleverd en die geactiveerd moet worden via de Plugin manager. Onder het menu Raster kun je dan deze georeferencer tool starten.
  3. Daarna voegde ik via de PDOK plugin de laag lufolabels toe.

Het resultaat ziet u hieronder.

medal-half-marathon-zwolle-on-map

De gebouwen zijn: De Broerenkerk, de Peperbus, de Grote St. Michaelskerk, museum de Fundatie en de oude stadspoort Sassenpoort.

met vriendelijke groet,

Diethard Jansen