WMS request met filter wordt niet gebruikt bij een GetFeatureInfo request

We zien dat bij een WMS request op de nieuwe BAG service het filter niet wordt gebruikt.

Als voorbeeld heb ik een kaartlaag toegevoegd met daarin een filter op de Domtoren in Utrecht (identificatie = ‘0344100000069167’). In KaartViewer wordt deze laag getoond:


Het GetMap request is:
https://service.pdok.nl/lv/bag/wms/v2_0?LAYERS=pand&VERSION=1.3.0&FORMAT=image%2Fpng&TRANSPARENT=TRUE&STYLES=bag%3Apand_gefilterd&FILTER=<Filter%20xmlns%3Agml%3D"http%3A%2F%2Fwww.opengis.net%2Fgml"%20xmlns%3Aogc%3D"http%3A%2F%2Fwww.opengis.net%2Fogc"><ogc%3APropertyIsEqualTo><ogc%3APropertyName>identificatie<%2Fogc%3APropertyName><ogc%3ALiteral>0344100000069167<%2Fogc%3ALiteral><%2Fogc%3APropertyIsEqualTo><%2FFilter>&SERVICE=WMS&REQUEST=GetMap&CRS=EPSG%3A28992&BBOX=136642.79849864,455670.83,137070.77849864,456040.01&WIDTH=1019&HEIGHT=879

Klik ik daarna in de kaart op een ander pand (niet de Domtoren) wordt het volgende GetFeautreInfo request uitgevoerd:
https://service.pdok.nl/lv/bag/wms/v2_0?service=wms&version=1.3.0&request=GetFeatureInfo&format=image%2Fpng&TRANSPARENT=true&QUERY_LAYERS=pand&LAYERS=pand&INFO_FORMAT=application%2Fjson&X=526&Y=262&I=526&J=262&width=1019&height=879&srs=EPSG%3A28992&bbox=136642.79849864%2C455670.83%2C137070.77849864%2C456040.01&crs=EPSG%3A28992&FEATURE_COUNT=50&STYLES=bag%3Apand_gefilterd&FILTER=<Filter%20xmlns%3Agml%3D"http%3A%2F%2Fwww.opengis.net%2Fgml"%20xmlns%3Aogc%3D"http%3A%2F%2Fwww.opengis.net%2Fogc"><ogc%3APropertyIsEqualTo><ogc%3APropertyName>identificatie<%2Fogc%3APropertyName><ogc%3ALiteral>0344100000069167<%2Fogc%3ALiteral><%2Fogc%3APropertyIsEqualTo><%2FFilter>

Het resultaat is dat ik gegevens van het andere pand terug krijg. Ik verwacht geen resultaat omdat het filter dit voorkomt.

Hoi @rob-geonovaiton, ik ben er even snel in gedoken en blijkt dat dit een bekend issue is in MapServer. De BAG WMS is een MapServer implementatie die gebruik maakt van een OGR connectie. Ik ga hiervoor intern een issue aanmaken om dit op te pakken.

@rob-geonovaiton ik heb wat te snel gesproken. De WMS FILTER is een vendor specific parameter die we als PDOK niet ondersteunen, ook al ontsluiten we deze feature wel op dit moment in onze WMS services. Hierom raden we het gebruik van de WMS FILTER parameter niet aan, omdat we van plan zijn deze in de toekomst uit te zetten.

De reden voor PDOK om geen vendor specific functionaliteit te willen ontsluiten is zodat we agnostisch blijven wat betreft de onderliggende software die we gebruiken om onze WMS/WFS services uit te serveren. Niet alle OGC services implementaties (MapServer, GeoServer, Degree) ondersteunen namelijk dezelfde vendor specific features (of features verschillen in implementatie).

De keuzes die we hierin gemaakt hebben zijn niet goed gedocumenteerd, ik heb intern een ticket aangemaakt om dit verbeteren (en het eerdere ticket genoemde ticket gesloten).

Bedankt voor het snelle antwoord. Wat vinden jullie dan de beste manier om een getMap of getFeatureInfo te filteren binnen jullie BAG webservices?

De WFS te gebruiken, waar FILTER wel in de specificatie is opgenomen. Zeker voor de GetFeatureInfo usecase zou dat een ‘1 op 1’ alternatief moeten zijn gezien daar (nagenoeg) dezelfde FeatureCollectie uitkomt.

1 like

Ligt ook een beetje aan je use-case. Als het alleen om het highlighten van een ‘geselecteerd’ bouwwerk gaat na een klik van een gebruiker (je screenshots lijken daar op te wijzen), is de WMS GetFeatureInfo het enige wat je hoeft te gebruiken. Het antwoord daarop is namelijk een geojson met de geometrie, die je dus uitstekend kunt gebruiken om deze met een highlight-kleur op je kaart te tonen, terwijl de attributen in een popupje of zo worden getoond.
Zo doe ik dat ook op mijn website, en dat werkt met alle PDOK WMSsen die ik tot nu toe gebruikt heb (maar zeker met de BAG). Scheelt ook een hoop requests.
Maar zoals ik al aangaf: ik weet niet zeker of dat jouw use-case is.

De use case waarvoor het op dit moment gebruiken is om panden met status bouwvergunning verleend of bouw gestart te tonen in de kaart. Panden met een andere status worden ook toegevoegd maar dan met 100% transparantie. Dit om te zorgen dat we ook bij alle panden een resultaat krijgen bij een GetFeatureInfo request.

We zien nu dus gebeuren dat bij het ophalen van de GetFeatureInfo request twee keer een resultaat terug komt omdat de filters niet gebruikt worden. We hebben dit opgelost door alleen de panden laag met de status bouwvergunning verleend en bouw gestart toe te voegen.

Ik begrijp uit jullie berichten dat ook het filter bij een GetMap request gaat vervallen. Dit gaat als gevolg hebben dat we niet meer een kaart kunnen maken waarop we een filter op bijvoorbeeld status kunnen doen. Uiteraard kunnen we dit met een WFS request oplossen maar dan worden we beperkt tot 1000 records. Een andere oplossing kan zijn om extra styles toe te voegen aan de lagen waar alleen objecten op basis van een bepaalde status wroden getoond. Hoe kijken jullie hier tegen aan?

Ah. Er is een Style bag:pand_status, maar daar krijg je ook de Pand in gebruik status mee:
image
Maar wellicht een tussenoplossing? Want het voldoet niet helemaal aan je wens.

Ik zou zelf een Style per Status wel een mooie oplossing vinden, maar heb daar verder niks over te zeggen :wink:

Overigens wel curieus dat het filteren dus eigenlijk niet zou moeten kunnen, terwijl er wel een Style bag:pand_gefilterd is…