吳志群
(北京北建大科技有限公司,北京100000)
圖1 數(shù)據(jù)庫系統(tǒng)架構(gòu)圖
古代建筑是中國古代辛勤勞動人民集體智慧的結(jié)晶。許多古代建筑都是文化考察與旅游的重要場所,它是研究我國古代經(jīng)濟、文化、政治、科技發(fā)展的重要實物資料。中國古建筑不僅是現(xiàn)代建筑文化傳承、技術(shù)創(chuàng)新的重要借鑒,更是中華五千年文明發(fā)展的重要載體,同時也因其特有的藝術(shù)風格,在世界各國建筑風格中脫穎而出,成為一種獨特的建筑體系。然而伴隨著現(xiàn)代社會的快速發(fā)展、全球氣候日益變暖、極端天氣日益增多等多方面因素影響,許多具有高藝術(shù)價值的古建筑正面臨被人為或環(huán)境破壞的危險,而這些急需保護的古建筑,有些僅是擁有文字、圖片等不易反應古建筑真實樣貌的簡單資料,有些甚至有些沒有任何資料保存,僅有的那些資料也是在紙上以文字記載的形式進行記錄,沒有完整的數(shù)字形式的數(shù)據(jù)資料妥善保存,隨著時光的流逝他們很可能被損毀或丟失,一旦這些古建筑被破壞,無法得到有效的修復,可能將永遠消失于人類的視野中,這對于中華文明乃至世界文明都是不可彌補的巨大損失[1]。
圖2 數(shù)據(jù)庫邏輯視圖
通過探索多元化的古建筑保護途徑,高效、直觀并且完整的保存古建筑各類數(shù)據(jù)信息已成為國內(nèi)外古建筑保護單位急需解決的問題。傳統(tǒng)古建筑保護單位對于古建筑的數(shù)字化保護方式為擁有該古建筑的影像照片、尺寸大小等圖文資料,且這些資料均以文件型的存儲方式散亂的存儲于硬盤等各類存儲設(shè)備中。通過文字資料保存古建筑數(shù)據(jù)的方法比較抽象,無法真實的反應古建筑的樣貌,且數(shù)據(jù)量龐大,查找困難;利用影像照片存儲古建數(shù)據(jù)的方法雖然比較直觀形象,但很難達到古建筑修復時所需要的精度,無法滿足科學研究以及古建筑修復、重建的要求。并且古建筑數(shù)據(jù)信息以文件型的存儲方式存儲于各類存儲設(shè)備也面臨著數(shù)據(jù)冗余過大、查找困難、無法共享等一系列問題。針對古建筑數(shù)字化多源數(shù)據(jù)存儲的問題,建立基于數(shù)據(jù)庫存儲技術(shù)的古建筑數(shù)字化數(shù)據(jù)庫系統(tǒng)是當前研究的熱點。
古建筑數(shù)據(jù)庫后臺管理系統(tǒng)主要依托關(guān)系數(shù)據(jù)庫系統(tǒng)、分布式文件系統(tǒng)兩種關(guān)鍵技術(shù),對古建筑三維點云、古建筑三維模型、古建筑構(gòu)件、古建筑影像、電子檔案、屬性等數(shù)據(jù)進行管理。關(guān)系型數(shù)據(jù)系統(tǒng)采用Postgresql+postGIS 方式,基于多分辨率金字塔中的關(guān)系模型構(gòu)建二維行列關(guān)系表格,依托于SQL 語言實現(xiàn)數(shù)據(jù)的查詢、更新、添加、刪除等處理操作。分布式文件系統(tǒng)主要通過非關(guān)系型HDFS 文件系統(tǒng)存儲文件數(shù)據(jù),支持存儲節(jié)點的動態(tài)增添、海量數(shù)據(jù)的讀寫、高并發(fā)訪問等。
PostGIS 數(shù)據(jù)庫子系統(tǒng)和HDGS 分布式文件子系統(tǒng)來設(shè)計一個適于大規(guī)模空間數(shù)據(jù)的存儲與管理系統(tǒng),其具體體現(xiàn)如下:
圖3 TIN 模型的子集結(jié)構(gòu)圖
2.1 對于點云、模型等基礎(chǔ)數(shù)據(jù),構(gòu)建分層分塊的多分辨率金字塔,從而方便數(shù)據(jù)的更新、重組與刪除。
2.2 基于PostGIS 關(guān)系型數(shù)據(jù)庫,實現(xiàn)多分辨率金字塔數(shù)據(jù)的快速索引、查詢、編輯等。
圖4 TIN 數(shù)據(jù)E-R 模型
2.3 基 于 HDFS (Hadoop Distributed File System)實現(xiàn)對大文件、松散型文件的處理以及分布式存儲,并將其作為數(shù)據(jù)的底層存儲系統(tǒng)。
2.4 基于MapReduce 并行編程模型,實現(xiàn)數(shù)據(jù)的并行處理。
2.5 基于HBase 分布式數(shù)據(jù)庫,實現(xiàn)非結(jié)構(gòu)化數(shù)據(jù)的存儲管理(圖1)。
古建筑數(shù)據(jù)庫管理系統(tǒng)將分為數(shù)據(jù)庫維護(權(quán)限管理和系統(tǒng)數(shù)據(jù)備份與恢復)數(shù)據(jù)管理通用模塊、點云數(shù)據(jù)存儲模塊、三維模型數(shù)據(jù)存儲與管理、古建筑構(gòu)件[2~3]數(shù)據(jù)存儲與管理模塊、影像數(shù)據(jù)存儲與管理模塊、電子檔案數(shù)據(jù)存儲與管理模塊、屬性數(shù)據(jù)存儲與管理模塊等6 大模塊。本子系統(tǒng)將提供上述的大文件、松散型文件處理,保存與提取,文件分布式存儲,支持高效的局部更新和全局更新,數(shù)據(jù)檢查、入庫和發(fā)布,數(shù)據(jù)并行處理6 個工具分別對應這9 個模塊(圖2)。
根據(jù)業(yè)務需求可以將子系統(tǒng)的各種功能劃分到不同模塊中實現(xiàn),以提供相互之間的合作。子系統(tǒng)主要的模塊功能主要有如下功能:
(1)數(shù)據(jù)管理通用模塊,主要包括,提供數(shù)據(jù)管理的用戶界面和實現(xiàn)與各類數(shù)據(jù)管理模塊的對接。
(2)點云與影像數(shù)據(jù)存儲與管理,支持結(jié)構(gòu)化點云存儲,非結(jié)構(gòu)化影像存儲,分布式存儲,單瓦片點云數(shù)據(jù)編輯、保存與提取;高效的局部更新和全局更新;對接數(shù)據(jù)處理工具,提供數(shù)據(jù)檢查、入庫和發(fā)布等一攬子流程化功能;數(shù)據(jù)并行處理。
(3)三維模型數(shù)據(jù)存儲與管理,支持OBJ、3DS 等主流格式的模型存儲;模型LOD 形式存儲;單瓦片模型數(shù)據(jù)編輯、保存與提?。籅IM模型數(shù)據(jù)存儲
(4)古建筑構(gòu)件數(shù)據(jù)存儲與管理,支持大文件、松散型文件處理;構(gòu)件分類管理;構(gòu)件檢索;構(gòu)件上傳下載。
(5)檔案資料數(shù)據(jù)存儲與管理,支持檔案多文件管理;檔案按編碼、按類型存儲;數(shù)據(jù)全局與局部更新;對接數(shù)據(jù)處理工具,提供數(shù)據(jù)檢查、入庫和發(fā)布。
(6)數(shù)據(jù)庫安全,支持用戶管理權(quán)限設(shè)置;支持數(shù)據(jù)備份與數(shù)據(jù)恢復;支持多節(jié)點數(shù)據(jù)調(diào)取。
(7)滿足C/S、B/S 交互訪問。
古建筑三維模型數(shù)據(jù)模型總的關(guān)系圖以三維線框、表面、實體模型[4~5]為例進行說明,三維體的基本要素可以抽象為點、邊、線、面、實體和復雜體,呈現(xiàn)出由簡單到復雜的遞進關(guān)系。其中,根據(jù)線框的特性,建立了線框模型(WireFrame),包含一系列頂點以及由頂點連接的棱邊;表面模型(surface)是在線框的基礎(chǔ)上,加入環(huán)邊的信息及邊的連接關(guān)系;僅僅依靠表面模型,無法判別實體與表面的位置關(guān)系,實體模型(正則形體)主要是明確定義了表面的哪一側(cè)存在實體,具體做法是,在表面模型的基礎(chǔ)上增加了每個表面的外法矢量信息。這幾種模型可作為復雜體(Compound)的三種表達方式,下面具體討論古建筑復雜體的數(shù)據(jù)庫存儲結(jié)構(gòu)。
圖5 線框、表面、實體模型E-R 模型
TIN 模型是利用點云進行三維重構(gòu)生成的三維模型,是多源空間數(shù)據(jù)應用最多的數(shù)據(jù)之一。一個場景對象一個或多個TIN 模型構(gòu)成,TIN 模型主要由頂點列表、子集結(jié)構(gòu)、材質(zhì)、矩陣參數(shù)以及組件名稱組成。
TIN 模型中,頂點列表包括位置信息、法線、紋理坐標組成;子集信息(如圖3 所示)包含頂點列表、材質(zhì)名稱、材質(zhì)對應的資源視圖、子集對應的索引緩存的開始位置、子集對應的頂點數(shù)目以及材質(zhì)對應的影像數(shù)據(jù)、光照模型,因此設(shè)計如圖4 所示的TIN 數(shù)據(jù)模型。
以下TIN 模型中數(shù)據(jù)結(jié)構(gòu)說明:
Struct ModelVertex 存儲頂點數(shù)據(jù)結(jié)構(gòu),包含頂點坐標、紋理和法向;
Struct ModelSubMesh 存儲子集結(jié)構(gòu),包含對應材質(zhì)索引、子集對應的索引及索引數(shù)目;
Struct ModelSubMaterial 子集材質(zhì)結(jié)構(gòu),包含影像、材質(zhì)反射率;
Struct TriModelMesh 模型構(gòu)件結(jié)構(gòu),包含頂點集合、面片索引集合、子集索引集合、材質(zhì)集合、矩陣集合、組件。
表示線框、表面、實體模型[6~7]的數(shù)據(jù)結(jié)構(gòu),如圖5 具體如下:
3.2.1 復雜體(Compound) 表包含一個標識信息CompoundID,一些屬性信息Attribute1、Attribute2… ,PartID 對應WireFrame、SurfaceModel、RugularShapeSolid 三張表的里標識信息,SolidTypeID 對應SolidType 表里的標識信息,SolidType 表主要用于確定SolidTypeID 對應的是WireFrame、SurfaceModel、RugularShapeSolid 中哪一種模型,如表1 所示。
3.2.2 WireFrame、SurfaceModel、RugularShapeSolid 三張表分別存儲線框模型、表面模型和正則形體模型;
3.2.3 線框模型使用頂點和鄰邊來表示形體,可以作為多面體的一種表達方式,用來確定多面體的形狀和位置,這種方式被廣泛用于工程圖。WireFrame 表使用二進制格式存儲頂點(BVertex)和鄰邊(VertexIndex),鄰邊是使用頂點的序列來構(gòu)成,另外使用了一個標識(WireFrameID)來表示該線框模型;
3.2.4 表面模型是通過有向棱邊圍成的部分來定義形體便面,由面的幾何來定義形體,它基于線框模型的基礎(chǔ)上,增加了有關(guān)(環(huán))信息、棱邊的連接方向等內(nèi)容,使用表SurfaceModel 來存儲,該表包含一個標識SurfaceModelID 和在面標識序列SurfaceIndex,其中SurfaceIndex 是標識在表Surface 里面存儲的面的ID 集合,表Surface 就存儲形體的各個面信息,該表包含面標識SurfaceID 和線框標識WireFrameID 以及棱邊的序列索引;
3.2.5 正則實體模型,主要是明確定義了表面的哪一側(cè)存在實體,在表面模型的基礎(chǔ)上增加了每個表面的外法矢。因此表RugularShapeSolid 中包含標識RegShID,表面模型標識SurfaceModelID,以及使用二進制存儲的各個面外法矢向量的集合OuterVector。
表1 SolidTypeID 與模型的對應關(guān)系
本文主要針對古建筑數(shù)據(jù)庫系統(tǒng)建設(shè),提出了基于三維激光掃描儀獲取的三維激光點云數(shù)據(jù)、高分辨率影像照片、三維模型以及屬性數(shù)據(jù)等多源數(shù)據(jù)的古建筑綜合數(shù)據(jù)庫系統(tǒng)的存儲模型,重點研究了古建筑不規(guī)則三角網(wǎng)模型,線框、表面和實體模型的實體表達方法,并進一步闡述了維模型數(shù)據(jù)庫存儲的數(shù)據(jù)結(jié)構(gòu)。本文的古建筑數(shù)據(jù)庫存儲技術(shù)與方法為古建筑數(shù)字化保護提供技術(shù)支持。