BGT Features opvragen in QGIS modelbuilder

Ik ben al enkele dagen aan het strugglen om de nieuwe BGT Features API werkend te krijgen in QGIS modelbuilder, zodat ik maandelijks een model kan runnen die mijn dataset up-to-date maakt. Dit is me al gelukt met o.a. de BAG (ik roep dan deze op: WFS://pagingEnabled=‘true’ preferCoordinatesForWfsT11=‘false’ restrictToRequestBBOX=‘1’ srsname=‘EPSG:28992’ typename=‘bag:pand’ url=‘https://service.pdok.nl/lv/bag/wfs/v2_0’ version=‘auto’ en die clip ik op een bepaald gebied)

Helaas werkt deze methode niet voor de BGT (pagingEnabled=‘true’ preferCoordinatesForWfsT11=‘false’ restrictToRequestBBOX=‘1’ srsname=‘EPSG:28992’ typename=‘wegdeel’ url=‘https://api.pdok.nl/lv/bgt/ogc/v1?bbox=5.644072,51.218316,5.749436,51.28577&limit=1000’ version=‘auto’) ,
want ik krijg dan de error Kon bronlaag niet laden voor…

Heeft iemand hier ervaring mee, of kan iemand mij helpen die een zelfde manier wel is gelukt? Alvast bedankt!

Paar pointers wat betreft QGIS en OGC API Features:

Verder ben ik zelf niet bekend met de model builder in QGIS, wellicht dat anderen daar iets over kunnen zeggen. De OGC API Features functionaliteit in QGIS is wel min of meer “boven op” de WFS functionaliteit gerealiseerd dus dat doet vermoeden dat gebruik daarin mogelijk is. Maar de OGC API Features ondersteuning in QGIS is uiteraard jonger/nieuwer als de WFS ondersteuning.

Dankjewel voor je uitgebreide reactie. Stap een gaat bij mij al niet helemaal zoals ik wil. Ik krijg maar een handje vol features te zien. Hoe kan ervoor zorgen dat alle features binnen mijn map view geladen worden, doormiddel van pagineren?

In de (Geo)JSON response zit een “next”-link. Zie bijv https://api.pdok.nl/lv/bgt/ogc/v1/collections/wegdeel/items?bbox=5.644072%2C51.218316%2C5.749436%2C51.28577&f=json&limit=10 (bovenaan). Daarmee kan de volgende pagina worden opgehaald. Dat is de wijze van pagineren die in OGC API Features is gespecificeerd. De next link in bovenstaand voorbeeld is dus: https://api.pdok.nl/lv/bgt/ogc/v1/collections/wegdeel/items?bbox=5.644072%2C51.218316%2C5.749436%2C51.28577&cursor=I20b|1sFvXA&f=json&limit=10.

In principe is het aan een tool als QGIS om die “next”-link aan te roepen. Dat gebeurd ook als je de OGC API Features visualiseert zoals beschreven op PDOK lanceert de BGT Features (OGC API) als demo - #6 door rkettelerij. Als je zoomt en de kaart beweegt worden er meer features door QGIS geladen via de “next”-link.

1 like

Ook wel van belang: gebruik je een recente versie van QGIS? Bij voorkeur de laatste versie.

Ik gebruik de laatste LTR, dus dat moet goed zitten, maar toch doet QGIS “Als je zoomt en de kaart beweegt worden er meer features door QGIS geladen via de “next”-link.” absoluut niet.

In QGIS heb ik de OGC API Features als volgt geconfigureerd (via WFS / OGC API Features > New connection):

PS: max number of features NIET invullen.
Het is voldoende om naam+url in te vullen en 1x op ‘detect’ te klikken. Daarna kan je aan de slag.

Vervolgens zoom ik in op een stad (met de BRT-A als achtergrondkaart) en worden alle features binnen de viewport geladen. Dit is ook zichtbaar in de debug console (View > Panels > Debugging/Development tools). Daarin zie je telkens dezelfde requests naar de API voor dezelfde bbox maar met een cursor erin. Die cursor is een technisch detail dat je mag vergeten, maar deze is alleen aanwezig in de “next”-link en geeft aan dat QGIS netjes deze links volgt om alles binnen te halen.

NB: Getest met QGIS 3.36.1

Eindelijk weer tijd gehad om te testen. Ik heb je stappen netjes gevolgd en het werkt nu gedeeltelijk! Geen idee of dat komt, doordat ik net een kleine update heb gedaan naar 3.34.6 of omdat ik gewoon iets over het hoofd heb gezien.

Hij laadt echter niet alles in, op een gegeven moment stopt hij. Zit hier toch een soort limiet aan? Ik krijg geen foutmelding

Fijn dat je nu verder komt.

Er zit aan de serverkant geen enkel restrictie op. Dit in tegenstelling tot bijv een WFS waarbij je tot een bepaalde diepte (bijv 50.000 bij de BAG) mag pagineren. Bij ontwerp van deze OGC API Features is er expliciet rekening mee gehouden dat je zonder beperkingen een hele collectie kan binnenhalen via paginering.

Weet je zeker dat je in QGIS niet “max. number of features” hebt ingesteld (zie m’n eerste screenshot)? Dat is naar mijn idee een beetje een verwarrende instelling omdat het doet vermoeden dat het iets met het limiet/page size te maken heeft. Maar dat is niet zo, het is een client-size beperking dat QGIS nooit meer dan X features zal laden.

Hoeveel features lukt het nu om in te laden? Je zou anders even voor de zekerheid in het Debugging/Development tools venster kunnen kijken zoals m’n tweede screenshot laat zien.

Gebruik je nu de QGIS ‘viewer’ of ook al de model builder?

Inderdaad nog in de QGIS “Viewer”. Ik heb even ge-update naar de laatste versie 3.36.3 en nu loopt hij inderdaad netjes door. Stap 1 compleet. Heel erg bedankt.

Nu probeer ik te filteren op attributen of bbox. Dit moet ik toch in de initiële “Nieuwe verbinding” URL aanpassen of niet? Als ik dit doe dan krijg ik een foutmelding.

1 like

Goed om te horen dat het is gelukt om de features op de kaart te tonen.

De URL in dat venster moet de URL naar de landing page zijn, dus https://api.pdok.nl/lv/bgt/ogc/v1. Je kan wel een datetime filter daarbij opgeven maar je kan niet direct naar een collectie verwijzen. Zie ook deze notitie in de QGIS documentatie:

In case of an OGC API - Features (OAPIF), the URL to provide should be the landing page, ie the main page from which it is possible to navigate to all the available service endpoints.

limit opgeven is ook niet nodig want dat doet QGIS zelf via de ‘Grootte pagina’ instelling in dat scherm. Een bbox opgeven doe je impliciet door op de kaart in te zoomen / te bewegen. Hoe en of dat in de model builder kan weet ik niet.

Ahh okee. Ja ik zag wat users met de bbox spelen, dus ik dacht misschien is dat wel makkelijk, zodat hij elke keer hetzelfde gebied in laadt.

Ik ben dus nog een beetje zoekende hoe ik het beste maandelijks een update kan draaien van alle features binnen een bepaald bereik.

Mocht je daar nog ideeën voor hebben dan hoor ik het graag, zo niet, dan heel erg bedankt al voor je hulp!