Share via


MakeValid (geometry データ型)

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

無効な geometry インスタンスを有効な Open Geospatial Consortium (OGC) 型の geometry インスタンスに変換します。

構文

  
.MakeValid ()  

Note

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 データ型)
geometry インスタンスの拡張メソッド