APP下载

基于A r c G I S A P I f o r J a v a S c r i p t的电梯标注展示与性能优化探讨

2017-03-28檀昊张贞贞詹毅帆

中国设备工程 2017年4期
关键词:数字地图级别页面

檀昊,张贞贞,詹毅帆

(武汉市特种设备监督检验所,湖北 武汉 4 3 0 0 4 0)

基于A r c G I S A P I f o r J a v a S c r i p t的电梯标注展示与性能优化探讨

檀昊,张贞贞,詹毅帆

(武汉市特种设备监督检验所,湖北 武汉 4 3 0 0 4 0)

电梯地理信息系统开发核心内容是电梯位置的标注和信息的展示,其需求一般是精确定位,展示较全面的设备信息,同时兼顾系统运行效率,有较高的灵活性和可扩展性。作为武汉市“智慧电梯”项目的重要组成部分,武汉市电梯地理信息系统的开发在电梯展示方案的选择、系统性能优化等方面做了较多探究,建立了具有特色的电梯地理信息系统,为电梯的信息查询、检验调度、安全监管、应急救援等提供了地理信息基础平台。

电梯;地理信息系统;标注展示

开发电梯地理信息系统(G I S)是当前特种设备信息化发展的一大热点。该系统是基于电梯数据库系统和信息网络,以数字地图为背景,以电梯设备数据和地理环境数据为运行对象的计算机集成系统。它可将电梯各类参数信息和空间位置在数字地图背景下进行统一管理,以直观的形式在数字地图上展现,同时辅以安全监控和风险评估数据,服务于电梯的使用管理、维护保养、检验检测、安全监察情况与事故救援等。

作为系统性解决方案,We b G I S是当前地理信息系统实现的最佳选择。在众多的We b G I S平台中,E S RI公司的A r c G I S S e r v e r是首选的We b G I S开发平台。A r c G I S S e r v e r使地图服务管理更人性化,提供了基于RE S T(Re p r e s e n t a t i o n a l S t a t e T r a n s f e r,转移表述性状况)的服务器端和大量的分析组件。A r c G I S S e r v e r开发平台的主要开发模式之一是A r c G I S A P I,这是基于RE S T服务器端接口开发模式,其最流行的开发技术毫无疑问是A r c G I S A P I f o r J a v a S c r i p t。随着RE S T服务应用的快速发展,A r c G I S A P I f o r J a v a S c r i p t将会被更广泛地应用。作为We b G I S客户端典型的开发技术,A r c G I S A P I f o r J a v a S c r i p t使得很多工作可以在客户端完成,不需要通过服务器支持,因此减轻了服务器的数据处理和网路传输负担,系统响应更快、界面更美观、功能更人性化,大大提高了用户体验。

1 A r c G I S A P I f o r J a v a S c r i p t介绍

J a v a S c r i p t的运行环境主要依靠浏览器的支持,而不是本机的开发环境,只要本机的浏览器支持J a v a S c r i p t,A r c G I S A P I f o r J a v a S c r i p便能发挥效用,因此其部署门槛极低,易于普及。A r c G I S A P I f o r J a v a S c r i p t 是基于D o j o框架,通过J a v a S c r i p t脚本语言调用 A r c G I S S e r v e r RE S T A P I 中RE S T接口的开发技术。可以快速高效的创建交互式的地图应用程序。通过调用A r c G I S S e r v e r的RE S T 接口并当其操作符合RE S T风格时,它能实现空间数据发布平台对空间数据分析处理的各种功能,以及将A r c G I S S e r v e r的空间地理数据和 G e o p r o c e s s i n g服务嵌入We b 应用中,获得专业的空间信息分析结果,同时它还能调用多个A r c G I S S e r v e r的服务,实现多个A r c G I S S e r v e r 服务相互融合交互应用。

2 电梯展示方案选择

武汉市电梯地理信息系统选用武汉市政务地图作为基础地图,此地图测绘精准,基础地理信息全面。特别是该地图支持街道级行政区划单独展示和统计分析,有助于网格化精准监管。以此为基础,需要将电梯位置信息展示在地图之上,有两种解决方案。一种是直接采用数字地图的开发服务,将电梯图层加入到地图上直接显示,第二种是将服务器中的电梯经纬度和属性等数据提取到本地数据库中,在加载电梯展示页面时,从本地数据库中读取电梯相关数据,利用A r c G I S绘制到数字地图上。下面对这两种方案进行详细的分析比较:

