何龍 何龍 曾曉明 于茜
摘 要:針對國內已經建立的月球系統平臺多為桌面版以及存在三維渲染效果較差、數據類型單一和缺乏科普性的特點,在B/S架構下借助HTML5、瓦片分片算法、三維可視化等技術建立在內嵌WebGL的瀏覽器端對獲得的月球影像進行了三維展示。為后續添加其他相關月球數據和空間分析提供了良好的平臺,方便了廣大用戶對月球進行瀏覽和認知。
關鍵詞:webgl;月球;B/S;三維可視化
中圖分類號:TP393 文獻標志碼:A 文章編號:2095-2945(2018)22-0047-03
Abstract: In view of the fact that most of the lunar system platforms that have been established in China are desktop versions, there are some characteristics such as poor three-dimensional(3D) rendering effect, single data type and lack of popularization of science. With the help of HTML 5, tile slicing algorithm, 3D visualization and other technologies, the browser side of WebGL embedded in the B/S architecture is used to display 3D images of the moon. It provides a good platform for the subsequent addition of other relevant lunar data and space analysis, and facilitates the majority of users to browse and recognize the moon.
Keywords: WebGL; moon; B/S; three-dimensional (3D) visualization
月球,作為地球唯一的自然衛星,對地球的運動以及生物活動有著重要的影響。我國自2007年以來也相繼發射了嫦娥一號、二號和三號衛星,獲得了不同傳感器的海量探測數據,為后續的科學研究奠定了基礎。本文建立一個以B/S架構的網絡平臺——基于HTML5,運用內嵌在瀏覽器中的WebGL標準進行快速渲染,無需任何第三方插件,就能使用三維圖形來增強Web程序的用戶界面,同時以此為基礎來展示月球表面土壤類型分布、礦石類別分布、月球車動態著陸過程、月表溫度變化、撞擊坑等自然風貌從而增加其科普性,有利于探索科研發展的前端。
利用“嫦娥一號”衛星獲得的探測數據來初步實現全月影像的加載,增強了其實時性、可操作性和互動性以及提供更加便利的使用方式,即在使用無插件時可以直接用市面現行高版本瀏覽器如GoogleChrome直接打開,方便了公眾對月球表面信息的了解,人機交互性大大提高。
1 月球數據介紹
繼我國嫦娥探月工程實施以來,獲取了多種形式和類型的數據?!版隙鹨惶枴痹虑蛱綔y衛星已完成全月球面地形和紋理數據的探測,這其中包括三線陣CCD立體相機(CCD)主要用來獲取月球表面立體影像,繪制月表三維圖像和地質學專題圖;激光高度計(LAM)主要用來獲取衛星星下點月表地形高程數據,為CCD立體相機工作參數的調整提供衛星相對月表高度數據。此外還有干涉成像光譜儀(IIM)、X射線譜儀(XRS)、太陽高能粒子探測儀(HPD)、γ射線譜儀(GRS)、太陽風離子探測儀(SWID)、微波探測儀(MRM)等探測數據。
1.1 數據讀取與處理
PDS(PlanetaryDataSystem,行星科學數據系統)是由美國國家航空航天局(NASA)提出的、并在國際深空探測領域廣泛推廣采用的一種數據存儲標準。我國的嫦娥衛星獲取的數據產品均采用PDS格式,按照處理的程度分為三級。二級數據是經過輻射、幾何、光度校正后的數據且較好的保留了影像的空間信息,所以本文采用了嫦娥一號CCD2C數據,每軌影像在南北方向上呈條帶狀。
1.1.1 數據讀取
目前有很多專業軟件如EVNI、ERDAS等可以對PDS數據進行讀取,但是無法獲得影像的空間信息。所以本文利用了C#編程語言中相關的函數對2C文件以二進制形式進行讀取。內容包括影像的記錄時間、標志位、像元的經緯度坐標、影像數據。
1.1.2 投影參數設置
Moon-2000坐標系統是IAU 2000Cartesian Coordinate System中的適用于月球的坐標系統(IAU,國際天文學聯合會),目前它是世界月球研究領域中通用的坐標系統。橢球體采用Moon_2000_IAU_IAG標準,參考水準面D_MOON_2000的偏離參數為0,0,0,長半軸和短半軸均為1737400m。
由于數據源文件采用經緯度記錄空間信息的方式,考慮到投影方法不僅要盡可能的保留原始數據的空間信息關系,而且還需精確地保留數據的特征,所以在全月影像拼接時采用了GeographicLat/Lon經緯度地理投影。
1.1.3 幾何校正計算模型
根據空間上輸入分布的控制點,構建Delaunay三角網,再選擇合適的內插方法內插出規則格網。要求控制點較多且需均勻分布,校正精度很高,所以選擇局部三角網(Taiangulation)模型。
利用C#編程語言將2C文件中影像空間信息存儲在二維數組中,并按照一定的排列規則轉換為ENVI進行圖像配準時控制點的PTS文件。利用IDL(InteractiveDataLanguage)編程語言讀取PTS文件(保存控制點的文件),調用envi_doit函數對影像進行批量校正。
1.1.4 重采樣方法
輸出圖像像元點在輸入圖像中的行列號不是或不全是正數關系,定位后的像元在原圖像中分布是不均勻的。因此,需要對原始圖像按一定規則重采樣。雙線性內插法(Bilinear)的重采樣精度明顯較高,特別是對亮度不連續現象或線狀特征的塊狀化現象有明顯的改善,并具有均衡化和清晰化的效果,所以選擇此采樣方法。
1.1.5 影像的鑲嵌拼接
對大量經過幾何校正的單軌影像,經過透明處理、勻色、羽化等操作,解決鑲嵌顏色不一致、接邊以及重疊區等問題,最終實現所有單軌影像的無縫拼接。
1.2 數據切片
由于全月影像的數據量大,為保證系統能實現漫游、響應速度快等要求,需要對影像進行切片處理。GDAL是一個在X/MIT許可協議下的開源柵格空間數據轉換庫。我們利用鑲嵌而成的整幅月球影像采用四叉樹的方式在空間上進行分割。本文采用256像素×256像素大小的瓦片。每一級按照22n(n≥0,n為層級數)數量遞增,分辨率相應提高四倍,但每一層數據組成在空間范圍上和原數據是一樣的。當切割到第9級的時候,此時的影像已經達到原始影像的分辨率,沒有必要再進行分割。最后通過對這些瓦片數據進行相應的存儲,并建立動態加載的空間索引機制,從而實現對不同層級的全月影像顯示,獲得較好的瀏覽體驗效果。
2 三維平臺的構建
2.1 平臺架構
本文利用JavaScript、HTML5、CSS3開發客戶端,window內置IIS作為WEB服務器,運用AJAX技術對數據異步加載從而來實現訪問和傳輸。
如圖1的系統構架,內嵌在瀏覽器中的WebGL支持月球數據的三維顯示,用戶在瀏覽器界面下通過鼠標或鍵盤操作。當用戶操作頁面時,JavaScript會處理相應的過程,通過XMLHttpRequest對象向服務器端發送請求,網絡服務器處理HTTP協議,將操作需求傳送給地圖服務器,地圖服務器分析用戶請求,將需要分析的數據從數據庫中調取,將處理結果以XML或JSON類型返回網絡服務器,遵循網絡協議將結果數據發送到瀏覽器客戶端,客戶端接到服務器的響應后通過JavaScript動態改變頁面的結構和樣式,從而實現頁面的局部更新。異步交互是指當XMLHttpRequest對象發送請求后并不影響客戶端用戶的操作,直到數據返回時才對頁面進行更新。
2.2 相關技術運用
2.2.1 WebGL技術
WebGL作為新一代Web3D圖形標準,可以為HTML5Canvas提供硬件3D加速渲染,WebGL完美地解決了現有的Web交互式三維動畫的兩個問題:第一,它通過JavaScript腳本實現Web交互式三維動畫的制作,無需任何瀏覽器插件支持;第二,它利用底層的圖形硬件加速功能進行的圖形渲染,是通過統一的、標準的、跨平臺的OpenGL接口實現的。它內嵌于時下流行的高版本瀏覽器中,無需安裝第三方的插件和庫便可以直接在多種平臺下使用它。
2.2.2 瓦片分片算法與規則
目前在對影像數據的組織與管理中常見的組織方式有規則格網、四叉樹、KD樹、KDB樹、BSP樹、和R樹等。其中四叉樹作為一種最常見的空間索引與柵格瓦片地圖通過瓦片編號可以有機地結合起來,實現在進行地圖縮放和漫游操作時動態調用地圖切片。由于這些瓦片編號具有規律性,可以根據瓦片編號和坐標建立一種索引關系。
采用GDAL(Geospatial Data Abstraction Library)的地圖瓦片切片方法進行切片處理,根據其標準,在確定經緯度和層級的情況下,就可以通過公式得到要顯示的瓦片編號索引。顯示地圖的時候就可以根據中心坐標和層級以及bound范圍,就可以確定需要加載那些地圖瓦片。編號和坐標之間就建立了一種索引關系,具體的計算公式如下:
2.2.3 三維場景調度技術
視點驅動三維調動技術使用戶看到的三維場景是連續的,根據經緯度坐標和瓦片編號的對應關系,當視點移動到某一塊區域內,此區域周圍的瓦片會自動裝入緩存區內,當視點移動到該范圍中,瓦片會被調出,同時判斷視點下一步的移動。因此在這個過程中需要根據視點的移動實時計算三維場景的可見區域,如圖2所示,從視點出發的四條射線與地表面相交,得到了四個交點從而構成可視區域,通過和數據范圍取得交集求的數據可見區域,最后通過公式計算得到可見區域內瓦片的索引編號。
通過上面計算可以獲得四個交點的可見區域,然后判斷瓦片的四個角點是否落在可見區域中,如果在可見區域內則記錄該瓦片的編碼,然后對數據范圍內所有的瓦片進行判斷,就可以全部得到可見區域瓦片編碼。
3 月球三維數據的展示
通過對系統整體架構的部署,運用上文提到的各種關鍵技術,最終在瀏覽器端對月球數據進行三維展示如圖3,同時把由全月DEM數據切割生成的terrain數據圖層進行疊加顯示,月球表面的環形山立體效果明顯如圖4。在此系統中我們建立相應的圖層進行目錄索引,從而實現不同圖層之間的疊加顯示,為后續的多元、多形態、多時態數據的相關分析奠定基礎。與此同時,可以實現放大、縮小、漫游等操作,為用戶的瀏覽提供較好的視覺體驗效果。
4 結束語
我國探月工程取得了巨大科學、工程成果,同時獲得了海量不同類型的月球探測數據,這些數據具有重大的科學研究價值。本文結合WebGL的優勢,基于HTML5,結合四叉樹數據組織、瓦片技術和三維場景調度技術建立了以B/S架構的月球空間信息三維可視化系統,為展示更多月球數據提供了平臺,增加了科普性,方便了廣大用戶更好的了解月球,促進三維月球WEB端的發展起到了推動作用。
參考文獻:
[1]董智慧.基于空間信息服務云月球數據共享機制研究[D].成都:成都理工大學,2012.
[2]趙葆常,楊建峰,汶德勝,等.嫦娥一號衛星CCD立體相機的設計與在軌運行[J].航天器工程,2009,18(01):30-36.