对含有 ST_Geometry 列的表进行的几何验证

几何验证由 ST_Geometry 类型通过 st_shapelib (Oracle) 和 st_geometry 库提供。创建表之后,插入或更新记录时会对数据进行验证。

将数据插入到空间表的方法主要有两种:

存取器函数针对不同的空间类型实现不同的定义,并且使用不同的方法验证几何数据。Esri ST_Geometry 存取器函数和 ArcGIS API 均使用 Esri 形状库验证几何数据。第三方空间类型拥有它们自己的存取器函数,并且使用它们自己的形状验证规则。因此,对于针对各种空间类型(例如 SDO_Geometry、PostGIS 几何和 Microsoft SQL Server 几何或地理)的形状验证规则,请相应地阅读 Oracle、PostGIS 或 SQL Server 文档。

以下规则适用于 Esri 形状库,因而也适用于 Esri API 和 ST_Geometry 存取器函数。

针对点形状的验证规则

针对简单线或线串的验证规则

针对线或管 (spaghetti) 状线串的验证规则

针对区域形状的验证规则和操作

空间参考 ID

对于所提供的、创建表时使用的空间参考 ID (SRID) 的边界以外的坐标,如果尝试插入具有这些坐标的值,则 INSERT 语句会失败并提示类似于如下列出的消息:

DBMS

错误消息

Oracle

ERROR at line 1:
ORA-20004: Error generating shape from text (-112)
ORA-06512: at "SDE.ST_GEOMETRY_SHAPELIB_PKG", line 42
ORA-06512: at "SDE.ST_POLYGON", line 69
ORA-06512: at line 1

PostgreSQL

ERROR: ESRI: error generating shape [-112]:

Informix

SQL Error (-937): Coordinates out of bounds in ST_PolyFromText.

DB2

GSE3416N Coordinate out of bounds

相关主题

9/15/2013