空间参考

空间参考包括一个 x、y、z 值的坐标系。在企业级地理数据库中,空间参考还包含容差值和分辨率值。所有这些信息组合在一起将有助于指示平面地图上的形状表示地球上的哪个位置。

各空间参考还包括一个标识符(通常被称为熟知 ID、空间参考 ID 或 SRID)和一个坐标系的熟知文本定义。还有一些特定标准 ID,例如由欧洲石油测绘组 (EPSG) 或 ESRI 定义的 ID,但空间参考的 ID 并不始终是标准 ID。这对于您在不同数据库之间移动空间数据会有一定的影响。有关详细信息,请参阅本主题中的“如何在 ArcGIS 中使用空间参考系统”部分。

通过 ArcGIS 创建时,具有指定 SRID 的空间参考系统将分配到要素类。如果空间参考未指定,则要素类会具有一个未知的空间参考。此空间参考和 SRID 将应用于要素类中的所有行。

直接在数据库中(ArcGIS 外部)创建空间表时,空间表中的每条记录均可分配有不同的 SRID 和空间参考。但在 ArcGIS 中使用这些数据库表时,ArcGIS 只对整张表识别一个 SRID 和空间参考。可定义查询图层来指定要使用哪个 SRID,在 ArcGIS 中可访问具有该 SRID 的所有行。否则 ArcGIS 读取表中第一行的 SRID,在 ArcGIS 中只可访问已定义该 SRID 的行。

企业级地理数据库中的空间参考表

在企业级地理数据库(以及已安装 ST_Geometry 类型的 Oracle 或 PostgreSQL 数据库)中,所有空间参考系统都存储在地理数据库系统表中。

数据库和存储类型

地理数据库系统表

Oracle (ST_Geometry)

sde.st_spatial_references

Oracle(SDO_Geometry 或 SDEBINARY)

sde.spatial_references

PostgreSQL(ST_Geometry 和 PostGIS 几何)

public.sde_spatial_references

在可插入空间参考的 sde.st_spatial_references 表中还提供了可编辑的视图。

Informix (ST_Geometry)

sde.spatial_references

DB2 (ST_Geometry)

db2gse.st_spatial_reference_systems(这是系统视图。)

SQL Server(几何、地理和 SDEBINARY)

sde_spatial_references

空间参考表中必须存在空间参考系统,以便与您的数据组合使用。

从 ArcGIS 10.1 开始,用于 Oracle 和 PostgreSQL 中的 ST_Geometry 的地理数据库系统表就预填充了使用空间参考 ID (SRID) 的 EPSG 代码的空间参考系统。Oracle 和 PostgreSQL 中的升级地理数据库将包含添加到 sde.st_spatial_references 表和 public.sde_spatial_references 表中的空间参考系统。

有关每个数据库管理系统中空间参考表所有列的定义,请参考其各自的系统表主题:

开始行动开始行动:

以下是有关如何在地理数据库中使用空间参考系统的技术详细信息:

存储前,内部功能会利用空间参考系的参数将几何的每个浮点型坐标都转换和调整为 64 位正整数。进行检索时,这些坐标将恢复为其外部浮点型形式。

通过以下步骤将浮点型坐标转换为整型:减去 falsex 值和 falsey 值,从而转换为假定原点;乘以 x,y 单位进行比例调整;添加半个单位;然后截掉余数。

以类似方式处理可选的 z 坐标和度量值,不同之处在于使用 falsez 值和 falsem 值进行转换,然后使用 z 单位和 m 单位进行比例调整。

数据库中的空间参考表

除非已在 Oracle 或 PostgreSQL 数据库中安装了 ST_Geometry 类型,否则使用 SQL 几何类型的数据库将不包含 ArcSDE 系统表。每个 DBMS 拥有自己的系统表用于存储空间参考。通常,这些表用于存储坐标系的熟知文本和 ID,但不存储精度值或容差值。

大多数数据库都将 EPSG 代码用于其空间参考 ID。

有关详细信息,请参阅 DBMS 文档。

如何在 ArcGIS 中使用空间参考系统

在 ArcGIS 中创建要素类时,请选择空间参考。如果将数据存储在地理数据库中,则 ArcGIS 会根据您选择的空间参考来计算默认的 x、y、z 和 m 单位及偏移。

