基于WebGIS的离散时序空间数据动态可视化研究
王轶1, 周迅1, 周伟1, 李飞2
1.中国国土资源航空物探遥感中心,北京 100083
2.河北省遥感中心,石家庄 050021

第一作者简介: 王轶(1972-),男,高级工程师,主要从事遥感与地理信息系统方面的应用与研究。E-mail:wangyi@agrs.cn

摘要

人类对地球的监测和模拟形成了大量的离散时序空间数据, 如何有效表达这些数据以便为相关部门提供分析和决策依据,是众多信息系统建设过程中遇到的难题之一。利用网络地理信息系统(WebGIS)平台,综合应用了OpenGL,Ajax和JavaScript等技术,实现了离散时序空间数据的解析、渲染和地理底图的快速一体化动态可视化。该技术方法具有通用性,可以通过网络平台广泛应用于各类离散时序空间数据的监控(如对环境污染扩散实测数据)与预警(对模型数据),为政府科学决策和应急响应提供依据。

关键词: WebGIS; 离散时序空间数据; 动态可视化; OpenGL
中图分类号:TP79 文献标志码:A 文章编号:1001-070X(2012)02-0143-05 doi: 10.6046/gtzyyg.2012.02.26
A Study of Dynamic Visualization of Discrete Spatial-temporal Data on WebGIS Platform
WANG Yi1, ZHOU Xun1, ZHOU Wei1, LI Fei2
1.China Aero Geophysical Survey & Remote Sensing Center for Land and Resources, Beijing 100083, China
2.Center of Hebei Remote Sensing, Shijiazhuang 050021, China
Abstract

Most earth observation and monitoring data are discrete spatial - temporal data of massive volumes, and the efficient management, analysis and visualization of these data for decision making support constitute a very challenging task in information system construction. This study combines the latest techniques, such as OpenGL, Ajax and JavaScript on a WebGIS platform to flexibly manage and display various discrete data with fast integrated dynamic mode. The technology developed can be widely applied to monitoring various spatial-temporal discrete data such as environmental pollution diffusion data and making forewarning so as to support emergency decision-making.

Keyword: WebGIS; discrete spatial-temporal data; dynamic visualization; OpenGL
0 引言

离散时序空间数据是指一组有序的、随时间变化且具有空间位置信息的数值序列, 数据基本表达形式为 “ X, Y, T, V” 。其中, XY对应地理横、纵坐标, T为时间参数, V表示离散点各参数数值。离散时序空间数据通常来自于观测点的监测数据或各类模型模拟的数据, 相邻数据具有相同的时间间隔。WebGIS是利用Internet技术来扩展和完善GIS的一项技术, 其核心是在GIS中嵌入HTTP标准的应用体系, 实现Internet环境下的空间信息管理和发布, 在有关地理要素的各类系统建设中有着广阔的应用前景。

利用WebGIS集成系统实现“ 监测/模拟” 结果动态可视化具有重要意义, 可以让更广泛的网络用户实时利用WebGIS系统原有数据资源、结合动态生成的“ 监测/模拟” 结果来进行分析和决策[1]。由于“ 监测/模拟” 结果数据的时空属性, 特别是时间属性对结果观测的重要意义, 该应用最佳可视化方式是使用时序动画, 方便用户直观地了解“ 监测/模拟” 结果的变化过程。目前, 国内在利用Google Earth平台提供的地理信息, 运用KML技术开展叠加本地动态时空数据的可视化研究方面进行了探索 [2, 3], 但在基于网络地理信息系统B/S技术框架下, 还很难实现服务器端离散时序空间数据动态生成和可视化应用。因此, 如何实时、快速地生成系列等值线(面), 并在WebGIS中提供给用户流畅、高效及动态的一体化动态可视化技术, 是众多系统建设过程中遇到的难题和挑战之一。

可视化展示的效果和直观程度直接影响用户体验和使用效果, 而平滑、连续的用户操作是系统实用化的关键点之一。这就需要对涉及的计算机图形图像学、网络地理信息系统以及计算机网页技术等领域的研究进展进行有机整合, 找出解决思路。本文综合应用了OpenGL, Ajax和JavaScript等技术, 在实现基于WebGIS框架下的离散时序空间数据快速一体化动态可视化方面进行了探索和实践。

1 技术方法

本文基于WebGIS平台中通用的ArcIMS体系结构框架, 对离散时序空间数据进行一体化动态可视化研究。总体结构设计分为地图服务器端、集成组件中间层和客户端使用层3个部分。其中, 地图服务器端负责通常的系列地理底图发布, 如遥感影像图、各种地理矢量图件等, 并接收客户端用户响应, 以及与集成组件中间层的通讯和数据交换; 集成组件中间层完成离散时序空间数据的加载、处理、渲染及输出等系列功能; 客户端使用层为综合可视化和用户操作界面。总体技术流程如图1所示。

