APP下载

开源地理信息网络服务中异步数据处理性能优化研究与实现

2016-12-15陈月娟

测绘通报 2016年9期
关键词:网络服务空间数据开源

陈月娟,张 锦

(1. 太原理工大学矿业工程学院,山西 太原 030024; 2. 内蒙古工业大学矿业学院,内蒙古 呼和浩特 010051)

开源地理信息网络服务中异步数据处理性能优化研究与实现

陈月娟1,2,张 锦1

(1. 太原理工大学矿业工程学院,山西 太原 030024; 2. 内蒙古工业大学矿业学院,内蒙古 呼和浩特 010051)

针对地理信息网络服务数据交互中存在的问题,利用AJAX网页开发技术异步处理的特点,采用轻量级JavaScript库jQuery,提高开源地理信息服务GeoServer和地理信息数据访问JavaScript库OpenLayers处理数据过程中的传输效率;通过某市路网更新、地名查询等服务系统,进一步验证AJAX技术在开源地理信息网络服务中的有效性,可改善地理信息服务中用户的交互,提高应用性能,加快访问速度。

开源地理信息网络服务;GeoServer;OpenLayers;AJAX;jQuery

地理信息网络服务[1]是通过互联网对地理空间数据进行发布和应用,以实现空间数据的共享和互操作,主要是进行空间数据发布、空间查询与检索、空间模型服务等。

开源地理信息网络服务采用GeoServer发布地图数据服务,由于GeoServer是纯Java的,因此更适合于复杂的环境要求,而且基于本身的开源特性,开发人员可以基于GeoServer灵活实现特定的目标要求,而这些都是商业GIS组件所缺乏的。因此本文采用开源软件GeoServer和OpenLayers实现基于天地图的某市路网发布与查询、更新等功能。采用此方式在服务传输处理过程中,尤其是在大数据环境下,服务器端的大量地理信息图形图像数据处理传输到客户端过程中会造成传输过程中的数据延迟甚至网络瘫痪等严重问题;引入AJAX异步处理技术,可以有效地解决上述问题。同时,针对查询处理过程中的技术特点,采用jQuery轻量级JavaScript库实现。

一、关键技术分析

1. 开源地理信息网络服务—GeoServer、OpenLayers

GeoServer是一个功能齐全[2],遵循OGC[3-5]开放标准的开源WFS和WMS服务器,利用GeoServer可以把空间矢量数据通过OGC WMS规范作为maps/images来发布,也可以直接将实际的数据利用OGC的WFS规范实现,通过OGC的WFS-T,GeoServer同时也提供了修改、删除和新增等更新功能。GeoServer支持的数据格式非常广泛,包括商业、开源的数据库,如PostGIS、Shapefile、ArcSDE、Oracle、VPF、MySQL、MapInfo等;同时支持上百种投影;能够将网络地图输出为JPEG、GIF、PNG、SVG、KML等格式,能够运行在任何基于J2EE/Servlet的容器之上。本文采用开源服务器Apache Tomcat作为GeoServer容器。

OpenLayers是一个专门为Web GIS客户端开发提供的JavaScript类库包,用于实现标准格式发布的地图数据访问,通过标准规范(如OGC WMS及WFS规范)进行访问GeoServer发布的空间数据并进行交互。OpenLayers采用面向对象方式开发,通过使用Prototype.js和Rico中的一些组件组成OpenLayers.js,使其作为客户端不再受浏览器的限制,可扩展性更强[4]。

在OpenLayers的基础上,以天地图服务和GeoServer地图服务为例构建地理信息网络服务,采用AJAX技术,应用jQuery实现具体的道路网及地名查询定位的浏览平台。

2. jQuery与AJAX

AJAX(asynchronous JavaScript and XML)[5]是基于XML的异步JavaScript技术,可以在不刷新整个浏览器页面的前提下实现局部的页面刷新功能,主要解决用户页面交互过程较多,频繁读取数据造成的页面压力问题;通过AJAX引擎,使得用户操作与服务器响应异步化,无需所有的用户请求都提交给服务器,有些AJAX可以自行处理的不必提交给服务器,有更新数据时才需向服务器提交请求。这样,给用户带来的感觉是所有请求都能很快地得到响应,没有页面重新加载,如白屏等待。

AJAX主要通过XmlHttpRequest对象进行以上操作,使页面中的脚本可以在不刷新页面的前提下直接与服务器通信。

在网络服务程序开发尤其是地理信息网络服务开发与应用过程中,实现高效、快捷、交互性能良好的开发方式是业界努力的方向。jQuery[13]是轻量级的JavaScript库,兼容各种浏览器,有助于简化JavaScript及AJAX编程[6]。引入jQuery后,简化了开发人员的工作,并且脚本代码与页面代码分离,便于维护。

二、AJAX与jQuery在开源地理信息网络服务的应用技术框架及实现