如果将数据粘贴或导入到 ArcGIS for Desktop 中的数据库或企业级地理数据库,ArcGIS 将提取传入数据的坐标系的可识别文本描述和 ID,以及容差和分辨率(如果存在),然后将其与空间参考系统表中的值进行比较。如果找到匹配值,则使用现有空间参考。如果未找到匹配值,例如,如果传入的数据具有一个自定义空间参考,则结果取决于针对目标数据库或地理数据库中创建的表的空间列所使用的空间类型。

下表列出了在导入或粘贴空间数据时 PostgreSQL、Oracle、SQL Server 或 Netezza 目标数据库中所用的 SRID。已知未知字样用于指示是否可将源数据中的空间参考映射到目标数据库中的现有空间参考。

目标

ST_Geometry

PostGIS Geometry

Oracle SDO_Geometry

SQL Server 几何

SQL Server 地理

Netezza 空间

包含 ST_Geometry、SDEBINARY、PostGIS Geometry、SDO_Geometry、SQL Server Geometry、SQL Server Geography 或 Netezza 空间列的已知 EPSG 代码

EPSG 代码用作空间参考 ID 并与几何一同存储。

EPSG 代码用作空间参考 ID 并与几何一同存储。

EPSG 代码用作空间参考 ID 并与几何一同存储。

EPSG 代码用作空间参考 ID 并与几何一同存储。

EPSG 代码用作空间参考 ID 并与几何一同存储。

EPSG 代码用作空间参考 ID 并与几何一同存储。

包含 ST_Geometry、SDEBINARY 或 Netezza 空间列的具有自定义容差和/或精度的已知 EPSG 代码

向 ArcSDE 系统表添加大于 300,000 的 SRID。

EPSG 代码用作空间参考 ID 并与几何一同存储。

EPSG 代码用作空间参考 ID 并与几何一同存储。

EPSG 代码用作空间参考 ID 并与几何一同存储。

EPSG 代码用作空间参考 ID 并与几何一同存储。

EPSG 代码用作空间参考 ID 并与几何一同存储。

包含 ST_Geometry、SDEBINARY 或 Netezza 空间列的已知 Esri 坐标系

Esri 代码用于 ID 并与几何一同存储。

ID 设置为 –1。

ID 为空。

Esri 代码用于 ID 并与几何一同存储。

Esri 坐标系用于投影的坐标系。由于投影坐标系无法与 SQL Server 地理类型一起使用,因此会返回错误,并且无法导入数据。

Esri 代码用作空间参考 ID 并与几何一同存储。

包含 ST_Geometry、SDEBINARY、PostGIS Geometry、SDO_Geometry、SQL Server Geometry 或 Netezza 空间列的已知坐标系

向 ArcSDE 系统表添加大于 300,000 的 SRID。

ID 设置为 –1。

ID 为空。

ID 设置为 0。

返回错误,并且无法导入数据。

ID 设置为 500000。

包含 SDO_Geometry 列的自定义 Oracle 坐标系

向 ArcSDE 系统表添加大于 300,000 的 SRID。

ID 设置为 –1。

如果已在源中设置自定义 Oracle ID,则使用此 ID。如果未设置,则在目标数据库中将 SRID 设置为空。

ID 设置为 0。

返回错误,并且无法导入数据。

返回错误,并且无法导入数据。

包含 PostGIS 几何列的自定义坐标系

向 ArcSDE 系统表添加大于 300,000 的 SRID。

如果已在源中设置自定义 PostGIS ID,则使用此 ID。如果未设置,则在目标数据库中将 ID 设置为 –1。

ID 为空。

ID 设置为 0。

返回错误,并且无法导入数据。

返回错误,并且无法导入数据。

在向 DB2 或 Informix 数据库粘贴或导入数据时,ArcGIS 还会检查空间参考表中是否有匹配项;如果没有找到,则会向空间参考表中添加一条具有新信息的新记录。有关使用的 ID 的详细信息,请参阅 IBM 文档。

无法从 ArcGIS 将具有未知空间参考的空间数据发布为服务。要发布数据,请针对它创建查询图层,并针对该查询图层指定空间参考。

相关主题

9/15/2013