第一种方案采用已有服务,能够减少数据库的数据存储量,但灵活性和扩展性都很差。首先只能采用单一的一次性加载方式,一次将所有电梯标注都绘制在地图之上,对网络速度要求高,在网络状况差的情况下,容易产生标注无法展示的情况。标注本身的自定义方式有限,无法随需求改变位置、标记图片等标注属性。电梯数量逐年增加,若地图未更新,则无法显示新增设备,扩展性差。

第二种方案则有着很高的灵活性和扩展性。首先将已有的电梯数据存入数据库中,可采用异步分页的加载方式将电梯绘制到底图上;同时标注的定制性强,能够自定义图标,不同状态、不同种类的电梯采用不同的图标,用户能够清晰分辨;从本地数据库读取电梯信息能够轻松加入不同的查询条件,可实现灵活展示。

第二种方案的实施分为数据存储和数据展示两大部分。在数据存储中,需要用到a r c g i s f o r j a v a s c r i p t中的特征图层(f e a t u r e L a y e r)的相关功能,即首先将电梯的地图服务以特征图层的形式进行加载,调用其中的查询A P I(Qu e r y),将所有电梯数据查询出来并传入服务器,在服务器将电梯数据插入服务器中,完成电梯数据从服务到数据库的存储。在数据展示中则主要运用了客户端图层(G r a p h i c s L a y e r),运用该图层能够将数据库中的电梯数据以符号标注的形式展现在客户端(即浏览器)上,与服务相分离;应用G r a p h i c符号对电梯进行标注,根据电梯的经纬度对G r a p h i c进行定位,通过电梯的状态对G r a p h i c进行色彩渲染,如用绿色表示正常状态,红色代表超期状态等;将电梯的基本信息通过i n f o T e mp l a t e展示在标注的信息面板上,方便即时查看电梯信息。流程如图1所示。

图1 电梯标注展示的工作流程

由此可见,第二种方案优势明显,是当前首选的电梯展示方案。

3 性能优化

由于电梯数量庞大,如果一次性显示在页面上,不仅耗时过长,易造成浏览器卡顿,同时电梯标注会产生重叠、拥挤的现象。不仅显示不直观,同时给用户的点选操作造成困难。因此考虑减少一次性加载的电梯标注数量,一方面减少数据库的读取压力和浏览器的绘制压力,另一方面加强了标注展示的可读性。这里采用分级别聚类的思想,当地图缩放到特定级别时,对电梯进行聚类,具体方案为:将电梯展示分为三级(街道级,使用单位级和单个电梯级)。运用A r c G I S中的ma p对象读取地图当时的缩放等级,将此等级与规定好的电梯级别相比较,确定当前缩放等级属于街道、使用单位还是单个电梯中的某一级别,并将标识传入服务器,服务器通过标识从数据库中分别读取不同的位置信息,如传入的级别为使用单位级别,则读取单位的经纬度及该单位下的电梯数量传到页面,在浏览器中展示出单位标注。在缩放地图时,监听地图的缩放事件,当缩放结束时,获取当时地图的缩放等级,判断该缩放等级是否在当前标注级别的缩放等级范围内,若不属于当前标注级别,则清空地图标注,应用A J A X技术从服务器请求相应数据,对地图重新标注。缩放到不同标注级别的电梯标注展示效果如图2~图4所示。

在单个电梯级别,由于电梯数量接近于十万,因此一次性读取耗时在一分钟左右,用户体验极差,因此采用分批加载的方式,在加载完地图底图后,用A J A X向后台异步请求电梯数据,并传入当前分页编号,当服务器读取数据时,首先比较当前页号与总页数,若当前页小于总页数,则继续读取下一页数据,而页面同时对上一页数据进行绘制;若当前页号大于总页数,则停止读取数据,并向页面传一个标识,页面获取标识后停止向服务器请求,数据加载完毕。部分代码如下:

