APP下载

基于GeoServer的等值面图服务实现

2015-09-16陈宁江

现代计算机 2015年12期
关键词:等值插值浏览器

罗 泉,陈宁江

基于GeoServer的等值面图服务实现

罗泉,陈宁江

(广西大学计算机与电子信息学院,南宁530004)

根据OGC WMS标准,对GeoServer的WMS服务进行扩展,实现基于IDW算法的动态生成等值面功能,并封装成WMS服务,使用户可以从网络进行调用和浏览等值面图。应用实例表明,具有实时插值,生成等值面图像,动态与地图数据叠加等特点,是对GeoServer软件的有益补充。

GeoServer;Web Map Service;等值面

国家科技支撑计划课题(No.2015BAH55F02)、广西高校优秀人才资助计划(No.[2011]40)、广西科学研究与技术开发计划项目(桂科软13180015)

0 引言

等值面的生成是GIS空间分析中常用的方法。文献[1]利用商业软件ArcGIS的功能,实现了降雨量等值面的绘制,功能满足需求但方案的实施成本高。文献[2]提出基于OGC WPS(Web Processing Service)标准[3]实现常用空间分析功能,并利用免费开源的GeoServer实现了缓冲区分析功能。然而,依据WPS标准,经过空间分析后生成的栅格图像以超链接的形式返回,无法供浏览器直接与其他地图数据结合显示。在实际应用中,等值面图,如温度分布图、降水量分布图等,都需要与实际地图影像进行叠加,以便下一步的分析。使用WPS标准生成的栅格图像,不便直接在地图上进行定位并与地图影像进行叠加。

针对以上问题,本文依据OGC(Open GIS Consortium)WMS(Web Map Service)标准,使用IDW插值算法,设计并实现动态生成等值面的功能,制作成GeoServer软件插件,封装成WMS服务,供用户通过网络进行调用。

1 工作背景

为解决各种异构平台中的GIS空间数据共享问题,开放地理空间信息联盟OGC推出了一系列基于WebService技术的空间数据交互操作标准,如WMS、WFS(Web Feature Service)、WCS(Web Coverage Service)、WPS等。WMS即网络地图服务,提供了一个标准统一的数据访问接口,定义了客户端通过HTTP协议从地图服务器获取地图图像的标准规范。WMS服务既可动态生成地图,也可直接返回静态地图数据。这些地图既可以使用PNG、JPEG等图像格式来呈现,也可以使用KML、SVG等矢量图形来呈现。一个基本的WMS服务包括三个基础操作:GetCapabilities、GetMap、Get-FeatureInfo。GetCapabilities返回服务的元数据信息,元数据包括服务支持的操作、参数以及有效的图层;GetMap返回指定区域的地图图像;GetFeatureInfo则返回用户指定的地理要素信息。客户端可同时请求多个WMS服务,并将返回的地图图像叠加,在一个视图内显示。

GeoServer是OGC标准的一个J2EE实现[4],采用Spring Web MVC开源框架,所有的WMS请求均由Spring Web MVC的核心控制类DispatcherServlet进行派发,转到GeoServer的核心类ows.Dispatcher中处理。下图的UML时序图描述是一个默认的WMS的GetMap请求响应过程:

(1)浏览器利用HTTP协议,发起GetMap请求。

(2)ows.Dispatcher接收到请求后,调用wms.DefaultWebMapService的GetMap函数进行处理,并最终获得一个WebMap对象,该对象封装了用户所请求的地图空间数据。

(3)ows.Dispatche选用合适的策略,调用ows.Response的Write函数,将WebMap对象渲染成PNG或JPEG等格式的图片,返回给浏览器显示。

wms.DefaultWebMapService由GeoServer核心根据服务名称,利用反射技术动态加载,通过GetMap操作,向浏览器返回请求区域的地图图像。若实现等值面的动态生成、定位及显示,则需要依照WMS标准,实现GetMap操作,在GetMap中完成空间插值、图形渲染等功能。

图1 WMS GetMap请求响应UML时序图

2 等值面服务的设计与实现

等值面是以空间为定义域的连续函数的等位集,一个等值面里的每一个点,其数值是一样的,使用同样的颜色表示。单独的等值面图能表示数值的空间分布及空间变化趋势,连续的等值面图能表示数值的空间、时间内的分布及变化趋势,常用于水文、气象、勘探等行业中。生成等值面其难点在于插值算法,受空间多种因素的影响,同一个样本集采用不同的插值算法,其预测值与实测值的误差不同[5]。为提高插值的精度,需要事先对样本集进行分析以选择合适插值算法。本文使用IDW算法阐述基于GeoServer设计和实现等值面服务的过程。

