几何验证

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

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

构造函数针对不同的空间类型实现不同的定义,并且使用不同的方法验证几何数据。创建要素时,Esri 和 IBM ST_Geometry 构造函数以及 ArcGIS API 使用 Esri 形状库验证几何数据。其他空间类型(例如 SDO_Geometry、PostGIS 几何和 Microsoft SQL Server 几何或地理)具有自己的构造函数,所以使用自己的形状验证规则。因此,在将要素插入或更新到 ArcGIS 以外的这些类型时,应针对适用的验证规则分别读取 Oracle、PostGIS 或 SQL Server 文档。

ArcGIS 还会在读取数据时验证几何。无法在 ArcGIS 中对无效几何进行渲染。

ArcGIS 读取几何时,以下几何验证规则适用于 Esri API、ST_Geometry 构造函数:

针对点形状的验证规则

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

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

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

空间参考 ID

就使用 ST_Geometry 类型的要素类而言,对于所提供的、创建表时使用的空间参考 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

SQLite

Error: ST_Geometry failed with SDE error -139:
'The specified coordinate exceeds the valid coordinate range':[4]

相关主题

5/25/2014