基于Google Earth的城市实时天气可视化系统

2013-09-08 10:17:06唐慧强
计算机工程与设计 2013年10期
关键词:雨滴绘制天气

唐慧强,薛 莉

(南京信息工程大学 信息与控制学院,江苏 南京210044)

0 引 言

传统的气象数据多以文本、表格等单纯的表现形式为主,对于公众来说抽象难懂,缺乏直观性。气象要素,如湿度、风向风速、气压等均针对特定的时间和空间而言,因此气象信息在某种意义上都是地理信息[1]。Google Earth系统,与传统的地理信息系统 (GIS)相比,其优势在于接口开放和数据的免维护,可视化表达效果好,并且是普及率较高的大众化系统,因此,Google Earth适合于表达气象信息。目前一般做法是利用天气过程中的降水资料、红外云图等,编写KML文件,在Google Earth平台上显示[2],只是对历史天气状况的再现而没有显示实时天气情况。国外学者则多是利用包含雷达、台风、降水量等信息的KMZ文件,在Google Earth上以多种颜色对应不同等级的方式表示天气信息[3,4],提供此KMZ文件的网站有预警决策支持系统 (WDSS)、美国国家天气服务中心 (NWS)等,虽然具有较好的实时性,但其表现形式不如公众常见的云雨雾雪等景象直观。本文通过C#调用天气预报Web服务,解析获取天气信息,基于粒子系统和物理模型模拟雨雪等天气信息对应的场景。查询时,Google Earth瞬间定位到所需城市,在该城市背景上呈现实时的天气动画,实现国内主要城市天气的三维动态可视化显示。

1 降雨的理论及模型

1.1 粒子系统

粒子系统理论是迄今为止描述不规则物体最成熟的理论之一,依靠对粒子随机过程的管理来充分体现无规则的模糊景物特征,粒子具有形状、大小、位置等多种属性。通过粒子的产生、成长、消亡、更新、绘制等过程,可以模拟云、雨、雾、雪等自然现象[5]。本文以下雨效果为例进行相关研究。

1.2 下雨效果的模拟

模拟下雨效果应考虑雨滴的形状建模和运动建模两方面,前者可采用元球模型构建,后者需考虑无风和有风环境下的运动。

(1)雨粒子的形状建模

雨粒子形状由其直径d决定:d<2 mm时,雨粒子为球状;2 mm<d<6 mm 时,雨粒子为椭球状;d>6 mm 时,较大的雨粒子会分裂,变成诸多小圆球。鉴于此,雨粒子形状可以使用元球模型来模拟,即对于d<2 mm的雨滴,两个元球融合成一个元球,雨滴增大时使二者圆心距增大,则渐渐变成椭球形雨粒子。此外,雨粒子降落过程中会发生碰撞,形成更大的雨粒子,当d>6 mm时便会分裂。

为了保证雨粒子在裂合等一系列变化过程中表面的光滑性,模型中利用Wyvill的六次多项式势函数[6]

对于多个元球,表面形状用下式表示

式中:qi——元球的密度;fi——元球的势函数;T0——极限值 (常数)。

通过确定T0便可以产生一个比较理想的雨粒子融合、变形、分裂的效果。

(2)雨粒子的运动建模

下雨时,往往风雨交加,雨粒子本身质量又很小,受风的影响较大,因此重点讨论雨粒子在有风情况下的运动。雨粒子直径d<6 mm时,在降落过程中形状维持不变,近似为球状,故只需考虑风力、水平方向粘滞阻力与雨粒子水平速度的关系。讨论如下:

设F表示风力,f表示水平方向的粘滞阻力,根据流体力学可得

式中:ρ——流体密度;S——流速垂直方向和物体之间最大的横截面积;Cd——阻力系数。

雷诺数用下式表示

式中:l——特征长度;η——流体的粘滞系数;v——物体的速度。

在0<Re<2×105的范围内,Cd与Re的关系为

对于球体,S=πr2,l=2r,当Re<1时:

当103<Re<2×105时,Cd近似为0.4,则f=0.2ρπr2v2,即球体所受阻力和v2成正比。雨滴降落接近地面时,其速度为:

(1)当Re<1时

在水平阻力与风力的影响下,雨粒子的运动用下式表示

又因为v(0)=0,解方程 (6)得

式中:ρw——水的密度;r——雨滴的半径。

(2)当103<Re<2×105时

又由v(0)=0,解方程 (9)得

式中:ρ——空气的密度。

(3)当1<Re<103时,(1)(2)中对Cd的简化不再适用。方程-F=0的解是水平方向的雨滴终速度v,设函数f(v)=-F,那么f(v))上跟随v的增大而单调递增,故可用牛顿切线法求方程-F=0的近似解,最终得到雨滴的速度v。

