引文格式: 尚曉娟,姜福泉,張帆,等. 基于OracleSDO_PC的點云數據存儲管理技術的應用研究[J].測繪通報,2015(4):57-60.DOI:10.13474/j.cnki.11-2246.2014.0502
基于OracleSDO_PC的點云數據存儲管理技術的應用研究
尚曉娟1,姜福泉2,張帆1,黃先鋒1
(1. 武漢大學測繪遙感信息工程國家重點實驗室,湖北 武漢 430079;
2. 中國地質大學(武漢)信息工程學院,湖北 武漢 430074)
ApplicationResearchonPointCloudDataMemoryManagementTechnique
BasedonOracleSDO_PC
SHANGXiaojuan,JIANGFuquan,ZHANGFan,HUANGXianfeng
摘要:基于Oracle SDO_PC的存儲模型和功能結構研究點云的數據庫導入、存儲、檢索等操作,并針對不同的點云數據量、點云類型、存儲分塊大小,以及多用戶并發情況,分別進行點云數據存儲和檢索效率的試驗對比。試驗結果表明,SDO_PC模型可以勝任不同類型點云數據的存儲、檢索工作,并具有良好的數據存儲可擴展能力和高效的多用戶并發處理能力。本研究可為后續海量點云數據存儲管理及應用、服務提供有價值的參考。
關鍵詞:SDO_PC;點云數據;存儲;檢索;多用戶并發
中圖分類號:P208
收稿日期:2014-02-25
基金項目:973計劃(2011CB707001);國家自然科學基金(41071291;41001308);Oracle空間數據庫新技術研究;國家科技支撐計劃(2012BAH43F00)
作者簡介:尚曉娟(1988—),女,碩士生,主要研究方向為攝影測量、激光掃描數據分析處理等。E-mail:shangxiaojuan@whu.edu.cn
一、引言
近十幾年來,激光掃描點云數據作為一種描述空間對象的重要數據源,已經受到國內外學者和工業應用的廣泛關注,并在三維建模、文物修復、地物提取等方面得到廣泛應用[1-2]。然而,激光掃描點云數據的“海量性”給點云數據的后處理帶來很大困難,已經成為限制點云在存儲、管理、查詢、分析、可視化等多方面應用的瓶頸。
目前,點云數據的組織與管理多采用文件形式的數據管理方案,但文件管理點云數據的方法尚存在許多不足之處,如信息共享不便、安全級別較低、并發訪問難等。OracleSpatial作為領先的空間數據庫管理平臺,在管理空間數據方面具有保證數據的完整性、可恢復性和安全性等基本特性。OracleSpatial從11g開始推出了專門用于點云數據組織與管理的SDO_PC數據類型,針對點云數據的特點擴展了存儲對象創建、查詢、可視化等多方面的功能[3]。
本文針對SDO_PC的存儲模型和功能結構,研究了Oracle數據庫的點云數據導入、創建存儲對象和檢索點云數據的操作。為了測試SDO_PC在點云數據存儲管理方面的性能,本文分別設計了在不同數據量的點云數據、不同類型的點云、存儲過程中不同的分塊,以及多用戶并發等不同情況下,進行點云數據存儲和檢索的效率測試試驗。從而驗證Oracle的SDO_PC技術在點云數據管理方面的性能,為日益廣泛開展與海量點云數據管理、處理有關的工程應用和科研提供實驗參考。
二、SDO_PC簡介
SDO_PC是Oracle數據庫的一種對象關系數據模型,是存取管理點云數據信息的基礎,提供了存取、索引、查詢、分析點云數據的能力,同時提供了并發訪問和安全控制等機制,并將相關函數集成在一起[4]。
1.SDO_PC點云數據存儲模型
圖1顯示了在Oracle中使用SDO_PC類型表示點云的存儲體系結構。基表具有數據類型為SDO_PC的列,這個列存儲與點云相關的元數據。點云被分成多個子集,并存儲為塊表的多行。塊表同時記錄了分塊的其他屬性,如分塊的范圍、分塊中點的數目、分塊點云的分辨率范圍等。塊表中的每個分塊都唯一關聯到一個pc元數據對象上,同時每個pc對象記錄了對應塊表的屬性信息,如塊表名稱、塊表的范圍、分塊的大小等。
點云數據采用上述存儲模型具有如下優點:①存儲點云的數據量沒有上限,因為表的行數沒有限制;②通過指定窗口或指定塊(BLK_ID)有效選擇點云的子集;③支持刪除或更新指定范圍的點云數據。

