WFS 필터 문제 (BBOX, INTERSECTS)


10

내 WFS 쿼리에서 BBOX (또는 INTERSECTS) 필터를 사용하여 작은 영역에서 기능 / 기능을 얻으려고합니다. 나는 작은 기능 세트 또는 단일 기능 만 기대해야하지만 쿼리는 꽤 많은 기능을 반환합니다.

Oracle 데이터 저장소와 함께 GeoServer 버전 2.2.2가 있습니다. 나는 '느슨한 bbox'선택을 비활성화하여 문제의 원인이되어서는 안됩니다.

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>

INTERSECTS 필터로 문제가 지속됩니다. 다각형의 크기는 약 10 x 10 미터입니다.

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

편집하다:

다음은 또 다른 요청입니다 (이번에는 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

BBOX 영역이 상당히 작더라도 1263 기능을 다시 얻습니다. 대부분은 요청에 지정된 범위 내에 속하지 않습니다. 예를 들어 응답의 기능 중 하나에서

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

답변:


5

SRID 값을 데이터베이스로 설정하고 Geoserver에서 기본 SRS를 사용하여 문제가 해결되었습니다. Geoserver에서 선언 된 (및 강제 된) SRS 코드는 기본 SRS와 동일하지만 공간 필터에 영향을 미쳤습니다.

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


2
이 답변에 조금 더 자세히 설명해 주시겠습니까? SRID를 데이터베이스로 설정한다는 것은 무슨 의미입니까? 해결책은 기본 SRS를 사용하는 것이지만 사용하고있는 것이 기본 SRS라고 말했기 때문에이 문제를 해결하기 위해 무엇을했는지 명확하지 않습니다.
— ca0v
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.