Geoserver+WMS实现属性查询

        Geoserver发布服务以及加载WMS影像图层参考GeoServer发布服务+跨域问题+Cesium调用WMS/WFS服务,本文主要讲述如何实现属性查询功能。

        WMS服务GetMap请求API文档中介绍了GetMap操作的标准参数如下图所示。

        除此之外,GeoServer还为GetMap操作提供了一些非标准请求参数,具体见WMS vendor parameters,本文将使用参数cql_filter实现属性查询功能。

        cql_filter参数与标准filter参数类似,但cql_filter使用ECQL表示,filter使用OGC XML过滤器,相比之下ECQL语法更紧凑和可读。有关详细ECQL语法可参阅ECQL Reference以及CQL and ECQL

        按照ECQL语法编写过滤条件,例如cql_filter = station BETWEEN 556000 AND 556100或cql_filter = company = 'A公司'(station和company是图层要素的其中两个属性名),将过滤条件加入GetMap请求参数中,代码如下。 请求结果筛选掉不满足条件的要素,返回符合过滤条件要素的影像图层。

let wmsImageryProvider = new Cesium.WebMapServiceImageryProvider({
    url: "http://localhost:8090/geoserver/wms",
    layers: "Cesium:G55_1",
    parameters: {
    service: "WMS",
    format: "image/png",
    transparent: true,
    cql_filter: "station BETWEEN 556000 AND 556100",
    // cql_filter: "company = 'A公司'",
    },
});
this.viewer.imageryLayers.addImageryProvider(wmsImageryProvider);

        还可以将地图返回格式指定为geojson,通过axios请求返回满足条件的要素信息。

http({
    methods: "POST",
    url: "http://localhost:8090/geoserver/wms",
    params: {
      version:"1.1.0",
      request: "GetMap",
      layers: "Cesium:G55_1", //图层名称
      format: "application/json;type=geojson",
      cql_filter: "station BETWEEN 556000 AND 556100",
      // width、height、bbox参数可到 Geoserver 发布的服务中查看
      width: 330,
      height: 768,
      bbox: "112.8705873684138,39.4111049785004,112.88893260898077,39.45372330078136",
    },
  });
}
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值