圖1 Oracle 中點云的可伸縮存儲框架
2.SDO_PC相關功能介紹
OracleSpatial為實現快速、高效地存取、分析空間數據而將相關功能函數及其過程完全集成在數據庫服務器內,并為數據庫管理系統管理空間數據提供了完全開放的體系結構[5]。用戶通過SQL定義和操縱空間數據,可以訪問對象關系數據模型的存取、檢索、分析等功能。表1 為集成在Oracle數據庫內部的SDO_PC相關功能。

表1 SDO_PC_PKG
三、Oracle數據庫中點云數據的關鍵操作
1. 點云數據的數據庫導入
LAS文件為存儲點云數據的常用數據格式。目前有兩種方法可以實現點云數據LAS文件的Oracle數據庫導入,分別是libLAS[6]和PDAL[7]。
筆者仿照libLAS的LAS文件讀取方式讀取點云數據,使用OCCI[8]接口將點云數據插入到Oracle數據庫中,根據要存儲的點云屬性創建Inputtable來存儲點云坐標和屬性信息。LAS文件導入為Oracle數據庫表結構如圖2所示。

圖2 LAS文件導入為Oracle數據庫示意圖
2. 創建SDO_PC存儲對象
在Oracle數據庫中,創建SDO_PC存儲對象的實質是基于點云數據構建R-tree索引[9]。導入到輸入表(InpTable)的點云數據最終按照R-tree索引的原理被分塊存儲到塊表的多行。Oracle數據庫基于點云數據構建R-tree索引的程序被集成在Oracle數據庫服務器的SDO_PC_PKG.INIT函數和SDO_PC_PKG.CREATE_PC函數中。
3. 點云數據的檢索
Oracle數據庫提供了兩種檢索點云數據的方法,窗口查詢和基于分辨率的查詢[10]。兩者相比而言,窗口查詢的檢索結果更加精準。筆者主要針對窗口查詢進行了試驗。查詢過程包括兩個階段:①檢索與所給窗口范圍相交的候選分塊;②檢索候選分塊中與檢索窗口范圍相交的所有點。該過程被集成在Oracle數據庫服務器的SDO_PC_PKG.CLIP_PC函數中。
四、試驗測試及分析
為驗證OracleSDO_PC的點云數據存儲、檢索、多用戶并發等功能的可行性,筆者進行了大量的測試試驗。試驗硬件環境:2個Intel至強3.2GHz處理器,8GB內存,1TB硬盤,NTFS分區。軟件環境:64位Windows7操作系統,VC++2010編輯器,Oracle11gR2。
試驗數據來源于敦煌973數字文化遺產項目的機載掃描數據。掃描區域大致位于北緯40.04°、東經94.81°的敦煌莫高窟附近的沙漠區域,數據采集的儀器為LeicaALS50Ⅱ,點云數據格式為LAS1.0,點云數據的點間距為0.4m,數據量為347GB。
1. 基于SDO_PC的點云數據存儲與檢索
為驗證Oracle數據庫對點云數據存儲的可擴展性,試驗挑選了同一測區6組不同數據量的點云數據,從100萬到3700萬不等。將其逐個導入到數據庫中,并記錄存儲時間。6組數據導入完成后,利用窗口查詢進行檢索試驗,并記錄檢索與存儲范圍同樣大小的檢索時間,用吞吐量衡量所用服務器的I/O效率。試驗結果見表2。

