2016-07-27 11 views
0

OpenLayers 2는 기하학적 필터 방법 WFS GetFeature를 생성 할 수 있습니다.OpenLayers 3 : 방법의 기하학적 필터 WFS GetFeature

예 JS :

var filter = new OpenLayers.Filter.Spatial({ type: OpenLayers.Filter.Spatial.INTERSECTS, value: geometry, projection: "EPSG:3067" }); 

var parser = new OpenLayers.Format.Filter.v1_1_0(); 
var filterAsXml = parser.write(filter); 
var xml = new OpenLayers.Format.XML(); 
var filterAsString = xml.write(filterAsXml); 

예 XML :

<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://site.ru/"> 
    <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> 

그들은 example을 작동하지 않은 :

var f = ol.format.wfs.filter; 
var request = new ol.format.WFS().writeGetFeature({ 
    srsName: 'urn:ogc:def:crs:EPSG::4326', 
    featureNS: 'http://www.openplans.org/topp', 
    featurePrefix: 'topp', 
    featureTypes: ['states'], 
    filter: f.and(
     f.bbox('the_geom', [1, 2, 3, 4], 'urn:ogc:def:crs:EPSG::4326'), 
     f.like('name', 'New*') 
    ) 
}); 

이 어느 그가 최근 출연 ... 삿을 프로젝션에 의한 것 - WFS 2.0.0의 공란.

OL3에 기하학적 필터를 쓰려면 어떻게해야합니까?

PS2
내 영어 죄송합니다.

답변

1

https://github.com/openlayers/ol3/pull/5653으로 고정 될 OpenLayers 설명서에 오타가 있습니다.

는, 예를 작동하게 ol.format.wfs.filter ol.format.ogc.filter에 변경하려면 :

var f = ol.format.ogc.filter; 
var request = new ol.format.WFS().writeGetFeature({ 
    srsName: 'urn:ogc:def:crs:EPSG::4326', 
    featureNS: 'http://www.openplans.org/topp', 
    featurePrefix: 'topp', 
    featureTypes: ['states'], 
    filter: f.and(
     f.bbox('the_geom', [1, 2, 3, 4], 'urn:ogc:def:crs:EPSG::4326'), 
     f.like('name', 'New*') 
    ) 
}); 

그러나, 유일한 구조와 같은 필터 OpenLayers 지원 BBOX이다. 위의 WFS XML과 같은 다른 지오메트리 필터는 OpenLayers 3에서 지원되지 않습니다. 전체 OGC 필터 지원이 필요한 경우 Jsonix에 대한 OGC 필터 바인딩을 제공하는 https://github.com/highsource/ogc-schemas을 살펴볼 수 있습니다.