Om uit een WFS objecten op te halen aan de hand van hun locatie, moet je een aantal dingen weten uit de WFS Capabilties. Namelijk wat de attribuutnaam is van de geometrie, voor de feature kadastralekaart:Perceel is dat geom. En dan kun je je filter als volgt opbouwen:
<ogc:Filter xmlns:ogc="http://www.opengis.net/ogc">
<ogc:Overlaps>
<ogc:PropertyName>geom</ogc:PropertyName>
<gml:Polygon srsName="28992">
<gml:outerBoundaryIs>
<gml:LinearRing>
<gml:coordinates>
154104.71 462737.50,
154104.71 462847.71,
154310.00 462847.71,
154310.00 462737.50,
154104.71 462737.50,
</gml:coordinates>
</gml:LinearRing>
</gml:outerBoundaryIs>
</gml:Polygon>
</ogc:Overlaps>
</ogc:Filter>
De complete URL word daarmee:
https://service.pdok.nl/kadaster/kadastralekaart/wfs/v5_0?service=WFS&version=2.0.0&request=GetFeature&typename=kadastralekaart:Perceel&outputFormat=json&filter=<ogc:Filter xmlns:ogc="http://www.opengis.net/ogc"><ogc:Overlaps><ogc:PropertyName>geom</ogc:PropertyName><gml:Polygon srsName="28992"><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>154104.71 462737.50,154104.71 462847.71,154310.00 462847.71,154310.00 462737.50,154104.71 462737.50</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs></gml:Polygon></ogc:Overlaps></ogc:Filter>
Ik heb hier een simpel rechthoekje genomen om de locatie heen waar ik nu zit, en gevraagd om alle percelen die dat rechthoekje overlappen. Uit de Capabilities kun je halen welke operators ondersteund worden, in dit geval is het het volgende lijstje:
- Equals
- Disjoint
- Touches
- Within
- Overlaps
- Crosses
- Intersects
- Contains
- DWithin
- Beyond
- BBOX
En ik heb gevraagd om (geo)json, maar de volgende outputformaten worden ondersteund:
- application/gml+xml; version=3.2
- text/xml; subtype=gml/3.2.1
- text/xml; subtype=gml/3.1.1
- application/json; subtype=geojson
- application/json
Ook weer uit de Capabilities te halen
In totaal levert me dat 14 percelen op:
{
"type": "FeatureCollection",
"numberMatched": 14,
"name": "Perceel",
"crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:EPSG::28992" } },
"features": [
{ "type": "Feature", <snip>
En inderdaad, voor een losse lijst percelen zonder verdere samenhang zul je voor elk perceel een request moeten doen - maar als het een redelijk beperkt gebied is, kun je ook de Download Viewer proberen. Is een beetje afhankelijk van of dit geautomatiseerd moet zijn, of dat het telkens om eenmalige acties gaat. Soms kan het voor een eenmalige actie sneller zijn om een bak percelen te downloaden, en met QGis of wat je ook gebruikt daar je filter op los te laten (koppelen met een excelletje bijvoorbeeld).