ArcGIS 和 PostGIS 几何类型

PostGIS is a product from Refractions Research that can spatially enable PostgreSQL databases. PostGIS follows the Open Geospatial Consortium, Inc., Simple Features specification for SQL.

将 PostGIS 几何存储类型与 ArcGIS 一起使用时,请牢记以下规则:

以下部分包含有关如何将 PostGIS 几何存储类型与 ArcGIS 应用程序一起使用的详细信息。

准备数据库以使用 PostGIS 几何

要使用 PostGIS 几何类型,必须安装 PostGIS。

安装 PostgreSQL 之后安装 PostGIS。

要获取 ArcSDE 所支持的 PostGIS 版本,可在 Windows 上安装 PostgreSQL 时安装 PostgreSQL StackBuilder。或访问 PostGIS 网站 http://www.postgis.org/download/ 或 PgFoundry 网站 http://pgfoundry.org/,以获取下载文件的位置。确保下载适合您操作系统的正确安装文件或二进制文件。

提示提示:

有关 ArcSDE 所支持的 PostGIS 版本的信息,请参阅 ESRI 支持页面上的 ArcGIS Server 系统要求页面。

安装 PostGIS 时,会在 PostgreSQL 数据库群集中创建 PostGIS 模板数据库。使用 PostGIS 模板数据库可创建用于存储地理数据库的数据库。

注意注意:

如果使用“Windows ArcSDE 安装后配置”向导创建地理数据库,则将使用 PostGIS 模板以外的其他模板来创建数据库。因此,如果要使用 PostGIS 几何类型,需要在开始安装后配置之前退出安装向导,然后使用 PostGIS 模板手动创建数据库、sde 用户并在数据库中创建 sde 用户方案。接下来,可使用该向导完成安装后配置步骤的其余步骤:在“安装后配置”向导的第一个对话框上,单击“自定义”,再单击“下一步”,然后取消选中“定义 SDE 用户环境”。

为用户授予创建包含 PostGIS 几何列的表的权限

如果数据库对 PostGIS 可用,则将在公共方案中创建表 geometry_columns 和 spatial_ref_sys。必须为 sde 用户和将在地理数据库中创建数据的所有用户至少授予对 geometry_columns 表的 SELECT、INSERT、UPDATE 和 DELETE 权限和对 spatial_ref_sys 表的 SELECT 权限。

GRANT select, insert, update, delete 
ON TABLE public.geometry_columns 
TO <user_name>;

GRANT select
ON TABLE public.spatial_ref_sys
TO <user_name>;

在 PostgreSQL 的 ArcSDE 地理数据库中创建使用 PostGIS 几何存储的要素类

启用数据库存储 PostGIS 几何后,即可创建包含类型几何空间列的、空间上可用的表。可以将地理要素插入到空间列中。

通过 ArcSDE 访问空间上可用的表可由使用 ArcGIS 软件提供的现有工具的应用程序来实现,还可通过使用 ArcSDE C 应用程序编程接口 (API) 创建应用程序来实现。经验丰富的 SQL 程序员还可调用空间功能。

使用 ArcGIS 创建要素类

使用 ArcGIS 创建的要素类所使用的几何存储类型由 sde_dbtune 表中的参数设置控制。此参数为 GEOMETRY_STORAGE。在 PostgreSQL 中的地理数据库中,此参数可设置为 ST_GEOMETRY 或 PG_GEOMETRY(PostGIS 几何类型的设置)。因此,当您要使用 ArcGIS 创建使用 PostGIS 几何类型的要素类时,指定 GEOMETRY_STORAGE 参数设置为 PG_GEOMETRY 的配置关键字。

默认情况下,PostgreSQL 中 ArcSDE 地理数据库内的新要素类的几何存储类型使用 ST_Geometry 存储。如果要以 PostGIS 存储类型存储大部分数据,则将 sde_dbtune 表中 DEFAULTS 关键字下的 GEOMETRY_STORAGE 参数值更改为 PG_GEOMETRY。(使用 sdedbtune 命令更改 sde_dbtune 表中的参数。有关使用此命令的详细信息,请参阅《ArcSDE 管理命令参考》。)或者,如果仅要以 PostGIS 存储类型存储部分要素类,则可使用 PG_GEOMETRY 配置关键字,然后在创建要素类时指定该关键字。在 dbtune.sde 文件中,PG_GEOMETRY 关键字如下所示:

##PG_GEOMETRY GEOMETRY_STORAGE    "PG_GEOMETRY" UI_TEXT             "User Interface text description for POSTGIS geometry storage"  END

其余存储参数从 DEFAULTS 关键字中选择。有关 sde_dbtune 存储的详细信息,请参阅以下主题:

使用现有 PostGIS 表

ArcSDE 可以成功使用包含 PostGIS 几何列的表(由其他应用程序或使用 SQL 在外部创建,也称为第三方表),但前提是这些表满足以下先决条件:

有关使用 SQL 创建包含 PostGIS 列的表的信息,请参阅 PostGIS.org 网站上的 PostGIS 文档

注册包含 PostGIS 几何列的第三方表

通过 ArcSDE 管理命令 sdelayer –o register 可将表注册为要素类。这意味着,将为 sde_layers、sde_table_registry 和 sde_geometry_columns 系统表中的表添加记录。另外,记录还将添加到 sde_column_registry 系统表中的每列。

在下例中,将注册表 properties,其空间列 shape 中包含点几何 (–e p)。此表中包含整型列 fid,该列将用作 sde 保持的唯一要素标识符列(–C fid,SDE)。

sdelayer –o register –l properties,shape –e p 
-t PG_GEOMETRY –C fid,SDE -g RTREE -x 30,10,1000 
–u <user> –p <pw>

如上所示,sdelayer 命令只能将此表添加至 ArcSDE 系统表。要顺利使用 ArcGIS Desktop 地理数据库功能(例如拓扑、版本管理和网络),还必须将表注册到地理数据库。请参阅将表注册到地理数据库了解详细信息。

注意注意:

无法重命名使用 PostGIS 几何类型存储的空间表。这是因为不存在可用来对 public.geometry_columns 表中的表名称进行更新的 PostGIS 功能。

PostGIS 和 PostgreSQL 文档所在位置

可在 PostGIS 网站上找到 PostGIS 文档:http://www.postgis.org/documentation/

有关 PostgreSQL 的常规信息,请参阅 PostgreSQL 网站上的文档:http://www.postgresql.org/docs/


3/7/2012