1. 地理信息网络服务技术框架

根据上文的描述,绘制出整个应用实例的技术框架图。本文采用MVC(model view controller,模型-视图-控制器)方式设计并实现该应用实例。

图1为本实例所采用的基本技术架构体系。

图1 地理信息网络服务技术框架

2. 原型系统的开发与实现

本系统主要是通过在线调用天地图与笔者发布服务结合,完成整个地理信息服务过程。

(1) 矢量数据入库

使用PostgreSQL数据库中的支持空间数据的PostGIS来储存空间数据,将矢量数据中的点、线、面进行存储。

(2) 矢量数据发布服务

由于GeoServer提供了满足本例要求的OGC WMS、WFS服务等标准服务体系,因此采用开源服务器GeoServer[14]读取PostGIS中的矢量数据进行服务发布;发布的过程中需要注意的是包括图层样式的建立与选择、坐标系的选择,这里采用WGS-84坐标系统。

原始的PostGIS数据库中的矢量数据不存在样式的使用,为使用户更加清晰形象地得到地理信息服务,需要进行STYLE的设计,即矢量数据的样式。

(3) OpenLayers访问地图服务

由上节可知,GeoServer支持OGC的WMS、WFS,实现空间数据的可视化和查询编辑;OpenLayers经由服务层的WMS进行调用GeoServer发布的矢量数据服务并进行显示;由WFS[15]提供的要素服务(WFS包括5个操作:GetCapabilites、DescribeFeatureType、GetFeature、Transaction、LockFeature)中的基本操作GetFeature获取要素实例,完成查询矢量数据要素,完成本例中查询及定位路网的操作。

(4) 查 询

根据第二节的说明,采用AJAX快速动态网页技术实现数据的异步传输完成服务层与应用层的交互访问,为进一步加快访问速度,使用jQuery实现查询地名及路网操作。AJAX的具体实现步骤如下:

1) Web表单获取数据;

var inputing=document.getElementById("datetime");

2) 建立XmlHttpRequest;

var xmlhttp;

if (window.XMLHttpRequest)

{∥code for IE7+, Firefox, Chrome, Opera, Safari

xmlhttp=new XMLHttpRequest();

}

else {∥code for IE6, IE5

xmlhttp=new ActiveXobject("Microsoft.XMLHTTP");}

3) 根据XmlHttpRequest中的open方法来确定发送的请求方式和URL,以及是否同步执行;

XmlHttp.open("POST",TAIYUANURL,true);

4) 设置响应接受后运行操作函数;

var TAIYUANURL="http:∥localhost:8080......soutputFormat=application/ison";

∥具体处理过程

});

5) 用XmlHttpRequest中的send方法来发送请求。

xmlhttp.open("POST",TAIYUANURL,ture);

xmlhttp.send();

步骤4)为AJAX引擎响应后的具体查询处理过程,需要注意的是,WFS操作GetFeature返回的数据格式采用GeoJSON而不是XML格式。

在WebGIS中,传统的页面查询方式需通过OGC的WMS或WFS返回XML文档,但是XML因为自身格式的限制,需要进行复杂的DOM解析,并且也带来一定的信息冗余;JSON[10]为Web开发人员提供了一种轻量级的数据交换格式,GeoJSON[11]是基于此的一种用来对地理要素进行编码的新的数据格式,由key/value组成,适合于地理信息网络服务中的页面传输。高版本的GeoServer已经可以支持WFS返回格式为GeoJSON格式,标准的GeoJSON为key/value形式,本例返回的GeoJSON格式如图2所示。

图2 WFS要素服务返回GeoJSON数据

从图2中可以看出,数据形式简单,减少了解析过程的复杂度,使用jQuery使代码更加简洁。

① 查 询

查询格式如下:

