Oracle 10g Spatial GeoRaste
光栅数据库文档
初稿
北京道达天际软件技术有限公司
2005 年 02 月 25 日
修订历史记录
日期 | 版本 | 说明 | 作者 |
< 2005/02/25 > | 初稿 | 编写光栅数据库文档 | 王守能 郑玉坤 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
前言
GeoRaster是Oracle 10 g Oracle Spatial的一个新特性,它允许您存储、索引、查询、分析和传送 GeoRaster 数据,即影像和网格化栅格数据及其相关元数据。GeoRaster提供了Oracle Spatial 数据类型和一个对象关系模式。您可以使用GeoRaster来存储多维的网格化数据和栅格层,而这些网格化数据和栅格层可以参照到地球表面或本地坐标系统中的坐标位置。如果数据是地理参照数据,则您可以找到栅格单元的所对应的地理位置,而如果给定地球上的位置,则您可以找到与该位置相关的栅格层的单元。
GeoRaster 旨在为大型影像和栅格数据处理解决方案提供企业级数据管理功能。现在,开发人员能够将这种功能强大的数据管理技术与领先的影像处理和栅格/网格分析工具相集成。
Oracle 10g Spatial GeoRaster 体系结构
我们通常接触到的图像文件包含下列两种类型的数据之一:一类被称为光栅数据(以行、列方式排列的像素);另一类被称为矢量数据(用线条、多边形和文本组成的图像)。光栅格式适用于照片,遥感图像。而矢量格式则适用于图表或logo。矢量格式使用直线和曲线轮廓来创建图形对象,可对其进行移动、缩放、改变形状和颜色而不影响它的显示质量。
数字影像是栅格数据的一种特有类型。它是间距规则的图像元素(像素)的二维阵列(矩阵或网格)。一般来说,数字影像不需要一个单独的表来保存值/属性信息。影像使用光学或其他传感器数据创建,并使用各种技术(包括卫星遥感、空中摄影测绘和声纳)来采集。影像中有意义的最小像素由采集影像的摄像机镜头或传感器的光学特性决定。像素大小被称为影像的分辨率。分辨率越高,像素越小,影像也就越清晰。数字影像可由一个或多个波段组成。每个波段通常代表电磁频谱的一个波长范围。在一系列波段中采集数据的影像平台被称为多谱和超谱平台。
图像文件信息传统方式都是存放在文件系统下,那么在数据库中如何存储和分析这些图像信息呢? Oracle数据库 10g 中的Oracle Spatial包含了用于存储矢量数据类型、栅格数据类型和持续拓扑数据的原生数据类型。用于存储遥感、航拍图像的光栅数据库GeoRaster 是 Oracle 数据库 10 g 中 Oracle Spatial 的一个新特性,它允许您存储、索引、查询、分析和传送 GeoRaster 数据,即影像和网格化栅格数据及其相关元数据。
Ø Oracle 10g Spatial GeoRaster 光栅数据库模式
GeoRaster 提供了 Oracle Spatial 数据类型和一个对象-关系模式。您可以使用GeoRaster来存储多维的光栅数据(网格化数据和栅格层),而这些光栅数据(网格化数据和栅格层)可以参照到地球表面或本地坐标系统中的坐标位置。如果光栅数据是地理参照数据,则您可以找到栅格单元坐标所对应的地理位置坐标,而如果给定地球上的位置坐标,则您可以找到与该位置坐标对应的栅格层的单元坐标。
Ø GeoRaster 体系结构包括六个基本组件:
1. GeoRaster 引擎 — 核心,GeoRaster 功能包括数据、元数据、方法和索引。
2. SQL API — 对 GeoRaster 中栅格及基于网格的数据的 SQL 访问。
3. C/C++/Java — 通过或者不通过调用 GeoRaster API 而对 GeoRaster 中栅格及基于网格的数据的 OCI、OCCI 和 Java 访问
4. 浏览工具 — 现在,有多种第三方浏览和分析工具支持 GeoRaster。此外,Oracle 提供一个免费的浏览器。
5. 输入 [数据] 适配器—便于将栅格数据从众所周知的文件转换加载到GeoRaster 中。
6. 输出 [数据] 适配器—便于将栅格数据从GeoRaster 转储成众所周知的文件格式。
GeoRaster 体系结构是栅格单元数据加上 GeoRaster 元数据(包括层的元数据)的混合体。栅格单元数据包含实际的栅格数据本身。GeoRaster 元数据包括那些描述栅格数据的元数据的 XML 表示。这种元数据包括对象元数据,如描述和版本信息。GeoRaster 还包括单元深度(1BIT、8Bit、32BIT_S 或 64BIT_REAL)、维数、分块、单元交替格式以及其他信息。此外还可以存储空间参照系统元数据,这些元数据包含地理定位所需的仿射变换信息。
Ø GeoRaster 类型
正如Varchar2,Number类型一样,GeoRaster也是一个数据类型,但它是一个基于对象-关系模式的对象类型,使用此对象类型的同时需要此对象定义、包定义、函数、过程、后台API、SQL规范和其他对象-关系模式的资源。
GeoRaster类型包括:CREATE TYPE sdo_georaster AS OBJECT
(
rasterType NUMBER,
spatialExtent SDO_GEOMETRY,
rasterDataTable VARCHAR2(32),
rasterID NUMBER,
metadata XMLType
);
rasterType 存储光栅数据类型的编号(如:20001代表两维单通道光栅数据,21001代表两维多通道光栅数据)
spatialExtent 存储光栅空间数据类型信息,坐标信息,空间索引信息
rasterDataTable 存储一个raster data表名称,此表用于存储光栅图像的块数据。
rasterID 光栅信息编号
metadata XML类型,存储光栅元数据。
Ø 光栅数据库数据操作
数据操作突出体现了优化管理 GeoRaster 数据的操作,以支持各种应用程序需求。重要的概念包括:
地理参照 — GeoRaster 目前支持六个参数的仿射变换,该变换在地理上参考两维的栅格数据。仿射变换是函数逼近多项式模型的一个特殊类型。如果提供了一个仿射变换,并且它在元数据中是有效的,则认为该 GeoRaster 对象进行了地理参照。这在 SRS 元数据中的 isReferenced 值被指定为 TRUE 时有效。
形成金字塔 — 金字塔的级别表示分别需要更少或更多存储空间的栅格对象的减少或增加的分辨率。(GeoRaster 目前只支持减少分辨率的金字塔。)金字塔级别为 0 表示原始的栅格数据。换言之,不需要减少分辨率和更改存储空间。大于 0(零)的值表示分辨率越来越减低,需要更少的存储空间。
改变格式 — 在 GeoRaster 体系结构中,所有的栅格单元数据都存储在栅格数据表中。单元数据在栅格数据表中的物理组织形式取决于单元深度、分块大小和交替类型。这些参数可以对现有的 GeoRaster 对象进行灵活的更改。应用程序开发人员可以使用这些参数功能作为调优工具,在物理上调整 GeoRaster 对象,以满足各种应用程序需求。这样就不再需要脱机重新调整和加载原始的栅格数据,也不需要重新调整现有应用程序软件的设置。
子集 — 执行以下一项或两项操作:(1) 空间挖子区、剪切、剪辑,或 (2) 层或波段的子集或复制。
缩放 — 扩大或减小 GeoRaster 对象,同时可选择一种使用相邻四个或六个单元的重新采样方法(最近邻点、双线性插值、三次卷积、平均)。
GeoRaster 使用特性、实例
Ø 遥感图像导入到光栅数据库
我们来看一下光栅图像信息是如何导入到空间光栅数据中。
首先创建GeoRaster_Table 和 Rdt_1 表,表结构为:
GeoRaster_Table表
GeorID | Number |
|
Type | VARCHAR2(32) |
|
GeoRaster | MDSYS.SDO_GEORASTER |
|
Rdt_1表
RasterID | Number |
PyramIDLevel | Number |
BandBlockNumber | Number |
RowBlockNumber | Number |
ColumnBlockNumber | Number |
BlockMBR | MDSYS.SDO_GEOMETRY |
RasterBlock | BLOB |
下面是一张需要存储到GeoRaster数据库的卫星遥感信息图像(光栅数据):
图:带有几何纠正后的地理坐标信息
GeoRaster 引擎要导入这张带有地理坐标信息遥感图像,并且提取遥感图像的光栅元数据信息(Meta Data),然后把光栅图像信息和元数据信息组织并存储到GeoRaster类型的数据表中。
1. 一幅光栅图像是由两部分组成,光栅图像信息和光栅元数据信息。
2. 提取光栅图像的元数据信息,并存储到光栅数据库中。
GeoRaster存储元数据信息是通过引擎提取出元数据信息存放在GeoRaster_Table表的GeoRaster(MDSYS.SDO_GEORASTER)字段下XML类型的metadata对象下,每幅光栅图像在GeoRaster_Table表为一条记录,GeoRaster_Table表存放光栅图像的所有光栅元数据信息。下图是光栅图像的原数据信息,一个XML文件。
元数据信息里面描述了光栅图像数据的属性信息,如:如描述和版本信息,单元深度(1BIT、32BIT_S 或 64BIT_REAL)、坐标信息、通道信息、维数、分块、单元交替格式以及其他空间信息
3. 导入光栅图像到数据库中。
GeoRaster引擎把光栅图像划分成若干个等分的块儿,每个块儿是一个小图像,有一个BlockNumber,每个块存储在Rdt_1表中的一行记录中.就是说一个光栅图像被划分为n个等分块儿,那么存储在Rdt_1表中就是n条记录,每个块儿的光栅图像信息存储在Blob 字段下面。
4. 建立光栅金字塔
存储在光栅数据库后,建立光栅图像金字塔,为了提高浏览查看的速度,可以通过缩小分辨率来减少图像的尺寸。金字塔的原理就是以原始图像尺寸为金字塔的基座,每上升一层图像尺寸缩小一倍,层数代表金子塔的级别,如:5层金字塔就代表0、1、2、3、4,级别的5种级别金字塔。
5. 建立地理参照
建立 GeoRaster 数据的单元坐标与实际世界的地理坐标(或一些本地坐标)之间的关系。地理参照将地面坐标映射到单元坐标,反之亦然。例如: 单元坐标(行,列)和坐标系代号为82394的地理坐标(X,Y)映射关系,通过GeoRaster的SQL API 建立这种映射关系。给定光栅坐标的行列坐标就能对应地理坐标xy值,相反给定地理坐标xy值就能对应光栅坐标的行列值。
6. 索引GeoRaster数据。
l 对大量的光栅信息可以建立R-Tree和交叉空间索引,来提高空间数据的查询响应速度。
l 对大量的光栅元数据信息建立B-Tree和倒序索引,对于XML类型可以建立XMLType索引,用于提高对光栅元数据的查询速度。
7. 查询和更新GeoRaster图像数据信息/元数据信息。
光栅图像信息和元数据信息都存放在数据库中,利用关系型数据库和对象关系型数据库的数据存储架构及数据优化查询的机制,可以很方便的进行数据的组织、查询、导入/导出、数据交换、更新等操作。可以根据元数据信息的查询光栅图像信息,也可以反过来通过光栅图像信息来查询光栅元数据信息
8. 导出GeoRaster光栅数据
可以通过块号范围查询、显示部分或完整的Raster图像,也可以根据光栅坐标(行,列)或地理坐标(x,y)范围来查询显示Raster图像。并且这些查询的结果可以导出到不同图像格式的(jpeg,tif,png等)文件中。
9.第三方产品及开发接口
可以使用第三方厂商的产品来查询浏览GeoRaster数据库中的数据,例如:PCI Geomatica FreeView v9.1,ESRI ArcInfo SDE等产品,也可以和第三方厂商的产品集成开发,如:MapInfo、ArcInfo SDE)。
用户可以调用Oracle提供的C/C++/Java 的 GeoRaster API 而进行对 GeoRaster 中栅格及基于网格的数据的 OCI、OCCI 和 Java 访问。下图是基于java开发的GeoRaster浏览和元数据采集工具。
Ø GeoRaster优点
1. 当跨区域漫游或进行图像拼接时,用文件系统需要同时打开多个文件,这将占用系统的多个IO资源;而用数据库则直接从表中根据空间索引提取所需数据,并没有物理上的区域分割。
2. 光栅数据库对于数据的并发访问的速度上优于文件系统的读取速度
3. 存放在数据库的光栅图像数据可支持局部加载,只加载需要显示的部分,
4. 图像金字塔的信息存储在数据库中,按照实际需要从数据库中不同级别的图像金字塔信息,而文件系统的金字塔信息是全部存放在内存中
5. 数据库管理的数据访问控制的安全级别明显强于文件系统的
6. 对于图像信息和元数据信息的存储、组织、查询、维护等,要明显强于文件系统
7. 光栅数据库的建立可与矢量空间数据库结合,可用于更专业领域的空间信息分析
8. GeoRaster数据库的很多功能由Oracle和在GIS、遥感领域的合作伙伴(PCI、ESRI、MapInfo等)共同进行开发、扩展、增加或利用的,这些技术可作为提取/变换/装载 (ETL) 工具、广泛的遥感和图像处理客户工具,或者是建立在 GeoRaster 模型上的可视化引擎形式。和这些专业厂商的工具、技术、标准可以和好的结合。并且相互支持彼此的最近技术和标准,ArcInfo和PCI早在2004年8月份就有支持oracle 10g 空间数据库和空间光栅数据库的产品。
9. 是GIS、遥感、规划、各个行业影像数据中心等领域的专业发展趋势
10. 三、四级产品和DEM数据精度都很高,所以其安全性尤为重要,放在光栅数据库中将可保证其安全性。同时,对高精度产品将来会有更多的拼接任务,把它们放在光栅数据库中,会更加灵活地适应将来的高级生产任务。
11. 数据库的各种备份方法和策略都可以应用到光栅数据上,例如增量备份。而相比之下,文件系统在备份方面则不占优势。
Ø GeoRaster一些使用上的问题
1.空间数据库新技术,市场上成熟案例较少
2.在光栅数据库并发访问会话很少的情况下,数据库的访问速度低于文件系统的访问速度
3.对于数据库服务器的硬件要求较高,需要高配置的服务器作为建设光栅数据库的基础
4.对于网络通讯速度和网络交换速度要求较高
5.GeoRaster数据库使用的是对象-关系型数据库,在管理、优化、备份/恢复等数据库管理方面的工作要求较高
在 Oracle 数据库 10 g 中推出的 GeoRaster 为管理大量的栅格数据创建了重要的新功能。Oracle 是唯一提供能够将栅格数据和基于网格的地理空间信息作为一种命名类型而存储在数据库中的商业数据库管理软件的供应商。此外还提供了用于填充、管理和操纵基于单元的数据以及基本元数据的全系列工具,作为 GeoRaster 基础架构的一部分。 Oracle Spatial 10 g 独特地定位于为在一个高性能、可伸缩、安全的环境中存储和管理栅格数据提供企业级支持。Oracle 是唯一将这种有价值的基于栅格的空间数据从文件系统中分离出来的商业提供商;在文件系统中,栅格数据处于一种不安全的瞬变状态,而 Oracle 将其作为命名类型存储在世界领先的数据库管理系统的安全环境中。