ArcGIS 与 Oracle Spatial 栅格类型
使用 Oracle 的可扩展对象关系型系统可实现 Oracle Spatial 栅格数据类型 SDO_GEORASTER。该类型是在 Oracle 10g 版本中引入的。SDO_GEORASTER 类型可存储栅格信息,包括像素类型、空间参考 ID 及像素值。
SDO_GEORASTER 类型支持所有的 Esri 像素类型:1 位至 64 位、有符号、无符号及浮点型。ArcGIS 支持使用 Oracle Spatial 的数据类型 SDO_ GEORASTER 作为存储栅格数据的选项。
使用 Oracle 对象关系型的结构化查询语言 (SQL),应用程序可完成对 SDO_GEORASTER 类型内容的插入、更新及提取等正确操作。另外,应用程序也能确保每个栅格的内容都符合 Oracle 文档中定义的规则。
在创建包含 Oracle SDO_GEORASTER 列的表之后,ArcGIS 会填充所需的 Oracle 元数据模式。应用程序(如 ArcGIS)的工作就是执行此任务,因为 Oracle 不会自动执行此任务。如果注册一个包含由第三方产品创建的 Oracle SDO_GEORASTER 列的表,则该产品的职责就是针对 SDO_GEORASTER 列填充合适的 Oracle 元数据模式。
存储栅格为 SDO_GEORASTER
在 DBTUNE 表中定义了企业级地理数据库存储的设置;RASTER_STORAGE 参数可控制栅格数据的存储。在企业级地理数据库中,要创建一个包含 SDO_GEORASTER 列并能将栅格存储为 SDO_GEORASTER 的表,必须使用一个配置关键字,该关键字须包含在创建栅格数据集或目录时值被设置为 SDO_GEORASTER 的 RASTER_STORAGE 参数。
第一次在 Oracle 中创建地理数据库时,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。
在下列示例中,DEFAULTS 关键字被更改为使用 SDELOB 存储创建矢量数据,使用 SDO_GEORASTER 存储创建栅格数据。
##DEFAULTS GEOMETRY_STORAGE "SDELOB" ATTRIBUTE_BINARY "BLOB" RASTER_STORAGE "SDO_GEORASTER"
在更改后,默认情况下会使用 SDO_GEORASTER 列创建栅格目录、栅格数据集以及镶嵌数据集。
尽管可能只有一种默认的栅格模式(在 DEFAULTS 配置关键字下对 RASTER_STORAGE 的一种设置),但在创建栅格目录或栅格数据集时,仍可使用现有的 SDO_GEOMETRY 配置关键字将 RASTER_STORAGE 指定为 SDO_GEORASTER。如果仅需将少量栅格数据存储为 SDO_GEORASTER 格式,请执行上述操作。
在使用 SDO_GEORASTER 关键字之前,需要编辑 RDT_STORAGE 和 RDT_INDEX_COMPOSITE 参数的表空间信息。默认情况下,表空间信息不包含在 SDO_GEORASTER 关键字中。您可以通过添加表空间定义来修改 RDT_STORAGE 和 RDT_INDEX_COMPOSITE 参数值,如下例所示:
RDT_STORAGE "PCTFREE 0 INITRANS 4 TABLESPACE rdt_tblsp" RDT_INDEX_COMPOSITE "PCTFREE 0 INITRANS 4 TABLESPACE rdt_tblsp STORAGE ( INITIAL 409600) NOLOGGING"
要针对本关键字修改 DBTUNE 表中的信息,请使用 sdedbtune 管理命令。sdedbtune 命令随 ArcSDE 应用程序服务器一起安装,可在《ArcSDE 管理命令参考》(也随 ArcSDE 应用程序服务器安装程序提供)中查阅有关此命令使用方法的详细信息。
也可以创建新的配置关键字以便将栅格数据集存储为 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),这表示也可以从 DEFAULTS 关键字中读取 GEOMETRY_STORAGE 参数。若在自定义 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
要添加的表必须满足以下条件:
- 必须归添加此表的用户所有。
- 必须具有单个 SDO_GEORASTER 列。
- 必须具备有效的 GeoRaster 数据操纵语言 (DML) 触发器,此触发器由 sdo_geor_utl.createDMLTrigger 存储过程创建。
- 必须具备一个有效的 SDO_GEORASTER 数据表。
- 不能包含任何 SDO_GEOMETRY 或 ST_GEOMETRY 列。
sderaster 命令也随 ArcSDE 应用程序服务器一起安装或随 Esri 客户关怀中心门户提供的独立命令行工具一起安装。
有关在地理数据库中使用 SDO_GEORASTER 的已知限制条件
以下是限制条件的列表,在将企业级地理数据库中的栅格数据存储为 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 缺陷 12537431,不能使用 Oracle 11g R2 数据库中的 SDO_GEORASTER 存储。如果要使用 SDO_GEORASTER 存储,请使用 Oracle 11g R1。
- Oracle 将 SDO_GEORASTER 实现为波段集成架构。因此无法添加和删除栅格数据集的各个波段。
- ArcGIS 不支持表中的多个栅格列。具有多个 SDO_GEORASTER 列的表可通过仅包含一个 SDO_GEORASTER 列的视图来访问。使用 sdetable create_view 操作来创建表的这些视图。有关使用 sdetable 命令的详细信息,请参阅《ArcSDE 管理命令参考》。
- 在地理数据库中使用 SDO_GEORASTER 存储时,不支持 nodata 位掩码。因此,无法在非方形规则数据上构建金字塔。