Problème avec les filtres WFS (BBOX, INTERSECTS)

10

J'essaie d'obtenir une fonctionnalité / des fonctionnalités d'une petite zone à l'aide du filtre BBOX (ou INTERSECTS) dans ma requête WFS. Je ne devrais m'attendre qu'à un petit ensemble de fonctionnalités ou à une seule fonctionnalité et pourtant la requête en renvoie un assez beau bouquet.

J'ai GeoServer version 2.2.2 avec un magasin de données Oracle. J'ai désactivé la sélection de la «bbox en vrac», ce qui ne devrait pas être la cause du problème.

Voici la requête avec un filtre BBOX:

<wfs:GetFeature
xmlns:wfs="http://www.opengis.net/wfs"
service="WFS"
version="1.1.0"
outputFormat="json"
xsi:schemaLocation="http://www.opengis.net/wfs
http://schemas.opengis.net/wfs/1.1.0/wfs.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <wfs:Query typeName="LiVi:LIIKENNE_ELEMENTTI" srsName="EPSG:3067" xmlns:LiVi="http://172.17.14.211:8080/LiVi">
    <ogc:Filter xmlns:ogc="http://www.opengis.net/ogc">
      <ogc:BBOX>
        <ogc:PropertyName>GEOMETRY</ogc:PropertyName>
        <gml:Envelope xmlns:gml="http://www.opengis.net/gml" srsName="EPSG:3067">
          <gml:lowerCorner>316600 6838986</gml:lowerCorner>
          <gml:upperCorner>327696 6844298</gml:upperCorner>
        </gml:Envelope>
      </ogc:BBOX>
    </ogc:Filter>
  </wfs:Query>
</wfs:GetFeature>

Le problème persiste avec le filtre INTERSECTS. La taille du polygone est d'environ 10 x 10 mètres.

<wfs:GetFeature
xmlns:wfs="http://www.opengis.net/wfs"
service="WFS"
version="1.1.0"
outputFormat="json"
xsi:schemaLocation="http://www.opengis.net/wfs
http://schemas.opengis.net/wfs/1.1.0/wfs.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <wfs:Query typeName="LiVi:LIIKENNE_ELEMENTTI" srsName="EPSG:3067" xmlns:LiVi="http://172.17.14.211:8080/LiVi">
    <ogc:Filter xmlns:ogc="http://www.opengis.net/ogc">
      <ogc:Intersects>
        <ogc:PropertyName>GEOMETRY</ogc:PropertyName>
        <gml:Polygon xmlns:gml="http://www.opengis.net/gml" srsName="EPSG:3067">
          <gml:exterior>
            <gml:LinearRing>
              <gml:posList>308082.07106781186 6833724.928932188 308082.07106781186 6833739.071067812 308067.92893218814 6833739.071067812 308067.92893218814 6833724.928932188 308082.07106781186 6833724.928932188</gml:posList>
            </gml:LinearRing>
          </gml:exterior>
        </gml:Polygon>
      </ogc:Intersects>
    </ogc:Filter>
  </wfs:Query>
</wfs:GetFeature>

Éditer:

Voici une autre demande (cette fois une demande GET):

http://172.17.14.211:8080/geoserver/wfs?request=GetFeature&version=1.1.0&srsName=EPSG:3067&typeName=LiVi:LIIKENNE_ELEMENTTI&BBOX=316600,6838986,316605,6838991,EPSG:3067

Même si la zone BBOX est assez petite, je récupère 1263 fonctionnalités, dont la plupart ne tombent même pas dans les limites spécifiées dans la demande. Par exemple, à partir d'une des fonctionnalités de la réponse:

<gml:boundedBy>
  <gml:Envelope srsDimension="2" srsName="http://www.opengis.net/gml/srs/epsg.xml#3067">
    <gml:lowerCorner>317629.69841038 6841957.478078741</gml:lowerCorner>
    <gml:upperCorner>317902.64972173725 6841987.000123474</gml:upperCorner>
  </gml:Envelope>
</gml:boundedBy>
mrLite
la source

Réponses:

5

Le problème a été résolu en définissant la valeur SRID dans la base de données et en utilisant le SRS natif dans Geoserver. Même si le code SRS déclaré (et forcé) dans Geoserver était le même que le SRS natif, il affectait apparemment les filtres spatiaux.

http://172.17.14.211:8080/geoserver/wfs?request=GetFeature&version=1.1.0&srsName=EPSG:3067&typeName=LiVi:LIIKENNE_ELEMENTTI&BBOX=316600,6838986,316605,6838991,EPSG:3067

mrLite
la source
2
Pouvez-vous ajouter un peu plus de détails à cette réponse? Que voulez-vous dire en définissant le SRID dans la base de données? Vous dites que la solution consistait à utiliser le SRS natif, mais vous dites également que celui que vous utilisiez était le SRS natif, donc je ne sais pas ce que vous avez fait pour résoudre ce problème.
ca0v