在 PostgreSQL 中设置地理数据库

本主题仅适用于 ArcGIS for Desktop Standard 和 ArcGIS for Desktop Advanced。

在多数情况下,可以使用创建企业级地理数据库地理处理工具或 Python 脚本在 PostgreSQL 数据库管理系统中创建地理数据库。

创建企业级地理数据库工具使用 PostgreSQL 默认模板创建数据库;创建 sde 登录帐户角色和方案;向 sde 登录帐户角色授予创建地理数据库的权限;以及创建地理数据库。如果希望使用不同模板创建数据库,首先在数据库集群中创建数据库,然后运行创建企业级地理数据库工具或脚本指定预先创建的数据库的名称。

也可以使用启用企业级地理数据库地理处理工具或 Python 脚本在 PostgreSQL 数据库中创建地理数据库。使用启用企业级地理数据库地理处理工具或脚本唯一常见原因是地理数据库的创建人员无法获得 postgres 超级用户密码。在这种情况下,数据库管理员可以创建 sde 登录帐户角色、数据库及 sde 方案,并向 sde 用户授予创建地理数据库所需的权限。然后,sde 用户可以连接数据库并使用启用企业级地理数据库地理处理工具或脚本启用地理数据库功能。

建立地理数据库之前,请查看“资源中心”上的系统要求,以确保支持要使用的数据库、ArcGIS 和硬件组合。

在 Linux 服务器上的 PostgreSQL 中设置地理数据库

以下是在 Linux 上的 PostgreSQL 中创建地理数据库所需执行的步骤:

  1. 获取并安装受支持的 PostgreSQL 版本,并且配置数据库集群。

    可以从 Esri 客户关怀中心门户下载 PostgreSQL 安装程序。如果使用此安装程序,则不需要特定的非默认设置便可以通过 ArcGIS 使用 PostgreSQL。如果不想使用默认设置,则只需确保更改区域设置和位置设置即可。

    或者,也可以自行获取 PostgreSQL 安装程序。有关安装和配置 PostgreSQL 的说明,请参阅 PostgreSQL 网站上的文档。

  2. 将数据库集群配置为接受连接。

    其中包括更改 pg_hba.conf 文件以允许数据库集群接受远程连接。

  3. 为 postgres 用户设置以下环境变量(如果尚未正确设置):
    • PGDATA:应该已由 PostgreSQL 安装程序进行了设置。若未设置,将其设置为 PostgreSQL 安装目录下的数据目录位置。
    • LD_LIBRARY_PATH:将 LD_LIBRARY_PATH 变量设置为 PostgreSQL lib 目录。根据安装 PostgreSQL 方式的不同,lib 目录的位置可能会有所不同。要确定 PostgreSQL 安装的正确位置,以 postgres 用户身份执行 pg_config。将 LD_LIBRARY_PATH 设置为所返回的 PKGLIBDIR 的值。
    • PATH:将 PATH 变量设置为包含 postgresql/bin。
  4. 安装用于创建地理数据库的 ArcGIS 客户端。
  5. 从 Esri 客户关怀中心门户中下载 PostgreSQL 客户端库(如果 ArcGIS 客户端运行在 Windows 上)或 RPM(如果 ArcGIS 客户端运行在 Linux 上),并将其放在上一步所安装的 ArcGIS 客户端的 bin 目录下。有关详细信息,请参阅设置到 PostgreSQL 的连接
  6. 如果要将 ArcGIS for Server 与 PostgreSQL 中的地理数据库配合使用,请为 ArcGIS 帐户设置或更改以下变量:
    • SDEHOME:将此变量设置为 /home/ags/arcgis/server。

      export SDEHOME=/home/ags/arcgis/server

    • PG_HOME:将 PG_HOME 设置为 /opt/PostgreSQL/9.0。

      export PG_HOME=/opt/PostgreSQL/9.0

    • PATH:将 $PATH:$PG_HOME/bin:$SDEHOME/bin 添加到 PATH 变量。

      export PATH=$PATH:$PG_HOME/bin:$SDEHOME/bin

    • LD_LIBRARY_PATH:将 $LD_LIBRARY_PATH:$PG_HOME/lib:$SDEHOME/lib 添加到 LD_LIBRARY_PATH 变量。

      export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$PG_HOME/lib:$SDEHOME/lib

  7. 将 st_geometry.so 库移动到 PostgreSQL 安装目录。

    PostgreSQL 9.0 的 st_geometry.so 库位于 ArcGIS 客户端安装目录的 DatabaseSupport/PostgreSQL/Linux64 目录下。从 ArcGIS 客户端的这个位置移动此文件,以超级用户身份登录 PostgreSQL 服务器,然后将 st_geometry.so 文件放在 PostgreSQL lib 目录下。(此位置与将 LD_LIBRARY_PATH 环境变量设置指向的位置相同。)

    从 ArcGIS 10.1 service pack 1 开始,DatabaseSupport 目录包含名为 9.1 的目录。如果将要连接到 PostgreSQL 9.1 数据库,请改用此目录中的 st_geometry.so 库。

    从 ArcGIS 10.2 开始,DatabaseSupport 目录也将包含名为 9.2 的目录。如果将要连接到 PostgreSQL 9.2 数据库,请改用此目录中的 st_geometry.so 库。

    如果未将正确的 st_geometry.so 库放在 PostgreSQL lib 目录下,将无法创建地理数据库。

    警告警告:

    创建 ArcGIS for Server DatabaseSupport 目录时将权限设为 700。当以根用户登录服务器从而将 st_geometry.so 文件移入 PostgreSQL 库目录时,将文件的权限更改为 755。否则,postgres 用户将无法访问此文件来创建地理数据库。

  8. 在用于存储数据库的数据库集群中创建表空间。如果不创建表空间,将使用 pg_default 表空间。
  9. 通过以下任一方式创建数据库、sde 用户和方案以及地理数据库:
    • 从远程 Windows 计算机上的 ArcGIS for DesktopStandardAdvanced)运行创建企业级地理数据库地理处理工具。
    • 从正在运行 ArcGIS for DesktopStandardAdvanced)、ArcGIS Engine(具有 Geodatabase Update 扩展模块)或 ArcGIS for Server Enterprise(标准版或高级版)的计算机中运行 Python 脚本。可从 PostgreSQL 中的脚本数据库和地理数据库创建复制示例脚本,并且可对其进行修改以便在您的站点上运行。

    或者,可以手动创建数据库、sde 用户和方案,然后从远程 Windows 计算机上运行启用企业级地理数据库地理处理工具,或在 Linux 计算机(安装了带有 Geodatabase Update 扩展模块的 ArcGIS Engine 或 ArcGIS for Server Enterprise(标准版或高级版))上运行调用 EnableEnterpriseGeodatabase 的 Python 脚本。