图1 总体技术流程Fig.1 The overall technical flow chart

2 模块设计

模块设计主要包括等值面渲染组件、一体化动态可视化和投影变换3个主要模块的功能设计。

2.1 等值面渲染组件模块设计

本研究在VC++平台下使用OpenGL技术实现对离散时序空间数据的等值面渲染和输出, 并编译成DLL组件, 供ArcIMS服务器端进行功能调用。其功能模块包含离散空间数据网格化、数据加载、设备初始化、区域边界截取和颜色设置、多边形渲染以及图像和XML文件输出等。

2.1.1 离散空间数据网格化

将离散空间数据形成等值线(面), 首先需要对离散数据进行网格化处理。所谓网格化是指采用一定的插值方法, 将稀疏、不规则分布的数据插值加密为规则分布的数据[4]。一般是根据区域内离散点的分布与数量, 采用空间数据插值方法将离散数据转换为矩阵网格数据, 或采用空间数据剖分方法将离散数据转换为三角形网格数据。网格化的算法很多[5], 在对实际数据进行插值网格化时, 需要根据客观环境特征和数据本身的特点, 选取合适的方法进行相应的数据分析, 科学、合理地选择正确有效的插值方法。本文采用Delaunay三角形法[6, 7], 按“ 最大-最小角” 优化原则进行数据剖分处理。

2.1.2 数据加载

数据体的大小由离散点数量、时间频率和参数数量决定。为加快图形渲染的速度和效率, 本文使用如下动态数组方式, 即

m_Pointx=new double(m_PointDataNumber+1)m_Pointy=new double(m_PointDataNumber+1)m_Pointz=new float(m_PointDataNumber·m_FrameNumber+1)m_Net=new int(m_NetDataNumber×3+1)(1)

在内存中加载和保存实体数据。式中: m_Pointx保存所有离散点的投影x坐标; m_Pointy保存所有离散点的投影y坐标; m_PointDataNumber为网格点数量; m_FrameNumber为时间帧数; m_NetDataNumber为网格数量; m_Pointz保存所有离散点的数值, 该数值随着时间变化而变化, 因此该数组的长度为“ 网格点数量× 时间帧数” ; m_Net保存所有网格的结构, 本文采用三角网格结构, 因此需要在内存中预留“ 网格数量× 3” 的长度。需要说明的是, 由于计算机数组编号起始为0, 而实际应用中编号从1开始计数, 为确保相互之间的对应关系, 故上述数组长度均增加1。

2.1.3 设备初始化

所有渲染的图形最终并不是输出在某个由VC++MFC开发的界面中, 而是输出成.png图片, 因此, 在设备初始化时使用内存设备暂时渲染和保存图形, 在OpenGL中使用HDC=CreateCompatibleDC(0)函数创建内存设备。

2.1.4 区域边界截取和颜色设置

由于输出的图像为矩形, 而在实际应用中通常需要将图像叠加到相应的地理底图中(如遥感影像底图), 以便直观展现特定区域的变化状况, 而区域边界一般为不规则形状。为避免出现边界被覆盖情况, 突出展现区域, 需要将输出图像按边界截取。在所有图像格式中, 只有.png格式图像可以在IE浏览器上实现图像叠加时的透明化处理。因此, 在颜色设置时首先将图像设置为白色, 再渲染所表现的特定区域部分。本文将离散点数值从高到低共分成5个主色, 从红色向黄色、绿色、天蓝色和蓝色渐变。

2.1.5 多边形渲染

根据保存在m_Net数组中的网格结构, 依次读取每个网格离散点数据并进行渲染。本文的每个网格包含3个网格点, 使用OpenGL中的GLVERTEX2F函数对三角形进行渐进色设置, 通过调用GLFLUSH函数刷新内存并保存经过渲染的图像。

2.1.6 图像和XML文件输出

由于OpenGL本身并不直接支持.png图像输出, 因此首先需要调用OpenGL库函数, 设置相关参数, 将内存中的图像输出为位图文件(.bmp); 然后通过在VC++中调用CxImage类库, 将.bmp图像转换为.png图像。在转化过程中, .bmp图像中的白色底色以透明效果来处理, 同时将生成的唯一标识的XML文件作为动态可视化时的索引文件。该文件保存了所有的时间序列以及所对应的离散点等值面渲染图像。

2.2 一体化动态可视化模块设计