基于上述对雨滴运动过程的分析,能够得到比较真实的雨滴速度和加速度,以此作为粒子属性,便于体现风力对雨的影响,从而增强真实感。绘制时,在每一滴雨滴位置上直接调用OpenGL的绘制函数生成雨滴。

2 系统开发关键技术

2.1 Google Earth二次开发技术

Google Earth(GE)提供COM API作为公共接口,其中包括11个接口,最重要的一个是IApplicationGE,本文利用此接口控制GE程序的启动、退出、地图窗口句柄的获 取 等 一 系 列 复 杂 操 作[7]。KML (keyhole markup language)类似于XML,描述了与地理要素相关的信息 (如点、线、面、文字描述、图像等),可以被 Google Earth浏览[8]。

2.2 Weather Web Service

Web Service作为应用组件,以分布式架构的方式由Web网络向服务需求者提供服务[9],结构如图1所示。本系统的天气数据通过调用 Weather Web Service获取,自动更新一次需2.5小时左右,可靠性高。实时及接下来三天的天气状况,通过调用getWeatherbyCityName函数,以查询地点名称为参数,可以轻松获取。

大型起重作业必须编制《三措两案》,并逐级审批。严格审核起重机械检验证明及作业人员的《特种作业操作证》,吊装作业必须设专人指挥,指挥人员不得兼做其他工作,应认真观察起重作业周围环境,确保信号正确无误,严禁吊装物体从人的头上越过或停留,遇大雨、雷电、大雾、风力6级以上等恶劣天气,严禁露天起重作业。

图1 Web Service体系结构

2.3 系统框架设计

城市实时天气可视化显示系统整体由三层架构组成,利用.NET技术开发整个系统的框架,Web服务作为业务中间件用于获取实时天气信息,SQL Server 2005保存城市的经纬度等相关信息,OpenGL绘制雨雪等天气效果。客户端采用VS2008+C#.NET调用GE的接口函数,最终实现后台所提取的业务数据及天气动画的叠加显示。系统结构如图2所示。

图2 系统结构

3 系统实现

3.1 GE视图的控制

IApplicationGE类中的GetMainHwnd()函数和GetRenderHwnd()函数分别用来实现客户端的框架窗口句柄以及各子窗口句柄的获取,方便将GE视图嵌入到用户自己的应用程序中[10-12],达到与GE的良好交互。

此外,调用HookAPI.dll能够屏蔽鼠标消息,完成对GE视图的单双击响应,以及鼠标滚轮对GE 3D视图的缩放及漫游控制。为了将当前视图保存下来用于日后查看,可以调用GE的SaveScreenShot函数。

3.2 实时天气信息的获取

通过Weather Web Service获取天气信息的方法如下:

(1)在VS2008+C#.NET中的 “项目”上右击 “添加服务引用”,从而引入Web Service;

(2)填写 Web Service地址及相应命名空间。

核心代码如下:

3.3 雨滴效果的绘制

通过对雨滴运动状态的分析,确定雨滴的属性,其中最为关键的是雨滴的速度和加速度,计算得出雨滴所处位置。为了体现风对于雨滴的影响,实时调整速度和加速度,得到新雨滴所处位置,利用OpenGL绘制函数在每滴雨滴位置上依据粒子系统理论绘制雨滴,同时赋予雨滴其他相关属性,流程图如图3所示。

图3 绘制流程

本系统采用VS2008+C#.NET开发,通过导入动态链接库文件csgl.dll和csglnative.dll,就可以使用OpenGL三维图形库,此种方式调试容易、开发效率高[13]。具体操作方法如下:

(1)将csgl.dll和csglnative.dll拷贝到 C:\ WINDOWS\system32;

(2)在 “项目”上选择 “添加引用”,导入csgl.dll;

(3)在C#的程序开始,添加:using CsGL.OpenGL

经过以上操作,便可以在程序中使用OpenGL的绘图命令绘制雨滴效果了。

3.4 实验结果与分析

3.2 节得到的包含天气信息的字符串s,其中s[6]是当天天气概况,分为不同的等级,如大雨、中雨、小雨、晴天等,以此为依据,查询时,通过窗口句柄,将OpenGL绘制的对应天气效果显示在GE当前城市界面上,实现效果如图4所示。

图4 实现效果

如图4所示,图4(a)为太仓在刮西北风时下中雨的画面,图4(b)为连云港在刮北风时下小雨的画面,中间部分均是对应城市的背景,该背景随着查询城市的不同而动态改变。雨滴的飘落方向、雨滴大小依据查询地点实时天气信息的不同而动态更新。界面左侧为国内主要城市列表,右侧以文字的形式显示未来两天的天气预报,同时呈现实时天气信息的文本信息和动画效果。

