向 Oracle 数据库添加 ST_Geometry 类型

可以使用创建空间类型地理处理工具或 Python 脚本将 Esri ST_Geometry 类型、子类型和函数添加到 Oracle 数据库。

执行此操作时,会将名为 sde 的用户添加到数据库。sde 用户拥有 ST_Geometry 类型、子类型、函数和表。

以下步骤对如何运行创建空间类型地理处理工具在 Oracle 数据库中安装 ST_Geometry 类型进行了说明:

  1. 从 ArcGIS 客户端安装位置的 DatabaseSupport 目录复制 libst_shapelib(对于 Windows 则为 st_shapelib)库并将其移动到 Oracle 服务器的某一位置上。

    确保使用适合 Oracle 服务器操作系统的库。

    运行创建空间类型工具或脚本的客户端计算机必须能够访问服务器上放置库的目录。如果将库放置到 UNIX 或 Linux 计算机上,请确保数据库管理员对该文件夹具有读访问权限,并对库文件具有执行权限。

  2. 启动 ArcCatalog 或 ArcMap,然后打开目录窗口。
  3. 创建连接以访问 Oracle 数据库。以 Oracle 系统数据库管理员身份登录。
  4. 打开创建空间类型工具。

    可以使用搜索窗口搜索工具或者从数据管理工具箱的“工作空间”工具集中打开工具。

  5. 将在第 3 步中创建的数据库连接添加到输入数据库文本框中。
  6. 在 SDE 用户密码文本框中输入 sde 数据库用户要使用的密码。
  7. 如果要创建一个表空间来用作 sde 用户的默认表空间,则在表空间名称文本框中输入其名称。

    将在 Oracle 的默认存储位置中创建大小为 400 MB 的表空间。如果想要控制表空间的放置位置或表空间的大小,请先在 Oracle 中创建表空间,然后在表空间名称文本框中指定现有表空间。该工具会将预先存在的表空间设置为 sde 用户的默认表空间。

  8. 对于 ST_Geometry 形状库路径文本框,浏览至您放置 libst_shapelib 或 st_shapelib 文件的 Oracle 服务器目录,或输入一个路径,路径包含文件名。

    例如,如果您将 libst_shapelib.so 文件放置在 UNIX 服务器 boxy 上的目录 libraries 中,则输入 /boxy/libraries/libst_shapelib.so

  9. 单击确定以运行工具。

将在 sde 用户方案中创建 ST_Geometry 类型、子类型和函数,并在 Oracle 中创建一个形状库条目。

如果打算使用 ST_Transform 函数通过 SQL 执行地理变换,则必须从 ArcGIS for Desktop 安装目录复制 pedata 文件夹,将其放置到 Oracle 服务器上,并在服务器上设置指向该位置的 PEDATAHOME 环境变量。


注:

当ArcMap客户端访问非本地Oracle服务器时,就将st_shapelib.dll文件复制到Oracle服务器上,并将目录共享到网络中,确保ArcMap客户端能通过文件系统访问到st_shapelib.dll文件。示例如下:

向 Oracle 数据库添加 ST_Geometry 类型_第1张图片

向 Oracle 数据库添加 ST_Geometry 类型_第2张图片

完成上述后,使用SQL语句进行测试:

 --是否相交
 select sde.st_intersects(sde.st_point(11.1,16.01,4326)
        ,sde.st_polygon ('polygon ((10.01 20.01, 20.01 20.01, 20.01 15.04,10.01 15.04,10.01 20.01))', 4326)) as test

       from dual;

如果报找不到dll文件错,使用下面语句检查修改st_shapelib.dll文件的路径:

--检查st_shapelib路径
select * from dba_libraries where library_name='ST_SHAPELIB' ;


--修改st_shapelib路径
create or replace library st_shapelib as  'c:\arcmaplib\st_shapelib.dll';

你可能感兴趣的:(ArcGis)