空间参考
空间参考包括一个 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 的行。
空间参考表
在 ArcGIS 支持的企业级地理数据库和数据库中,所有空间参考系统都存储在系统表中。
地理数据库中的空间参考表
从 ArcGIS 10.1 开始,用于 Oracle (sde.st_spatial_references) 和 PostgreSQL (public.sde_spatial_references) 中 ST_Geometry 的系统表就预填充了使用空间参考 ID (SRID) 的 EPSG 代码的空间参考系统。Oracle 和 PostgreSQL 中的升级地理数据库将包含添加到 sde.st_spatial_references 表和 public.sde_spatial_references 表中的空间参考系统。
有关每个数据库管理系统的地理数据库中空间参考表所有列的定义,请参考各自的系统表主题:
![开始行动 开始行动](rsrc/divein.png)
以下是有关如何在地理数据库中使用空间参考系统的技术详细信息:
存储前,内部功能会利用空间参考系的参数将几何的每个浮点型坐标都转换和调整为 64 位正整数。进行检索时,这些坐标将恢复为其外部浮点型形式。
通过以下步骤将浮点型坐标转换为整型:减去 falsex 值和 falsey 值,从而转换为假定原点;乘以 x,y 单位进行比例调整;添加半个单位;然后截掉余数。
以类似方式处理可选的 z 坐标和度量值,不同之处在于使用 falsez 值和 falsem 值进行转换,然后使用 z 单位和 m 单位进行比例调整。
数据库中的空间参考表
除非已在 Oracle、PostgreSQL 或 SQLite 数据库中安装了 ST_Geometry 类型,否则使用 SQL 几何类型的数据库将不包含 ArcGIS 系统表。每个 DBMS 都拥有自己的系统表或表,用于存储空间参考元数据。通常,这些表用于存储坐标系的熟知文本和 ID,但不存储精度值或容差值。
大多数数据库都将 EPSG 代码用于其空间参考 ID。
有关详细信息,请参阅 DBMS 文档。
如何在 ArcGIS 中使用空间参考系统
在 ArcGIS 中创建要素类时,请选择空间参考。如果将数据存储在地理数据库中,则 ArcGIS 会根据您选择的空间参考来计算默认的 x、y、z 和 m 单位及偏移。
如果使用 ArcGIS 将数据粘贴或导入到数据库或企业级地理数据库,ArcGIS 将提取传入数据的坐标系的可识别文本描述和 ID,以及容差和分辨率(如果存在),然后将其与空间参考系统表中的值进行比较。如果找到匹配值,则使用现有空间参考。如果未找到匹配值,例如,如果传入的数据具有一个自定义空间参考,则结果取决于针对目标数据库或地理数据库中创建的表的空间列所使用的空间类型。
请参阅什么是 SRID 了解导入或粘贴空间数据时,目标 PostgreSQL、Oracle、SQL Server 或 Netezza 数据库中所用的 SRID 的列表。
无法从 ArcGIS 将具有未知空间参考的空间数据发布为服务。要发布数据,请针对它创建查询图层,并针对该查询图层指定空间参考。