等值面动态生成服务被设计成为一个通用的WMS服务,参数支持:INTERVALS(分级量值)、INTERVAL_COLORS(分级颜色)、INTERPOLATE(插值方法),实现WMS的三个基本操作,依赖于空间插值算法和渲染类,UML类图如下:

图2 等值面服务UML类图

等值面服务的核心在于GetMap操作,在GetMap中使用空间插值算法插值、分级,并使用渲染类将结果分级着色,渲染成PNG图像。为今后能支持更多的空间插值算法、方便扩展,在设计上采用了工厂模式,运用Spring框架的IoC(Inversion of Control控制反转)机制,可以做到在不修改原有源代码的情况下新增空间插值方法。同时,使用缓存类来缓存渲染的结果,在插值前判断缓存中是否有渲染结果,如果有则直接返回,如果没有则进行插值并渲染,利用空间来缩短响应时间。GetMap的伪代码片段如下:

public WebMap GetMap(GetMapRequest request)throws ServletException,

IOException{

String cachekey=getCacheKey(request);//根据输入参数来获取缓存的索引值

if(ResultCache.InCache(cachekey)){

return ResultCache.Get(cachekey);//缓存中有处理结果,可直接返回

}else{

//获取需要使用的插值算法名称

String iName=GetParam(request,”INTERPOLATE”);

//根据算法名称,获取插值算法对象实例

IInterpolate interpolator=InterpolateFactory.GetInterpolation(iName);

……

//执行插值操作

interpolateResult=interpolator.Interpolate(param1,param2,…);

……

//将插值结果渲染成图像并返回

Return Image.RenderImage(interpolateResult);

}

}

该服务根据浏览器提交参数,使用IDW(Inverse Distance Weighted,反距离权重插值)算法,对浏览器视图范围内的离散点进行插值、分级、着色,并返回PNG格式的地图图像,最后由浏览器完成地图的显示。

根据上述设计完成代码,实现服务程序。此外,还须依据GeoServer的二次开发要求,使用application-Context.xml文件,将该服务注册到GeoServer中:

〈bean id="contoursurfaceService"class="com.geoExtension.wms.ContoursurfaceService"〉

〈bean id="contoursurfaceDescriptor"class="org.geoserver. platform.Service"〉

〈constructor-arg index="0"value="contoursurface"/〉

〈constructor-arg index="1"ref="contoursurfaceService"/〉

〈constructor-arg index="2"value="1.1.1"/〉

〈constructor-arg index="3"〉

〈list〉

〈value〉GetCapabilities〈/value〉

〈value〉GetMap〈/value〉

〈value〉GetFeatureInfo〈/value〉

〈/list〉

〈/constructor-arg〉

〈/bean〉

该配置片段告诉GeoServer,等值面服务名为contoursurface,对应的类为com.geoExtension.wms.ContoursurfaceService,支持WMS 1.1.1,包含GetCapabilities、GetMap、GetFeatureInfo操作。最后,将编译的程序集打包为jar格式文件,拷贝到GeoServer的WEB-INFLib目录中,重启GeoServer,即完成了等值面动态生成服务的安装。

用户只需在浏览器地址栏中输入给定地址,即可调用等值面服务。GeoServer从地址中解析出所需信息,包括:请求的图层、请求的服务名、请求的操作,以及请求的区域坐标、投影等信息,并根据服务名查找对应的类,执行其中的GetMap函数。最后,GeoServer向浏览器响应请求区域内的等值面图形。流程如图3所示意。

图3 GeoServer加载、执行等值面服务流程

3 实验

为验证能否利用等值面服务生成等值面图像,验证该等值面图像能否和其他地图叠加显示,设计如下实验方案:

(1)使用PC作为服务器,配置为CPU 2.5GHz 4核,内存4G

(2)支撑软件为Win 7操作系统,Java 7运行库,Jetty 6.1,GeoServer 2.5

(3)选用800个离散点作为测试数据,包含坐标值和离散点值,以Shape文件格式存储,并导入GeoServer的新图层中,命名为sf:contours;

(4)根据离散数值的频数分布,将离散点值分级;

