Eenvoudige PDOK services plugin voor QGIS

Om de PDOK-services te kunnen bekijken is er een eenvoudige plugin beschikbaar via de standaard plugin-repositories in QGIS. Laad de plugin door via het menu the kiezen voor ‘Plugins/Python plugins ophalen’ en dan te zoeken met de term ‘pdok’.
Met de plugin krijgt u een nieuw scherm met een lijst met de beschikbare services die PDOK aanbiedt. Met een klik op een regel laadt u die service in QGIS. Het is ook mogelijk om in de lijst te zoeken door het filter te gebruiken.


Recent werd er gevraagd of het niet mogelijk was om een projectbestand beschikbaar te stellen, waarin alle huidige services die PDOK beschikbaar stelt geladen kunnen worden door dit ene projectbestand te openen. Op basis van een lijstje met de URL‘s is zoiets natuurlijk vrij eenvoudig, maar wel even werk. Het zou natuurlijk handiger zijn als er een webservice was (bijvoorbeeld het NGR, Nationaal GeoRegister) die je zou kunnen bevragen met ‘doe mij alle PDOK services’. Helaas werkt dat op dit moment nog niet. Hierover later meer.
Maar gelukkig is er binnen de PDOK-previewapplicatie een mogelijkheid om de beschikbare lagen op te vragen in de vorm van een JSON-bestand. Omdat die preview-applicatie nog niet voor iedereen zichtbaar is hebben we het JSON-bestand IN de plugin opgenomen. Het ziet er ongeveer zo uit:

