WebGIS中I查询的原理及设计(包含AGS、GeoServer、Supermap) -------------------------------------------------------------- http://www.cnblogs.com/naaoveGIS/。 背景 ~~~~~~ 我们在使用arcmap时,经常会用到被称为I查询的工具。具体功能便是,当激活I查询功能后,鼠标点击到某个要素上时,界面上会弹出一个对话框用来显示该要素的各属性信息。该功能截图如下: .. figure:: img_1_xr1.png 原理 ~~~~~~ 在WebGIS中设计和实现该功能之前,我们有必要对该功能的原理做一个了解。 在OGC的WMS标准中规定了一个接口:GetFeatureInfo。该接口的功能描述便是:根据屏幕坐标、当前视图范围等参数,获得屏幕坐标某处要素的信息。 在OGC的WFS标准中也规定了一个接口:GetFeature。该接口同样提供了获取一个符合GML规范的数据文档的功能。 针对不同的地理服务器,我们选择以上两个不同的接口来实现。 这里我分别简述如何在AGS、GeoServer和Supermap中利用WMS或WMTS的接口来进行I查询。 AGS中的I查询 ^^^^^^^^^^^^^^^ AGS中我们选择WMS的GetFeatureInfo接口来实现。其本身提供了I查询界面,如下: .. figure:: img_2_x3h.png 具体的rest请求格式为如下: .. figure:: img_3_xis.png GeoServer中的I查询 ^^^^^^^^^^^^^^^^^^^^^ 在GeoServer中我们选择利用WFS中的GetFeatrue来实现。 查询中,需要注意的是Filter的编写。这里给出一个样板例子: .. figure:: img_4_xea.png Supermap中的I查询 ^^^^^^^^^^^^^^^^^^^^ 超图的WFS服务中提供了要素的范围查询界面,如下所示: .. figure:: img_5_xh5.png 具体的REST服务请求格式为: .. figure:: img_6_x67.png 设计思路 ~~~~~~~~~~ 这里我直接给出流程图: .. figure:: img_7_xhr.png 优化设计 ~~~~~~~~~~ 展示结果可配置 ^^^^^^^^^^^^^^^^^ 当我们通过地理服务器查询出所有的结果时,可能有些结果并不是我们想要的。比如: a.一个图层包含了很多字段,而我们只想展示其中的几个字段。 b.图层字段均是英文或者专业术语,而我们想换一种名称。 这里我们有必要在我们的数据库中设计一张与查询展示相关的表,该表中要包含这样一些信息:图层号、图层字段原始名称、图层字段展示别名、字段展示顺序、字段类型等。 这样我们的流程可稍作调整,变为: .. figure:: img_8_xmi.png 属性数据和空间数据展示的优化 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 在返回结果集中让属性数据和空间数据进行合理的关联。当点击到相关的属性数据时能够在地图上联动显示出此时属性数据所对应的要素。 效果如arcmap中的I查询。 效果展示 ~~~~~~~~~~ .. figure:: img_9_x7d.png 总结 ~~~~~~ I查询是WebGIS中很重要的一个功能,怎么样使其有更好的展示效果以及可扩展性也是仁者见仁智者见智。在下一章中,我将跟大家一起探讨WebGIS中图层树的设计和实现,欢迎大家继续关注。