(5)浏览器端使用开源js框架OpenLayers请求等值面服务,获取相应图像并显示。

在实验中,使用了某地的日降雨量数据,依据数值的频数分布,将数据分为5级:1级[0~0.1]、2级[0.1~1]、3级[1~2]、4级[2~5]、5级[5~15],并为每个取值区间设置一种颜色。最后,用户使用OpenLayers调用等值面生成服务,OpenLayers获得等值面图像并显示。

图4为样本集在二维平面上的分布情况,每一个点代表一个样本的位置。从图中可以看到,样本并不是均匀分布,部分区域密集,而右上角区域、底部区域只有零星的几个样本。点击样本热点可以查看样本的数值,但无法获知图中任意空白区域的大概数值,无法根据样本集直观分析出数值变化趋势。

图5为等值面服务根据样本集的数值,在可视范围内使用IDW算法插值而动态生成的等值面图,图中的5种颜色代表5种取值区间,颜色由浅到深依次按低到高次序表示不同的样本值区间。根据该图像,可明显看出西北方向区域降雨量较小,东南方向区域降雨量较大。图6为等值面图和样本集地区的地形图实时叠加显示的效果。根据该图像,很直观看出该地区在当日的降雨量分布情况。

图4 样本集分布图

图5 等值面图

图6 等值面、地图叠加效果

通过实验可以看到,该等值面服务能够根据样本集的离散数据,以及用户的输入参数,动态生成等值面图像,并能实时与样本集所在地区的地形图叠加显示,直观地表现出区域内的数值变化趋势,已达到了最初的设计目标。

4 结语

随着计算机网络技术发展,WebGIS技术已普遍应用于人们生活中。GeoServer软件作为一个开源的J2EE应用,遵循OGC标准,支持插件式的二次开发,广泛应用于科学研究、小型的商业WebGIS应用中,是各类WebGIS解决方案中的一个廉价的选择。等值面是GIS应用中常用的空间分析技术,但GeoServer并未提供相关功能。本文针对此问题,根据GeoServer二次开发接口和WMS规范,设计并实现了一个等值面生成服务,供浏览器调用并显示。实验结果显示,该服务实现了预期的效果,是GeoServer软件的一个有益补充。

[1]任斌,吴可,陈洁.基于ArcGIS的降雨量等值面生成系统研究[J].信息技术,2013(9):125~128

[2]姜超,徐青,等.基于OGC WPS的GIS空间分析方法[J].测绘科学,2011,11,36(6):198~200

[3]OGC.OGC Standard[EB/OL].http://www.opengeospatial.org/standards/

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

[5]胡刚,赵刚,宋慧.不同插值方法对降水量空间不确定性的影响[J].济南大学学报(自然科学版),2012.10,26(4):428~432

[6]张凡,胡春阳,韩军.高性能互操作的OGC WMS系统的研究与实现[J].计算机应用研究,2010,27(5):1732~1736

GeoServer;Web Map Service;Contour Surface

Implementation of Contour Surface Service Based on GeoServer

LUO Quan,CHEN Ning-jiang

(School of Computer and Electronic Information,Guangxi University,Nanning 530004)

According to OGC WMS standards,extends the GeoServer WMS,and implements a GeoServer plugin which is used generating contour surface based on IDW algorithm and encapsulated into a WMS Service.Users can call the WMS Service from the network and browse the result.The experimental results show that the plug-in with real-time interpolation,it can produce the equivalent surface image,superimpose with map data dynamically.It is good for GeoServer software.

1007-1423(2015)12-0066-05

10.3969/j.issn.1007-1423.2015.12.015

罗泉(1979-),男,广西南宁人,在读硕士研究生,研究方向为软件工程、Web服务

陈宁江(1975-),男,广西南宁人,博士,教授,研究方向为软件工程、中间件、网络分布式计算

2015-02-26

2015-04-07

猜你喜欢

等值插值浏览器
异步电动机等值负载研究
微软发布新Edge浏览器预览版下载换装Chrome内核
反浏览器指纹追踪
基于Sinc插值与相关谱的纵横波速度比扫描方法
基于pade逼近的重心有理混合插值新方法
基于共同题非等组设计的等值结果评价标准研究综述
混合重叠网格插值方法的改进及应用
测验等值:新一轮高考改革的技术问题
基于混合并行的Kriging插值算法研究
电网多区域多端口参数等值方法及其应用