MakeValid(geometry 数据类型)

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例

将无效 geometry 实例转换为具有有效开放地理空间信息联盟 (OGC) 类型的 geometry 实例。

语法

  
.MakeValid ()  

注意

若要查看 SQL Server 2014 (12.x) 及更早版本的 Transact-SQL 语法,请参阅早期版本文档

返回类型

SQL Server 返回类型:geometry

CLR 返回类型:SqlGeometry

备注

此方法可能会导致 geometry 实例的类型有所变化,还会导致 geometry 实例的点略微移位。

示例

第一个示例创建一个与其自身重叠的无效 LineString 实例,并使用 STIsValid() 来确认该实例是无效实例。 STIsValid() 针对无效实例返回值 0。

DECLARE @g geometry;  
SET @g = geometry::STGeomFromText('LINESTRING(0 2, 1 1, 1 0, 1 1, 2 2)', 0);  
SELECT @g.STIsValid();  

第二个示例使用 MakeValid() 使该实例有效并测试该实例是否的确有效。 STIsValid() 针对有效实例返回值 1。

SET @g = @g.MakeValid();  
SELECT @g.STIsValid();  

第三个示例验证是否已将该实例更改为有效实例。

SELECT @g.ToString();  

在此示例中,在选择 LineString 实例时,值将作为有效的 MultiLineString 实例返回。

MULTILINESTRING ((0 2, 1 1, 2 2), (1 1, 1 0))  

下面的示例将 CircularString 实例转换为 Point 实例。

DECLARE @g geometry = 'CIRCULARSTRING(1 1, 1 1, 1 1)';  
SELECT @g.MakeValid().ToString();  

另请参阅

STIsValid(geometry 数据类型)
几何图形实例上的扩展方法