JavaScript是一种基于对象和事件驱动并具有相对安全性的客户端脚本语言, 同时也是一种广泛用于客户端Web开发的脚本语言, 常用来给HTML网页添加动态功能, 比如响应用户的各种操作。它最初由网景公司的Brendan Eich设计, 是一种动态、弱类型、基于原型的语言, 内置支持类。本文基于JavaScript语言开发在线动画可视化功能, 其原理是在ArcIMS的地图可视化页面中新建div, 并将该div覆盖于GIS底图之上。div中加载等值面渲染组件所生成的离散点等值面渲染图像和WebGIS中地理底图一体化显示, 并通过不断地刷新时间序列和加载不同时间帧的图像, 达到动态可视化效果。

2.2.1 基于Ajax的等值面渲染组件功能调用

平滑、连续的用户操作是系统实用化的关键点之一。上述等值面渲染组件封装成的DLL动态链接库部署在服务器端, 在HTML默认的Web协议中, 当客户端页面发送请求调用服务器端程序并得到响应后, 该页面即被释放, 从而无法实现后续的一体化动态可视化功能。本研究采用Ajax技术实现了用户的良好体验。Ajax是异步JavaScript及XML技术的简称, 其核心是一种支持异步请求的技术, 即可以使用JavaScript向服务器提出请求并处理响应, 而不阻塞用户。通过Ajax向服务器端发送调用等值面渲染组件请求后, 客户端代理异步等待服务器端执行完成返回结果的同时, 继续响应用户事件, 触发界面响应处理过程。

2.2.2 XML解析

等值面渲染组件生成渲染图像成功后会在服务器端生成一个唯一标识的XML文件并返回XML文件地址, 客户端通过该地址寻址后定位该XML文件, 并调用Windows自带XML解析插件进行解析。解析结果为获取该时间序列离散点等值面渲染图像的地址, 并按相应时间顺序排列。

2.2.3 动态可视化

基于JavaScript开发动画播放类ImageSlide。ImageSlide就像一个容器, 用于盛放离散点等值面渲染图像。通过解析XML文件, 将得到的离散点等值面渲染图像的地址作为该类实例化后的字符串数组属性保存, 并在该类的设计中包含控件的宽度、高度、播放间隔时间等属性, 以及播放、暂停、加速和减速等方法。其中播放控件功能为按照设定的间隔时间顺序向容器中加载离散点等值面渲染图像, 暂停控件实现暂停播放功能, 加速和减速控件可以通过减少和增加时间间隔实现离散点等值面渲染图像加速和放慢的可视化效果。

2.3 投影变换模块设计

投影的数学含义是建立2个点集间一一对应的映射关系[8]。在本研究实践过程中, 多次运用地理坐标系统和屏幕显示系统之间的投影转换, 有机保证离散点等值面渲染、动态可视化功能与地理底图在屏幕可视化时保持协调一致的映射关系。

2.3.1 离散点地理坐标与屏幕坐标投影转换

在图形渲染功能中, 读入离散点的数据为地理坐标系中的X, Y值, 在图形渲染时需要将其转换为屏幕坐标, 该投影转换在处理离散时序空间数据时使用。具体程序如下:

void WorldtoScreen(double wx, double wy, int * sx, int * sy){

double temp_x=(m_sr-m_sl)/(m_xmax-m_xmin);

double temp_y=(m_sb-m_st)/(m_ymax-m_ymin);

double fScale;

if(temp_y > temp_x)

fScale=temp_x;

else

fScale=temp_y;

* sx=(int)((fScale* (wx-m_xmin)+m_sl)+0.5);

* sy=(int)((fScale* (m_ymax-wy)+m_st)+0.5);

}

其中: wx, wy为地理坐标系下的x, y值; sx, sy为屏幕坐标系下的x, y值; m_sl, m_sr, m_stm_sb为屏幕坐标系下的左、右、上、下极值, 数据自动获取; m_xmax, m_xmin, m_ymaxm_ymin为地理坐标系下的x, y极值, 通过读取离散点数据文件获取; fScale用于判断当前图形形状; 加0.5目的是保证在屏幕坐标都为整数情况下四舍五入。

2.3.2 等值面渲染图投影配准

通过寻找控制点的方式, 将等值面渲染图配准投影到地理坐标系中, 使之能与地理底图协调展示, 并得到等值面渲染图左上角和右下角在地理坐标系中的对应位置, 用于等值面渲染图同步投影转换。在离散点不发生变化的条件下, 系统只做一次投影配准。

2.3.3 等值面渲染图同步投影转换

ArcIMS客户端用户地图操作(如放大、缩小、平移等)带来等值面渲染图随之同步的投影转换。该投影转换在客户端用户每次进行地图操作时均会触发执行。具体实现方式如下:

var iWidth=630;

var iHeight=512;

xDistance=Math.abs(eRight-eLeft);

yDistance=Math.abs(eTop-eBottom);

pixelX=xDistance/iWidth;

pixelY=yDistance/iHeight;

theY=iHeight-zTop;

eTop=pixelY· theY+eBottom;

eRight=pixelX· zRight+eLeft;

