名称

ST_IsValid — 测试几何在 2D 中是否格式正确。

语法

boolean ST_IsValid(geometry g);

boolean ST_IsValid(geometry g, integer flags);

描述

根据 OGC 规则测试 ST_Geometry 值在 2D 中是否格式正确且有效。对于具有 3 和 4 个维度的几何,有效性仍然只在 2 个维度中进行测试。对于无效的几何,将发出 PostgreSQL NOTICE,提供无效原因的详细信息。

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

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

[Note]

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

由 GEOS 模块执行。

从 2.0.0 开始提供接受标志的版本。

此方法实现了 OGC 简单要素 SQL 1.1 实施规范。

此方法实现了 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

另请参见

ST_IsSimpleST_IsValidReasonST_IsValidDetail