王少輝,周 敏,馬云波
(1.新沂自然資源和規(guī)劃局,江蘇 南京 210008;2.江蘇省地理信息產(chǎn)業(yè)研究院,江蘇 南京 210046)
近年來(lái),自然資源部門堅(jiān)持山水林田湖草生命共同體的理念,協(xié)調(diào)有序地開展自然資源調(diào)查監(jiān)測(cè)工作,建立自然資源調(diào)查監(jiān)測(cè)數(shù)據(jù)庫(kù),構(gòu)建自然資源“一張圖”大數(shù)據(jù)體系,并逐步建成自然資源三維立體時(shí)空數(shù)據(jù)庫(kù)。水資源是基礎(chǔ)性的自然資源,是生態(tài)和環(huán)境的控制性要素,迫切需要實(shí)現(xiàn)水資源的三維化綜合管理與應(yīng)用。
目前,關(guān)于水的三維建模和可視化主要針對(duì)水利設(shè)施、河流湖泊水底地形、水動(dòng)力等,并未真正實(shí)現(xiàn)水資源體的建模,不適應(yīng)于水資源的量化和空間形態(tài)管理。水體形態(tài)復(fù)雜、體量巨大,無(wú)法用手工建模完成,也無(wú)成熟的三維建模與渲染調(diào)度的一體化技術(shù)途徑。本文在“數(shù)字地球”“三維自然資源”概念的基礎(chǔ)上,結(jié)合WebGIS開發(fā)技術(shù)、地理信息系統(tǒng)、三維建模技術(shù)、三維可視化技術(shù)等,以滿足自然資源管理需求為導(dǎo)向,對(duì)水資源體的三維建模和展示進(jìn)行了研究,構(gòu)建了基于Cesium的三維水資源模擬場(chǎng)景平臺(tái),滿足了水資源管理的三維可視化需求,形象、逼真、準(zhǔn)確地展現(xiàn)水自然資源形態(tài)與空間分布特征。
地形模型是整個(gè)三維場(chǎng)景的最底層數(shù)據(jù)圖層,以此為基礎(chǔ),疊加具體業(yè)務(wù)信息,才能實(shí)現(xiàn)專業(yè)領(lǐng)域的應(yīng)用[1],是系統(tǒng)平臺(tái)三維展示和各種功能計(jì)算的基礎(chǔ)數(shù)據(jù)支撐。地形模型主要包括地形數(shù)據(jù)和影像數(shù)據(jù),前者包含高程信息,表現(xiàn)地表起伏狀況;后者是地表覆蓋情況,用于體現(xiàn)地物地貌分布情況[2]。
隨著獲取地形數(shù)據(jù)手段的日益豐富,地形數(shù)據(jù)所表現(xiàn)的三維地形也越來(lái)越復(fù)雜,由此帶來(lái)的地形數(shù)據(jù)量迅速增加。為了滿足地形數(shù)據(jù)快速調(diào)度的需求,同時(shí)又要最大限度地占用較小的內(nèi)存空間,采用了多分辨率地形金字塔模型方式組織數(shù)據(jù)。如圖1所示,構(gòu)建地形金字塔模型是把原始地形數(shù)據(jù)作為金字塔最底層,從低到高,分辨率越來(lái)越小,但表示的范圍不變。
圖1 地形金字塔模型
將處理好的地形瓦片數(shù)據(jù)發(fā)布到服務(wù)器中,實(shí)現(xiàn)本地化部署。系統(tǒng)平臺(tái)通過(guò)Cesium的地形接口對(duì)發(fā)布數(shù)據(jù)進(jìn)行實(shí)時(shí)調(diào)用。
使用影像重采樣方法,建立一系列不同分辨率的影像圖層,每個(gè)圖層分別存儲(chǔ),并建立相應(yīng)的空間索引機(jī)制,提高縮放瀏覽影像時(shí)的顯示速度。如地形切片相似,為減小影像的傳輸數(shù)據(jù)量和優(yōu)化顯示性能,為影像建立影像金字塔。GeoServer是最常用的地圖服務(wù)發(fā)布開源工具,具有地圖數(shù)據(jù)發(fā)布迅速,用戶更新便捷,以及要素?cái)?shù)據(jù)快速刪除和插入的特點(diǎn),使得空間地理信息能夠自由共享。將處理好的影像瓦片數(shù)據(jù)發(fā)布在GeoServer地圖服務(wù)器中,采用WMS、WMTS、WFS等地圖服務(wù)方式對(duì)影像瓦片數(shù)據(jù)進(jìn)行調(diào)用。
地表水資源主要指河流、湖泊、海域的純水體,本身沒(méi)有固定的形狀,隨地表高低起伏而變化,從而加大了水體建模的難度。目前的三維水利信息化建設(shè)中,水體的建模其實(shí)就是水面的建模。這種建模主要有兩種實(shí)現(xiàn)方法。
(1)利用水面邊線為范圍,填充顏色或圖案紋理(一般是照片或圖像處理軟件處理的圖片),以圖像方式覆蓋在地表上[3]。水面隨地表而起伏,其實(shí)是水底三維地形。
(2)根據(jù)水面范圍線繪制出矢量水面,并改變矢量水面的填充圖案為水紋,最后形成水面模型,并加載至三維地形場(chǎng)景中[3]。這種建模缺點(diǎn)很明顯,把水體抽象成單一的水面,水面與地表之間就是空的,是互不關(guān)聯(lián)的地形模型加水面模型,只能單一地作為景觀使用。
以上兩種建模方式,只表達(dá)水資源的二維分布范圍,不能滿足自然資源業(yè)務(wù)對(duì)水資源的形態(tài)、空間分布和數(shù)量的管理需求,需要設(shè)計(jì)一種新的水資源體三維建模方法。
水體依附于水底地表,由于自身重力隨地表高低起伏而變化,因此水下地形高程數(shù)據(jù)是水體形狀的一個(gè)決定因素。在自然資源水資源調(diào)查中,需要對(duì)河流、湖泊、海洋進(jìn)行水下地形測(cè)量。水下地形的起伏看不見(jiàn),不像陸地上地形測(cè)量可以選擇地形特征點(diǎn)進(jìn)行測(cè)繪,而只能用測(cè)深線法或散點(diǎn)法均勻地布設(shè)一些測(cè)點(diǎn)[4],如圖2所示,直接用于水底的三維建模將存在大量冗余數(shù)據(jù)。
圖2 水下地形測(cè)量數(shù)據(jù)
水下地形圖是根據(jù)江河、湖泊、水庫(kù)、港灣和近海的水底測(cè)量點(diǎn)平面位置和高程,用數(shù)學(xué)內(nèi)插的方法繪制成的,其信息表達(dá)科學(xué)合理,避免大量的冗余數(shù)據(jù)[5]。本文利用水下地形測(cè)量數(shù)據(jù)構(gòu)建水底數(shù)據(jù)高程模型(DEM),形成水下地形,如圖3所示。由于實(shí)地條件限制,水底地形測(cè)量難以獲取岸邊地形,為確保水域水底地形的完整,構(gòu)建水底數(shù)據(jù)高程模型時(shí),加入水域周邊部分陸地地形數(shù)據(jù)。
圖3 水下地形數(shù)據(jù)
目前,沒(méi)有軟件可以利用水下地形數(shù)據(jù)直接實(shí)現(xiàn)水體三維建模,本文利用arcgis平臺(tái)的現(xiàn)有工具,并進(jìn)行二次開發(fā),實(shí)現(xiàn)了水體的三維建模。
(1)在ArcGIS環(huán)境下,執(zhí)行工具[raster to tin],輸入水下地形數(shù)字高程模型柵格數(shù)據(jù),生成TIN。
(2)TIN(不規(guī)則三角網(wǎng))是一種表示數(shù)字高程模型的方法,主要用于表示地表起伏,由結(jié)點(diǎn)、邊、面及其拓?fù)浣M成,由于數(shù)據(jù)結(jié)構(gòu)的差異,不能直接用作多面體的水資源體底面。同時(shí)通過(guò)1創(chuàng)建的TIN通常超出水面范圍,并覆蓋了島嶼。為此,利用[Interpolate Polygon ToMultipatch]工具,以水面范圍多邊形為邊界進(jìn)行TIN裁剪,并將TIN轉(zhuǎn)換成Multipatch(多面體)模型,形成水底表面模型。
(3)完整的水體模型,不僅包括水底模型,還應(yīng)有水面和側(cè)面。復(fù)制水底模型,將各頂點(diǎn)高程設(shè)定為水面高程,形成為水面表面模型。
(4)利用ArcGIS SDK進(jìn)行二次開發(fā),提取水底和水面表面模型邊線,依據(jù)兩邊線對(duì)應(yīng)頂點(diǎn)進(jìn)行側(cè)面建模。合并水面、地面、側(cè)面形成水體的完整三維模型(表面模型),如圖4所示。
圖4 水體表面模型
技術(shù)流程如圖5所示。
圖5 技術(shù)流程圖
河流是指經(jīng)?;蜷g歇地沿著狹長(zhǎng)凹地流動(dòng)的水流。其河谷狹窄,橫斷面多呈V或U形,河道蜿蜒曲折,多曲流與汊河,岸線犬牙交錯(cuò)不規(guī)則;河面縱向坡度大小不同,橫向多趨水平。
其水底模型的建模技術(shù)方法與湖泊相似,水面模型的建模要考慮到上下游的坡度,具體做法為:① 河底模型的制作;② 河流圖斑的三維化;③ 基于坡度的三維圖斑的內(nèi)插;④ 基于河流圖斑范圍的約束TIN;⑤ TIN多面體化。
體素模型:采用大量規(guī)則體素(如立方體)的有序組合來(lái)表示三維物體的模型。水體體素模型可用于連續(xù)空間的分析,如水質(zhì)、物理性、化學(xué)性、生理性等。水體體素模型是通過(guò)對(duì)表面模型的X-Y-Z剖面切割形成的,如圖6所示。
圖6 水體體素模型
具體做法為:① 確定各層級(jí)體素圖元的大??;② 按圖元大小對(duì)表面模型進(jìn)行Z剖面切割;③ 各剖面圖的柵格化處理;④ 二維柵格轉(zhuǎn)化為三維柵格;⑤ 各剖面三維的實(shí)體化組織;⑥ 各層級(jí)體素模型的金字塔組織。
影像和高程數(shù)據(jù)是Cesium的基礎(chǔ)數(shù)據(jù),構(gòu)成了應(yīng)用的初始場(chǎng)景和視圖空間,在應(yīng)用中必須首先加載。因?yàn)橛跋窈透叱虜?shù)據(jù)量大,整體加載非常耗時(shí),在實(shí)踐中先將全局底圖按照不同等級(jí)進(jìn)行切分,根據(jù)視圖比例分級(jí)加載數(shù)據(jù)。在最高級(jí)別需要的信息最少,只要保留宏觀信息,一般只需要一張圖片;在中間級(jí)別,采用多張圖片拼接還原視圖范圍;在最低級(jí)別,需要顯示的信息最多,需要保留所有細(xì)節(jié),導(dǎo)致加載的速度變慢。將每張切好的圖片稱為瓦片(tile),各個(gè)等級(jí)的瓦片呈現(xiàn)金字塔自上而下,所包含的信息從粗略到精細(xì)。
Cesium提供了視圖對(duì)象Viewer,用來(lái)實(shí)現(xiàn)基本3D地圖框架的搭建。通過(guò)使用不同的參數(shù)設(shè)置,將不同的圖層加載至Viewer上,完成具體數(shù)據(jù)展示。Cesium包含兩種圖層:① 普通圖層,用來(lái)顯示影像、地圖;② 地形圖層,用來(lái)模擬地球表面的起伏。Cesium會(huì)將加載的圖層自動(dòng)進(jìn)行合并,完成地形、紋理瓦片的綜合展示,如圖7所示。
圖7 三維地形渲染
考慮網(wǎng)速和渲染量是有限的,在加載超大規(guī)模的水體三維模型數(shù)據(jù)時(shí),不可能把一個(gè)模型全部下載加載。為此,將三維模型數(shù)據(jù)轉(zhuǎn)換為Cesium3D 3dTiles格式,加入了分層LOD的結(jié)構(gòu),成功解決了大量3D數(shù)據(jù)流式傳輸和海量渲染的問(wèn)題。cesium加載3dtiles非常簡(jiǎn)單,調(diào)用primitive的add方法即可將3dtiles加載到數(shù)字地球上了,代碼如下:
var tilesetModel = new Cesium.Cesium3DTileset({url: "./XXX/tileset.json" });
viewer.scene.primitives.add(tilesetModel)。
Cesium框架通過(guò)地形LOD和3Dtile模型LOD為批量地形和模型的加載添加一個(gè)快速索引和數(shù)據(jù)集的整體性描述,從而減少數(shù)據(jù)傳輸量和渲染實(shí)體數(shù)據(jù)量,實(shí)現(xiàn)三維模型加載效率的提升,滿足了三維實(shí)時(shí)展示的要求,如圖8所示,實(shí)現(xiàn)了三維場(chǎng)景的搭建。
圖8 水資源三維場(chǎng)景
本文對(duì)水資源體的三維建模進(jìn)行了探討,提出河流、湖泊、水庫(kù)等形態(tài)復(fù)雜、體量巨大水資源體的自動(dòng)建模技術(shù)方法。同時(shí)基于Cesium開源平臺(tái),建立模型數(shù)據(jù)的分層LOD結(jié)構(gòu),實(shí)現(xiàn)了海量數(shù)據(jù)的三維實(shí)時(shí)調(diào)度和渲染,直觀表達(dá)了水資源的空間形態(tài)與分布。也為其他自然資源的三維建模與展示,提供了一條有效技術(shù)途徑,為自然資源的三維可視化提供了良好的技術(shù)支撐,在促進(jìn)自然資源“三維一張圖”建設(shè)、自然資源管理由二維向三維的轉(zhuǎn)變等方面具有重要的現(xiàn)實(shí)意義。不僅具有一定的學(xué)術(shù)價(jià)值,而且在自然資源的三維數(shù)據(jù)庫(kù)建設(shè)和三維可視化管理中具有廣闊的應(yīng)用價(jià)值和前景。