BAG WFS 2.0 GetFeature request stuk trager dan versie 1.1 en 1.2-preprod

Gebleken is dat een bepaalde WFS GetFeature request een stuk trager is met de nieuwe BAG WFS 2.0 URL https://service.pdok.nl/lv/bag/wfs/v2_0 dan met de oude https://geodata.nationaalgeoregister.nl/bag/wfs/v1_2-preprod en https://geodata.nationaalgeoregister.nl/bag/wfs/v1_1

Het betreft een WFS filter op verblijfsobject op basis van pandidentificatie en een ruimtelijke query op geometrie.

<?xml version='1.0' encoding="UTF-8" ?>
<wfs:FeatureCollection xmlns:bag="http://bag.geonovum.nl"
  xmlns:gml="http://www.opengis.net/gml/3.2"
  xmlns:wfs="http://www.opengis.net/wfs/2.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://bag.geonovum.nl https://service.pdok.nl/lv/bag/wfs/v2_0?SERVICE=WFS&amp;VERSION=2.0.0&amp;REQUEST=DescribeFeatureType&amp;TYPENAME=bag:verblijfsobject&amp;OUTPUTFORMAT=application%2Fgml%2Bxml%3B%20version%3D3.2 http://www.opengis.net/wfs/2.0 http://schemas.opengis.net/wfs/2.0/wfs.xsd http://www.opengis.net/gml/3.2 http://schemas.opengis.net/gml/3.2.1/gml.xsd" timeStamp="2021-12-17T09:27:44" numberMatched="1" numberReturned="1">
  <wfs:boundedBy>
    <gml:Envelope srsName="urn:ogc:def:crs:EPSG::28992">
      <gml:lowerCorner>257033.642000 470982.437000</gml:lowerCorner>
      <gml:upperCorner>257033.642000 470982.437000</gml:upperCorner>
    </gml:Envelope>
  </wfs:boundedBy>
  <wfs:member>
    <bag:verblijfsobject gml:id="verblijfsobject.82afa624-2a31-49a1-b17b-9b7aa07a458c">
      <gml:boundedBy>
        <gml:Envelope srsName="urn:ogc:def:crs:EPSG::28992">
          <gml:lowerCorner>257033.642000 470982.437000</gml:lowerCorner>
          <gml:upperCorner>257033.642000 470982.437000</gml:upperCorner>
        </gml:Envelope>
      </gml:boundedBy>
      <bag:geom>
        <gml:Point gml:id="verblijfsobject.82afa624-2a31-49a1-b17b-9b7aa07a458c.1" srsName="urn:ogc:def:crs:EPSG::28992">
          <gml:pos>257033.642000 470982.437000</gml:pos>
        </gml:Point>
      </bag:geom>
      <bag:identificatie>0153010000457575</bag:identificatie>
      <bag:rdf_seealso>http://bag.basisregistraties.overheid.nl/bag/id/verblijfsobject/0153010000457575</bag:rdf_seealso>
      <bag:oppervlakte>119</bag:oppervlakte>
      <bag:status>Verblijfsobject in gebruik</bag:status>
      <bag:gebruiksdoel>woonfunctie</bag:gebruiksdoel>
      <bag:openbare_ruimte>De Ereboog</bag:openbare_ruimte>
      <bag:huisnummer>13</bag:huisnummer>
      <bag:huisletter></bag:huisletter>
      <bag:toevoeging></bag:toevoeging>
      <bag:postcode>7513KD</bag:postcode>
      <bag:woonplaats>Enschede</bag:woonplaats>
      <bag:bouwjaar>2004</bag:bouwjaar>
      <bag:pandidentificatie>0153100000212546</bag:pandidentificatie>
      <bag:pandstatus>Pand in gebruik</bag:pandstatus>
      <bag:fuuid>verblijfsobject.82afa624-2a31-49a1-b17b-9b7aa07a458c</bag:fuuid>
    </bag:verblijfsobject>
  </wfs:member>
</wfs:FeatureCollection>

Wat voor request doe je precies? Een request waarbij je zowel filtert op pandidentificatie als op geometrie lijkt mij engiszins overbodig, dus dat zou voor vertraging kunnen zorgen. En ik heb zelf gemerkt dat het er ook nogal vanaf hangt welke ruimtelijke query je gebruikt, dus ook daar zou je misschien wat kunnen aanpassen.

Hoi @rli, wat @sbjager zegt, heb je een voorbeeld request.

Als ik zo ff snel test met wat je beschrijft, BBOX + Filter op pandidentificatie.
Dan lijkt service.pdok.nl de snelste van de 3 te zijn +/-20ms vs +/-40ms