s.getJSON(TAIYUANURL,function(data){

var found=false;

var markers=new OpenLayers.Layer.Markers("Markers");

map.addLayer(markers);

var sx;

var sy;

∥具体处理代码

}

② 定 位

定位功能是完成用户点击发布的矢量数据,该矢量数据的详细信息进行页面显示,此功能主要涉及调用WMS服务,格式如下:

S(′#selectedDatadiv′).show();

S(′#selecdtedDatadiv′).parent(S("#map_e"));

document.getElementById(′nodelist′).innerHTML=response.responseText;

document.getElementById(′selectedlayers′).innerHTML="";

document.getElementById(′layersdata′).innerHTML=′′;

∥具体代码

(5) 在线调用天地图

所有以上发布的矢量数据全部基于天地图,本文采用Java Servlet结合OpenLayers API调用天地图服务。

Java Servlet是用Java编写的服务端程序[8]。Java Servlet具有动态扩展服务的能力,并采用请求—响应模式提供Web服务。实例主要通过Java Servlet实现后台调用天地图服务,即首先在服务器端建立一个框架,通过客户端OpenLayers提出瓦片调用请求,此时,服务器将请求的信息传递给Java Servlet并等待Servlet作出响应,将结果返回到客户端,最终在OpenLayers客户端进行显示,完成调用天地图的工作。

3. 系统的实现

本文主要实现了基于天地图的某市路网、地名信息查询及定位功能。图3为本实例系统实现界面。

图3 基于天地图的某市路网、地名系统查询定位系统

进行地名搜索时,图4所示为页面响应处理过程时间序列图,下面的条状时间分别为处理过程中关键步骤的时间轴,从图中可以看出整个过程的页面响应时间<3500 ms,证明采用AJAX技术处理异步数据能大大提高运行效率,进而优化了整个系统的性能。

图4 页面查询响应时间

三、结束语

开源地理信息网络服务采用GeoServer发布地图数据服务,可以方便定制自己的服务需求,但是由于地理信息数据量大,在查询等处理过程中存在瓶颈问题。本文采用Ajax技术应用于开源地理信息网络服务,通过jQuery应用于OpenLayers实现了空间数据的浏览、查询及分析:市区路网、地名的查询,使用户即使请求大数据量的空间信息服务数据时,也没有页面过度延迟的体会,可以较流畅地与页面进行交互,表明采用本方案有效地提高了地理信息网路服务传输效率。

[1] 李德仁,眭海刚,单杰.论地理国情监测的技术支撑[J].武汉大学学报(信息科学版),2012,37(5):505-513.

[2] 赵艳,唐诚,张华,等.基于GeoServer海底数据RIA WebGIS系统设计与建立[J]. 环境科学与技术,2014,37(120):507-510.

[3] SHELESTOV A Y,KRAVCHENKO A N,SKAKUN S V,et al.Geospatial Information System for Agricultural Monitoring [J].Cybernetics and Systems Analysis, 2013,49(1):123-132.

[4] 王丽,谢刚生,肖慧琴.基于开源技术构建房产 GIS 图形管理系统[J].测绘通报,2009(12):57-59.

[5] 苗立志,胥婕,周亚,等. 应用描述词汇约简的OGC地理信息服务演绎推理[J].测绘学报,2015,44(9):1029-1035.

[6] 江源通,苏会卫,陆琳.基于OpenLayers的应急物流决策支持平台构建及应用[J].网络与信息化,2015,2(84):275-277.

[7] 游丽贞,郭宇春,李纯喜.Ajax引擎的原理和应用[J].微计算机信息,2006,22(23):205- 207.

[8] 邓立苗,杨信廷.农产品安全生产管理系统新框架——Ajax+jQuery[J].农机化研究,2011(6):125-128.

[9] 张大鹏,张锦,郭敏泰,等.开源WebGIS 软件应用开发技术和方法研究[J].测绘科学,2011,36(5):193-196.

[10] 张晓芳,李国徽,兰小玲,等.Java Servlet模式的WEBGIS性能优化研究[J].计算机应用研究,2011,28(11):4222-4224.

[11] 孙明,王硕.基于JSON的Ajax数据通信快速算法 [J].计算机应用与软件,2015,32(1): 263-266.

[12] 邬群勇,唐曙光,黄君毅.基于GeoJSON的突发性大气污染模拟灾情移动可视化方法[J].自然灾害学报,2015,24(2):166-171.

[13] 李志秀,张军,陈光,等.JQuery Ajax异步处理JSON数据在项目管理系统中的应用[J].云南大学学报,2011,33(S2):247-250.

[14] 张令奎,张小静,高凯.开源地理信息网络服务平台构建[J].测绘与空间地理信息,2015,38(1):181-184.

[15] 张建博,刘纪平,刘恒飞,等.利用本体的WFS要素语义检索研究[J].测绘与空间地理信息,2015,37(5):520-524.

TheOptimizationandRealizationofProcessingofAsynchronousDataintheOpen-sourceGEO-InformationWebService

CHEN Yuejuan,ZHANG Jin

陈月娟,张锦.开源地理信息网络服务中异步数据处理性能优化研究与实现[J].测绘通报,2016(9):35-37.

10.13474/j.cnki.11-2246.2016.0287.

P208

B

0494-0911(2016)09-0035-03

2015-11-27;

2016-03-02

国家自然科学基金(41371373);国家重点研发计划项目(2016YFB0502601)

陈月娟(1983—),女,博士生,讲师,主要研究方向为地理信息网络服务。E-mail:hellochenyj@163.com

张 锦

猜你喜欢

网络服务空间数据开源
网络服务合同的法律问题研究
基于网络服务者在侵权法中的应用分析
GIS空间数据与地图制图融合技术
五毛钱能买多少头牛
2019开源杰出贡献奖
网络服务行为的可罚性
大家说:开源、人工智能及创新
开源中国开源世界高峰论坛圆桌会议纵论开源与互联网+创新2.0
网格化存储的几项关键技术分析