QGIS en het KLIC

KLIC WIN en de nieuwe Klic Viewer voor QGIS

Gisteren 1 januari 2019 trad de nieuwe regeling RIBON (Regeling informatie-uitwisseling bovengrondse en ondergrondse netten en netwerken) in werking. Zie de staatscourant. Dit is ook het startschot KLIC WIN waarbij in een half jaar veel netwerkgegevens van netwerkbedrijven centraal worden geregistreerd bij het Kadaster zodat deze via KLIC en Inspire kunnen worden opgevraagd.

b4udig128

Vanaf vandaag woensdag 2 januari 2019, levert het Kadaster de KLIC gegevens in een nieuwe formaat! Nu bevat zo’n KLIC levering (die een andere structuur heeft) nog steeds de ligging van leidingen in raster-formaat, maar volgens planning zal de netinformatie vanaf 1 juli 2019 alleen in vectorformaat worden aangeleverd.

Zie ook de informatievideo over KLIC WIN naar aanleiding van  deze wijziging.

Op 2 januari 2019 om 10:00 uur werd ook de nieuwe KLIC-viewer versie 2.0.0 gereleased waarmee de nieuwe KLIC-berichten bekeken kunnen worden in QGIS! Er zal nog een upgrade van deze plugin plaatsvinden van QGIS 2.18 (huidige LTR-versie) naar QGIS 3.4 (nieuwe LTR-versie).

klicbericht_in_vectorQGIS met daarin geopend een KLIC resultaatbestand die je ook hier kunt downloaden. Deze bevat zowel vector- als raster-gegevens. Maar de raster-gegevens zijn hier uitgezet.

klicviewerDe interface is simpel, open een folder met een KLIC-bericht en deze wordt geladen in QGIS. Een lijst van bijlagen wordt gevuld en die kun je vanuit het menu openen.

vernieuwd-themas-menuHet tabblad Thema’s waarin je ineens een thema aan of uit kunt zetten. Nieuw zijn de Vector- en Raster-aanvink vakjes waarmee je bijvoorbeeld ineens alle netinfo in raster-formaat uit kunt zetten.

Maar wat is dat eigenlijk, ‘het KLIC’ en hoe begon het?

KLIC is met name een begrip in de graafwereld en de aannemerij. Voordat er mechanisch wordt gegraven moet er eerst een KLIC melding worden gedaan bij het Kadaster. Dezelfde dag krijgt de aannemer een E-mail met een download-linkje terug waarmee ze een zip-bestand kunnen ophalen met informatie over de ligging van leidingen op de plek waar ze binnenkort (of in de toekomst) willen gaan graven.

Het aanmaken van een graafmelding

daarnagraven

Plaatjes uit een oude KLIC-folder!

Er was een tijd dat er nog niet zoveel leidingen in de grond lagen. telefoon en elektra hing toen nog veelal tussen houten telefoonpalen. Water- en gasleidingen lagen er inmiddels wel en de water- en gasbedrijven wisten wel waar die leidingen lagen. Het waren deze bedrijven die in 1989 in verschillende regio’s een “Kabels en Leidingen Informatie Centrum” (KLIC) oprichten.

Je kon als graver gratis en geheel vrijwillig een aanvraag indienen bij het KLIC.
De aannemer gebruikte in die tijd de KLIC-atlas met daarin de zogenaamde KLIC vierkanten. Wanneer je ergens wilde gaan graven keek je in je KLIC-atlas. En dan stuurde je naar het KLIC een brief met daarin aangegeven in welk KLIC-kwadrant en KLIC vierkant je wilde gaan graven. Vervolgens stuurde het KLIC dan naar alle netbeheerders die actief waren in dat KLIC-vierkant een leveringsverzoek. Elke netbeheerder maakte dan eerst afdrukken en stuurde vervolgens afgedrukt kaartmateriaal met een begeleidende brief terug naar de aanvrager.

