【问题标题】:OpenLayers 3: Geometric filters in method WFS GetFeatureOpenLayers 3:WFS GetFeature 方法中的几何过滤器
【发布时间】:2016-07-27 07:32:57
【问题描述】:

OpenLayers 2 可以生成几何过滤方法 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
对不起我的英语不好。

【问题讨论】:

    标签: gis openlayers openlayers-3 geoserver gml


    【解决方案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。 OpenLayers 3 不支持其他几何过滤器,例如上面 WFS XML 中的过滤器。如果您需要完整的 OGC 过滤器支持,您可能需要查看https://github.com/highsource/ogc-schemas,它提供(以及其他)OGC 过滤器绑定Jsonix.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多