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