唐慧強(qiáng),薛 莉
(南京信息工程大學(xué) 信息與控制學(xué)院,江蘇 南京210044)
傳統(tǒng)的氣象數(shù)據(jù)多以文本、表格等單純的表現(xiàn)形式為主,對(duì)于公眾來(lái)說(shuō)抽象難懂,缺乏直觀性。氣象要素,如濕度、風(fēng)向風(fēng)速、氣壓等均針對(duì)特定的時(shí)間和空間而言,因此氣象信息在某種意義上都是地理信息[1]。Google Earth系統(tǒng),與傳統(tǒng)的地理信息系統(tǒng) (GIS)相比,其優(yōu)勢(shì)在于接口開(kāi)放和數(shù)據(jù)的免維護(hù),可視化表達(dá)效果好,并且是普及率較高的大眾化系統(tǒng),因此,Google Earth適合于表達(dá)氣象信息。目前一般做法是利用天氣過(guò)程中的降水資料、紅外云圖等,編寫KML文件,在Google Earth平臺(tái)上顯示[2],只是對(duì)歷史天氣狀況的再現(xiàn)而沒(méi)有顯示實(shí)時(shí)天氣情況。國(guó)外學(xué)者則多是利用包含雷達(dá)、臺(tái)風(fēng)、降水量等信息的KMZ文件,在Google Earth上以多種顏色對(duì)應(yīng)不同等級(jí)的方式表示天氣信息[3,4],提供此KMZ文件的網(wǎng)站有預(yù)警決策支持系統(tǒng) (WDSS)、美國(guó)國(guó)家天氣服務(wù)中心 (NWS)等,雖然具有較好的實(shí)時(shí)性,但其表現(xiàn)形式不如公眾常見(jiàn)的云雨霧雪等景象直觀。本文通過(guò)C#調(diào)用天氣預(yù)報(bào)Web服務(wù),解析獲取天氣信息,基于粒子系統(tǒng)和物理模型模擬雨雪等天氣信息對(duì)應(yīng)的場(chǎng)景。查詢時(shí),Google Earth瞬間定位到所需城市,在該城市背景上呈現(xiàn)實(shí)時(shí)的天氣動(dòng)畫,實(shí)現(xiàn)國(guó)內(nèi)主要城市天氣的三維動(dòng)態(tài)可視化顯示。
粒子系統(tǒng)理論是迄今為止描述不規(guī)則物體最成熟的理論之一,依靠對(duì)粒子隨機(jī)過(guò)程的管理來(lái)充分體現(xiàn)無(wú)規(guī)則的模糊景物特征,粒子具有形狀、大小、位置等多種屬性。通過(guò)粒子的產(chǎn)生、成長(zhǎng)、消亡、更新、繪制等過(guò)程,可以模擬云、雨、霧、雪等自然現(xiàn)象[5]。本文以下雨效果為例進(jìn)行相關(guān)研究。
模擬下雨效果應(yīng)考慮雨滴的形狀建模和運(yùn)動(dòng)建模兩方面,前者可采用元球模型構(gòu)建,后者需考慮無(wú)風(fēng)和有風(fēng)環(huán)境下的運(yùn)動(dòng)。
(1)雨粒子的形狀建模
雨粒子形狀由其直徑d決定:d<2 mm時(shí),雨粒子為球狀;2 mm<d<6 mm 時(shí),雨粒子為橢球狀;d>6 mm 時(shí),較大的雨粒子會(huì)分裂,變成諸多小圓球。鑒于此,雨粒子形狀可以使用元球模型來(lái)模擬,即對(duì)于d<2 mm的雨滴,兩個(gè)元球融合成一個(gè)元球,雨滴增大時(shí)使二者圓心距增大,則漸漸變成橢球形雨粒子。此外,雨粒子降落過(guò)程中會(huì)發(fā)生碰撞,形成更大的雨粒子,當(dāng)d>6 mm時(shí)便會(huì)分裂。
為了保證雨粒子在裂合等一系列變化過(guò)程中表面的光滑性,模型中利用Wyvill的六次多項(xiàng)式勢(shì)函數(shù)[6]
對(duì)于多個(gè)元球,表面形狀用下式表示
式中:qi——元球的密度;fi——元球的勢(shì)函數(shù);T0——極限值 (常數(shù))。
通過(guò)確定T0便可以產(chǎn)生一個(gè)比較理想的雨粒子融合、變形、分裂的效果。
(2)雨粒子的運(yùn)動(dòng)建模
下雨時(shí),往往風(fēng)雨交加,雨粒子本身質(zhì)量又很小,受風(fēng)的影響較大,因此重點(diǎn)討論雨粒子在有風(fēng)情況下的運(yùn)動(dòng)。雨粒子直徑d<6 mm時(shí),在降落過(guò)程中形狀維持不變,近似為球狀,故只需考慮風(fēng)力、水平方向粘滯阻力與雨粒子水平速度的關(guān)系。討論如下:
設(shè)F表示風(fēng)力,f表示水平方向的粘滯阻力,根據(jù)流體力學(xué)可得
式中:ρ——流體密度;S——流速垂直方向和物體之間最大的橫截面積;Cd——阻力系數(shù)。
雷諾數(shù)用下式表示
式中:l——特征長(zhǎng)度;η——流體的粘滯系數(shù);v——物體的速度。
在0<Re<2×105的范圍內(nèi),Cd與Re的關(guān)系為
對(duì)于球體,S=πr2,l=2r,當(dāng)Re<1時(shí):
當(dāng)103<Re<2×105時(shí),Cd近似為0.4,則f=0.2ρπr2v2,即球體所受阻力和v2成正比。雨滴降落接近地面時(shí),其速度為:
(1)當(dāng)Re<1時(shí)
在水平阻力與風(fēng)力的影響下,雨粒子的運(yùn)動(dòng)用下式表示
又因?yàn)関(0)=0,解方程 (6)得
式中:ρw——水的密度;r——雨滴的半徑。
(2)當(dāng)103<Re<2×105時(shí)
又由v(0)=0,解方程 (9)得
式中:ρ——空氣的密度。
(3)當(dāng)1<Re<103時(shí),(1)(2)中對(duì)Cd的簡(jiǎn)化不再適用。方程-F=0的解是水平方向的雨滴終速度v,設(shè)函數(shù)f(v)=-F,那么f(v))上跟隨v的增大而單調(diào)遞增,故可用牛頓切線法求方程-F=0的近似解,最終得到雨滴的速度v。
基于上述對(duì)雨滴運(yùn)動(dòng)過(guò)程的分析,能夠得到比較真實(shí)的雨滴速度和加速度,以此作為粒子屬性,便于體現(xiàn)風(fēng)力對(duì)雨的影響,從而增強(qiáng)真實(shí)感。繪制時(shí),在每一滴雨滴位置上直接調(diào)用OpenGL的繪制函數(shù)生成雨滴。
Google Earth(GE)提供COM API作為公共接口,其中包括11個(gè)接口,最重要的一個(gè)是IApplicationGE,本文利用此接口控制GE程序的啟動(dòng)、退出、地圖窗口句柄的獲 取 等 一 系 列 復(fù) 雜 操 作[7]。KML (keyhole markup language)類似于XML,描述了與地理要素相關(guān)的信息 (如點(diǎn)、線、面、文字描述、圖像等),可以被 Google Earth瀏覽[8]。
Web Service作為應(yīng)用組件,以分布式架構(gòu)的方式由Web網(wǎng)絡(luò)向服務(wù)需求者提供服務(wù)[9],結(jié)構(gòu)如圖1所示。本系統(tǒng)的天氣數(shù)據(jù)通過(guò)調(diào)用 Weather Web Service獲取,自動(dòng)更新一次需2.5小時(shí)左右,可靠性高。實(shí)時(shí)及接下來(lái)三天的天氣狀況,通過(guò)調(diào)用getWeatherbyCityName函數(shù),以查詢地點(diǎn)名稱為參數(shù),可以輕松獲取。
大型起重作業(yè)必須編制《三措兩案》,并逐級(jí)審批。嚴(yán)格審核起重機(jī)械檢驗(yàn)證明及作業(yè)人員的《特種作業(yè)操作證》,吊裝作業(yè)必須設(shè)專人指揮,指揮人員不得兼做其他工作,應(yīng)認(rèn)真觀察起重作業(yè)周圍環(huán)境,確保信號(hào)正確無(wú)誤,嚴(yán)禁吊裝物體從人的頭上越過(guò)或停留,遇大雨、雷電、大霧、風(fēng)力6級(jí)以上等惡劣天氣,嚴(yán)禁露天起重作業(yè)。
圖1 Web Service體系結(jié)構(gòu)
城市實(shí)時(shí)天氣可視化顯示系統(tǒng)整體由三層架構(gòu)組成,利用.NET技術(shù)開(kāi)發(fā)整個(gè)系統(tǒng)的框架,Web服務(wù)作為業(yè)務(wù)中間件用于獲取實(shí)時(shí)天氣信息,SQL Server 2005保存城市的經(jīng)緯度等相關(guān)信息,OpenGL繪制雨雪等天氣效果??蛻舳瞬捎肰S2008+C#.NET調(diào)用GE的接口函數(shù),最終實(shí)現(xiàn)后臺(tái)所提取的業(yè)務(wù)數(shù)據(jù)及天氣動(dòng)畫的疊加顯示。系統(tǒng)結(jié)構(gòu)如圖2所示。
圖2 系統(tǒng)結(jié)構(gòu)
IApplicationGE類中的GetMainHwnd()函數(shù)和GetRenderHwnd()函數(shù)分別用來(lái)實(shí)現(xiàn)客戶端的框架窗口句柄以及各子窗口句柄的獲取,方便將GE視圖嵌入到用戶自己的應(yīng)用程序中[10-12],達(dá)到與GE的良好交互。
此外,調(diào)用HookAPI.dll能夠屏蔽鼠標(biāo)消息,完成對(duì)GE視圖的單雙擊響應(yīng),以及鼠標(biāo)滾輪對(duì)GE 3D視圖的縮放及漫游控制。為了將當(dāng)前視圖保存下來(lái)用于日后查看,可以調(diào)用GE的SaveScreenShot函數(shù)。
通過(guò)Weather Web Service獲取天氣信息的方法如下:
(1)在VS2008+C#.NET中的 “項(xiàng)目”上右擊 “添加服務(wù)引用”,從而引入Web Service;
(2)填寫 Web Service地址及相應(yīng)命名空間。
核心代碼如下:
通過(guò)對(duì)雨滴運(yùn)動(dòng)狀態(tài)的分析,確定雨滴的屬性,其中最為關(guān)鍵的是雨滴的速度和加速度,計(jì)算得出雨滴所處位置。為了體現(xiàn)風(fēng)對(duì)于雨滴的影響,實(shí)時(shí)調(diào)整速度和加速度,得到新雨滴所處位置,利用OpenGL繪制函數(shù)在每滴雨滴位置上依據(jù)粒子系統(tǒng)理論繪制雨滴,同時(shí)賦予雨滴其他相關(guān)屬性,流程圖如圖3所示。
圖3 繪制流程
本系統(tǒng)采用VS2008+C#.NET開(kāi)發(fā),通過(guò)導(dǎo)入動(dòng)態(tài)鏈接庫(kù)文件csgl.dll和csglnative.dll,就可以使用OpenGL三維圖形庫(kù),此種方式調(diào)試容易、開(kāi)發(fā)效率高[13]。具體操作方法如下:
(1)將csgl.dll和csglnative.dll拷貝到 C:\ WINDOWS\system32;
(2)在 “項(xiàng)目”上選擇 “添加引用”,導(dǎo)入csgl.dll;
(3)在C#的程序開(kāi)始,添加:using CsGL.OpenGL
經(jīng)過(guò)以上操作,便可以在程序中使用OpenGL的繪圖命令繪制雨滴效果了。
3.2 節(jié)得到的包含天氣信息的字符串s,其中s[6]是當(dāng)天天氣概況,分為不同的等級(jí),如大雨、中雨、小雨、晴天等,以此為依據(jù),查詢時(shí),通過(guò)窗口句柄,將OpenGL繪制的對(duì)應(yīng)天氣效果顯示在GE當(dāng)前城市界面上,實(shí)現(xiàn)效果如圖4所示。
圖4 實(shí)現(xiàn)效果
如圖4所示,圖4(a)為太倉(cāng)在刮西北風(fēng)時(shí)下中雨的畫面,圖4(b)為連云港在刮北風(fēng)時(shí)下小雨的畫面,中間部分均是對(duì)應(yīng)城市的背景,該背景隨著查詢城市的不同而動(dòng)態(tài)改變。雨滴的飄落方向、雨滴大小依據(jù)查詢地點(diǎn)實(shí)時(shí)天氣信息的不同而動(dòng)態(tài)更新。界面左側(cè)為國(guó)內(nèi)主要城市列表,右側(cè)以文字的形式顯示未來(lái)兩天的天氣預(yù)報(bào),同時(shí)呈現(xiàn)實(shí)時(shí)天氣信息的文本信息和動(dòng)畫效果。
本文設(shè)計(jì)的基于Google Earth的城市實(shí)時(shí)天氣可視化系統(tǒng)具有兩個(gè)方面的優(yōu)越性:(1)本系統(tǒng)憑借Google Earth三維地理信息系統(tǒng)平臺(tái)動(dòng)態(tài)變換天氣效果顯示的背景,突破了傳統(tǒng)視景仿真在固定場(chǎng)景下出現(xiàn)的局限性;(2)本系統(tǒng)可以根據(jù)實(shí)時(shí)天氣信息動(dòng)態(tài)改變天氣動(dòng)畫,實(shí)現(xiàn)了天氣信息和地理信息的有機(jī)疊加,便于公眾對(duì)抽象天氣數(shù)據(jù)的理解。存在的不足是目前可以查詢340多個(gè)中國(guó)主要城市的天氣信息,在以后可以考慮采用其它Web服務(wù)增加可以查詢的地點(diǎn)數(shù)量,并且優(yōu)化模擬雨雪的模型。
[1]WU Huanping.Application of GIS in meteorology[J].Meteorological Monthly,2010 (3):90-100 (in Chinese).[吳煥萍.GIS技術(shù)在氣象領(lǐng)域中的應(yīng)用 [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的氣象多參數(shù)綜合顯示系統(tǒng) [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粒子系統(tǒng)的大規(guī)模雨雪場(chǎng)景實(shí)時(shí)模擬 [J].計(jì)算機(jī)工程與設(shè)計(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). [顧耀林,亓?xí)x.實(shí)時(shí)毛發(fā)建模和動(dòng)畫 [J].計(jì)算機(jī)工程與設(shè)計(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].北京:電子工業(yè)出版社,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). [焦圣明,嚴(yán)明良,郭靜,等.基于Web Service的分布式交通氣象信息共享技術(shù)研究 [J].計(jì)算機(jī)工程與科學(xué),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). [蘇學(xué)滿,張志才,孫麗麗,等.基于OpenGL與C#的工業(yè)機(jī)器人三維仿真設(shè)計(jì)與實(shí)現(xiàn)[J].安徽工程大學(xué)學(xué)報(bào),2012,27 (8203):31-33.]