表2 點云數據的存儲和檢索時間
從表2可以看出,Oracle數據庫可以實現點云數據的導入,并表現出存儲點云數據的可擴展性。另外,隨著點云數據量的增多,點云的存儲時間和檢索時間都在增大,但是檢索時間卻遠遠小于存儲時間,這種情況同樣體現在點云存儲和查詢的服務器I/O效率上,點云存儲I/O效率是1.3~1.4萬點/s,點云查詢的I/O效率在25萬點/s左右。原因在于基于點云數據構建R-tree索引的過程遠遠復雜于R-tree的檢索過程,并且數據量越大,R-tree索引的構建就越復雜。但是正由于R-tree索引的建立,才大大提高了點云數據的檢索效率,方便了點云數據的后續處理。
2. 點云類型不同對數據存儲和檢索的影響
為測試點云類型不同對Oracle的點云數據存儲和檢索的影響,本文選了3組不同類型的點云數據進行存儲和檢索試驗。試驗數據情況和試驗結果見表3。

表3 不同類型點云數據的 Oracle存儲和檢索
從表3可以看出,Oracle對不同類型的點云都可以實現無差別的存儲和檢索功能,而影響存儲和檢索效率的主要因素在于點云的密度,也即表3中所列的點間距。點間距越大,密度越小,點云分布越稀疏,創建R-tree索引的時間就越短。機載點云和地面點云相比,點云的數據量相差不大,但是由于機載點云的點間距遠大于地面點云,因此即使在機載點云數據量大的情況下,機載點云的存儲時間較短,檢索時間也較短。地面點云和車載點云相比,有相同的點間距,車載點云比地面點云的數據量大,相應地,存儲時間較長,檢索時間也較長。因而,Oracle對點云數據的存儲和檢索不受點云類型不同的影響,同樣數據量的點云數據的存儲和檢索效率與點云的分布密度成反比,密度越大則效率越低,反之則越高。
3. 分塊大小對點云數據存儲與檢索的影響
blk_capacity是決定SDO_PC存儲對象分塊大小的一個關鍵參數,在函數SDO_PC_PKG.INIT的ptn_params參數中設置,一般設置如 "blk_capacity=100"。下面通過試驗來分析blk_capacity取值不同對創建SDO_PC存儲對象和窗口查詢的影響。試驗選用了數據量為12571243的LAS點云數據,進行了4組試驗,分別給blk_capacity取值5000、10000、50000和100000(Oracle數據庫中限制該參數上限為十萬)。為了確保試驗中blk_capacity為唯一變量,選用該組數據進行重復試驗。在blk_capacity取值不同的情況下,每次導入該組數據后及時記錄存儲時間,然后用同樣大小的窗口去查詢點云數據并記錄檢索時間,最后刪除所導入的數據進行下組試驗。為避免緩存影響試驗的真實性,每次試驗前都清理緩存。試驗結果如圖3所示。

