Wfs service brp

Ik wil een wfs dataset/service van BRP gewaspercelen zichtbaar maken in onze viewer, maar voor slechts 1 gemeente. Hoe zorg ik ervoor dat ik niet heel Nederland te zien krijg?

Welkom @jkvg!

Om de WFS te bevragen met een ruimtelijke filter kan je de volgende stappen doorlopen:

  1. Vraag de geometrie van een enkele gemeente op via de Bestuurlijke Gebieden WFS, hier een WFS request om alleen de gemeente Arnhem op te vragen:
    https://service.pdok.nl/kadaster/bestuurlijkegebieden/wfs/v1_0?request=GetFeature&service=WFS&version=2.0.0&srsname=EPSG:28992&typenames=bestuurlijkegebieden:Gemeentegebied&filter=%3Cogc:Filter%sxmlns:ogc=%22http://www.opengis.net/ogc%22%3E%3Cogc:PropertyIsEqualTo%3E%3Cogc:PropertyName%3Enaam%3C/ogc:PropertyName%3E%3Cogc:Literal%3EArnhem%3C/ogc:Literal%3E%3C/ogc:PropertyIsEqualTo%3E%3C/ogc:Filter%3E . De filter query parameter bevat de volgende XML (maar dan URL encoded en zonder whitespace, je kan bijv hier urls en/decoden):
<ogc:Filter%sxmlns:ogc="http://www.opengis.net/ogc">
    <ogc:PropertyIsEqualTo>
        <ogc:PropertyName>naam</ogc:PropertyName>
        <ogc:Literal>Arnhem</ogc:Literal>
    </ogc:PropertyIsEqualTo>
</ogc:Filter>
  1. Vervolgens een WFS GetFeature request uitvoeren op BRP WFS met POST filter waarbij het <gml:Polygon> element is overgenomen uit de Bestuurlijke Gebieden WFS response
    2.1 Gemakshalve heb ik de geometrie uit de Bestuurlijke Gebieden WFS nog sterk vereenvoudigd zodat het code voorbeeld niet te groot wordt. Dit heb ik gedaan met: ogr2ogr -f GML arnhem-simple.xml arnhem.xml -simplify 100. Iets versimpelen is sowieso aan te raden want de geometrie uit de Bestuurlijke Gebieden WFS van de gemeente Arnhem is 50kB groot, versimpelen met -simplify 10 levert een reductie op van 90% en lijkt op het oog nog genoeg detail te geven. Uiteraard hangt dit af van je specifieke usecase.
curl --request POST 'https://service.pdok.nl/rvo/brpgewaspercelen/wfs/v1_0' \
--header 'Content-Type: text/xml' \
--data-raw '<wfs:GetFeature service="WFS" version="2.0.0" outputFormat="application/json"
  xmlns:bestandbodemgebruik2015="https://bestandbodemgebruik2015.geonovum.nl"
  xmlns:wfs="http://www.opengis.net/wfs/2.0"
  xmlns:fes="http://www.opengis.net/fes/2.0"
  xmlns:ogc="http://www.opengis.net/ogc"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:gml="http://www.opengis.net/gml/3.2" xsi:schemaLocation="http://www.opengis.net/wfs http://schemas.opengis.net/wfs/2.0/wfs.xsd">
  <wfs:Query typeNames="brpgewaspercelen:BrpGewas" srsName="EPSG:28992">
        <fes:Filter>
         <fes:Intersects>
            <fes:ValueReference>BrpGewas:geom</fes:ValueReference>
           <gml:Polygon srsName="urn:ogc:def:crs:EPSG::28992" gml:id="Gemeentegebied.geom.0"><gml:exterior><gml:LinearRing><gml:posList>190146.811 438580.702 190395.037 438458.54 191135.37 439779.91 191037.491 439999.504 191296.521 440300.794 192277.739 440377.947 192468.661 441395.642 192692.336 441473.989 193021.181 440989.615 194051.562 440186.894 193633.224 441151.381 193747.07 441750.91 194051.614 442219.021 194678.32 442714.194 196441.953 443060.314 195769.841 443838.982 194288.745 444737.515 193900.603 445331.346 193513.767 446617.337 193180.115 447009.468 193368.981 447063.329 193047.957 447158.855 192721.304 451278.31 193133.923 452830.515 193991.488 454048.033 193313.786 454549.236 190833.953 452773.426 190036.183 452908.593 190134.273 451417.947 188945.387 451348.795 187407.29 451628.565 186747.555 451578.062 185919.16 451019.893 183907.985 447906.765 183548.218 446268.516 185152.189 445777.464 187727.562 445385.861 187695.064 444206.344 187907.73 444076.655 187988.351 443651.907 187740.466 443391.561 187890.743 443138.991 188231.989 443077.532 187854.461 442607.996 187429.414 442451.79 185792.672 442888.954 185788.024 441844.177 185388.794 441472.293 185528.177 441215.874 185357.006 440269.611 185439.804 439735.716 188094.116 439412.984 189423.64 438748.95 190146.811 438580.702</gml:posList></gml:LinearRing></gml:exterior></gml:Polygon>
         </fes:Intersects>
      </fes:Filter>
  </wfs:Query>
</wfs:GetFeature>' > brpgewaspercelen-gem-arnhem.json

2 likes

Nog een opmerkingen in de WFS POST filter wordt de ruimtelijke filter intersects gebruikt, hiermee krijg je dus ook percelen die gedeeltelijk binnen de gemeente liggen. Als je alleen percelen wilt die geheel binnen de gemeente liggen gebruik dan contains, zie ook de MapServer docs.