klicatlasEen oude KLIC atlas van KLIC Oost.

Later werd het KLIC landelijk ondergebracht bij het Kadaster.
Die stuurden toen een e-mail van de aannemer door naar netbeheerder en die stuurden nog steeds kaarten (eerst in papier en later ook digitaal) naar de aanvrager.

In 2008 trad de wet WION in werking die gravers verplicht stelden een KLIC-melding te doen. In 2010 werd met KLIC online de aanvraag en afhandeling volledig geautomatiseerd, zodat het resultaat sneller terug kon worden geleverd. Via een website geef je aan waar je gaat graven en een paar uur later kreeg je dan een email met een download-link.

Het resultaat kon je bekijken in de gratis KLIC-viewer van het Kadaster, maar de 1e KLIC viewer was niet best. Hier werden de transparante PNG raster plaatjes op elkaar gestapeld en daar kon je naar kijken. Je kon er niet in meten en kon in de viewer eigenlijk ook niet zien waar je eigenlijk was in de wereld. Later is die KLIC-viewer aanzienlijk verbeterd, maar voor mij was dat toen de aanleiding om de WION-viewer plugin te bouwen voor QGIS.

De eerste versie uit 2010 van de WION viewer plugin was simpel, selecteer de folder met daarin de PNG rasterbestanden van het Klic bericht en voeg aan een elk PNG-bestand een zogenaamde worldfile toe, waarmee de PNG-bestanden gegeorefereerd werden. Vervolgens kon zo’n PNG rasterbestand als laag worden ingeladen in QGIS. Later ontsloot ik ook de meegeleverde brieven en huisaansluitschetsen vanuit het menu en maakte deze werkend voor de Mac en Linux. Vervolgens voegde ik ook een menu met thema’s toe waarbij je per thema ineens alle kaartlagen uit- of aan kon zetten voor bijvoorbeeld water of datatransport. Klic als begrip heeft standgehouden en dus besloot ik al snel om de Wion Viewer te hernoemen naar Klic Viewer.

De laatste versie van de Klic Viewer heeft aardig wat inzet gevraagd. Met name het toekennen van stijlen en hoe moet je nu eigenlijk per thema gegevens zichtbaar of onzichtbaar zetten. Dit is zeker niet de laatste versie. Zo wordt de maatvoering en “eigen topografie” nog niet goed weergegeven in vector-formaat.

Ik wens jullie bij deze allemaal de beste wensen voor het nieuwe jaar en veel voorspoed met het gebruik van QGIS!!

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.

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

Kadastrale percelen genereren vanuit BRK

In deze blog beschrijf ik hoe je met QGIS “echte” vlakgerichte Kadastrale Percelen kunt genereren wanneer de BRK gegevens (de Kadastrale Kaart) alleen lijngerichte kadastrale grenzen en perceel punten blijkt te bevatten.

polygonized

Sinds 1 januari 2016 is ook de BRK (Basis Registratie Kadaster) beschikbaar via PDOK. Je kunt deze in GML formaat per provincie downloaden en direkt in QGIS openen.

Deze BRK dataset bevat gegevens over percelen. Elk perceel heeft een unieke ID en bij het kadaster ligt ook vast wie de eigenaar is en de historie. Hier heeft het Kadaster zijn bestaan en belangrijke rol in de samenleving aan te danken! De gegevens in de BRK zijn een momentopname van de perceelsgrenzen en bevat geen eigenaarsgegevens of historie.

Ik had zelf verwacht dat de BRK een polygoonbestand met perceelsgegevens zou bevatten. De ZIP-file bevat echter de bestanden Kadastralegrens.gml (lijnen), Perceel.gml (punten met perceelsgegevens), Annotatie.gml (punten) en Bebouwing.gml (lijnen). Hiervan zijn Annotatie.gml en Bebouwing.gml minder interessant (BAG en BGT bevatten immers al de omtrek van gebouwen en die labels kunnen we prima zelf binnen het vlak genereren) .

