郑永果 庄道鑫
摘 要: 在塌陷地综合治理系统中,对数据进行查询是一项非常重要的功能,通过对数据进行查询可以让用户获得更多有用的信息。本文通过介绍塌陷地综合治理系统,详细分析了系统中的查询原理,利用选择查询获取专题图上的Geometry对象,从而显示要素的属性信息;调用ArcGIS API for JavaScript中提供的QueryTask查询类实现条件查询,设置一定的条件进行查询定位到要素的地理位置。在系统中应用并实现,增强了用户与数据之间的交互,查询到的要素空间数据和属性数据对塌陷地治理具有一定的指导作用。
关键词: 查询;ArcGIS API for JavaScript;QueryTask;地理信息系统
中图分类号: TP311.52 文献标识码: A DOI:10.3969/j.issn.1003-6970.2020.01.053
本文著录格式:郑永果,庄道鑫. 塌陷地综合治理系统查询功能的设计与实现[J]. 软件,2020,41(01):245249
【Abstract】: In the comprehensive management system of collapsed land, querying data is a very important function. By querying the data, users can get more useful information. This paper introduces the comprehensive management system of collapsed land, analyzes the query principle in the system in detail, and uses the selection query to obtain the Geometry object on the thematic map to display the attribute information of the feature; call the QueryTask query class provided in ArcGIS API for JavaScript to realize the conditional query. set certain conditions for the query to locate the geographic location of the feature. It is applied and implemented in the system, which enhances the interaction between users and data. The queryed feature space data and attribute data have a certain guiding effect on the collapse management.
【Key words】: Query; ArcGIS API for JavaScript; QueryTask; Geographic information system
0 引言
近些年,由于煤礦企业地下开采和地下工程的实施,使土地原有的面貌和生态环境遭到了严重破坏,一些地方地面沉降形成塌陷地。致使多处村庄搬迁,使人们失去了赖以生存的土地,塌陷地的治理问题已迫在眉睫[1]。为解决这一问题,设计开发了一套基于WebGIS模式[2]的塌陷地综合治理系统,将图纸上的数据转化为空间数据,加载到电子地图上,不仅方便了煤矿用户实时管理塌陷地数据,能够清晰的查看各塌陷地的详细情况,也简化了工作人员的工作流程,加快塌陷地治理任务的实施。
在塌陷地综合治理系统中,查询功能使用的频率较高。传统的查询系统查询是根据具体的业务需求,找出相应的数据显示出来。WebGIS模式下的系统[3]不仅可以查询一般的业务数据,还可以一并将地理空间数据查询出来。它拥有丰富的网络资源,开发方式多种多样,通过调用相关查询类对一些实体进行查询,使用户直观的看到较为全面的塌陷地信息,有助于相关部门对本地区资源的合理配置和科学化管理,同时对塌陷地治理也具有一定的指导和预测作用。
1 塌陷地综合治理系统
1.1 开发环境
塌陷地综合治理系统利用了基于B/S结构的WebGIS开发模式,使用ArcGIS平台提供的各种软件完成塌陷地数据的加工处理。首先在ArcMap制图软件上将塌陷地数据矢量化,绘制出各种类型的专题图[4]。在ArcCatalog环境下建立地理数据库,存放专题图生成的各种空间数据表[5]和系统表,使用ArcSDE把地理数据库与SQL Server数据库连接起来[6],将专题图要素的一般属性信息存放在关系型数据库SQL Server中。最后通过ArcGIS for Server服务器将专题图发布成地图服务或要素服务,并为开发者提供了访问服务的接口。
本系统使用Myeclipse软件开发,基于JavaScript的二次开发架构 [7]编写方法,实现对地图资源的数据操作和系统的逻辑功能。系统开发完成后部署在物理服务器上并开放端口,客户端用户登录指定网址即可进入系统使用。
1.2 系统主要功能模块
如图1所示,塌陷地综合治理系统主要分为系统管理和塌陷地管理两大功能模块。系统管理又可分为用户管理、菜单管理和角色权限管理,系统为用户提供了多种角色身份,管理员可以通过角色权限管理模块为不同身份的用户设定不同的权限,分配不同的功能。
塌陷地管理模块以下四方面:
(1)基本地图操作:系统为专题图提供了放大缩小,返回初始界面,指南针,图例和鹰眼等功能按钮。
(2)图层管理:每张专题图由一个或多个图层组成,为了方便多图层之间的对比,可以更直观看到图层之间的变化,在专题图上设置图层管理器,用户可以灵活的控制每个图层的显示和隐藏。
(3)塌陷地数据处理:专题图中,加载着已发布的塌陷地地块要素数据,系统可以对每个地块要素数据进行在线编辑[8],包括增加新的塌陷地要素,修改现有塌陷地地块的属性和删除塌陷地要素。
(4)综合查询:查询功能主要包括选择查询和条件查询,选择查询是通过点击图中塌陷地要素,弹出塌陷地要素的属性信息表;而条件查询要先设置好查询的条件,条件可以是塌陷地的名称或者塌陷地的属性,再进行查询得到查询结果,并在专题图上实现要素的定位。
2 查询功能与设计
作为一个地理信息系统,最重要的特点是可以实现数图联动[9]。合理的对系统查询功能进行设计,可以大大提高数据查询的准确性,加快数据查询的速度,提高用户的工作效率。系统中的综合查询功能的设计主要从两方面出发,一方面是选择查询,从专题图上选择地理要素进行查看要素属性;另一方面是条件查询,由用户指定查询条件来查询地理要素。这两种查询方式都可直观的在专题图上观察到用户查询的地理要素,不仅可以查看要素的属性信息,还能清楚的看到它的空间位置信息。
2.1 选择查询
通过ArcGIS for Server发布的地图要素服务存放着各种各样的要素地块,而每个要素地块在数据库中对应一个个的Geometry对象[10],对要素地块的查询也就是查询Geometry对象的信息。
系统为每个要素地块绑定了MapMouseEvent点击事件,使用鼠标点击专题图上的塌陷地要素,客户端会自动响应MapMouseEvent事件,弹出信息框,系统调用Templete类向SQL Server数据库请求获取要素对应的属性数据,这时,就要用到负责连接客户端与数据库之间的桥梁ArcSDE,它确保了要素的属性数据可以在弹出的信息框中显示出来。该方法同一时间只能查询到一个塌陷地要素。
然而,系统通过调用sketch绘图工具类,在专题图上添加一个绘图工具栏。利用鼠标在绘图工具栏中选择想要绘制的基本图形样式,可以是圆形,方形或自定义不规则图形,这时绘图工具类被激活,在地图上开始绘制,框选出要查询的地理要素,鼠标双击绘制结束。这时会触发一个DrawEnd事件,它是DrawEvent类的一个事件,DrawEvent类中有一个graphic属性,通过设置这个graphic属性返回一个新的Geometry对象,这个新的Geometry对象与原专题图重叠的地理要素将会被框选,被框选出的对象就是我们所要查询的Geometry对象。这种获取方法可以同时查询多个塌陷地要素的属性信息,具有较好的扩展性。
2.2 条件查询
在地理信息系统中,用户需要根据自己的需求,设置一定的条件查找相关的要素地块,查询到的要素会在专题图上自动定位并显示数据属性信息。ArcGIS API for JavaScript为用户提供了三种基于REST风格[11]的查询工具类,分别是QueryTask,FindTask,IdentifyTask。它们所能查询的图层数量,查询原理各不相同。通过比较,系统选择QueryTask类进行编码设计,调用QueryTask类可以同时对地图服务或要素服务中的图层进行空间查询和属性查询。条件查询的流程图如图2所示,业务逻辑由以下四步完成。
①设置查询图层
QueryTask查询只针对地图服务或要素服务中的某一个圖层进行空间或属性查询[12]。在ArcGIS for Server服务器中已经发布了治理项目专题图,煤矿分布专题图以及塌陷地预测专题图,每张专题图包括一个或者多个要素图层。这里设置对治理项目专题图进行查询,系统调用QueryTask类定义新的qTask查询对象,在url属性中指定治理项目专题图的图层。重要代码如下:
var qTask = new QueryTask({
url:"http://192.168.222.52:6080/arcgis/rest/services/治理项目/FeatureServer/0";});
②设置查询条件
对查询要素的参数进行设置,设置返回要素的空间地理位置;指定要查询图层的空间参考坐标系,该坐标系应与专题图使用的坐标系一致;设置输出显示要素的所有属性;最后根据查询图层中要素的属性内容进行查询,用户也可以自定义输入内容进行查询。
③执行渲染函数获得查询结果
系统根据输入的查询条件开始查询,若图层中不存在符合条件的要素,则需重新输入查询条件;若存在,系统将调用tsymbol渲染函数对查询到的要素进行渲染。在系统治理项目专题图中,各煤矿工业广场是一个点要素,河流和路面是线要素,塌陷地地类和塌陷地项目则是各个面要素,在编码时分别使用SimpleMarker,SimpleLine,SimpleFill来表示对应的要素类型,除此之外,对要素的边框样式进行设置以便区分相邻的要素。这样也就实现了查询结果的高亮显示,重要代码如下:
function getResults(response) {
Var peakResults = response.features.map(fun-ction(feature) {
var tsymbol = {
type: "simple-fill",color: [ 100,100, 204,1],
style: "solid",outline: {color: "red",width: 3} };
feature.symbol = tsymbol;
return feature; });
④執行定位函数
查询结果被渲染成指定的样式,同时在专题图上方返回一个FeatureSet集信息窗口,包含了每个符合查询条件的地理要素的名称属性。用户可以点击FeatureSet集中名称选择相应的塌陷地要素,此时系统执行view.goTo定位函数,函数设置location属性把FeatureSet集中的地理要素与其地理位置绑定在一起,专题图上将定位到该要素的地理位置并显示要素的属性信息。重要代码如下:
view.goTo(peakResults).then(function() {
view.popup.open({
features: peakResults,
location:peakResults.geometry,
updateLocationEnabled:true}); });
3 查询功能的应用
3.1 选择查询
塌陷地综合治理系统中,专题图上分布着以要素点为标志的煤矿工业广场和以要素面为标志的塌陷地地块,各个要素中存储了实际地物的属性信息。在日常的管理使用中,用户需要实时查看矿井信息,煤矿的地类分布信息和煤矿项目进度等信息,以便及时的更新现有的数据,有序的分配下一步的工作任务。
如图3所示,在客户端系统专题图上鼠标单击选择煤矿要素,煤矿要素高亮显示并弹出弹框,系统后台数据库请求煤矿要素的属性数据,在弹框中显示了煤矿要素的名称,煤矿要素的累计塌陷面积、减产面积和绝产面积等属性信息。这种方式可以方便、直观、灵活地完成对各种地理要素的查询。
3.2 条件查询
比较分析各种不同的要素得知,煤矿的项目要素比较分散,项目状态更新的速度也比较快,用户经常会对项目的信息进行查看与修改,这就要求系统在使用时应可以准确、快速的找到用户所想看到的项目要素,及时的对数据进行操作。
用户通过鼠标点击界面上方查询定位按钮,在
专题图左下方弹出查询框,首先选择要查询的塌陷地要素的类别,选择下拉框可以自定义选择,第二步选择查询内容,当选定塌陷地要素类别后,查询内容也随之显示相应的塌陷地要素的属性名称,点击查询按钮开始查询并定位查询结果。
如图4所示,系统中选择对塌陷地项目专题图图层进行查询,把要查询的类别设置为治理模式,查询的内容设为光伏占地,点击查询按钮。系统将高亮显示符合要求的所有要素,并返回符合要求的所有要素的名称列表。点击列表中的每个要素名称专题图会自动定位到对应的要素位置。
4 结语
本文对塌陷地综合治理系统的查询功能进行了深入研究,通过调用ArcGIS API for JavaScript提供的类接口,使用QueryTask类在系统中设计并实现了选择查询和条件查询功能。使系统更加灵活,方便,准确的查询得到要素的空间数据和属性数据,提高了用户的工作效率。在实际应用中一些查询功能还非常有限,需要进一步完善改进。ArcGIS API for JavaScript提供的查询类具有良好的扩展性,可以进行更深层次的开发,也为以后实现更复杂的功能提供了便利。
参考文献
[1] 陈燕. 塌陷地的治理方法探讨与分析[J]. 中小企业管理与科技, 2016(07): 59-60.
[2] 李虎. 基于WebGIS的公共自行车信息服务查询系统研究[D]. 西安: 长安大学地图制图学与地理信息工程学院, 2014.
[3] 邓基伟, 闫丽娟. 地理信息系统综述[J]. 科技创新与应用, 2019(20): 61-62.
[4] 周敏, 王红春等. 基于ArcGIS API for JavaScript的森林抚育成效监测专题图研究[J]. 测绘与空间地理信息, 2018, 41(1): 26-29.
[5] 胡琳. 基于WebGIS的多源空间数据资料服务系统设计与实现[D]. 北京: 中国地质大学计算机科学与工程学院, 2018.
[6] 杨捷. 基于ArcGIS_for_Flex_API的GIS查询系统关键性技术研究[D]. 昆明: 云南大学软件学院, 2010.
[7] 吴信才, 万波, 吴亮. 基于JavaScript的WebGIS开发[M]. 北京: 电子工业出版社, 2013: 57-59.
[8] 张现军, 陈甫. 基于WebGIS的地下管网在线编辑系统的实现[J]. 城市勘测, 2018(2): 75-78.
[9] 倪云龙, 杨鲁. 地理信息系统中测量数据的管理探究[J]. 山西建筑, 2019, 45(04): 212-213.
[10] 张腾. 基于基站的GIS系统及其应用的研究与实现[D]. 成都: 电子科技大学计算机科学与工程学院, 2016.
[11] 赵沛. ArcGIS_API_For_JavaScript开发技术研究[D]. 大连: 辽宁师范大学地理科学学院, 2015.
[12] 杨泽云. 基于ArcGIS Server的网络地图服务系统设计与实现[J]. 测绘工程, 2015, 24(10): 41-42.