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",},});
}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部