Wijk- en buurtdata ophalen middels locatieserver

Is het mogelijk om (detail) wijk- en buurtdata op te halen middels de locatieServer? Ik wil het volgende bereiken:

  • Weergeven van de begrenzing op een (Google Maps) kaart (middels coördinaten van de hoekpunten)

  • Weergeven van CBS data van de buurt of wijk (zoals deze terugkomt uit de dataset CBS Wijken en buurten)

Is er iemand die hier ervaring mee heeft en mij verder kan helpen?

Beste Stijn,

Ik denk niet dat het mogelijk is om die data direct terug te halen uit de locatieserver.

Wat je wel kunt doen is een 2-staps raket:

  1. op basis van de locatieserver de coordinaten van een adres opvragen
  2. op basis van deze coordinaten uit de WFS service van CBS Wijken en buurten de door jou gewenste gegevens opvragen.

Met vriendelijke groet, MArco

Hallo Marco,

dank voor je antwoord. Weet je of de WFS service ook als (JSON) api beschikbaar is? Het is mij tot op heden niet gelukt om de benodigde data in een voor mij bruikbaar format terug te vinden. Kun je wellicht een voorbeeld sturen van een wijk en de manier om deze op te halen met de WFS service.

Groet,

Stijn

Hoi Stijn,

Heb je iets aan dit voorbeeld?

Hoe wil je zoeken overigens: op basis van adres, of straat, of gebied, of…?

@sbjager dank, ja en nee. Ik kom niet echt wijs uit de formatting en manier van aanvragen van de WFS service. Er bestaat geen JSON api die dezelfde data teruggeeft (zegt mij als web developer veel meer)? In principe wil ik zoeken op naam van de wijk of buurt.

Als je op naam van de wijk of buurt wil zoeken, dan is het filter relatief simpel:

<fes:Filter xmlns:fes="http://www.opengis.net/fes/2.0">
<fes:PropertyIsEqualTo>
<fes:PropertyName>buurtnaam</fes:PropertyName>
<fes:Literal>Wijk zus en zo</fes:Literal>
</fes:PropertyIsEqualTo>
</fes:Filter>

Even zo uit m’n hoofd, kan dus even in de details mis zitten…

Wat heb je geprobeerd, en wat krijg je als antwoord? Als je 't request uitvoert zoals in 't voorbeeld dat ik linkte, krijg je json terug.

Edit: een paar redelijke resources over WFS requests:
https://docs.geoserver.org/stable/en/user/services/wfs/reference.html

@sbjager Ik heb inmiddels de odata api gevonden en kan hiermee een enkele “Wijken en Buurten” entry opvragen (bv: https://opendata.cbs.nl/ODataApi/odata/85039NED/WijkenEnBuurten(‘BU00590107’)), het lukt me echter niet om de details over deze buurt tevoorschijn te toveren. Zie ik opties in de url over het hoofd?

Odata is eigenlijk niet meer dan het publiceren van kale tabellen, dus als je meer info bij deze buurt wilt hebben moet je zelf alle andere tabellen erbij gaan vogelen. Als ik me goed herinner hebben ze wel wat meer informatieve zaken op die OData site van het CBS (ik haal daar het aantal inwoners per gemeente vandaan - toen ik die ETL opzette heb ik eens door die Odata van het CBS lopen spitten, maar da’s alweer een paar jaar geleden).

Het hangt er een beetje van af welke details je precies wilt, maar in de WFS komt aardig wat mee. Dus als je de WFS raadpleegt, dan krijg je direct je geometrie en je details. Zo’n WFS request bouw je als volgt op:

basis url: https://service.pdok.nl/cbs/wb2021/wfs/v1_0
query parameters:
service=WFS
version=2.0.0
request=GetFeature
typename=wb2021:buurten → hier kun je ook kiezen voor wb2021:wijken
outputFormat=json → je was op zoek naar json, toch?
filter= → Hier kun je specificeren van welke buurt of wijk je de info wilt ophalen. Ik had al eerder een voorbeeldje gegeven:

<fes:Filter xmlns:fes="http://www.opengis.net/fes/2.0">
<fes:PropertyIsEqualTo>
<fes:PropertyName>buurtcode</fes:PropertyName>
<fes:Literal>BU00590107</fes:Literal>
</fes:PropertyIsEqualTo>
</fes:Filter>

Als je dit alles in een GET-request stopt:

https://service.pdok.nl/cbs/wb2021/wfs/v1_0?service=WFS&version=2.0.0&request=GetFeature&typename=wb2021:buurten&outputFormat=json&filter=%3Cfes:Filter%20xmlns:fes=%22http://www.opengis.net/fes/2.0%22%3E%3Cfes:PropertyIsEqualTo%3E%3Cfes:PropertyName%3Ebuurtcode%3C/fes:PropertyName%3E%3Cfes:Literal%3EBU00590107%3C/fes:Literal%3E%3C/fes:PropertyIsEqualTo%3E%3C/fes:Filter%3E

dan krijg je een nette geojson terug met de standaard-cbs-attributen en de geometrie. Is naar mijn mening een stuk gebruikersvriendelijker dan door die Odata spitten :wink:

Mocht je dat toch liever uit die odata halen, dan moet ik even opzoeken hoe ik dat ook alweer doe, en of dat toepasbaar is op jouw vraag.

@sbjager ik heb WFS aan de praat. Dank daarvoor! Het enige waar ik nu tegenaan loop is de formatting van de geoJSON, wanneer ik deze door https://geojsonlint.com/ haal krijg ik de volgende waarschuwingen:
Line 1: old-style crs member is not recommended
Line 1: Polygons and MultiPolygons should follow the right-hand rule

Ik vermoed dat dit ook de reden is van het niet zien van de polygon op de Google map wanneer ik deze probeer te laden (Data  |  Maps JavaScript API  |  Google Developers). Heb je hier ervaring mee?

Helaas, google maps vermijd ik als de pest, dus daar heb ik geen ervaring mee (veel van mijn persoonlijke projecten bestaan uit het bouwen van vervangers voor google :wink: :smiley: ). Ik heb dus geen idee hoe strict google maps is op het gebied van links- of rechtsdraaiende polygonen. Openlayers (dat is wat ik gebruik) heeft er geen enkele moeite mee.

Maar 1 ding weet ik wel: google wil alles in EPSG:4326 hebben, en de json die je terug krijgt van het eerder genoemde WFS request is in EPSG:28992. Dus dat kan ook de oorzaak zijn dat je 'm niet ziet in google maps. Om dat te testen kun je eenvoudig

srsName=EPSG:4326

toevoegen als query parameter, dan krijg je dat terug. Als google maps het dan nog niet wil tonen, dan is het probleem de richting van de polygonen. Maar dat moet dan denk ik opgelost worden aan de serverzijde, of zelfs in de achterliggende data.

1 like