2016-07-27 24 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*') 
    ) 
}); 

どちらの彼は最近登場し... JUDG投影によるもの--WFS 2.0.0の空白。

OL3に幾何学フィルタを書き込むにはどうすればよいですか?

PS2
私の英語のため申し訳ありません。

答えて

1

OpenLayersのドキュメントには、https://github.com/openlayers/ol3/pull/5653で修正される誤植があります。

は、例の作業を行う 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を参照してください。

関連する問題