Hoi Mark? de Bakker,
Een (rest) api zoals die van de kadastrale kaart is een manier om via urls op een systematische manier data op te halen. Hier kan je zien hoe je een custom download kan doen:
https://downloads.pdok.nl/kadastralekaart/api/v4_0/ui/#/Delta%20Custom/DeltaCustomDownload
Die url bestaat uit:
De beschrijving van die endpoints dus via het schema in deze link te vinden. Waarbij alleen de endpoints te lezen zijn. Om zo’n url te volgen moet je dus wel eerst de api root en versie voor het endpoint plakken: https://downloads.pdok.nl/kadastralekaart/api/v4_0/delta/custom.
Dat endpoint kan je vragen (requests) stellen. De meest voorkomende zijn GET en POST requests. GET requests zijn de requests die je je browser stelt als je naar een bepaalde webpagina gaat. POST requests zijn requests waarbij je wat informatie meegeeft. Die extra informatie bestaat (vaak) uit json. Dit is de json die in het voorbeeld in het bovengenoemde schema:
{
"featuretypes": [
"perceel",
"kadastralegrens"
],
"format": "gml",
"geofilter": "POLYGON((211417.92 475752.4800000001,212390.64000000004
475896.12,212916.48000000004 475818.84,212879.52000000005 475360.2,212950.08000000002
475203.12,212839.2 475065.36,212819.04 474981.36,212819.04 474877.2,212772 474857.04,212792.16
474769.68,212832.48 474705.84,212889.6 474695.76,213010.56000000003 474685.68,213044.16
474611.76,213030.72 474450.48,212637.6 474423.6,212708.16 473956.56,211122.24000000002
473849.04,210453.6 473896.08,210315.84000000003 473970,211417.92 475752.4800000001))"
}
Belangrijk onderdeel van de meegestuurde json is de geofilter. Deze bevat een polygoon van het gebied waar je data van wilt opvragen. Zo kan je van een gebied in een keer al je data opvragen. Deze polygoon is uitgedrukt in Well known text.
Een makkelijke manier om zonder code requests te doen (waaronder ook POST requests) is via postman. Dat helpt je om e.e.a. uit te proberen. Op die site is ook veel informatie te vinden over hoe postman werkt.
Je zou dit ook bijvoorbeeld met python kunnen doen:
import requests
url = "https://downloads.pdok.nl/kadastralekaart/api/v4_0/delta/custom"
data = {...} # vul hier de bovenstaande json in.
response = requests.post(url, data)
print(response.json())
Als je een POST-request doet op het delta/custom endpoint krijg je niet direct de data terug, maar een url. We zijn namelijk bij het opvragen van de data je data aan het verwerken. De url die je van het postrequest terugkrijgt geeft de status aan van je download. Dat is een url die je met een GET-request kan benaderen (dus eventueel ook met je browser. Hier staat uitgelegd wat je terugkrijgt als je die url bevraagd. Onderdeel van de response van die url is de status:
"status": "RUNNING"
of de status:
"status": "COMPLETED"
Als de status completed is krijg je ook een download url te zien met de zip:
{
"_links": {
"download": {
"href": "/lv/bgt/api/v1/extract/72f0d5d6-d34c-439b-a115-b53811aa8a72/extract.zip"
}
},
"progress": 100,
"status": "COMPLETED"
}
Die zip kan je dan weer uitpakken en bevat al je data.
Het is voor ons erg fijn als je op deze manier je data opvraagt. Het scheelt ons afhandelen van requests. Het geeft ons wat ruimte om even de tijd te nemen om de request te beantwoorden. En op deze manier kunnen we je precies het antwoord geven wat je nodig hebt.
–
Roel