1、海量影像数据集入库策略海量影像数据入库策略(oracle为例)栅格数据量越来越大,尤其是影像数据量激增。虽然随着影像数据量的激增,不建议影像数据本身存储到空间数据库(ArcSDE)中,但仍有用户为了解决多用户并发、数据安全性、便于备份与恢复等问题,要将海量的影像或栅格数据存储到空间数据库中。那么,如何更快、更高效的把海量的影像数据入到空间数据库中呢?需要考虑哪些因素?提前做哪些准备工作?海量影像数据入库主要做好以下三步工作。第一步:数据库和ArcSDE准备配置DBMS参数配置ArcSDE参数估算DBMS存储空间大小 分配DBMS存储空间第二步:数据入库 准备原始数据 创建栅格数据存储对象 创建
2、DBMS统计值第三步:数据查看下面分别对上述内容进行详细介绍。第一步:数据库和ArcSDE准备配置DBMS参数1) 设置checkpoint间隔:通过DBA设置初始化参数LOG_CHECKPOINT_INTERVAL和LOG_CHECKPOINT_TIMEOUT为0,实现在线redo日志组切换时,强制出现checkpoint。2) 增加redo日志文件单个文件大小至少为1GB。3) 增加数据块缓冲区大小DB_BUFFER_CACHE。4) 创建数据块大小为8KB的Oracle数据库。8KB是存储blob数据最佳的块大小设置,已经成为ArcGIS二进制数据存储的默认存储类型。16KB或者32KB
3、可能会导致blob存储空间的浪费。配置ArcSDE参数在ArcSDE客户端和服务器之间,ArcSDE使用“传输缓冲区”进行数据传输。在向空间数据库中写入数据时,当ArcSDE客户端数据缓冲区达到阈值,数据将被提交到ArcSDE服务器。当ArcSDE服务器处理数据时,客户端再将更多数据写入到缓冲区,达到阈值时,提交到ArcSDE服务器。依次循环往复。对于栅格数据,“传输缓冲区”的大小是被ArcSDE服务器参数RASTERBUFSIZE控制的。默认情况下,该参数大小为200KB。对于大多数栅格数据入库而言是足够的。在默认参数设置情况下,ArcSDE会为客户端和服务器端分配RASTERBUFSIZE
4、两倍大小的内存,即如果默认参数设置为200KB,那么ArcSDE客户端将会被分配400KB大小的内存,服务器端同样会分配400KB大小的内存。除该参数外,ArcSDE在服务器端还提供了三个缓存区参数,用于从DBMS中读写数据。通过这三个参数,可将服务器端的内存分配增加到1000KB。如果使用直连direct connection方式(如下图所示),ArcSDE客户端和服务器端的操作都在客户机上执行,因此通过直连方式分配的内存是RASTERBUFSIZE参数指定大小的7倍。直连方式下,如果RASTERBUFSIZE参数指定的大小无法满足未压缩栅格块的大小,仅需修改RASTERBUFSIZE参数默
5、认值的大小,与其他三个缓冲区参数无关。未压缩块大小计算方式:块高块高像素深度因子(pixel depth)。1) 例如:128*128块,像素深度为32位,那么未压缩块大小=128*128*4(像素深度因子)=65536byte200KB。像素深度与像素深度因子对照表:序号像素深度像素深度因子11bit0.12524bit0.2538bit1416bit2532bit4664bit8RASTERBUFSIZE参数大小设置:如果未压缩块大小大于默认RASTERBUFSIZE参数,那么必须要对RASTERBUFSIZE参数值进行修改,否则将会导致错误-SE_RASTER_BUFFER_TOO_SM
6、ALL(-294)。RASTERBUFSIZE参数修改方法: 使用sdeconfig管理工具进行修改,修改后的结果写入SDE.SERVER_CONFIG表,具体命令参数如下Sdeconfig o alter v RASTERBUFSIZE=10240000 u sde p sde。提醒:如块的大小未超出默认RASTERBUFSIZE参数大小,请尽量不要修改RASTERBUFSIZE参数值。因为RASTERBUFSIZE参数值过大将会影响整个系统的栅格数据流。估算DBMS存储空间大小为了在海量栅格入库之前,科学的分配和组织存储空间,优化ArcSDE DBTUNE参数(参见分配DBMS存储空间),
7、需提前对栅格入库后的数据量进行评估。栅格数据主要存储在以下四个表:SDE_Aux_#/SDE_BLK_#/SDE_BND_#/SDE_RAS_#。其中SDE_BLK_#主要用于存储栅格数据,其数据量大小是其他表的近150倍。因此其他表忽略不计。估算DBMS存储空间大小主要有两种方法。1) 方法一:加载小部分示例数据入库,基于示例数据推算整个数据入库后所占存储空间的大小。2) 方法二:基于公式计算所需空间的大小。两种方法比较,方法一比方法二更加精确。但当数据尚未准备好,需要提前预估存储空间时,方法二更为适用。为了更准确的预估DBMS存储空间的大小,还需要考虑一下属性对存储空间的影响:压缩方式/金
8、字塔/波段数目/像素位深。基于示例数据推算所需存储空间基于示例数据推算所需存储空间步骤如下:1.查询sde.raster_columns表,获取rastercolumn_id的值。SQL语句如下:select rastercolumn_id from sde.raster_columns where table_name=(Raster dataset/catalog名称);例如:select rastercolumn_id from sde.raster_columns where table_name=TESTRC;2.获取SDE_BLK_(ratercolumn_id)表的大小。SQL语
9、句如下:select sum(length(rasterband_id)+sum(length(rrd_factor)+sum(length(row_nbr)+sum(length(col_nbr)+sum(length(block_data) total size from sde_blk_(rastercolumn_id);例如:select sum(length(rasterband_id)+sum(length(rrd_factor)+sum(length(row_nbr)+sum(length(col_nbr)+sum(length(block_data) total size fr
10、om sde_blk_1; 返回结果为:683689656byte=652M,如下图所示。3. 推算总数据量所需存储空间。假设总数据量为3TB,示例数据量为120MB。那么3TB所需的存储空间大小推算:原始数据大小为:3TB*1024*1024=3145728MB所需的DBMS存储空间为:3145728MB/120MB=26214.4 26214.4*652MB=16.3TB。基于公式计算所需存储空间基于公式计算所需存储空间准确度比上述方法要低,如果数据条件允许,建议采用方法一进行栅格数据量计算。1.获取数据范围,利用影像的分辨率,计算覆盖该区域的像素总数。2.计算影像的像素范围:(Exten
11、t of raster in pixel units) / (pixel resolution) = Number of pixels例如:450平方公里,15m分辨率影像,像素范围约为:(km2 to m2 conversion factor) / (the pixel resolution in m2) = pixels(450 km2 * 1,000,000) / (15 x 15) = 2,000,000 pixels3.考虑影像的波段数目,计算像素总数。例如:15m分辨率影像的波段数目为3,那么总像素数等于:2,000,000 pixels*3Bands=6,000,000 pixe
12、ls4.基于像素深度因子计算像素所占的字节数。像素深度与像素深度因子对照表:序号像素深度像素深度因子11bit0.12524bit0.2538bit1416bit2532bit4664bit8例如:16bit数据所占的字节为:6,000,000 pixels*2=12,000,000 Bytes / 10242 = 11.4 MB5.考虑影像金字塔。金字塔的数据量约为原始影像数据量的1/3。例如:考虑影像金字塔构建,总数据量为:11.4*1.33=15.162MB6考虑影像/栅格压缩。压缩类型与压缩因子对照表。序号压缩类型压缩因子1LZ770.52JPEG 750.153JPEG 500.14
13、JPEG 2000 80/1000.365JPEG 2000 60/1000.156JPEG 2000 55/1000.117JPEG 2000 50/1000.078JPEG 2000 45/1000.06例如,采用JPEG 50压缩方式,压缩后的数据量大小为:15.162MB*0.1=1.5162MB7.计算数据库存储空间:增加10%左右用于DBMS空间数据管理。故推算所需的存储空间为:1.5162MB*1.1=1.66782MB。分配DBMS存储空间为了提高栅格数据库存储和访问的性能,建议栅格块及索引和其他的栅格表及索引分开存储到不同的表空间中。创建非栅格块表空间(SDE_AUX_#,
14、SDE_BND_#,SDE_RAS_#):create tablespace earth datafile d:oradataearth.dbfsize 500M extent management local uniform size 1M;创建栅格块表空间(SDE_BLK_)create tablespace earth_blocks datafile e:oradataearth_blocks.dbfsize 50000M extent management localsegment space management manual uniform size 100M;配置DBTUNE关键
15、字(SDE.DBTUNE)SDE.DBTUNE存储ArcSDE使用的用于创建表和索引的参数。SDE.DBTUNE参数修改方式:1) 找到dbtune.sde文件,位于ArcSDE安装目录SDEHOME/etc/dbtune.sde下。2) 修改dbtune.sde参数。3) 利用sdedbtune命令行,导入更新SDE.DBTUNE表。sdedbtune -o import -f c:GISfilesArcSDEdbtune3.sde -u sde p sde具体配置的DBTUNE关键字如下(示例如下图):1) 业务表:B_STORAGE PCTFREE 0 INITRANS 4 TABLES
16、PACE EARTHB_INDEX_ROWID PCTFREE 0 INITRANS 4 TABLESPACE EARTH 2) 栅格表(SDE_RAS_)RAS_STORAGE PCTFREE 0 INITRANS 4 TABLESPACE EARTH RAS_INDEX_ID PCTFREE 0 INITRANS 4 TABLESPACE EARTH 3) 波段表(SDE_BND_)BND_STORAGE PCTFREE 0 INITRANS 4 TABLESPACE EARTH BND_INDEX_COMPOSITE PCTFREE 0 INITRANS 4 TABLESPACE EAR
17、TH BND_INDEX_ID PCTFREE 0 INITRANS 4 TABLESPACE EARTH 4) 辅助表(SDE_AUX_)AUX_STORAGE PCTFREE 0 INITRANS 4 TABLESPACE EARTH AUX_INDEX_COMPOSITE PCTFREE 0 INITRANS 4 TABLESPACE EARTH 5) 块存储表(SDE_BLK_)BLK_STORAGE PCTFREE 0 INITRANS 4 TABLESPACE EARTH_BLOCKS STORAGE (INITIAL 500M MINEXTENTS 10) LOB( BLOCK_
18、DATA) STORE AS (ENABLE STORAGE IN ROW CHUNK 8K RETENTION CACHE)BLK_INDEX_COMPOSITE PCTFREE 0 INITRANS 4 TABLESPACE EARTH_BLOCKS例如:Oracle DBTUNE配置示例#EARTH_15M RAS_STORAGE PCTFREE 0 INITRANS 4 TABLESPACE EARTH RAS_INDEX_ID PCTFREE 0 INITRANS 4 TABLESPACE EARTHBND_STORAGE PCTFREE 0 INITRANS 4 TABLESPAC
19、E EARTHBND_INDEX_COMPOSITE PCTFREE 0 INITRANS 4 TABLESPACE EARTHBND_INDEX_ID PCTFREE 0 INITRANS 4 TABLESPACE EARTHAUX_STORAGE PCTFREE 0 INITRANS 4 TABLESPACE EARTH AUX_INDEX_COMPOSITE PCTFREE 0 INITRANS 4 TABLESPACE EARTH BLK_STORAGE PCTFREE 0 INITRANS 4 TABLESPACE EARTH_BLOCKS STORAGE (INITIAL 500M
20、 MINEXTENTS 10) LOB( BLOCK_DATA) STORE AS (ENABLE STORAGE IN ROW CHUNK 8K RETENTION CACHE)BLK_INDEX_COMPOSITE PCTFREE 0 INITRANS 4 TABLESPACE EARTH_BLOCKS END第二步:数据入库准备原始数据1) CD 或 DVD数据从CD或DVD中读取数据比从硬盘上读取要慢很多,因此不建议从CD或DVD上直接读取。如有存储于CD或DVD上的数据,建议拷贝到硬盘上进行入库。2) 磁带库tape silo磁带库中的数据入库,需将数据迁移到在线缓存中。3) 原始数
21、据组织为了入库更加方便,影像文件需要分组组织到独立的文件夹中。创建栅格数据存储对象选择合适的栅格数据存储模型,包括Raster dataset,Raster catalog和Mosaic Dataset(ArcGIS10).如何选择合适的栅格数据存储模型,将在后续的博文中进行详细解释,敬请关注。设置栅格属性,主要包括四个重要属性:金字塔pyramid,统计值raster statistics, 压缩方式compression,和分块大小tile size。为了提高入库效率,可在入库时,不进行金字塔和统计值创建。入库完成后,统一构建金字塔和统计值。相应的GP工具如下所示。创建统计值基于RDBMS
22、和栅格创建统计值,提升栅格显示性能和显示效果。基于ArcCatalog创建DBMS统计值的方法:1) 在栅格对象上右键,单击Analyze。2) 弹出Analyze component窗口,选中Raster table。3) 单击OK.基于ArcSDE命令行更新统计值sdetableOracle格式:sdetable -o update_dbms_stats -t -K -n ALL | -i | | -s -u -p -N -q例如:c:sdetable -o update_dbms_stats -t earth -u mark -p mark第三步:数据查看利用ArcMap, ArcCatalog, ArcGlobe, 或者 ArcScene查看栅格数据。金字塔和统计值可有效提高栅格/影像数据显示的效率。 关于海量影像入库方法,请关注后续博文。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1