Sự cố với bộ lọc WFS (BBOX, INTERSECTS)


10

Tôi đang cố gắng để có được một tính năng / tính năng từ một khu vực nhỏ bằng bộ lọc BBOX (hoặc INTERSECTS) trong truy vấn WFS của tôi. Tôi chỉ nên mong đợi một bộ tính năng nhỏ hoặc một tính năng duy nhất và truy vấn trả về khá nhiều trong số chúng.

Tôi có GeoServer phiên bản 2.2.2 với kho dữ liệu Oracle. Tôi đã vô hiệu hóa lựa chọn 'bbox lỏng' để không phải là nguyên nhân của vấn đề.

Đây là truy vấn với bộ lọc 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>

Vấn đề vẫn tồn tại với bộ lọc INTERSECTS. Kích thước của đa giác là khoảng 10 x 10 mét.

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

Biên tập:

Đây là một yêu cầu khác (lần này là một yêu cầu NHẬN):

http://172.17.14.211:8080/geoserver/wfs?request=GetFeature&version=1.1.0&srsName=EPSG:3067&typeName=LiVi:I

Mặc dù khu vực BBOX khá nhỏ, tôi vẫn nhận được 1263 tính năng, hầu hết trong số đó thậm chí không nằm trong giới hạn được chỉ định trong yêu cầu. Chẳng hạn, từ một trong các tính năng trong phản hồi:

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

Câu trả lời:


5

Vấn đề đã được giải quyết bằng cách đặt giá trị SRID cho cơ sở dữ liệu và sử dụng SRS gốc trong Geoserver. Mặc dù mã SRS được khai báo (và bắt buộc) trong Geoserver giống với SRS gốc, nhưng rõ ràng nó đã ảnh hưởng đến các bộ lọc không gian.

http://172.17.14.211:8080/geoserver/wfs?request=GetFeature&version=1.1.0&srsName=EPSG:3067&typeName=LiVi:I


2
Bạn có thể thêm một chút chi tiết cho câu trả lời này? Bạn có ý nghĩa gì khi đặt SRID vào cơ sở dữ liệu? Bạn nói rằng giải pháp là sử dụng SRS bản địa nhưng bạn cũng nói rằng giải pháp bạn đang sử dụng là SRS bản địa nên tôi không rõ bạn đã làm gì để giải quyết vấn đề này.
ca0v
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.