1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > Geoserver+WMS实现属性查询

Geoserver+WMS实现属性查询

时间:2020-01-28 09:40:45

相关推荐

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。