Ol6的WFS过滤条件

ol/format/filter对wfs服务进行多条件查询过滤。其本质也是编译成gml去进行相关的查询。下面接收Or、And 、Not 、Bbox、 Within、 IsNull 、isLike、 During 、EqualTo 、LessThan、 Contains 、IsBetWeen、 NotEqualTo、 Instresects 、GreaterThan 、LessThanOrEqualTo、 greaterTanOrEqualTo

将查询的结果高亮。请求指定的wfs服务地址,返回json文件。通过GeoJson加入到配置好样式的图层中。其中fetch的body是我们设置的过滤条件转为xml的形式。


fetch('http://ip:8080/geoserver/pipe/wfs',{
        method:'POST',
        body:new XMLSerializer().serializeToString(featureRequest)
      }).then((response)=>{
        return response.json()
      }).then((json)=>{
        
        let feature=new ol.format.GeoJSON().readFeatures(json)
        this.filterSource.addFeatures(feature)
        this.map.getView().fit(this.filterSource.getExtent());
      })

fetch的将new XMLSerializer().serializeToString(featureRequest)。请求转换之后的数据内容。

  1. or 查询条件满足一个即可返回数据。
let featureRequest=new ol.format.WFS().writeGetFeature({
        srsName:'EPSG:2435',//坐标系
        featureNS:'http://ip:8080/workspace',// 注意这个值必须为创建工作区时的命名空间URI
        featurePrefix:'workspace',//工作区的命名
        featureTypes:[layername],//所要访问的图层
        outputFormat:'application/json',

        //or其含义类似于'||'满足下面条件的要素会被筛选出来
        filter:ol.format.filter.or(
        //like
         //过滤属性名称(addr)包含"东沙小学"

          ol.format.filter.like('addr',"东沙小学"),
         //过滤属性名称(addr)包含"东沙小学
          ol.format.filter.like('addr',"紫翠街")
        )

})

查询结果高亮标出:

2.and针对多个条件并存的查询。

let featureRequest=new ol.format.WFS().writeGetFeature({
        srsName:'EPSG:2435',//坐标系
        featureNS:'http://ip:8080/workspace',// 注意这个值必须为创建工作区时的命名空间URI
        featurePrefix:'workspace',//工作区的命名
        featureTypes:['layername'],//所要访问的图层
        outputFormat:'application/json',
        //多条件共存过滤。属性字段'gid'等于459662。
       //并且字段名district等于"荔湾区"
        filter:ol.format.filter.and(
           //equalTo:等于。与like不同,必须是相同。

           ol.format.filter.equalTo('gid',459662),
          ol.format.filter.equalTo('district',"荔湾区")
        )  
      })

3.Not为不等于查询属性名不等于给定的文本。一般配合and使用


//模糊查询addr为"东沙小学",并且sort不等于"污水"、"雨水",addr不等于"紫翠街"
filter:ol.format.filter.and(
          ol.format.filter.like('addr',"东沙小学"),
          ol.format.filter.not(

            //notEqualTo:给定的属性名称不等于给定的文本
            ol.format.filter.notEqualTo('sort',"污水"),
            ol.format.filter.notEqualTo('sort',"雨水"),
            ol.format.filter.notEqualTo('addr', "紫翠街")
          )
        )

4. isNull用于判断某一字段名不为空

 // 模糊查询addr为 "东沙小学"。并且project_name不为空
filter:ol.format.filter.and(
          ol.format.filter.like('addr',"东沙小学"),
          ol.format.filter.isNull('project_name'),
        )

版权声明:
作者:Gomo
链接:https://www.develophm.com/index.php/ol6%e7%9a%84wfs%e8%bf%87%e6%bb%a4%e6%9d%a1%e4%bb%b6/1454/
来源:开发之家
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>