WFS filtreleriyle ilgili sorun (BBOX, INTERSECTS)


10

WFS sorgumda BBOX (veya INTERSECTS) filtresini kullanarak küçük bir alandan bir özellik / özellikler almaya çalışıyorum. Ben sadece küçük bir özellik kümesi veya tek bir özellik bekliyor olmalı ve henüz sorgu oldukça yakışıklı bir demet döndürür.

Bir Oracle veri deposu ile GeoServer sürüm 2.2.2 var. Sorunun nedeni olmamalı böylece 'gevşek bbox' seçimi devre dışı bıraktım.

BBOX filtreli sorgu:

<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 filtresinde sorun devam ediyor. Çokgenin boyutu yaklaşık 10 x 10 metredir.

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

Düzenle:

İşte başka bir istek (bu sefer bir GET isteği):

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 alanı oldukça küçük olmasına rağmen, çoğu istekte belirtilen sınırların içinde bile olmayan 1263 özellik geri alıyorum. Örneğin, yanıttaki özelliklerden birinden:

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

Yanıtlar:


5

SRID değeri veritabanına ayarlanarak ve Geoserver'da yerel SRS kullanılarak sorun çözüldü. Geoserver'da bildirilen (ve zorlanan) SRS kodu yerel SRS ile aynı olsa da, görünüşte uzamsal filtreleri etkiledi.

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
Bu cevaba biraz daha ayrıntı ekleyebilir misiniz? SRID'yi veritabanına ayarlayarak ne demek istiyorsun? Çözümün yerel SRS'yi kullanmak olduğunu söylüyorsunuz, ancak kullandığınızın yerel SRS olduğunu da söylüyorsunuz, bu yüzden bunu çözmek için ne yaptığınız net değil.
16:43
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.