陳 新,曾 濤,曹澤寧,屈茜茜,肖 抒
(1.河南省地質調查院,河南 鄭州 450000;2.河南省城市地質工程技術研究中心,河南 鄭州 450000;3.鄭州大學 水利與環境學院,河南 鄭州 450000)
在數字地球的背景下,對地球時空的信息表達也日趨豐富,這些全方位的數據信息包含地上、地表和地下的多源數據,結構各異,往往體量巨大。大數據時代的來臨,使得數字地球平臺能隨時隨地查詢全球任何地方的地理空間信息[1]成為可能。為了更加直觀地表達這些多源信息,往往通過三維模型給予展示。模型結構不僅是對現實世界形態上的模擬,而且是對地球時空專題特征的體現。
從數據結構上來看,各種平臺軟件建立的三維地層模型可分為兩大類;①通過三角網格組成的面來表達結構,這種結構能很好地模擬出實物的表面形態,卻很難表達模型內部的屬性特征,通常稱為面矢量模型,嚴格意義上其并不是真三維,但由于這種結構的模型可減少冗余數據,形態上對特征表面表達的精度較高,因此以往的三維模型多采用這種結構;②結構由規則或不規則的體元組成的三維模型,稱為體元模型,這種結構是真三維,三維模型內部的任何地方均由體元結構組成,能很好地表達模型內部的相互關系,并可融入各種多源數據,但早期由于數據量巨大、占用內存空間,而并未得到太多的應用。隨著計算機軟硬件的更新換代,這種以體元為數據結構的三維模型,在形態、屬性和多源數據上均可得到更好的應用[2-3]。
為了充分發揮體元模型的優勢,實現對數字地球的真三維表達,本文將面矢量三維模型轉化為基于修正球體大圓弧八叉樹剖分(SGOG)編碼的三維體元模型,并在OSG環境下實現了三維模型的一體化顯示。
體元模型的常見數據結構包括四面體網格結構、八叉樹結構、三棱柱結構、廣義三棱柱結構等。為了建立統一的數字地球平臺,首先可對現實世界進行體元剖分,這樣體元模型就是剖分出來的現實世界的一部分,模型中的任何部分都可由剖分后的體元對應起來,整個數字地球平臺可隨時定位到模型里的任意位置;再根據不同的專題需要,對模型的任意體元部分加入不同的專題屬性。
針對地球剖分網格(ESSG)[4]的剖分方式已有很多的研究,其原理為通過地球的統一定位框架對地球進行瓦片剖分,同時實現對空間數據的一體化管理。考慮到全球地球剖分的系統性,還需實現地上、地表、地下實體的統一表達,本文選用SGOG編碼。SGOG編碼屬于ESSG的一種方式,首先利用大圓弧中QTM八叉樹對地球球面進行八等分,再利用遞歸的原理對每個剖分出來的部分繼續進行八叉樹剖分,直到得出需要的體元大小,剖分結束。剖分后的網格相對于球心分布均勻、結構單一、拓撲關系一致,建立模型時,既可模擬出模型表面的起伏,具備TIN的表現形式,又包含體元的特征結構,易于管理[5-6]。
實現體元模型在全球空間剖分后的定位,還需對剖分后的體元進行編碼。通過這些特定的編碼規則,既保證了任意體元的唯一性,又實現了與空間直角坐標系的相互轉換,更加符合以往的認知習慣,使得以傳統坐標系做出的工作成果得以延續。SGOG網格采用改進后的固定方向編碼[7]方式,由圈層碼、八分體標識碼、球面位置和徑向深度編碼4個部分組成,從而保證編碼是地球空間指定位置到空間坐標的唯一映射。編碼轉換過程中,三角網剖分層次為num,徑向剖分層次為Lnum,轉換算法流程如圖1所示。

圖1 修正SGOG編碼與空間直角坐標系之間的轉換算法
以編碼“1_1031012012231323_00000000000000001111”為例,地球半徑R=6 371 393.0 m,具體解碼過程為;
1)提取修正SGOG編碼,并將編碼分為3個部分,分別為1、1031012012231323和00000000000000001111。
2)讀取圈層碼“1”,轉換為十進制2,確定R內=R,R外= 2R。
3)提取第三部分徑向碼00000000000000001111,依次逐字符提取字符,并進行數值計算,若為“0”,則R外=(R內+R外)/2;若為“1”,則R內=(R內+R外)/2,直到提取結束。計算編碼對應體元的內外半徑;
4)提取第二部分第一位編碼為卦限碼(1),確定初始球面三角形為第二卦限,外層3個頂點的初始坐標分別為(-R外,0,0)、(0,R外,0)、(0,0,R外),內層3個頂點的初始坐標分別為(-R內,0,0)、(0,R內,0)、(0,0,R內)。
5)提取第二部分第二位編碼至第二部分編碼結束為面源碼(031012012231323),依次逐字符讀取字符,根據面源碼計算規則,進行二分還原迭代循環。最后得到編碼對應體元的外層頂點空間直角坐標分別為(-2 110 053,4 802 054,3 617 160)、(-2 110 079,4 801 771,3 617 520)、(-2 109 737,4 801 999,3 617 417),內層頂點空間直角坐標分別為(-2 110 050,4 802 047,3 617 156)、(-2 110 077,4 801 765,3 617 516)、(-2 109 735,4 801 993,3 617 413)。
本文以鄭州航空港某區域為建模范圍,根據已有的鉆孔數據進行三維地層建模。模型由矢量面構成,其表面結構為TIN三角形。建模結果如圖2所示。

圖2 面矢量三維地層模型
由上述三維地層模型的坐標信息得到相應位置的修正SGOG編碼,在Windows7系統下,利用VS2010和開源三維圖形工具包OSG搭建編譯環境,實現了三維體元模型的轉換(圖3)。

圖3 基于修正SGOG編碼的三維地層模型
模型的表達方式越來越趨向于多樣化,以往構建的模型僅在某一領域得以應用,或只是一種專題屬性的表現,加上模型構建平臺的局限性,使得模型的應用范圍更為狹小。通過修正SGOG編碼對模型進行轉換,可使模型以體元的形式呈現。與轉換前的模型相比,具有兩個方面的意義;①解決了面矢量三維模型內部結構無法表達、非真三維的問題,利用體元結構代替了矢量結構,通過修正SGOG編碼可隨時定位到模型里的任何位置;②擴展了以往模型的應用范圍,不同平臺上的模型均可通過修正SGOG編碼加以轉換,使得不同專題屬性的模型可在同一平臺上實現數據共享,為大數據跨行業的綜合分析提供了一體化管理方式。