在 Windows 服务器上的 PostgreSQL 中设置地理数据库

以下是在 Windows 上的 PostgreSQL 中创建地理数据库所需执行的步骤:

  1. 获取并安装受支持的 PostgreSQL 版本,并且配置数据库集群。

    可以从 Esri 客户关怀中心门户下载 PostgreSQL 安装程序。如果使用此安装程序,则不需要特定的非默认设置便可以通过 ArcGIS 使用 PostgreSQL。如果不想使用默认设置,则只需确保更改区域设置和位置设置即可。

    或者,也可以自行获取 PostgreSQL 安装程序。有关安装和配置 PostgreSQL 的说明,请参阅 PostgreSQL 网站上的文档。

  2. 将数据库集群配置为接受连接。

    其中包括更改 pg_hba.conf 文件以允许数据库集群接受远程连接。

  3. 安装用于创建地理数据库的 ArcGIS 客户端。
  4. 从 Esri 客户关怀中心门户中下载 PostgreSQL 客户端库(如果 ArcGIS 客户端运行在 Windows 上)或 RPM(如果 ArcGIS 客户端运行在 Linux 上),并将其放在上一步安装的 ArcGIS 客户端的 bin 目录下。有关详细信息,请参阅设置到 PostgreSQL 的连接
  5. 将 st_geometry 库复制到 PostgreSQL 安装目录。

    可以在 ArcGIS 客户端安装目录的 DatabaseSupport 目录中找到与 PostgreSQL 9.0 配合使用的 st_geometry.dll 文件。将 st_geometry.dll 文件从 ArcGIS 客户端移动到 PostgreSQL 服务器上的 PostgreSQL lib 目录。

    如果将要连接到 PostgreSQL 9.1 数据库,请改用 9.1 目录中的 st_geometry.dll 库。

    如果将要连接到 PostgreSQL 9.2 数据库,请改用 9.2 目录中的 st_geometry.dll 库。

    注注:

    如果未将正确的 st_geometry.dll 库放在 PostgreSQL lib 文件夹下,将无法创建地理数据库。

    另请注意,st_geometry.dll 需要使用 Microsoft Visual C++ 2008 SP1 Redistributable Package (x64)。如果 PostgreSQL 服务器上没有此包,可从 Microsoft 站点下载后安装。

  6. 在用于存储数据库的数据库集群中创建表空间。如果不创建表空间,将使用 pg_default 表空间。
  7. 通过以下任一方式创建数据库、sde 用户和方案以及地理数据库:
    • ArcGIS for Desktop (Standard) 运行创建企业级地理数据库地理处理工具。
    • 从正在运行 ArcGIS for DesktopStandardAdvanced)、ArcGIS Engine(具有 Geodatabase Update 扩展模块)或 ArcGIS for Server Enterprise(标准版或高级版)的计算机中运行 Python 脚本。可从 PostgreSQL 中的脚本数据库和地理数据库创建复制示例脚本,并且可对其进行修改以便在您的站点上运行。

    或者,可以手动创建数据库、sde 用户及方案,然后运行启用企业级地理数据库地理处理工具或 Python 脚本在预先创建的数据库中创建地理数据库。

其他可选设置

有些情形需要使用其他工具完成地理数据库设置,例如:希望使用 ArcSDE 服务进行连接,或者在同一 PostgreSQL 数据库集群中需要多个地理数据库。关于在同一数据库集群上创建多个地理数据库的信息,请参阅 PostgreSQL 中的多个地理数据库

要使用 ArcSDE 服务,必须安装和配置 ArcSDE 应用程序服务器。有关该情形的说明,请参阅随 ArcSDE 应用程序服务器一同提供的安装指南。ArcSDE 应用程序服务器安装程序可从 Esri 客户关怀中心门户网站下载。

相关主题

5/10/2014