Name

ST_IsValid — 测试几何图形在 2D 中是否有效。

Synopsis

boolean ST_IsValid(geometry g);

boolean ST_IsValid(geometry g, integer flags);

描述

根据 OGC 规则测试 ST_Geometry 值在 2D 中是否格式良好且有效。 对于 3 维和 4 维几何形状,有效性仍然仅在 2 维中进行测试。 对于无效的几何图形,会发出 PostgreSQL NOTICE,提供其无效原因的详细信息。

对于带有 flags 参数的版本,支持的值记录在 ST_IsValidDetail 中。此版本不会打印解释无效性的通知。

有关几何有效性定义的更多信息,请参阅第 Section 4.4, “几何有效性验证”

[Note]

SQL-MM 将 ST_IsValid(NULL) 的结果定义为 0,而 PostGIS 返回 NULL。

这个函数是由 GEOS 模块执行的。

接受标志的版本从 2.0.0 开始可用。

此方法实现了 SQL 1.1 的 OGC 简单功能规范。

该方法实现了SQL/MM规范。 SQL-MM 3: 5.1.9

[Note]

OGC-SFS 和 SQL-MM 规范均不包含 ST_IsValid 的标志参数。 该标志是 PostGIS 扩展。

示例

SELECT ST_IsValid(ST_GeomFromText('LINESTRING(0 0, 1 1)')) As good_line,
        ST_IsValid(ST_GeomFromText('POLYGON((0 0, 1 1, 1 2, 1 1, 0 0))')) As bad_poly
--results
NOTICE:  Self-intersection at or near point 0 0
 good_line | bad_poly
-----------+----------
 t         | f