{"services":[
{"naam":"WMS AHN 25m","url":"http://geodata.nationaalgeoregister.nl/ahn25m/ows","layers":["bladindex","puntdichtheidgebieden","stadspolygonen","vlieglijnen","ahn25m"],"type":"wms"},
{"naam":"WMS Beschermde natuurmonumenten","url":"http://geodata.nationaalgeoregister.nl/beschermdenatuurmonumenten/ows","layers":["beschermdenatuurmonumenten"],"type":"wms"},
...knip

Op basis van deze lijst is een dialoogje gemaakt met aanklikbare rijen om zo’n service te laden:

Door in het filter een servicetype (bijvoorbeeld ‘WMS‘) of deel van de servicenaam (bijvoorbeeld AHN) in te tikken worden alleen de services met dat zoekwoord getoond (zie bovenste afbeelding).
PDOK stelt de volgende servicetypen beschikbaar: WMS, WMTS, WFS, TMS en Gazetteer. De huidige, stabiele QGIS versie 1.8 kan alleen een WMS en WFS service laden. De plugin zal melding geven als het een service NIET kan laden. De ontwikkelversie van QGIS kan bovendien WMTS services laden. Klik hier om uit te vinden hoe je de ontwikkelversie van QGIS op windows kan installeren..
Het mooie van een WFS service is natuurlijk, dat je zo’n laag — eenmaal geladen in QGIS — kunt opslaan als ESRI Shapebestand. Dus altijd al een ESRI Shapebestnad willen hebben van alle nationale parken in Nederland? Laad de WFS laag ‘Nationale Parken’ van PDOK, rechtermuisknop op de laag in de legenda en ‘Opslaan Als…’ kiezen, en voilà:

Dit werkt natuurlijk niet voor lagen die duizenden objecten bevatten. De WFS services van PDOK zijn gemaximaliseerd op een x-duizend objecten. Dus wil je bijvoorbeeld alle 100m vierkanten van jouw gemeente die het CBS aanbiedt via PDOK? Zoom dan eerst naar het gebied van je gemeente. Probeer dus niet alle objecten van heel Nederland in een keer uit de WFS service te halen!
Wanneer je geïnteresseerd bent in de metadata van een service, is dat mogelijk om die te bekijken via het ‘Metadata’-tabje van de laag-eigenschappen:

Op deze manier zijn ook de eigenlijke service-URL‘s te achterhalen:

Er is voor QGIS ook een CSW-client plugin beschikbaar (Catalogue Service for Web). Jammer genoeg werkt die nog niet goed samen met het huidige Nationale Georegister. Door verschillen in de manier van de metadata opslaan, werken de interessantste onderdelen nog niet: het na het zoeken op een servicenaam, die service direkt kunnen laden in QGIS. Ik begreep dat ESRI is betaald om een extentie te schrijven om soortgelijke functionaliteit voor elkaar te krijgen in ArcGIS? Misschien is dit ook een idee om de makers van de CSW plugin (GIS-LAB uit Rusland: uitstekende pluginmakers!) te betalen om de plugin ook werkend te krijgen op het NGR? Zou een mooie manier zijn om zowel Nederlandse QGIS gebruikers als QGIS als project weer een stukje verder te brengen. Iemand nog wat 2012 budget over? 😉

Join the Conversation

20 Comments

  1. Goed initiatief om QGIS gebruikers te faciliteren met een PDOK plugin.
    Hoe groot de QGIS gebruikersgroep is weet ik niet. Het zou wel helpen om hier een beeld van te hebben om financiering te realiseren. PDOK omarmt de OpenSource gedachte en zal dit initiatief zeker faciliteren. Deze blog zal ik toevoegen op PDOK community site PDOK.PLEIO.nl welke dit jaar overgaat naar PDOKLoket.PDOK.nl.

  2. De PDOK extensie is een heel mooi initiatief.
    Hiermee kunnen gebruikers heel gemakkelijke en snel kaartlagen toevoegen.
    Zou mooi zijn als naast de PDOK organisatie dit initiatief ook breed wordt uitgedragen door RWS /Kadaster e.d., want uiteindelijk wordt de toegankelijkheid en het gebruik van de services hiermee gemakkelijker en vergroot.

  3. PDOK serveert naast wfs, wms, tms, wmts ook WCS. Actueel Hoogtebestand Nderland 25 meter grid is als het goed is als WCS beschikbaar. Ik heb ‘m nog nooit in QGIS geprobeerd. Ben benieuwd of dat ook goed werkt in QGIS. In ArcGis niet in ieder geval.
    En zo mooi is het maken van een shape uit WFS overigens weer niet. Is niet OGC en je creeert weer data die weer een eigen leven gaat leiden en mensen straks weer met oude versies werken.

  4. Yep, dit werkt wel in QGIS 🙂
    Als ik de volgende url gebruik bij ‘Add WCS layer’:
    http://geodata.nationaalgeoregister.nl/ahn25m/wcs
    dan krijg ik de ahn25 voor mijn neus 🙂
    Wel even doen op een klein stukje van Nederland, want QGIS gaat anders gewoon de 536Mb grote geotiff ophalen bij PDOK. Vreemd eigenlijk dat er op een wfs een 15000 object limiet zit, maar dat dit wel gewoon kan

  5. Als ik probeer de plugin op te halen via Plugins -> Plugins beheren en installeren dan duurt dit heel lang en blijft op verbinden staan, ligt dat aan mij of zit ik op de verkeerde plek om de PDOK plugin te installeren?

  6. Hi Luc, krijg je wel de lijst met plugins ‘normaal’ binnen? We hebben net een aanpassing gedaan waardoor de plugin.xml (lijst) veel sneller binnen zou moeten komen.
    Ikzelf heb hier net de plugin binnengehaald, en dat ging zeer snel.
    Welke OS en versie gebruik je (Debian testing heeft op dit moment een probleempje)? Maar de rest moet gewoon snel installeren.
    Misschien een proxy probleem?
    Dit is de direkte link: http://plugins.qgis.org/plugins/pdokservicesplugin/version/0.10/download/ dan kun me kijken of dat wel gaat, en evt uitpakken in je plugins directory

  7. Ik zie het probleem al, bij Plugins – > extra stond de status van de opslagplaatsen op niet verbonden heb deze even herladen en dat werkt!.
    De PDOK plugin is inmiddels geinstaleerd, bedankt!
    grt
    luc

  8. Hallo Richard,
    Is er ergens een beginners guide voor Qgis gebruikers te vinden.
    Ben namelijk op zoek om de ingeladen kadastrale kaart (via PDOK) te exporteren naar DXF of Shape.
    Groet,
    Luc

    1. http://docs.qgis.org
      breng je dan bij de manual:
      http://docs.qgis.org/testing/en/docs/user_manual (recentste)
      of 2.8 vertaalde:
      http://docs.qgis.org/2.8/nl/docs/user_manual/
      of je neemt de trainingmanual of ‘gentle intro’ door.
      Ik neem even aan dat je de verschillende Kadastrale Kaart WFS features bedoelt. WMTS kun je niet als vectordata opslaan.
      DXF export… probeer op project nivo (zit dacht ik al in 2.14)
      Shapefile: in de legenda rechtermuisknop ‘Save as’

  9. Ik heb een python programma dat speciale kaarten voor mij samenstelt. Ik gebruik hiervoor de gegevens uit pdok.json.
    Ik ben hierbij gestruikeld over duplicaten in de json file; 246 in totaal.
    Is dit by design? of een foutje? of zie ik dubbel? Hieronder de python schript die ze vindt:
    #!/usr/bin/env python3
    # -*- coding: utf-8 -*-
    “””
    Created on Mon Aug 27 13:28:56 2018
    @author: Janwillem
    “””
    from json import loads, dumps
    import requests
    from os import path, getenv
    home = getenv(“HOME”)
    useragent = {‘User-Agent’:
    ‘Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:58.0) Gecko/20100101 Firefox/58.0’} # nopep8
    pdok_url = ‘http://www.qgis.nl/pdok.json’
    qgis_json = path.join(home,
    ‘.local/share/QGIS/QGIS3/profiles/default/python/plugins/pdokservicesplugin/pdok.json’) # nopep8
    web = False # load from the web or local
    if web:
    response = requests.get(pdok_url, headers=useragent)
    pdok = loads(response.text)
    else:
    pdok = loads(open(qgis_json).read())
    pdok = pdok[‘services’]
    n_services = len(pdok)
    “””
    Make string of dict with the keys sorted
    “””
    qlist = []
    for q in pdok:
    s = dumps(q, sort_keys=True, indent=0)
    s = s.replace(‘\n’, ‘ ‘)
    qlist.append(s)
    “””
    Sort the list of services strings
    “””
    qlist.sort()
    “””
    Find the duplicates
    “””
    prev = ”
    dups = []
    n = 0
    for line in qlist:
    if line == prev:
    print(‘duplicate:’, line)
    dups.append(prev)
    dups.append(line)
    dups.append(‘\n’)
    n += 1
    prev = line
    s = ‘\n’.join(dups)
    with open(‘pdok_sorted_lines.json’, ‘w’) as f:
    f.write(s)
    f.write(‘%d duplicates in %d entries’ % (n, n_services))
    print(‘Finished’)

  10. Janwillem sorry voor de late reaktie.
    Bedankt voor je opmerking. Ik heb even gecheckt, maar het komt door de geleverde capabilities van de service. Als voorbeeld:
    https://geodata.nationaalgeoregister.nl/verkeersscheidingsstelsel/ows?SERVICE=WMS&request=getcapabilities
    En daarin de Layer “vaargeulenpertypeentiteit”, zoals je ziet zijn er 5 Style-blokken, met dus 2x “verkeersscheidingsstelsel:vaargeulen_per_entiteit”. Het enige waar ze in verschillen is de OnlineResource in het stukje LegendURL…
    Kweenie of dat de bedoeling is, of dat het een bugje is bij PDOK.
    Ik zal het navragen en evt bij de volgende update van de plugin checken op uniciteit van de stylenaam.
    Vraag me af of ik er een issue van moet maken. In QGIS bijvoorbeeld zie je wel maar 4 stylen, die checkt blijkbaar al op dubbele style namen?
    Lastige echter is dat ze nu bij pdok niet meer een overzichtelijke lijst met services en service url’s hebben. Dus voor mij meer gedoe om de pdok.json te updaten…

  11. Beste Richard,
    Bedankt voor het maken van deze mooie plugin. Helaas krijg ik ‘m niet werkend in mijn QGIS. Ik heb versie 2.10 op een Macbook Pro (OS High Sierra). Hij geeft me telkens dezelfde foutmelding (ook als ik handmatig de juiste versie (0.32) download en uitpak in de plugin map):
    Plugin is broken
    No module named PyQt.Qtcore.
    Hoe kan ik dit oplossen? Ik ben niet super bekend met programmeren (zeker niet in Python).
    Enorm bedankt!

  12. Hallo,
    Ik ben momenteel bezig met overzetten van een QGIS-bestand naar QField.
    Hierbij werden altijd alle PDOK-service bestanden netjes overgezet.
    Echter werkt sinds Maart onderstaande PDOK-service niet meer op QFIELD.
    https://geodata.nationaalgeoregister.nl/tiles/service/wmts?request=GetCapabilities&service=WMTS
    Kan iemand mij hierbij helpen?
    Ik krijg namelijk de foutmelding:
    “Download of capabilities failed: TLS initialization failed”
    Met vriendelijke groeten,
    Klaas Jacobs

    1. Het lijkt of QField niet kan omgaan met het Overheidscertificaat wat wordt gebruikt om de httpS verbinding op te zetten.
      De http-versie van die url werkt ook nog. Kun je die misschien proberen?
      En anders moet je dit echt even bij QField neerleggen (issue aanmaken)

  13. Beste,
    Ik gebruik deze plugin nu al een tijdje, nu heb ik sinds afgelopen maandag 15-6 dat de lagen annotatie en kadastralegrens (bijde type WFS en service Kadastrale Kaart) het niet meer doen.
    Kan niet veel vinden over en oplossing online.
    Enig idee wat dit kan zijn ?
    Mvg Joep

  14. Hoi Joep, ja de url’s zijn veranderd. Houd je plugin manager in de gaten, in de loop van vandaag verschijnt daar een nieuwe versie 3.5.0 waarin de url’s weer allemaal zijn nagelopen en gecheckd.
    Happy QGISsing!

    1. Hee Richard,
      Bedankt voor de reactie.
      dacht zelf inderdaad al dat er een update aan zat te komen.
      Alles werkt weer en kan weer aan de gang!

Leave a comment

Your email address will not be published. Required fields are marked *