在 Standard 或 Advanced 许可等级下可用。
借助 ST_Raster 数据类型,您可以直接在地理数据库表中存储栅格数据。如果需要使用 SQL 访问地理数据库栅格数据,将用到 ST_Raster 类型。
使用创建栅格类型地理处理工具或可调用该工具的 Python 脚本,用以在地理数据库中安装 ST_Raster 类型。
安装该类型后,必须更改地理数据库配置设置,以使地理数据库中创建的新栅格数据能够使用 ST_Raster 数据类型。
更新 extproc 文件
Oracle 外部程序代理 (extproc) 必须访问 ST_Raster 库 (libst_raster_ora)。
如果在 Oracle 服务器上安装 ArcMap 或 ArcGIS for Server,则可以更新 extproc.ora 文件以指向 <ArcGIS client installation directory>\DatabaseSupport\Oracle\<Operating System> 中的 libst_raster_ora。确保针对适合 Oracle 服务器操作系统的库设置文件。更新 exptroc.ora 后,接下来将安装 ST_Raster。
如果 Oracle 服务器上未安装任何 ArcGIS 客户端,则必须首先将 libst_raster_ora 库复制到 Oracle 服务器,更新 extproc.ora 文件,然后创建库。
如果 ArcMap 或 ArcGIS Server 未安装在 Oracle 服务器上,则按以下步骤进行操作:
- 在 Oracle 服务器上创建允许您的 Oracle 实例访问的目录。
- 从 My Esri 下载库,或从 <ArcMap or ArcGIS Server installation directory>\DatabaseSupport\Oracle\<Operating System> 复制 libst_raster_ora 库。
- 将适用于 Oracle 服务器操作系统的 libst_raster_ora 库放置在您创建的目录中。
- 更新 extproc.ora 文件,使其包括 libst_raster_ora 库的路径。
- 使用 SQL 以 sde 用户身份连接到 Oracle 数据库,然后创建 Oracle libst_raster_ora 库。
CREATE LIBRARY LIBST_RASTER AS '<absolute path to libst_raster_ora library>' /
配置 Oracle 服务器后,便可安装 ST_Raster。
安装 ST_Raster
要安装 ST_Raster 类型,可以运行 ArcGIS for Desktop(Standard 或 Advanced)中的创建栅格类型工具,也可以运行 ArcGIS for Server 或 ArcGIS for Desktop(Standard 或 Advanced)客户端中的 Python 脚本。
运行创建栅格类型工具。
如果您有权访问 ArcGIS for Desktop(Standard 或 Advanced),则可运行创建栅格类型工具来安装 ST_Raster 类型。
- 启动 ArcCatalog、ArcMap 或 ArcGIS Pro。
- 以地理数据库管理员身份连接到地理数据库。
- 打开创建栅格类型工具。
该工具位于“数据管理”工具箱的“地理数据库管理”工具集中。
- 将步骤 2 中创建的数据库连接指定为输入数据库连接。
- 单击确定以运行工具。
使用 Python
您可以运行 Python 脚本来创建能够以地理数据库管理员身份连接到地理数据库的数据库连接 (.sde) 文件,并在地理数据库中安装 ST_Raster 类型。
- 打开命令窗口,导入 ArcPy 模块,然后使用 CreateDatabaseConnection_management 函数创建能够以地理数据库管理员身份连接到地理数据库的数据库连接 (.sde) 文件。如果使用数据库身份验证进行连接,请确保用户名和密码随连接文件一同保存。
在本例中,将在 C:\temp 中创建连接文件 (adminconnect.sde)。此连接是以 sde 用户身份对 teamdata/orcl Oracle 实例建立的。
import arcpy arcpy.CreateDatabaseConnection_management (r'c:/temp',"adminconnect.sde", "ORACLE", "teamdata/orcl", "DATABASE_AUTH", "sde", "Cky00r", "SAVE_USERNAME")
- 安装 ST_Raster 类型。
在此,CreateRasterType_management 函数使用 adminconnect.sde 文件连接到地理数据库并安装 ST_Raster 类型:
arcpy.CreateRasterType_management (r'c:/temp/adminconnect.sde')
确认安装
使用 SQL 客户端并以可访问装有 ST_Raster 的 Oracle 数据库的任意用户身份进行连接,并通过执行以下 SELECT 语句来测试 ST_Raster 类型的安装:
SELECT sde.st_raster_util.describe()
FROM dual;
对于此查询,成功的结果包括 No data found(如果地理数据库中尚不存在栅格数据)或数据库中栅格列的列表。
如果没有启动 Oracle 监听器或 libst_raster_ora 库无法访问,则将返回一条错误消息。导致 libst_raster_ora 库无法访问的原因包括:没有安装 ST_Raster,未使用 libst_raster_ora 库的路径更新 extproc.ora 文件,或者 libst_raster_ora 库被复制到了错误的位置。
在本例中,通过运行 describe 工具可以列出数据库中现有的 ST_Raster 和二进制栅格列。这种情况下,因为这是新的地理数据库,所以数据库中尚不存在栅格列。由于没有返回错误消息,因此可以确定安装成功。
SELECT sde.st_raster_util.describe()
FROM dual;
SDE.ST_RASTER_UTIL.DESCRIBE()
No data found.
在本例中,将同样运行 describe 工具。但是在这种情况下,不向 extproc.ora ENV 参数中添加 libst_raster_ora 库的路径。先对存在的问题进行更正,然后重新运行查询,以确保该问题已解决。
SELECT sde.st_raster_util.describe()
FROM dual;
ERROR:
ORA-28575: unable to open RPC connection to external procedure agent
ORA-06512: at "SDE.ST_RASTER_UTIL", line 190
ORA-06512: at "SDE_ST_RASTER_UTIL", line 377
确认已安装 ST_Raster 后,更改配置关键字设置。
更改地理数据库配置
在地理数据库中安装 ST_Raster 后,必须更改地理数据库配置,以使 ST_Raster 可供用户在创建栅格数据集和栅格目录时使用。要完成此操作,您可以从 ArcGIS for Desktop(Standard 或 Advanced)进行连接并运行地理处理工具,也可以使用从 ArcGIS for Server 或 ArcGIS for Desktop(Standard 或 Advanced)客户端运行的 Python 脚本。
运行地理处理工具
如果您有权访问 ArcGIS for Desktop,可使用导出地理数据库配置关键字工具将地理数据库的当前配置设置导出到文本文件,并在文本文件中将 RASTER_STORAGE 参数设置为 ST_Raster,然后使用导入地理数据库配置关键字工具导入更改后的文本文件。
- 在 ArcGIS for Desktop 中打开导出地理数据库配置关键字工具。
- 使用为安装 ST_Raster 而创建的数据库连接作为输入数据库连接。
- 指定要创建的文本文件的位置和文件名。
- 在文本编辑器中打开该文本文件,并将 RASTER_STORAGE 设置为 ST_Raster。
- 如果希望所有栅格数据集和栅格目录在用户不指定关键字的情况下均使用 ST_Raster 类型,则应更改 DEFAULTS 关键字下的 RASTER_STORAGE 参数。
- 如果只有一些栅格数据集和栅格目录使用 ST_Raster 类型,则创建自定义关键字并将该关键字的 RASTER_STORAGE 参数设置为 ST_Raster。
- 保存并关闭该文本文件。
- 使用导入地理数据库配置关键字工具将更改后的文本文件导入地理数据库。
使用 Python
使用 ArcPy 函数 ExportGeodatabsaeConfigurationKeyword_management 将当前地理数据库配置设置导出到文本文件,编辑并保存该文本文件,然后使用 ImportGeodatabaseConfigurationKeyword_management 函数将更改导入到地理数据库中。
如果同时运行 ExportGeodatabsaeConfigurationKeyword_management 和 ImportGeodatabaseConfigurationKeyword_management 函数,使用在为 input_database 安装 ST_Raster 时创建的数据库连接文件。
- 导出当前地理数据库配置。
在本例中,gdbconfig 文件被导出到 C:\temp 文件夹。
arcpy.ExportGeodatabaseConfigurationKeyword_management (r'c:/temp/adminconnect.sde', r'c:/temp/gdbconfig.txt')
- 在文本编辑器中打开该文本文件,并将 RASTER_STORAGE 设置为 ST_Raster。
- 如果希望所有栅格数据集和栅格目录在用户不指定关键字的情况下均使用 ST_Raster 类型,则应更改 DEFAULTS 关键字下的 RASTER_STORAGE 参数。
- 如果只有一些栅格数据集和栅格目录使用 ST_Raster 类型,则创建自定义关键字并将该关键字的 RASTER_STORAGE 参数设置为 ST_Raster。
- 保存并关闭该文本文件。
- 导入已编辑的文件。
arcpy.ImportGeodatabaseConfigurationKeyword_management (r'c:/temp/adminconnect.sde', r'c:/temp/gdbconfig.txt')
现在,新的配置设置可在创建数据时使用。