Share via


MakeValid (geography データ型)

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

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

入力オブジェクトが STIsValid() に対して False を返す場合、MakeValid() はこの無効なインスタンスを有効なインスタンスに変換します。

この geography データ型メソッドは、半球より大きい FullGlobe インスタンスまたは空間インスタンスをサポートします。

構文

  
.MakeValid ()  

Note

SQL Server 2014 (12.x) 以前のバージョンの Transact-SQL 構文を確認するには、以前のバージョンのドキュメントを参照してください。

戻り値の型

SQL Server 戻り値の型: geography

CLR の戻り値の型: SqlGeography

解説

このメソッドにより、geography インスタンスの型が変更されることがあります。 さらに、geography インスタンスの地点がわずかに移動することもあります。 いくつかのメソッド (NumPoint() など) の結果が変更されることがあります。

無効な空間インスタンスが赤道と交差し、EnvelopeAngle() = 180 である場合、FullGlobe インスタンスが返されます。 MakeValid()geography データ型のメソッドは、有効なインスタンスを返すように試みますが、結果が正確であることは保証されません。

Note

無効なオブジェクトをデータベースに格納することができます。 無効なインスタンス (STIsValid() が False を返すインスタンス) で実行可能なメソッドは、有効性を確認するメソッドまたはエクスポートを許可するメソッドであり、それらは次のとおりです: STIsValid()、MakeValid()、STAsText()、STAsBinary()、ToString()、AsTextZM()、および AsGml()。

このメソッドは正確ではありません。

最初に、そのインスタンス自体が重なる、無効な LineString インスタンスを作成し、STIsValid() を使用して、無効なインスタンスであることを確認する例を示します。 STIsValid() は、無効なインスタンスに対して値 0 を返します。

DECLARE @g geography;  
SET @g = geography::STGeomFromText('LINESTRING(0 2, 1 1, 1 0, 1 1, 2 2)', 4326);  
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))  

参照

STIsValid (geometry データ型)
Geography インスタンスの拡張メソッド