访问 PostGIS 数据库中的三方数据

本文介绍 SuperMap 对 PostGIS 数据库中三方数据的支持情况。

三方数据指非 SuperMap 平台创建和维护的数据(如由 ArcGIS、QGIS 或其他业务系统直接创建的数据表),以下简称三方数据。在实际项目中,PostGIS 数据库中的数据往往并非全部由 SuperMap 平台创建和维护。以下场景中,都需要 SuperMap 直接访问库中的三方数据:

  • 多平台协同:同一个 PostGIS 数据库被多个平台共同使用,SuperMap 需要直接读取其他平台生产和管理的数据;
  • 统建平台:政务、自然资源等领域的统建平台中,数据库由其他部门统一维护,不允许第三方平台在其中创建系统表,无法初始化为 SDX+ 数据源;
  • 数据承接:用户承接上游单位以 PostGIS 或其他 GIS 平台建设的数据库,或既有系统向 SuperMap 平台迁移的过渡期内,需要在不改动原库的前提下直接使用数据。

为解决上述问题,SuperMap 支持打开 PostGIS 数据源时,自动识别其中的三方数据,无需新建 PostGIS 数据源,即可直接浏览和查询其中的空间数据与属性数据,对满足条件的数据,还支持记录级的编辑。

SuperMap iDesktopX 2026 Update1 版本起,可正确识别并提取 ArcGIS 数据的字段别名,浏览属性表、查看字段信息时显示的字段别名与 ArcGIS 中一致。

1. 支持的空间数据存储类型

支持读取 PostGIS 数据库(包括 KingbaseES、HighGo 等 PostGIS 系列数据库)中以下两种空间类型存储的数据:

  • PostGIS geometry 类型:PostGIS 是 PostgreSQL 数据库的开源空间扩展,遵循 OGC 简单要素规范,geometry 是其空间数据类型,广泛用于各类 GIS 平台和业务系统直接建库;
  • Esri ST_Geometry 类型:ST_Geometry 是 Esri 实现的空间数据类型,是 ArcGIS 在 PostgreSQL/PostGIS 库中创建空间数据的默认存储类型。

2. 数据源的空间模型类型

打开 PostGIS 数据源后,可通过数据源属性 - 空间模型类型查看数据源下空间数据的存储与管理方式。

空间模型类型 说明
SuperMap 空间模型 由 SuperMap 新建的 PostGIS 数据源,不含其他平台管理的数据。
数据库原生空间模型 直接使用 PostGIS 创建的数据库,未在任何 GIS 平台中注册管理。
ArcGIS 空间模型(数据库空间扩展存储) 由 ArcGIS 创建并管理的数据库,空间数据存储类型为 PostGIS geometry。
ArcGIS 空间模型(ST_Geometry 存储) 由 ArcGIS 创建并管理的数据库,空间数据存储类型为 Esri ST_Geometry。
SuperMap + ArcGIS(数据库空间扩展存储)的混合空间模型 同时存在 SuperMap 和 ArcGIS 创建并管理的数据,其中 ArcGIS 的空间数据存储类型为 PostGIS geometry。
SuperMap + ArcGIS(ST_Geometry 存储)的混合空间模型 同时存在 SuperMap 和 ArcGIS 创建并管理的数据,其中 ArcGIS 的空间数据存储类型为 Esri ST_Geometry。
数据库原生 + ArcGIS(ST_Geometry 存储)的混合空间模型 同时存在 PostGIS 和 ArcGIS 创建并管理的数据,其中 ArcGIS 的空间数据存储类型为 Esri ST_Geometry。
未知空间模型 无法识别数据源的空间模型类型。

不同空间模型类型的数据源,支持的功能范围存在一些差异,具体见下方说明。

3. 功能支持情况一览