service.pdok.nl
https://service.pdok.nl/lv/bag/wfs/v2_0?service=wfs&version=2.0.0&request=getfeature&typenames=verblijfsobject&filter=%3CFilter%3E%3CAND%3E%3CBBOX%3E%3CPropertyName%3Egeom%3C/PropertyName%3E%3CEnvelope%20xmlns:gml=%22http://www.opengis.net/gml%22%20srsName=%22EPSG:28992%22%3E%3ClowerCorner%3E260518%20467959%3C/lowerCorner%3E%3CupperCorner%3E260519%20467960%3C/upperCorner%3E%3C/Envelope%3E%3C/BBOX%3E%3CPropertyIsEqualTo%20matchCase=%22true%22%3E%3CValueReference%3Epandidentificatie%3C/ValueReference%3E%3CLiteral%3E0153100000258528%3C/Literal%3E%3C/PropertyIsEqualTo%3E%3C/AND%3E%3C/Filter%3E

v1_2-preprod
https://geodata.nationaalgeoregister.nl/bag/wfs/v1_2-preprod?service=wfs&version=2.0.0&request=getfeature&typenames=verblijfsobject&filter=%3CFilter%3E%3CAND%3E%3CBBOX%3E%3CPropertyName%3Egeom%3C/PropertyName%3E%3CEnvelope%20xmlns:gml=%22http://www.opengis.net/gml%22%20srsName=%22EPSG:28992%22%3E%3ClowerCorner%3E260518%20467959%3C/lowerCorner%3E%3CupperCorner%3E260519%20467960%3C/upperCorner%3E%3C/Envelope%3E%3C/BBOX%3E%3CPropertyIsEqualTo%20matchCase=%22true%22%3E%3CValueReference%3Epandidentificatie%3C/ValueReference%3E%3CLiteral%3E0153100000258528%3C/Literal%3E%3C/PropertyIsEqualTo%3E%3C/AND%3E%3C/Filter%3E

v1_1
https://geodata.nationaalgeoregister.nl/bag/wfs/v1_1?service=wfs&version=2.0.0&request=getfeature&typenames=verblijfsobject&filter=%3CFilter%3E%3CAND%3E%3CBBOX%3E%3CPropertyName%3Egeom%3C/PropertyName%3E%3CEnvelope%20xmlns:gml=%22http://www.opengis.net/gml%22%20srsName=%22EPSG:28992%22%3E%3ClowerCorner%3E260518%20467959%3C/lowerCorner%3E%3CupperCorner%3E260519%20467960%3C/upperCorner%3E%3C/Envelope%3E%3C/BBOX%3E%3CPropertyIsEqualTo%20matchCase=%22true%22%3E%3CValueReference%3Epandidentificatie%3C/ValueReference%3E%3CLiteral%3E0153100000258528%3C/Literal%3E%3C/PropertyIsEqualTo%3E%3C/AND%3E%3C/Filter%3E

Mijn POST GetFeature request staat in het erin toch? Althans ik zie hem staan.
Deze request is wel snel bij de vorige BAG WFS versies dus waarom niet meer in 2.0?
We hebben onze redenen om deze query ook ruimtelijk af te bakenen. Het zijn namelijk generiek gegenereerde queries die bv ook op gebruiksdoel kunnen selecteren binnen een bepaald gebied.

@rli het response staat in je post, niet het request

Daarmee loop je wel het risico dat je tegen dit soort problemen aan loopt. De pandidentificatie is uniek, dus dat levert 1 resultaat op, maar vervolgens moet de server ook nog eens een ruimtelijke index gaan controleren. Of mogelijkerwijs doet de server het net andersom, haalt eerst het ruimtelijke antwoord op en gaat daarbinnen filteren op identificatie. Je loopt dan zelfs het risico dat je geen antwoord terug krijgt, terwijl dat er wel is. Maar in ieder geval kost het minstens twee stappen, dus dat het trager word verbaast mij niks. Ik zou daarom het generiek opbouwen van mijn queries nog eens goed onder de loep nemen. Het is makkelijk genoeg te identificeren of het om een selectie op basis van een unieke waarde gaat of niet. En ik ga er van uit dat je ook controleert dat het ruimtelijke gebied niet al te groot is (je wil niet dat iemand alle panden met woonfunctie over heel NL ophaalt, lijkt mij…) , dus dat soort checks zou ik toch wel inbouwen.

Oh, en je hebt inderdaad alleen de response gepost, geen request (featurecollection met 1 verblijfsobject als member).