4 结束语

本文设计的基于Google Earth的城市实时天气可视化系统具有两个方面的优越性:(1)本系统凭借Google Earth三维地理信息系统平台动态变换天气效果显示的背景,突破了传统视景仿真在固定场景下出现的局限性;(2)本系统可以根据实时天气信息动态改变天气动画,实现了天气信息和地理信息的有机叠加,便于公众对抽象天气数据的理解。存在的不足是目前可以查询340多个中国主要城市的天气信息,在以后可以考虑采用其它Web服务增加可以查询的地点数量,并且优化模拟雨雪的模型。

[1]WU Huanping.Application of GIS in meteorology[J].Meteorological Monthly,2010 (3):90-100 (in Chinese).[吴焕萍.GIS技术在气象领域中的应用 [J].气象,2010 (3):90-100.]

[2]ZHOU Yunjun,LI Zhan,QU Xing,et al.Meteorological multi-parameter integrated display system based on Google Earth[J].Geospatial Information,2010 (4):16-19(in Chinese).[周筠珺,李展,瞿婞,等.基于Google Earth的气象多参数综合显示系统 [J].地理空间信息,2010 (4):16-19.]

[3]Travis M Smith,Valliappa Lakshmanan.Real-time,rapidly updating severe weather products for virtual globes [J].Computers & Geosciences,2011,37 (1):3-12.

[4]Sun Xiaojuan,Shen Suhung,Gregory G Leptoukh,et al.Development of a web-based visualization platform for climate research using Google Earth [J].Computers & Geosciences,2012 (47):160-168.

[5]LIU Xiaoling,YANG Hongyu,GUO Huqi.Real-time simulation of rain and snow in large-scale scene based on CPU particle system [J].Computer Engineering and Design,2012,33 (6):2398-2401(in Chinese). [刘小玲,杨红雨,郭虎奇.基于GPU粒子系统的大规模雨雪场景实时模拟 [J].计算机工程与设计,2012,33 (6):2398-2401.]

[6]GU Yaolin,QI Jin.Real-time modeling and animating of hair[J].Computer Engineering and Design,2008,29 (16):4325-4328 (in Chinese). [顾耀林,亓晋.实时毛发建模和动画 [J].计算机工程与设计,2008,29 (16):4325-4328.]

[7]Ma Qian.Google intelligent map:Earth/Maps/KML [M].Beijing:Publishing House of Electronics Industry,2010 (in Chinese).[马谦.Google智慧地图:Earth/Maps/KML [M].北京:电子工业出版社,2010.]

[8]Google Inc.KML 2.2reference[R/OL].[2011-12-01].http://code/google.com/apis/kml/documentation/kmlreference.html,2007.

[9]JIAO Shengming,YAN Mingliang,GUO Jing,et al.Research of the distributed transport meteorological information sharing technique based on web service [J].Computer Engineering &Science,2012,34 (20703):196-200 (in Chinese). [焦圣明,严明良,郭静,等.基于Web Service的分布式交通气象信息共享技术研究 [J].计算机工程与科学,2012,34 (20703):196-200.]

[10]Zhang Xuesong,Luo Jianan,Zhang Hailin.The design and implementation of the geospatial information distribution system based on Google Earth [C]//International Conference on WTCS,2009:931-937.

[11]Google Inc.Google earth[EB/OL].[2011-12-03].http://earth.google.com/,2008.

[12]Google Inc.Google Earth COM API documentation[EB/OL].[2011-12-01].http://earth.google.com/comapi,2010.

[13]SU Xueman,ZHANG Zhicai,SUN Lili,et al.Robot 3-D simulation design and implementation based on OpenGL and C# [J].Journal of Anhui Polytechnic University,2012,27(8203):31-33 (in Chinese). [苏学满,张志才,孙丽丽,等.基于OpenGL与C#的工业机器人三维仿真设计与实现[J].安徽工程大学学报,2012,27 (8203):31-33.]

猜你喜欢
雨滴绘制天气
Art on coffee cups
天气冷了,就容易抑郁吗?
小雨滴
草原歌声(2020年3期)2020-12-08 22:22:28
谁是天气之子
盛暑天气,觅得书中一味凉
文苑(2020年7期)2020-08-12 09:36:38
可爱的小雨滴
学生天地(2020年24期)2020-06-09 03:08:56
Weather(天气)
小雨滴
放学后
童话世界(2018年17期)2018-07-30 01:52:02
小雨滴
儿童绘本(2015年7期)2015-05-25 17:55:30