Het proces van het omzetten naar perceelvlakken met perceelgegevens bestaat globaal uit de volgende stappen:

1) inlezen van GML bestanden en opslaan als Shape bestanden
2) toevoegen van spatiale indexen aan Shape bestanden
3) omzetten van kadastrale grenzen naar kadastrale vlakken
4) toevoegen van de attributen van perceelpunten aan kadastrale vlakken

1) Download eerst de BRK van Flevoland (of andere provincie) van de downloadpagina:

https://www.pdok.nl/nl/producten/pdok-downloads/basis-registratie-kadaster/kadastrale-kaart

2) in dit voorbeeld pak ik de zip-file van Flevoland uit in de folder C:\data\brk\input\ en maak ik de folder C:\data\brk\output aan waarin ik de resultaatbestanden zal aanmaken.

3) Activeer de Processing Toolbox via het menu Processing >> Toolbox. Zet rechtsonderin QGIS de Render functie (Her)teken uit en zet de interface processing om van Simplified interface naar Advanced interface.
Render of and advanced interface

4) laad de gml-files Kadastralegrens.gml en Perceel.gml
inlezen_gml

5) Sla allebei de bijgeladen GML bestanden op in het shape-formaat, dit kan door deze in het paneel “Lagen” te selecteren en via het menu Kaartlagen >> Opslaan Als… op te slaan als shape-bestand. Dit kan ook via Processing. Zoek in de Processing Toolbox met het zoekveld naar het GDAL/OGR algoritme “Convert format” met convert. Je moet die van OGR hebben (voor omzetten van vectordata). Dubbelklik op het gevonden algoritme en de dialoog opent waarmee je kaartlagen kunt opslaan in verschillende bestandsformaten.

GDAL_convert

6) Zorg ervoor dat de aangemaakte shapebestanden zijn geopend in QGIS. Het toevoegen van een index, doe je via de Laag Eigenschappen. Dubbelklik op de geselecteerde kaartlaag KadastraleGrens en Druk op de knop [Ruimtelijke index aanmaken] (Create spatial index).
Create Spatial Index

7) Het aanmaken van perceelsvlakken uit perceelsgrenzen doen we vervolgens met de Processing Tool, Polygonize. Zoek in de Processing Toolbox met het zoekveld naar “Polygonize”. Dubbelklik op het gevonden algoritme en de  volgende dialoog opent. Wanneer je de optie Create geometry columns aanvinkt , dan worden de attribuutvelden oppervlakte en omtrek aangemaakt in de output layer KadastraleVlak.shp.
grens_naar_vlak

8) Tijdens de uitvoering verschijnt het logbestand van het omzetten van perceelsgrenzen naar vlakken, bij 40% staat deze erg lang stil en lijkt QGIS nergens op te reageren. (sterker nog het scherm van het processing algoritme kan tijdelijk zijn verdwenen). Dit is een proces wat echter veel tijd nodig heeft! Gewoon even geduld hebben, laat QGIS zijn werk doen.
log_polygonize

9) Gebruik het QGIS Processing Algoritme Join attribute by location, Voor het toevoegen van de attributen van Perceel.shp aan KadastraalVlak.shp om deze vervolgens op te slaan in KadastralePercelen.shp. Op de volgende dialoog door hierop te dubbelklikken en vul deze als volgt in. Dit algoritme is een stuk sneller en wanneer je hierna alleen de KadastralePercelen.shp laad en bekijkt, zie je Flevoland zoals getoond aan het begin van deze blog (wellicht in andere kleur). Vergeet ook niet de renderfunctie (Her)teken rechtsonderin de applicatie weer aan te zetten.
join_attributes_to_polygon

Wanneer je een kadastraal perceel selecteert en bekijkt heeft deze de volgende velden.
Eigenschappen Kadastraal Perceel

Door: Diethard Jansen (GIS-hulp)