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