WFS request op basis van ID-based filtering werkt niet meer

De WFS van BAG en WKPB geeft sinds kort een foutmelding als ID-based filter uit meerdere ID’s bestaat:

msWFSGetFeature(): WFS server error. FLTApplyFilterToLayer() failed
msOGRFileWhichShapes(): OGR error. ExecuteSQL() failed. Check logs.

Wanneer 1 ID wordt gebruikt, dan gaat het wel goed.

Voorbeeld:
https://service.pdok.nl/lv/bag/wfs/v2_0?SERVICE=WFS&VERSION=2.0.0

<wfs:GetFeature service=“WFS” version=“2.0.0”
outputFormat=“application/gml+xml; version=3.2” count=“101” xmlns:bag=“http://bag.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=“bag:verblijfsobject” srsName=“EPSG:28992”>
fes:Filter
<fes:ResourceId rid=“verblijfsobject.45336043-0973-4690-8660-4472d81ef496”/>
<fes:ResourceId rid=“verblijfsobject.84cadf35-b334-459f-8187-4cedc5fadb0c”/>
</fes:Filter>
</wfs:Query>
</wfs:GetFeature>

Is er iets veranderd?

Groet,
Saskia

Bedankt voor het melden, wij zijn er naar aan het kijken.

Beste Robbert, Wanneer verwacht je het resultaat van het onderzoek?

Hoi Saskia & Adrie,

Leuk om iets van jullie te horen :slightly_smiling_face: jammer dat het om een bug gaat.

Onlangs zijn de WFS-services geupgrade van Mapserver versie 7 naar versie 8.4. Momenteel zijn we aan het onderzoeken of deze bug hierdoor wordt veroorzaakt en hoe we kunnen zorgen dat requests zoals het bovenstaande blijven werken.

Wij verwachten hier nog wel even mee bezig te zijn. Mogelijk is het herschrijven van het fes:Filter naar een ogc:Filter voor jullie een bruikbare workaround.

Dus i.p.v.:

<fes:Filter>
	<fes:ResourceId rid="verblijfsobject.71bed554-2de0-469b-9b1c-be9f9cce515c"/>
    <fes:ResourceId rid="verblijfsobject.272f9592-ba60-47ee-86bd-8374841a3a41"/>
</fes:Filter>

zou

<ogc:Filter xmlns:gml="http://www.opengis.net/gml"
            xmlns:ogc="http://www.opengis.net/ogc">
	<ogc:Or>
		<ogc:PropertyIsEqualTo>
			<ogc:PropertyName>fuuid</ogc:PropertyName>
			<ogc:Literal>verblijfsobject.71bed554-2de0-469b-9b1c-be9f9cce515c</ogc:Literal>
		</ogc:PropertyIsEqualTo>
		<ogc:PropertyIsEqualTo>
			<ogc:PropertyName>fuuid</ogc:PropertyName>
			<ogc:Literal>verblijfsobject.272f9592-ba60-47ee-86bd-8374841a3a41</ogc:Literal>
		</ogc:PropertyIsEqualTo>
	</ogc:Or>
</ogc:Filter>

gebruikt kunnen worden.

Groet,
Damien

1 like

Hi Damien,

Ook van onze kant is het een leuke verrassing om je hier tegen te komen! :slightly_smiling_face:

Wat je voorstel betreft, wij zouden dan een uitzondering moeten gaan maken voor deze bijzondere situatie. Je zult begrijpen dat dit absoluut niet onze voorkeur heeft en zelfs niet wenselijk is. Problemen bij de bron oplossen is altijd het beste!

Ik hoop dus dat dit probleem zo snel mogelijk kan worden gevonden en opgelost in jullie nieuwe Mapserver omgeving.

Keep us posted!

Groet,

Adrie & Saskia

Een collega heeft dit onderzocht en het issue gevonden.
Het gaat inderdaad om een bug in MapServer 8, zie Using an 'Or' expression in a getFeature request with more than one argument generates incorrect queries · Issue #7308 · MapServer/MapServer · GitHub.
Of en wanneer zij dit issue gaan oppakken is nog niet duidelijk.

Mocht dit lang op zich laten wachten, dan gaan wij hier een wijziging voor indienen, maar dat wordt pas na de vakantie periode.

Groet,
Damien

Hi Damien,

Fijn dat nu duidelijk is dat dit een bug in MapServer 8 is!

Nb: De PDOK service https://service.pdok.nl/lv/bag/wfs/v2_0 is voor ons belangrijk. Wij gebruiken de resultaten om een aantal andere processen te kunnen voorzien van de correcte informatie.

En ik snap dat het nu de vakantieperiode is, maar ga ervanuit dat dit na de vakantie zo snel mogelijk opgelost wordt. Alvast bedankt voor je/jullie inzet!

Groet,
Adrie

Hi Damian,

Als ik het goed begrijp dat is dit probleem gefixed in de Mapserver repo. Heb je een idee wanneer deze vernieuwde versie beschikbaar komt en wanneer jullie deze in gebruik nemen?

Groet,
Adrie