快速浏览:将 SQL 与 ST_Geometry 配合使用
可使用数据库管理系统 (DBMS) 的结构化查询语言 (SQL)、数据类型和表格式来处理地理数据库或安装了 ST_Geometry 类型的数据库中所存储的信息。SQL 是一种数据库语言,支持数据定义和数据操纵命令。
通过 SQL 访问地理数据库中的信息允许外部应用程序处理地理数据库管理的表格数据。这些外部应用程序可以是在 ArcObjects 以外的环境中开发的非空间数据库应用程序或自定义空间应用程序。
请注意,通过 SQL 访问地理数据库会忽略地理数据库功能,如版本化、拓扑、网络、地形、关联要素的注记、其他类或工作空间扩展模块。可使用触发器和存储过程等 DBMS 功能来维护某个地理数据库功能所需的表之间的关系。但是,如果对数据库执行 SQL 命令而不考虑此附加功能(如执行 INSERT 语句以向业务表添加记录或者向现有要素类添加列),则会避开地理数据库功能并可能对地理数据库中数据之间的关系造成损坏。
通常,使用 SQL 修改地理数据库中的空间或非空间数据时将应用以下原则:
- 数据已版本化后不要使用 SQL 来更新记录,除非将 SQL 与版本化视图结合使用。
- 使用 SQL 更新非版本化数据时,不要使用地理数据库行为(例如关系类、关联要素的注记、拓扑或网络)修改可影响数据库中其他对象的任何属性。
- 执行完 SQL 语句后,执行 COMMIT 或 ROLLBACK 语句以确保更改是已提交到数据库还是未完成。这对地理数据库和数据库数据都适用。
ST_Geometry 存储类型
ST_Geometry SQL 数据类型用于 IBM DB2、Informix、Oracle 和 PostgreSQL 数据库。数据库可以包含地理数据库,但不是必须包含地理数据库。
ST_Geometry 数据类型可与 ArcGIS 客户端配合使用,另外还为第三方应用程序提供了对简单要素类几何的 SQL 访问。
ST_Geometry 执行空间的 OGC 和 ISO SQL 多媒体规范。OGC 参考资料为“地理信息的 OpenGIS 执行规范 - 简单要素访问 - 第 2 部分:SQL 选项,版本 1.1.0。ISO 参考资料为“ISO/IEC 13249-3 SQL 多媒体和应用程序包 - 第 3 部分:空间。
有关 SQL 与 DB2 或 Informix 中的 ST_Geomery 类型结合使用的信息,请参阅 IBM DB2 和 Informix 文档。有关 SQL 与 Oracle 和 PostgreSQL 中的 ST_Geometry 类型配合使用的信息,请参阅本部分 ArcGIS 用户帮助中的主题。
本帮助的“空间类型与 SQL 结合使用”一节包含 DB2 和 Informix 的一些示例;不过有关 ST_Geometry 与这些数据库结合使用的完整信息,请阅读 IBM 文档。
空间参考 ID
创建几何并将其插入表中之前,必须具有可用的有效空间参考 ID (SRID)。对于 Oracle 的空间类型,SRID 必须位于 ST_SPATIAL_REFERENCES 表中,并且在 SDE.SPATIAL_REFERENCES 表中具有匹配的记录。对于 PostgreSQL 的空间类型,SRID 必须位于 public.sde_spatial_references 表中。从 ArcGIS 10.1 开始,这些表将用空间参考进行预填充。
如果需要使用表中不存在的自定义空间参考,最简单的方法是使用 ArcGIS for Desktop 加载或创建具有有效空间参考值的要素类。确保创建的要素类使用 ST_Geometry 存储。可以创建带有所需空间参考信息的空要素类作为模板。这样将在 Oracle 的 SDE.SPATIAL_REFERENCES 和 ST_SPATIAL_REFERENCES 表中创建记录,或在 PostgreSQL 的 public.sde_spatial_references 表中创建记录。查询 LAYERS (Oracle) 或 sde_layers (PostgreSQL) 表可找到分配给图层的 SRID。然后可在使用 SQL 创建空间表并插入数据时使用该 SRID。
为了使用本帮助系统中的示例,已向 ST_SPATIAL_REFERENCES 和 sde_spatial_references 表中添加了一个记录来表示未知空间参考。该记录的 SRID 为 0。可以将此 SRID 用于帮助中的示例。这不是正式 SRID,它用于执行示例 SQL 代码。强烈建议不要为生产数据使用该 SRID。
如果决定使用数据库中已存在的其他 SRID 值执行这些示例,则必须更改示例的坐标以反映 SRID 值的空间参考。
如果要使用 SQL 将空间参考添加到 ST_SPATIAL_REFERENCES 或 sde_spatial_references 表中,请参阅使用 SQL 创建空间参考。