吳志群
(北京北建大科技有限公司,北京100000)

圖1 數據庫系統架構圖
古代建筑是中國古代辛勤勞動人民集體智慧的結晶。許多古代建筑都是文化考察與旅游的重要場所,它是研究我國古代經濟、文化、政治、科技發展的重要實物資料。中國古建筑不僅是現代建筑文化傳承、技術創新的重要借鑒,更是中華五千年文明發展的重要載體,同時也因其特有的藝術風格,在世界各國建筑風格中脫穎而出,成為一種獨特的建筑體系。然而伴隨著現代社會的快速發展、全球氣候日益變暖、極端天氣日益增多等多方面因素影響,許多具有高藝術價值的古建筑正面臨被人為或環境破壞的危險,而這些急需保護的古建筑,有些僅是擁有文字、圖片等不易反應古建筑真實樣貌的簡單資料,有些甚至有些沒有任何資料保存,僅有的那些資料也是在紙上以文字記載的形式進行記錄,沒有完整的數字形式的數據資料妥善保存,隨著時光的流逝他們很可能被損毀或丟失,一旦這些古建筑被破壞,無法得到有效的修復,可能將永遠消失于人類的視野中,這對于中華文明乃至世界文明都是不可彌補的巨大損失[1]。

圖2 數據庫邏輯視圖
通過探索多元化的古建筑保護途徑,高效、直觀并且完整的保存古建筑各類數據信息已成為國內外古建筑保護單位急需解決的問題。傳統古建筑保護單位對于古建筑的數字化保護方式為擁有該古建筑的影像照片、尺寸大小等圖文資料,且這些資料均以文件型的存儲方式散亂的存儲于硬盤等各類存儲設備中。通過文字資料保存古建筑數據的方法比較抽象,無法真實的反應古建筑的樣貌,且數據量龐大,查找困難;利用影像照片存儲古建數據的方法雖然比較直觀形象,但很難達到古建筑修復時所需要的精度,無法滿足科學研究以及古建筑修復、重建的要求。并且古建筑數據信息以文件型的存儲方式存儲于各類存儲設備也面臨著數據冗余過大、查找困難、無法共享等一系列問題。針對古建筑數字化多源數據存儲的問題,建立基于數據庫存儲技術的古建筑數字化數據庫系統是當前研究的熱點。
古建筑數據庫后臺管理系統主要依托關系數據庫系統、分布式文件系統兩種關鍵技術,對古建筑三維點云、古建筑三維模型、古建筑構件、古建筑影像、電子檔案、屬性等數據進行管理。關系型數據系統采用Postgresql+postGIS 方式,基于多分辨率金字塔中的關系模型構建二維行列關系表格,依托于SQL 語言實現數據的查詢、更新、添加、刪除等處理操作。分布式文件系統主要通過非關系型HDFS 文件系統存儲文件數據,支持存儲節點的動態增添、海量數據的讀寫、高并發訪問等。
PostGIS 數據庫子系統和HDGS 分布式文件子系統來設計一個適于大規模空間數據的存儲與管理系統,其具體體現如下:

圖3 TIN 模型的子集結構圖
2.1 對于點云、模型等基礎數據,構建分層分塊的多分辨率金字塔,從而方便數據的更新、重組與刪除。
2.2 基于PostGIS 關系型數據庫,實現多分辨率金字塔數據的快速索引、查詢、編輯等。

