ArcGIS 和 PostGIS 几何类型

PostGIS 是在空间上启用 PostgreSQL 数据库的产品。PostGIS 遵从开放地理空间联盟 (OGC) 关于结构化查询语言 (SQL) 的简单要素规范。它使用 OGC 熟知二进制 (WKB) 和熟知文本 (WKT) 表示几何。

PostGIS 有两个空间类型选项:几何空间类型和地理空间类型。ArcGIS 仅支持几何类型。

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

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

准备数据库以使用 PostGIS 几何

要使用 PostGIS 几何类型,必须安装 PostGIS。安装 PostgreSQL 之后安装 PostGIS。请确保要使用的 ArcGIS 版本支持所安装的 PostGIS 版本。

提示提示:

有关正在使用的 ArcGIS 版本所支持的 PostGIS 版本信息,请参阅 ArcGIS 资源中心中的数据库系统要求页面

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

注注:

如果使用创建企业级地理数据库地理处理工具创建地理数据库,则将使用 PostGIS 模板以外的其他模板来创建数据库。因此,如果想要使用 PostGIS 几何类型,必须使用 PostGIS 模板手动创建数据库。然后,在运行创建企业级地理数据库地理处理工具时,便可以指定现有数据库,地理数据库也将在其中创建。

为用户授予创建包含 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>;

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

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

您可以通过 ArcGIS for Desktop 或使用 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 配置关键字,然后在创建要素类时指定该关键字。在通过使用 sdedbtune 命令导出 sde_dbtune 表的内容而创建的 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 表

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

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

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

您可以从 ArcGIS for Desktop 连接到包含 PostGIS 表的 PostgreSQL 数据库并将这些表注册到地理数据库。请参阅将表注册到地理数据库了解详细信息。

PostGIS 和 PostgreSQL 文档所在位置

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

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

5/10/2014