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.