圖4 TIN 數據E-R 模型
2.3 基 于 HDFS (Hadoop Distributed File System)實現對大文件、松散型文件的處理以及分布式存儲,并將其作為數據的底層存儲系統。
2.4 基于MapReduce 并行編程模型,實現數據的并行處理。
2.5 基于HBase 分布式數據庫,實現非結構化數據的存儲管理(圖1)。
古建筑數據庫管理系統將分為數據庫維護(權限管理和系統數據備份與恢復)數據管理通用模塊、點云數據存儲模塊、三維模型數據存儲與管理、古建筑構件[2~3]數據存儲與管理模塊、影像數據存儲與管理模塊、電子檔案數據存儲與管理模塊、屬性數據存儲與管理模塊等6 大模塊。本子系統將提供上述的大文件、松散型文件處理,保存與提取,文件分布式存儲,支持高效的局部更新和全局更新,數據檢查、入庫和發布,數據并行處理6 個工具分別對應這9 個模塊(圖2)。
根據業務需求可以將子系統的各種功能劃分到不同模塊中實現,以提供相互之間的合作。子系統主要的模塊功能主要有如下功能:
(1)數據管理通用模塊,主要包括,提供數據管理的用戶界面和實現與各類數據管理模塊的對接。
(2)點云與影像數據存儲與管理,支持結構化點云存儲,非結構化影像存儲,分布式存儲,單瓦片點云數據編輯、保存與提取;高效的局部更新和全局更新;對接數據處理工具,提供數據檢查、入庫和發布等一攬子流程化功能;數據并行處理。
(3)三維模型數據存儲與管理,支持OBJ、3DS 等主流格式的模型存儲;模型LOD 形式存儲;單瓦片模型數據編輯、保存與提取;BIM模型數據存儲
(4)古建筑構件數據存儲與管理,支持大文件、松散型文件處理;構件分類管理;構件檢索;構件上傳下載。
(5)檔案資料數據存儲與管理,支持檔案多文件管理;檔案按編碼、按類型存儲;數據全局與局部更新;對接數據處理工具,提供數據檢查、入庫和發布。
(6)數據庫安全,支持用戶管理權限設置;支持數據備份與數據恢復;支持多節點數據調取。
(7)滿足C/S、B/S 交互訪問。
古建筑三維模型數據模型總的關系圖以三維線框、表面、實體模型[4~5]為例進行說明,三維體的基本要素可以抽象為點、邊、線、面、實體和復雜體,呈現出由簡單到復雜的遞進關系。其中,根據線框的特性,建立了線框模型(WireFrame),包含一系列頂點以及由頂點連接的棱邊;表面模型(surface)是在線框的基礎上,加入環邊的信息及邊的連接關系;僅僅依靠表面模型,無法判別實體與表面的位置關系,實體模型(正則形體)主要是明確定義了表面的哪一側存在實體,具體做法是,在表面模型的基礎上增加了每個表面的外法矢量信息。這幾種模型可作為復雜體(Compound)的三種表達方式,下面具體討論古建筑復雜體的數據庫存儲結構。

圖5 線框、表面、實體模型E-R 模型
TIN 模型是利用點云進行三維重構生成的三維模型,是多源空間數據應用最多的數據之一。一個場景對象一個或多個TIN 模型構成,TIN 模型主要由頂點列表、子集結構、材質、矩陣參數以及組件名稱組成。
TIN 模型中,頂點列表包括位置信息、法線、紋理坐標組成;子集信息(如圖3 所示)包含頂點列表、材質名稱、材質對應的資源視圖、子集對應的索引緩存的開始位置、子集對應的頂點數目以及材質對應的影像數據、光照模型,因此設計如圖4 所示的TIN 數據模型。
以下TIN 模型中數據結構說明:
Struct ModelVertex 存儲頂點數據結構,包含頂點坐標、紋理和法向;
Struct ModelSubMesh 存儲子集結構,包含對應材質索引、子集對應的索引及索引數目;
Struct ModelSubMaterial 子集材質結構,包含影像、材質反射率;
Struct TriModelMesh 模型構件結構,包含頂點集合、面片索引集合、子集索引集合、材質集合、矩陣集合、組件。
表示線框、表面、實體模型[6~7]的數據結構,如圖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),鄰邊是使用頂點的序列來構成,另外使用了一個標識(WireFrameID)來表示該線框模型;
3.2.4 表面模型是通過有向棱邊圍成的部分來定義形體便面,由面的幾何來定義形體,它基于線框模型的基礎上,增加了有關(環)信息、棱邊的連接方向等內容,使用表SurfaceModel 來存儲,該表包含一個標識SurfaceModelID 和在面標識序列SurfaceIndex,其中SurfaceIndex 是標識在表Surface 里面存儲的面的ID 集合,表Surface 就存儲形體的各個面信息,該表包含面標識SurfaceID 和線框標識WireFrameID 以及棱邊的序列索引;
3.2.5 正則實體模型,主要是明確定義了表面的哪一側存在實體,在表面模型的基礎上增加了每個表面的外法矢。因此表RugularShapeSolid 中包含標識RegShID,表面模型標識SurfaceModelID,以及使用二進制存儲的各個面外法矢向量的集合OuterVector。

表1 SolidTypeID 與模型的對應關系
本文主要針對古建筑數據庫系統建設,提出了基于三維激光掃描儀獲取的三維激光點云數據、高分辨率影像照片、三維模型以及屬性數據等多源數據的古建筑綜合數據庫系統的存儲模型,重點研究了古建筑不規則三角網模型,線框、表面和實體模型的實體表達方法,并進一步闡述了維模型數據庫存儲的數據結構。本文的古建筑數據庫存儲技術與方法為古建筑數字化保護提供技術支持。