对含有 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 存取器函数。

针对点形状的验证规则

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

针对线或无位相字符串的验证规则

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

空间参考 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

7/10/2012