$.a j a x({d a t a : {当前页号},s u c c e s s : f u n c t i o n(d a t a){//绘制服务器返回数据。i f(数据标识!= 最后一页){//请求下一页数据}}});

在电梯详情的加载上,首先采用的是一次性将电梯所有数据读取的方法,但这样做数据量过大,在数据库中读取时间很长,影响整体性能。因此将数据分为两部分进行读取,第一次读取标注展示所需的基本数据,包括标注定位所需的经纬度,下一步读取数据所需的电梯唯一编号,这样在读取第一次数据后能够将电梯标注在地图上,但没有读取电梯的详细信息数据。当用户点击标注时,首先通过监听标注(G r a p h i c)的点击事件,获取当前标注的唯一编号,并将该编号传入服务器读取标注详细信息,展现在标注面板(i n f o T e mp l a t e)上。部分代码如下:

d o j o.c o n n e c t(g r a p h i c L a y e r, "o n Cl i c k", f u n c t i o n(e v e n t) {//标注点击事件i f(地图级别标识 == 单个电梯级别标识){$.a j a x({s u c c e s s :f u n c t i o n(d a t a){//读取电梯基本信息}});}e l s e i f(地图级别标识 == 单位级别标识){$.a j a x({s u c c e s s : f u n c t i o n(d a t a){//读取单位信息和单位下的电梯列表}});}e l s e{$.a j a x({s u c c e s s : f u n c t i o n(d a t a){//读取街道下的电梯列表}});}});

这样处理能够大幅度减少数据读取量,减少服务器读取压力,同时也减轻了浏览器压力,加快了浏览器的响应速度。在第一步数据读取时,尽管只读取了电梯展示所需的基础数据,但数据量依然很大,这里采用异步分页的方式进行电梯数据的读取和电梯标注的绘制。在页面加载后,首先对底图进行加载,底图加载完毕后用异步的方法进行电梯数据的读取,每次读取一万条数据,在数据返回页面时,加入一个标记位来传递是否是最后一页数据。前台页面在读取数据的同时进行标注的绘制,绘制完成后对标记位进行判断,如果不是最后一页数据,则继续进行读取操作,读取下一万条数据并进行绘制;如果是最后一页数据,则终止数据读取,完成标注的绘制。这样能够以最快的速度进行标注展示,降低了单次数据读取压力,提高了程序性能。

图2 缩放到街道级别

图3 缩放到使用单位级别

图4 缩放到单个电梯级别

4 结语

电梯地理信息系统开发的重点和难点就是电梯在数字地图上的可视化展示及运行性能的优化。本文采用A r c G I S A P I f o r J a v a S c r i p t作为主要开发工具,选用下载服务数据的形式对电梯数据进行存储,同时用分级、分页等多种方式对电梯数据的读取及绘制进行优化,最终将电梯快速、准确的标注到数字地图上。

[1]杜栋.基于S u p e r Ma p I S J a v a的特种设备安全监察系统设计与实现[D].浙江大学,2 0 0 7.

[2]尹静秋,邱新法,何永健.基于We b G I S的钢铁物流信息系统分析与设计[J].物流科技,2 0 1 0(0 9):1 8~2 1.

[3]房体盈.基于J a v a S c r i p t技术的We b G I S设计与实现[D].大连理工大学,2 0 0 8.

[4]赵沛.A r c G I S A P I F o r J a v a S c r i p t开发技术研究[D].辽宁师范大学,2 0 1 5.

[5]A r c G I S A P I f o r J a v a S c r i p t开发教程[S].E S RI(中国)信息技术有限公司,2 0 1 3(3).

P 2 0 8

A

1 6 7 1-0 7 1 1(2 0 1 7)0 2(下)-0 0 6 9-0 3

猜你喜欢

数字地图级别页面
刷新生活的页面
答案
让Word同时拥有横向页和纵向页
一年增加700多万销量!看竣程生物如何做到千万级别
数字地图在绿化市容行业中的应用分析
级别分明
迈向UHD HDR的“水晶” 十万元级别的SIM2 CRYSTAL4 UHD
新年导购手册之两万元以下级别好物推荐
对车辆自定位特征的评估
一种用于辅助驾驶的传感器融合数字地图系统