功能 SuperMap 空间模型 数据库原生空间模型 ArcGIS 空间模型(数据库空间扩展存储) ArcGIS 空间模型(ST_Geometry 存储)
数据读取与查询 √ √ √ √(不支持空间查询)
记录级增、删、改 √ 仅限存在整型自增序列主键的数据 仅限存在整型自增序列主键的数据 ×(只读)
新建/删除/复制/重命名数据集 √ × × ×
新建/删除/修改字段 √ × × ×
设置坐标系、自定义投影 √ × × ×
版本管理、事务、值域、数据集分组等 √ × × ×

3.1 数据读取范围

  • 空间数据表:SuperMap 根据空间数据类型识别为对应的矢量数据集,支持二维/三维的点、线、面(可含参数化对象)数据集、多点数据集,其他数据类型暂不支持。
  • 普通表:不含空间字段的表,可识别为属性表数据集。若数据库已通过 SuperMap 创建 PostGIS 数据源,普通表不会自动识别为属性表数据集,您需要通过业务表管理将这些表添加到数据源后再使用,目前仅支持添加打开数据源时指定 Schema 下的业务表。
注意事项:
  • 数据库原生空间模型的 PostGIS 数据,可读取的数据库字段类型:bytea、int2、int4、int8、date、timestamp、timestamptz、float4、float8、text、uuid、bool、geometry、numeric、texture、material、sfmesh、bpchar、varchar、nvarchar2、jsonb;其他字段类型不支持。
  • ArcGIS 空间模型(数据库空间扩展存储),如果空间数据表的记录数为 0,将被识别为 CAD 数据集。
  • ArcGIS 空间模型(ST_Geometry 存储),对于记录数为 0 的空间数据表,SuperMap 无法区分坐标中存储的是 M 值还是 Z 值,因此带 M 值且不带 Z 值的点、线、面数据将被识别为带 Z 值的三维点、线、面数据集;表中有记录时不存在该问题。
  • ArcGIS 空间模型(ST_Geometry 存储), 若 ArcGIS 的数据集名存在大写字母,SuperMap 将全部显示为小写。
  • SuperMap + ArcGIS(ST_Geometry 存储)的混合空间模型、数据库原生 + ArcGIS(ST_Geometry 存储)的混合空间模型,这两种类型的数据源下, ArcGIS(ST_Geometry 存储)创建的空间数据表都将被读取为普通表。
  • 三方数据(非视图)在数据集属性中显示的数据集范围、对象个数,可能与实际值存在误差;如需精确值,您可以重新计算获取,数据量较大时需要一定时间;视图始终显示精确值。
  • 三方数据的几何类型根据数据元信息结合部分数据采样自动识别。对于空间类型混合或分布特殊的数据表,识别结果可能存在偏差,您可以通过浏览地图进行核对确认。

3.2 功能范围详细说明

  • 支持对三方数据读取与查询,包括地图浏览、属性表浏览、属性查询、空间关系查询、SQL 查询等,其中,ArcGIS 空间模型(ST_Geometry 存储)的数据源不支持空间查询。
  • 支持读取三方数据的视图、物化视图。注意:ArcGIS 空间模型(ST_Geometry 存储)的数据源除外。
  • 支持记录级增、删、改,前提是数据表必须存在整型自增序列的主键,若无整型自增序列的主键则数据为只读。若数据库已通过 SuperMap 创建 PostGIS 数据源,数据表只要存在整型的主键,就可以编辑,无需判断主键是否为自增序列。注意:ArcGIS 空间模型(ST_Geometry 存储)的数据源不支持记录级增、删、改的操作。
  • 三方数据均不支持新建/删除数据集、字段管理等改变数据结构的操作。
注意事项:
  • 在 SuperMap 中编辑 ArcGIS 管理的数据,不会同步更新 ArcGIS 侧维护的信息,可能影响 ArcGIS 中数据的正常使用,请谨慎操作。
  • 空间分析和数据处理结果,不能直接保存至未通过 SuperMap 创建数据源的 PostGIS 数据库,建议您将分析结果保存到 SuperMap 数据源(SDX+)或其他文件型数据源中。