Skip to main content

向 Oracle 数据库添加 ST_Geometry 类型

在 Standard 或 Advanced 许可等级下可用。

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

将 ST_Geometry 类型添加到数据库后,即可用其来存储空间数据。

工具和函数均可在数据库中创建名为 sde 的用户。 sde 用户拥有 ST_Geometry 类型、子类型、函数和表。

注:

在 Microsoft Windows 服务器上进行部署时,ST_Geometry 库需要使用 Microsoft Visual C++ Redistributable Package (x64)。 有关所需的软件包版本,请参阅使用 Oracle 的 ArcGIS 要求。 如果服务器上没有此软件包,可从 Microsoft 站点下载该包并安装。

使用创建空间类型地理处理工具

要运行创建空间类型地理处理工具在 Oracle 数据库中安装 ST_Geometry 类型,请完成以下步骤:

  1. My Esri 下载 st_shapelib (Windows) 或 libst_shapelib (Linux) 库,并将其移动至 Oracle 服务器上的位置。

    请使用适用于 Oracle 服务器操作系统的库。

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

    如果未提供下载选项,请联系 ArcGIS 组织管理员

  2. 在 ArcGIS Pro 中打开一个工程,打开目录窗格,然后以 Oracle 系统数据库管理员身份连接到数据库

    将在工程文件夹中创建数据库连接 (.sde) 文件。

  3. 打开创建空间类型地理处理工具。

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

  4. 将在第 2 步中创建的数据库连接添加至输入数据库连接参数文本框。

  5. SDE 用户密码参数文本框中提供 sde 数据库用户的密码。

  6. 或者,在表空间名称参数文本框中提供相应表空间的名称,该表空间将用作 sde 用户的默认表空间。

    创建空间类型工具将在 Oracle 默认存储位置创建一个 400 MB 的表空间。 要控制表空间的放置位置或表空间的大小,请先在 Oracle 中创建表空间,然后在表空间名称参数中指定现有表空间。 该工具会将预先存在的表空间设置为 sde 用户的默认表空间。

  7. 对于 ST_Geometry 形状库路径参数,请提供 Oracle 服务器上已放置 libst_shapelib.sost_shapelib.dll 文件的目录的路径,其中包含文件名。

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

  8. 单击运行

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

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

使用 ArcPy 函数

在任何 ArcGIS Pro 或 ArcGIS Server 计算机上,使用 CreateDatabaseConnection ArcPy 函数创建数据库连接文件 (.sde),并以 Oracle sys 用户身份将该文件连接到 Oracle 数据库。 接下来,使用 .sde 文件和 CreateSpatialType ArcPy 函数在数据库中创建 Esri ST_Geometry 类型、子类型和函数。

  1. My Esri 下载 st_shapelib (Windows) 或 libst_shapelib (Linux) 库,并将其移动至 Oracle 服务器上的位置。

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

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

  2. 运行 CreateDatabaseConnection 函数创建 .sde 文件。

    您必须以 Oracle 系统用户身份进行连接,并且必须保存凭据。

    在以下示例中,名为 dbadminconnection 的连接文件在名为 TempFiles 的目录中创建。 Oracle 实例是 oserve,系统用户凭据随文件一同提供并保存。

    import arcpy
    arcpy.management.CreateDatabaseConnection(
       "/user/TempFiles",
       "dbadminconnection.sde",
       "ORACLE",
       "oserve/ORCL",
       "DATABASE_AUTH",
       "sys",
       "D0B3tt3r",
       "SAVE_USERNAME"
    )
    
  3. 运行 CreateSpatialType ArcPy 函数,以在 Oracle 数据库中安装 ST_Geometry 类型。

    此示例使用了上一步骤中的连接文件。 为 SDE 用户提供了密码和表空间,分别为 pw0rd4sde 和 sdetblsp。 ST_Geometry 库的位置已指定。

    import arcpy
    arcpy.management.CreateSpatialType(
       "suserconnection.sde",
       "pw0rd4sde",
       "sdetblsp",
       "/net/oserve/ora/shape/libst_shapelib.so"
    )
    

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

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