引文格式: 尚晓娟,姜福泉,张帆,等. 基于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.