Problem mit WFS-Filtern (BBOX, INTERSECTS)

10

Ich versuche, mithilfe der BBOX- (oder INTERSECTS-) Filter in meiner WFS-Abfrage ein Feature / Features aus einem kleinen Bereich abzurufen. Ich sollte nur einen kleinen Satz von Funktionen oder eine einzelne Funktion erwarten, und dennoch gibt die Abfrage eine ganze Reihe von Funktionen zurück.

Ich habe GeoServer Version 2.2.2 mit einem Oracle-Datenspeicher. Ich habe die Auswahl "lose bbox" deaktiviert, damit dies nicht die Ursache des Problems ist.

Hier ist die Abfrage mit einem BBOX-Filter:

<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>

Das Problem besteht weiterhin mit dem Filter INTERSECTS. Die Größe des Polygons beträgt ca. 10 x 10 Meter.

<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>

Bearbeiten:

Hier ist eine weitere Anfrage (diesmal eine GET-Anfrage):

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

Obwohl der BBOX-Bereich recht klein ist, erhalte ich 1263 Funktionen zurück, von denen die meisten nicht einmal innerhalb der in der Anfrage angegebenen Grenzen liegen. Zum Beispiel aus einer der Funktionen in der Antwort:

<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
quelle

Antworten:

5

Das Problem wurde gelöst, indem der SRID-Wert in der Datenbank festgelegt und der native SRS in Geoserver verwendet wurde. Obwohl der deklarierte (und erzwungene) SRS-Code in Geoserver mit dem nativen SRS identisch war, wirkte er sich anscheinend auf die räumlichen Filter aus.

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

mrLite
quelle
2
Können Sie dieser Antwort etwas mehr Details hinzufügen? Was meinen Sie mit dem Festlegen der SRID für die Datenbank? Sie sagen, die Lösung bestand darin, das native SRS zu verwenden, aber Sie sagen auch, dass das native SRS verwendet wurde, sodass mir nicht klar ist, was Sie getan haben, um dieses Problem zu lösen.
Ca0v