海量空间数据库实施策略-栅格数据 3

I. 栅格数据模型

在Geodatabase中,共有4种方式可以组织栅格数据。包括:Raster Dataset、Raster Catalog、Mosaic Dataset和Feature的栅格字段。其中,Feature的栅格字段相当于将一个栅格对象作为属性存储到表中,因此并不能作为真正的栅格数据的存储方式。对于大数据量的栅格数据,除了文件形式存储,一般可选的就是Geodatabase中的前3种组织方式,其中,Mosaic Dataset是ArcGIS 10新推出的栅格数据模型。

· Raster Dataset 与Raster Catalog

Raster Dataset可以被认为是单波段或多波段的单幅栅格数据。比如单张影像文件通过ArcCatalog直接导入后就成为Geodatabase中的Raster Dataset,或者将多个影像导入并进行Mosaic拼接后形成一个Raster Dataset。

image

image

图 1 单个栅格导入为Raster Dataset

Raster Catalog可以被认为是Raster Dataset的集合,比如在一个Raster Catalog中,我们可以导入若干个栅格数据:

image

image

图 2 多个栅格导入为Raster Catalog

在File Geodatabase中,一个Raster Dataset其实是由若干个文件组成的,其中主要在gdbtable文件中保存所有的栅格像素值,另外还有若干索引文件。

image

图 3 File Geodatabase中存储Raster Dataset的文件

而在File Geodatabase中创建一个Raster Catalog时有一个很重要的选项:管理类型,这里有两种可选的管理类型:MANAGED和UNMANAGED。

image

图 4 托管与非托管

MANAGED(托管)意味着所有的数据都将被“物理”地导入到Geodatabase中,而UNMANAGED(非托管)则对应将数据保存在文件中,而在Geodatabase中只存储指向这个真实数据的指针(广义的指针)。如果我们选择托管方式,那么最后在File Geodatabase中包含了若干组文件存储了这些Raster Catalog中的栅格数据的信息,但是,很显然,数据量最大的所有栅格的像素数据全部存储在其中的一个gdbtable中。

image

图 5 File Geodatabase中存储Raster Catalog的文件

如果选择非托管的方式,在File Geodatabase存储的文件中没有存储真实单元数据的文件,而是会存在一些映射文件存储了实际栅格数据的位置。从数据管理的角度上,非托管的模式导入数据非常快,因为它无需真正将数据存储到Geodatabase中;而托管模式意味着传统的“入库”,需要耗费相当的时间。

以上是Raster Dataset和Raster Catalog的基本概念及其在File Geodatabase中的组织,在这里先做个短暂的休息,总结一下这两者的特点。Raster Dataset和Raster Catalog在本质上非常相似,就是将一个或多个栅格的数据在Geodatabase中组织起来;如果是基于File Geodatabase,那么Raster Catalog还可以采用非托管的方式在保留原始栅格数据的基础上无需入库即可将“Raster”组织为“Catalog”;如果采用托管的方式,Raster Dataset类似于只有一个“Raster”的Raster Catalog,这点在下面马上讨论的ArcSDE中可以看得更清楚。

在ArcSDE中,情况又变得复杂了些,虽然在ArcSDE中不存在非托管的方式,所有的数据都必须物理地进行导入,但是在数据库中存在不同的存储类型。以Oracle为例,栅格数据可以以LONG RAW(将被Oracle废弃)、BLOB、ST_Raster或SDO_GeoRaster等类型进行存储。下面,我们就先以Oracle为例,看看以默认的BLOB类型存储的Raster Dataset和Raster Catalog在数据库中是如何组织的。

以BLOB存储的Raster Dataset/Catalog在数据库中存储在若干张相互关联的表中,其中真正存储栅格数据的表包括:Auxiliary表、Block表、Band表和Raster Attribute表。如果导入一个栅格,它真正的数据将会在下面的几张表中进行组织:

image

图 6 ArcSDE中以BLOB存储Raster Dataset/Catalog的相关表

其中SDE_AUX_[1] 为Auxiliary表,它存储了颜色映射、图像统计信息等信息;SDE_RAS_为Raster Attribute表,它存储了Raster Dataset/Catalog中包含的“Raster”的属性,表中应该包含一条(Raster Dataset)或多条(Raster Catalog)记录;SDE_BND_为Band表,它存储了所有“Raster”的所有波段信息;SDE_BLK_为Block表、它是真正存储栅格像素值的表,Raster Dataset/Catalog中所有的栅格数据(包括金字塔)全部都以切片(默认128×128像素)的形式存储在每一条记录中,一般这是数据最多的表。


[1] 其中为RASTER_COLUMNS表中记录的RASTERCOLUMN_ID

你可能感兴趣的:(oracle)