Lijst met alle Geo Services (bv via RESTful API)

Voor de bouw van een webapplicatie die Geo Services uitleest, wil ik graag een lijst maken met alle beschikbare PDOK Geo Services, zoals op https://www.pdok.nl/datasets vermeld, maar dan via een api. Hiermee wil ik een dropdown vullen, zodat de gebruiker zelf kan kiezen uit welke bronnen hij/zij data wil laden.

Bestaat dit? Bijvoorbeeld met een RESTful api?

Momenteel lezen we als workaround de html-pagina van https://www.pdok.nl/datasets uit en gebruiken we css selectors om de juiste URLs te vinden. Het werkt, maar is niet echt toekomstbestendigā€¦

Alvast bedankt!

2 likes

Er is geen RESTful API die deze informatie serveert, maar PDOK publiceert in principe voor elke web service een service metadata record in het NGR.

Het NGR ontsluit weer een CSW service die publiek toegangelijk is. Door middel van de volgende CSW query kan je een lijst maken van alle web services die door PDOK beheert worden:

https://www.nationaalgeoregister.nl/geonetwork/srv/dut/csw?request=GetRecords&Service=CSW&Version=2.0.2&typeNames=gmd:MD_Metadata&resultType=results&startPosition=1&constraint=type=%27service%27%20AND%20organisationName=%27Beheer%20PDOK%27&constraintLanguage=CQL_TEXT&constraint_language_version=1.1.0

Het specifieke filter wat gebruikt wordt om alleen service records van Beheer PDOK (in het CSW request is deze url-encoded):

type='service' AND organisationName='Beheer PDOK'

De response op bovenstaande request geeft 10 records terug terwijl er 386 records gematched zijn. Om de volgende 10 records op te halen zul je met behulp van de query parameter startPosition=11 de volgende 10 records op moeten halen, enzovoort (voor zover ik weet geeft NGR max 10 records terug per CSW response).

CSW is overigens volledig XML gebaseerd, je kan bijvoorbeeld geen JSON output opvragen. Maar het is in ieder geval beter dan websites crawlen :).

Er is ook bestaande tooling om met een CSW service te praten, bijvoorbeeld ogr2ogr of OWSLib . Ik heb zelf ook een CSW CLI client geschreven die JSON output genereert.

2 likes

Volgens mij is dat precies wat ik zocht. Veel dank!

Misschien is de Q Search API van GeoNetwork ook handig voor jou.

Met dit request vraag je bijvoorbeeld de eerste 1.000 datasets op van de provincie Groningen:
https://nationaalgeoregister.nl/geonetwork/srv/dut/q?_content_type=json&bucket=s101&facet.q=&fast=index&from=1&to=1000&isChild=ā€˜falseā€™&resultType=details&sortBy=relevance&orgName=ā€˜Provincie%20Groningenā€™

Hier vind je de documentatie van de Q Search API: Q Search ā€” GeoNetwork opensource v3.12 GeoNetwork Documentation

1 like

Ook interessant, dankjewel!
Ik kreeg wel pas resultaat nadat ik isChild=false had weggehaald.

Deze query lijkt het resultaat te geven die ik zoek:
https://nationaalgeoregister.nl/geonetwork/srv/dut/q?_content_type=json&fast=index&resultType=details&orgName=Beheer%20PDOK

1 like