圖3 blk_capacity取值不同對創建SDO_PC存儲對象和窗口查詢的影響
由圖3可知,分塊越小,創建SDO_PC存儲對象的時間就越長。說明分塊越小,對于同樣數據量的點云數據,R-tree的結點越多,層級越深,插入就越復雜。對于查詢而言,查詢的時間隨著分塊的增大先減小后增大。這是由于在分塊大的情況下,雖然可以通過R-tree索引很快找到相關的候選分塊,但是由于分塊過大,當查找窗口邊緣分塊中包含在窗口中的點時,花費的時間就會增長。不過,在分塊太小的情況下,R-tree層級增加,導致查詢變慢,同時需要更多的塊內檢索操作,導致時間變長。因此,為了均衡點云數據存儲和檢索的效率,應該結合點云的數據量為分塊大小選擇合理的取值,該值的選擇由多次導入、檢索的經驗所得,目前無法準確給出參考標準。
4. 多用戶并發在點云窗口查詢方面的應用
Oracle數據庫內部提供并發處理的功能。為了測試Oracle數據庫在點云數據方面的并發性能,筆者進行了點云數據多用戶并發窗口查詢的試驗。試驗選取了兩個相鄰條帶的機載激光LAS點云數據,數據量分別為46526014和46515286,重疊率為50%。為了保證試驗結果不受緩存的影響,每個多用戶試驗前都清理緩存。
試驗過程描述如下:單用戶窗口查詢的范圍是兩個條帶數據的整體范圍;2個用戶的窗口查詢范圍是將單用戶窗口范圍平分;4個用戶的窗口查詢范圍則將單用戶窗口范圍4等份;8用戶、16用戶、32用戶則依次類推。每個窗口查詢的過程由一個BAT文件編寫完成,并發的試驗由BAT文件同時運行實現,同時運行的BAT文件的個數就相當于多用戶并發的個數。試驗結果用吞吐量來評價,見表4。

表4 點云窗口查詢多用戶并發
由表4可以得到,隨著并發數的增多,吞吐量逐漸增大,但是當吞吐量達到某個值時,即使并發數仍在增加,吞吐量也只在該值附近上下浮動。這個值的大小與CPU的配置有關。在高配的CPU情況下,能得到更好的結果。總而言之,在并發的用戶量增多的情況下,CPU的使用效率變高,計算機的吞吐量增大。
五、結束語
針對OracleSDO_PC在組織管理點云數據方面的優勢,本文進行了大量的測試對比試驗。試驗表明,OracleSDO_PC數據類型的使用,為存儲大點集云數據提供了一個可伸縮的平臺,很好地解決了大點集云數據存儲查詢問題,并具有多用戶并發處理的功能,可以成為海量點云存儲管理的工具。不過,由于基于大點集云數據構建R-tree空間索引的復雜性,導致Oracle數據庫的點云數據組織的效率有待提高。另外,本文的研究為海量點云數據的后處理、分析及應用提供了有價值的參考。
參考文獻:
[1]黃先鋒.機載LiDAR點云數據的建筑物重建研究[D].武漢:武漢大學,2006.
[2]張帆, 黃先鋒, 李德仁. 激光掃描與光學影像數據配準的研究進展[J]. 測繪通報, 2008(2): 7-10.
[3]ABRAMSONI.OracleDatabase11g:ABeginner’sGuide[M].[S.l.]:OraclePress, 2009.
[4]GODFRINDA.Oracle’sPointCloudDatatype[EB/OL].2011-11-04.http:∥www.ncg.knaw.nl/Studiedagen/09PointClouds/presentations/PointCloud_14_AlbertGodfrind.pdf.
[5]王云帆.OracleSpatial空間數據存儲管理技術的應用研究[J]. 測繪通報, 2011(6):76-79.
[6]BUTLERH,LOSKOTM,VACHONP,etal.LibLAS:ASPRSLASLiDARDataToolkit[EB/OL].2011-02-15.http:∥www.liblas.org/.
Abstract[7]HOWARD B, MICHAEL G. PDAL-Point Data ion Library [EB/OL].2013-12-31. http:∥www.pointcloud.org/.
[8]LEYDERMANR.OracleC++CallInterfaceProgrammer’sGuide[M].[S.l.]:OraclePress, 2005.
[9]GONGJ,ZHUQ,ZHONGR,etal.AnEfficientPointCloudManagementMethodBasedona3DR-Tree[J].PhotogrammetricEngineeringandRemoteSensing, 2012, 78(4): 373-381.
[10]RAVADAS,HORHAMMERM,BARISMK.PointCloud:Storage,Loading,andVisualization[EB/OL].[2014-02-25].http:∥www.cigi.illinois.edu/cybergis/docs/Kazar_Position_Paper.pdf.