適用対象:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Microsoft Fabric の SQL データベース
無効な geography インスタンスを、有効な Open Geospatial Consortium (OGC) 型の geography インスタンスに変換します。
入力オブジェクトが STIsValid() に対して False を返す場合、MakeValid() はこの無効なインスタンスを有効なインスタンスに変換します。
この geography データ型メソッドは、半球より大きい FullGlobe インスタンスまたは空間インスタンスをサポートします。
Syntax
.MakeValid ()
戻り値の型
SQL Server 戻り値の型: geography
CLR の戻り値の型: SqlGeography
Remarks
このメソッドにより、geography インスタンスの型が変更されることがあります。 さらに、geography インスタンスの地点がわずかに移動することもあります。 いくつかのメソッド (NumPoint() など) の結果が変更されることがあります。
無効な空間インスタンスが赤道と交差し、EnvelopeAngle() = 180 である場合、FullGlobe インスタンスが返されます。
MakeValid()
geography データ型のメソッドは、有効なインスタンスを返すように試みますが、結果が正確であることは保証されません。
Note
無効なオブジェクトをデータベースに格納することができます。 無効なインスタンス (STIsValid() が False を返すインスタンス) で実行可能なメソッドは、有効性を確認するメソッドまたはエクスポートを許可するメソッドであり、それらは次のとおりです: STIsValid()、MakeValid()、STAsText()、STAsBinary()、ToString()、AsTextZM()、および AsGml()。
このメソッドは正確ではありません。
Examples
最初に、そのインスタンス自体が重なる、無効な 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))