教程:PostgreSQL 中地理数据库入门
本教程举例说明了如何在 Windows 服务器上的 PostgreSQL 9.0.2-1 中开始使用企业级地理数据库。本教程假设您已经安装了 ArcGIS for Desktop 和 ArcGIS for Server。
安装并配置 PostgreSQL
对于本教程,请运行 Esri 客户关怀中心门户上提供的 PostgreSQL 安装程序。安装 PostgreSQL 之后,通过修改 pg_hba.conf 文件配置数据库集群,以便接受远程连接。
下载并安装 PostgreSQL。
- 从 Esri 客户关怀中心门户下载 PostgreSQL 安装程序(在本例中,下载 postgresql 9.0.2-1 windows x64)。
- 在要安装 PostgreSQL 的 Windows 服务器上运行安装程序可执行文件。
除了为非英语站点设置区域设置和排序规则之外,可以直接使用安装向导中提供的默认值。
您将在安装过程中指定 postgres 超级用户的密码。请记住此密码,因为它是数据库集群的数据库管理员密码,并且会在本教程的后面部分用到。
首次安装 PostgreSQL 时,只能通过本地服务器进行连接。如要允许网络中的其他计算机连接 PostgreSQL,则必须修改 pg_hba.conf 文件。
- 在文本编辑器中,打开 PostgreSQL 数据目录中的 pg_hba.conf 文件。
默认位置是 C:\Program Files\PostgreSQL\9.0\data。
- 指定要允许访问数据库集群的客户端 IP 地址。
在下面的示例中,允许站点中的所有地址和所有相连的用户访问数据库集群中的所有数据库。
# TYPE DATABASE USER CIDR-ADDRESS METHOD # IPV4 local connections: host all all 0.0.0.0/0 md5 # IPV6 local connections: host all all ::/0 md5
为了提高数据库集群的安全性,您可以限制对特定 IP 地址或一系列地址的访问,指定要授予访问权限的一个或一系列数据库,或者指定哪些用户可以连接。甚至可以明确禁止访问某一 IP 地址或一系列 IP 地址。有关详细信息和示例,请参阅 PostgreSQL 文档 。
- 重新启动 PostgreSQL 服务。
在 Windows 服务列表中右键单击 postgresql-x64 服务并单击重启即可实现。
将 ST_Geometry 库放入 PostgreSQL 库目录
在 PostgreSQL 中创建地理数据库依赖于是否存在 ST_Geometry 库。创建地理数据库之前,必须将相应的库放入安装 PostgreSQL 的库目录中。可以在 ArcGIS 客户端安装目录的 DatabaseSupport 文件夹中找到 ST_Geometry 库。
由于本教程假设 PostgreSQL 安装在 Windows 服务器上,因此将使用 Windows64 文件夹中的 ST_Geometry 库。
- 在 Windows 资源管理器中,导航到 ArcGIS 客户端安装目录中的 Windows ST_Geometry 库位置。
在 64 位 Windows 操作系统上,ArcGIS for Desktop 的默认位置是 C:\Program Files (x86)\ArcGIS\Desktop<release#>\DatabaseSupport\PostgreSQL\Windows64;在 32 位 Windows 操作系统上,则是 C:\Program Files\ArcGIS\Desktop<release#>\DatabaseSupport\PostgreSQL\Windows64。
- 从此位置复制 st_geometry.dll。
- 导航到数据库服务器上的 PostgreSQL 库目录并将库粘贴到该位置。
在 Windows 上,默认位置是 C:\Program Files\PostgreSQL\9.0\lib。
将 PostgreSQL 客户端文件放在 ArcGIS 客户端计算机上
要从 ArcGIS 连接从而创建地理数据库,客户端计算机上必须具有 PostgreSQL 客户端库。
- 从 Esri 客户关怀中心门户下载 PostgreSQL 客户端文件。
要从 ArcGIS for Desktop 连接,则需要 32 位文件。要从 ArcGIS for Server 连接,则需要 64 位文件。如果这两个版本的 ArcGIS 客户端安装在同一台计算机上,则需要两组库。
- 将相应库粘贴到 ArcGIS 客户端的 bin 目录中。
- 对于 ArcGIS for Desktop,将 32 位文件粘贴到 C:\Program Files (x86)\ArcGIS\Desktop<release#>\bin 目录(64 位操作系统)或 C:\Program Files\ArcGIS\Desktop<release#>\bin 目录(32 位操作系统)中。
- 对于 ArcGIS for Server,请将 64 位文件粘贴到 C:\Program Files\ArcGIS\Server\bin 目录中。
注:必须将库放在要用于连接数据库的每个 ArcGIS 客户端计算机上。
- 如果已经运行 ArcGIS for Server 正在运行,则请重启 ArcGIS Server 以便识别放入 bin 目录的文件。
创建地理数据库
可以使用创建企业级地理数据库地理处理工具在 PostgreSQL 中创建数据库、sde 用户、sde 方案及地理数据库。
- 启动 ArcMap,然后打开搜索 窗口。
- 单击工具过滤器。
- 在搜索框中输入创建企业级地理数据库,然后单击搜索按钮。
- 单击创建企业级地理数据库(数据管理) 链接打开工具。
- 提供以 postgres 超级用户连接 PostgreSQL 数据库集群所需的信息,以创建数据库和 sde 用户。此外,还必须指向在授权 ArcGIS for Server 实例时生成的密钥代码文件。
在本例中,PostgreSQL 运行在服务器 mypgserver 上,待创建的数据库是 fstutorial,而授权密钥代码文件则位于 ArcGIS for Server 计算机的默认位置中。而且,还提供了 postgres 超级用户的密码及待创建的 sde 用户的密码。“表空间名称”已经留空,这意味着将在 pg_default 表空间中创建数据库。
- 单击确定以运行工具。
在 PostgreSQL 中创建数据库、sde 用户、sde 方案及地理数据库。
创建拥有数据的用户
存储在地理数据库中的数据应归 sde 用户之外的其他用户所有。使用创建数据库用户地理处理工具在 PostgreSQL 数据库集群中创建用户并在新建数据库中创建方案。
要创建用户,必须先以数据库管理员(本例采用 postgres 超级用户)连接地理数据库。
创建以 postgres 用户登录的数据库连接。
- 在 ArcMap 的目录树中,展开数据库连接节点,然后双击添加数据库连接。
将打开数据库连接 对话框。
- 提供以 postgres 超级用户连接新建数据库所需的信息。
在本例中,以 postgres 用户连接新建的 fstutorial 地理数据库:
由于将在地理处理工具中使用此连接文件,因此必须选中保存用户名和密码。运行此工具后,应在连接文件中取消选中此选项,以不同用户进行连接,或者删除此连接文件从而防止可以访问此文件的其他用户以数据库管理员登录地理数据库。
- 单击确定创建连接。
在目录树中的数据库连接节点下出现新的连接文件。
接下来,您可以运行创建数据库用户工具。
- 在 ArcMap 中单击搜索窗口的工具 过滤器。
- 在搜索框中输入创建数据库用户,然后单击搜索按钮。
- 单击创建数据库用户(数据管理) 链接打开工具。
- 将新的连接文件从目录树拖至创建数据库用户工具的输入数据库工作空间文本框中。
- 在数据库用户文本框中输入新用户的名称,然后在数据库用户密码文本框中输入新用户的密码。
在本例中,已经将在最后几步中创建的连接文件添加到工具中,并且提供了用户名 (fstuser) 和密码。由于尚未创建任何数据库角色,因此角色名称未指定。
- 单击确定以运行工具。
在 PostgreSQL 中创建新用户和方案,而且为公共角色自动授予对方案的 USAGE 权限。
以新建用户连接
由于具有可以在新地理数据库中添加数据的用户,则可以该用户连接数据库。最简单的方法是修改先前创建的连接文件。
打开现有数据库连接,并更改用户名和密码。
- 右键单击数据库连接,然后单击连接属性。
- 将用户名和密码值更改为新用户的值。
- 单击确定以新用户的身份进行连接。
接下来,您可以使用此连接向地理数据库中添加数据。