eLeft=pixelX· zLeft+eLeft;

theY=iHeight-zBottom;

eBottom=pixelY· theY+eBottom

其中:pixelX, pixelY为地理坐标下X, Y方向上的距离和屏幕长宽之比, eRight, eLeft, eTopeBottom为当前地理坐标, 单位(° )或m; zRight, zLeft, zTopzBottom为经过GIS放大、缩小及移动操作后的图像坐标, 单位为像素; 其他物理量意义如图2所示。

图2 投影转换Fig.2 Projection transformation

当系统图形显示区域发生变化时会触发ReLoad()事件, 该事件通过屏幕获取最新iHeight和iWidth。xDistance和yDistance是当前显示范围内、在当前地理坐标系下X方向和Y方向上的距离; 通过对比前台图像分辨率和后台地理坐标系, 设立对应关系, 将前台对图像的GIS操作(放大、缩小、移动)转换为地理坐标系下的操作, 并通过

ImageX=Math.round(mapx-eLeft)(xDistance/iWidth)]ImageY=Math.round{[(mapy-eBottom)(yDistance/iHeight)-iHeight]·(-1)}(2)

算法将转换参数保存到内存中。式中, mapxmapy是等值面渲染图的图像坐标, 利用ArcIMS库函数将地理坐标转换为屏幕坐标。通过调用当前地图窗口的xDistanceyDistance值、eLefteBottom值以及iWidthiHeight值进行投影转换, 从而得到图像坐标picl, picr, pictpicb(单位为像素)。结合配准后得到的等值面渲染图地理坐标, 将等值面渲染图和ArcIMS地理底图实现在同坐标系下的叠加显示效果。

3 应用实例

以对某水库实时监测与预警应用为例。首先, 输入与流域内污染事故相关的参数, 通过污染物模型演算获得水库各个时刻的空间离散点污染物浓度值数据; 然后, 对该数据进行网格化处理, 利用OpenGL技术将数据渲染成为一个时间系列的污染物浓度等值面图; 最后, 通过在WebGIS前台开发的动画播放组件, 实现该等值面渲染图和WebGIS中地理底图的一体化动态可视化(图3)。

图3 各时序污染物的扩散可视化Fig.3 The time series of contaminant diffusion visualization

可以看出, 通过可视化技术建立的水环境监测与预警应急系统, 能直观反映突发性水环境污染事故所造成的污染物扩散情况, 为相关部门应急处置的快速决策提供依据, 对保证人民群众的生命安全具有重要意义。

4 结论

本文利用WebGIS平台, 结合计算机图形图像学、网络地理信息系统以及计算机网页技术等领域的研究进展, 应用OpenGL技术进行离散时序空间数据的快速渲染; 运用Ajax和JavaScript等技术进行异步请求并处理响应, 实现了离散时序空间数据的解析、渲染和地理底图的快速一体化动态可视化。该技术方法具有通用性, 可以通过网络平台广泛应用于各类离散时序空间数据的监控(如对环境污染扩散)与预警(对模型数据), 为政府部门的科学决策和应急响应提供依据。

The authors have declared that no competing interests exist.

参考文献
[1] 李卫东, 单新建, 张国宏. ArcIMS添加服务器端动态图层技术的实现[J]. 微计算机信息, 2008, 24(3): 148-150. [本文引用:1]
[2] 周筠珺, 李展, 瞿婞, . 基于Google Earth的气象多参数综合显示系统[J]. 地理空间信息, 2010, 8(4): 16-19. [本文引用:1]
[3] 李旭文, 黎刚, 繆蓓蓓. Google Earth和ArcGIS9. 2软件在太湖水污染及蓝藻监测数据展现中的应用[J]. 国土资源遥感, 2008(1): 97-99. [本文引用:1]
[4] 刘兆平, 杨进, 武炜. 地球物理数据网格化方法的选取[J]. 物探与化探, 2010, 34(1): 93-97. [本文引用:1]
[5] 郭良辉, 孟小红, 郭志宏, . 地球物理不规则分布数据的空间网格化法[J]. 物探与化探, 2005, 29(5): 438-442. [本文引用:1]
[6] Lo S H. Delaunay Triangulation of Non-convex Planar Domains[J]. International Journal for Numerical Methods in Engineering, 1989, 28(11): 2695-2707. [本文引用:1]
[7] Macedonia G, PareschiM T. An Algorithm for the Triangulation of Arbitrarily Distributed Points: Applications to Volume Estimate and Terrain Fitting[J]. Computers & Geosciences, 1991, 17(7): 859-874. [本文引用:1]
[8] 姚燕, 朱江, 薛蕾. WebGIS在气象通信信息系统中的应用与研究[J]. 计算机工程, 2008, 34(10): 271-273. [本文引用:1]