ArcSDE 与 Oracle Spatial 栅格类型
使用 Oracle 的可扩展对象关系型系统可实现 Oracle Spatial 栅格数据类型 SDO_GEORASTER。该类型是在 Oracle 10g 版本中引入的。SDO_GEORASTER 类型可存储栅格信息,包括像素类型、空间参考 ID 及像素值。
SDO_GEORASTER 类型支持所有的 ESRI 像素类型:1 位至 64 位、有符号、无符号及浮点型。ArcSDE 支持使用 Oracle Spatial 的数据类型 SDO_ GEORASTER 作为存储栅格数据的选项。
使用 Oracle 对象关系型的结构化查询语言 (SQL),应用程序可完成对 SDO_GEORASTER 类型内容的插入、更新及提取等正确操作。另外,应用程序也能确保每个栅格的内容都符合 Oracle 文档中定义的规则。
在创建包含 Oracle SDO_GEORASTER 列的表之后,ArcSDE 会填充所需的 Oracle 元数据模式。应用程序(如 ArcSDE)的工作就是执行此任务,因为 Oracle 不会自动执行此任务。如果注册一个包含由第三方产品创建的 Oracle SDO_GEORASTER 列的表,则该产品的职责就是针对 SDO_GEORASTER 列填充合适的 Oracle 元数据模式。
存储栅格为 SDO_GEORASTER
在 DBTUNE 表中定义了 ArcSDE 地理数据库存储的设置;RASTER_STORAGE 参数可控制栅格数据的存储。在 ArcSDE 地理数据库中,要创建一个包含 SDO_GEORASTER 列并能将栅格存储为 SDO_GEORASTER 的表,必须使用一个配置关键字,该关键字须包含在创建栅格数据集或目录时被设置为 SDO_GEORASTER 的 RASTER_STORAGE 参数。
第一次安装 ArcSDE 9.3 组件时,DBTUNE 表中 RASTER_STORAGE 参数的默认设置为 BLOB,而默认的 GEOMETRY_STORAGE 则为 ST_GEOMETRY。以下列出了部分 DEFAULTS 关键字参数:
##DEFAULTS GEOMETRY_STORAGE "ST_GEOMETRY" ATTRIBUTE_BINARY "BLOB" RASTER_STORAGE "BLOB"
如要以 SDO_GEORASTER 格式存储大量栅格数据,则需要更改 DEFAULTS 关键字的 RASTER_STORAGE 参数。此外,如果在使用 SDO_GEORASTER 格式存储栅格,则不能运用 ST_GEOMETRY 或 SDO_GEOMETRY 的 GEOMETRY_STORAGE 类型;因此必须将 GEOMETRY_STORAGE 更改为 SDELOB 或 SDEBINARY,并将 DEFAULTS 配置关键字中的 RASTER_STORAGE 设置为 SDO_GEORASTER,以使 SDO_GEORASTER 成为栅格数据的默认存储格式。
建议对新数据不要使用 SDEBINARY 几何存储(该存储类型会将数据存储为 LONG RAW),因为 Oracle 将在 11g 版本中摒弃对 LONG RAW 的支持。
在下列示例中,DEFAULTS 关键字被更改为使用 SDELOB 存储创建矢量数据,使用 SDO_GEORASTER 存储创建栅格数据。
##DEFAULTS GEOMETRY_STORAGE "SDELOB" ATTRIBUTE_BINARY "BLOB" RASTER_STORAGE "SDO_GEORASTER"
按照此更改,默认情况下 ArcSDE 会在 SDO_GEORASTER 列中创建栅格目录和栅格数据集。
尽管可能只有一种默认的栅格模式(在 DEFAULTS 配置关键字下对 RASTER_STORAGE 的一种设置),但在创建栅格目录或栅格数据集时,仍可使用现有的 SDO_GEOMETRY 配置关键字为 RASTER_STORAGE 指定 SDO_GEORASTER。如果仅需将少量栅格数据存储为 SDO_GEORASTER 格式,请执行上述操作。
在使用 SDO_GEORASTER 关键字之前,需要编辑 RDT_STORAGE 和 RDT_INDEX_COMPOSITE 参数的表空间信息。默认情况下,表空间信息不包含在 SDO_GEORASTER 关键字中。在 dbtune.sde 文件中,出现的 SDO_GEORASTER 关键字如下:
##SDO_GEORASTER GEOMETRY_STORAGE "SDELOB" RASTER_STORAGE "SDO_GEORASTER" ATTRIBUTE_BINARY "BLOB" RDT_STORAGE "PCTFREE 0 INITRANS 4" # TABLESPACE <RDT Table tablespace name> RDT_INDEX_COMPOSITE "PCTFREE 0 INITRANS 4 # TABLESPACE <RDT Composite index tablespace name> STORAGE ( INITIAL 409600) NOLOGGING" UI_TEXT "User Interface text description for SDO_GEORASTER" COMMENT "Any general comment for SDO_GEORASTER keyword" END
要针对本关键字修改 DBTUNE 表中的信息,请使用 sdedbtune 管理命令。可在《ArcSDE 管理命令参考》(安装在 SDEHOME 目录下)中查阅有关此命令使用方法的详细信息。
也可以创建新的配置关键字以便将栅格数据集存储为 SDO_GEORASTER 格式,例如:
##GEORASTER RASTER_STORAGE "SDO_GEORASTER" SDO_COMMIT_INTERVAL 1000 UI_TEXT "Use to create raster catalogs and datasets with GEORASTER storage" END
请注意,上述示例没有完全列出与其相关联的存储参数集。这是因为任何未在关键字中指定的参数都可以从 DEFAULTS 关键字中获取。这意味着如果某个参数与在 DEFAULTS 关键字下指定的参数具有相同值,则可以不包含该参数。在上面的示例中,像 BND_STORAGE 与 AUX_STORAGE 之类的参数就不会包含在内;这些参数可从 DEFAULTS 关键字中读取。对于新配置关键字示例 (GEORASTER) 而言,这表示 GEOMETRY_STORAGE 参数也可以从 DEFAULTS 关键字中读取。若在自定义 SDO_GEORASTER 配置关键字中不包含 GEOMETRY_STORAGE 参数,则请确保 DEFAULTS 下的 GEOMETRY_STORAGE 未被设置成 SDO_GEOMETRY 或 ST_GEOMETRY。
有关几何存储关键字的详细信息,请参阅 Oracle 中的 DBTUNE 配置参数。有关 DBTUNE 表或配置关键字的常规信息,请参阅什么是 DBTUNE 表?及什么是 DBTUNE 配置关键字和参数?。
添加第三方表
可使用 ArcSDE 管理命令 sderaster –o add 来注册一个包含由第三方应用程序创建的 SDO_GEORASTER 列的表。例如:
sderaster –o add –l landforms,raster –u gis –p gis
添加至 ArcSDE 的表必须满足以下条件:
- 必须归添加此表的用户所有。
- 必须具有单个 SDO_GEORASTER 列。
- 必须具备有效的 GeoRaster 数据操纵语言 (DML) 触发器,此触发器由 sdo_geor_utl.createDMLTrigger 存储过程创建。
- 必须具备一个有效的 SDO_GEORASTER 数据表。
- 不能包含任何 SDO_GEOMETRY 或 ST_GEOMETRY 列。
有关在 ArcSDE 地理数据库中使用 SDO_GEORASTER 的已知限制条件
以下是限制条件的列表,在将 ArcSDE 地理数据库中的栅格数据存储为 SDO_GEORASTER 格式时,请时刻注意这些限制条件。
- Oracle 不支持 SDO_GEORASTER 的分段更新。因此,无法将影像文件镶嵌进以 SDO_GEORASTER 格式存储的现有栅格数据集中。
- 在插入数据期间不能构建金字塔。在将影像数据插入 SDO_GEORASTER 后,需要对其单独进行更新方可构建金字塔。因此,应该让用于创建栅格数据集或栅格目录的任何 ArcGIS 地理处理工具对话框中的“构建金字塔”复选框始终处于取消选中状态。
- 若使用的是 Oracle 10g 版本 1 (R1),则影像数据不能立即以 SDO_GEORASTER 压缩格式存储。在 Oracle 10g 版本 2 (R2) 中,Oracle 添加的影像压缩格式为 SDO_GEORASTER 类型。若使用的是 Oracle 10g R1,则在使用任何 ArcGIS 地理处理工具创建栅格数据集或栅格目录时,都应该将其对话框中的压缩类型设置为“无”。
- Oracle 以波段集成架构来实现 SDO_GEORASTER。因此无法添加和删除栅格数据集的各个波段。
- ArcSDE 与 ArcGIS 不支持表中的多个栅格列。具有多个 SDO_GEORASTER 列的表可通过仅包含一个 SDO_GEORASTER 列的视图来访问。使用 sdetable create_view 操作来创建表的这些视图。有关使用 sdetable 命令的详细信息,请参阅《ArcSDE 管理命令参考》。
- 在 ArcSDE 地理数据库中使用 SDO_GEORASTER 存储时,不支持 nodata 位掩码。因此,无法在非方正规数据上构建金字塔。