次の方法で共有


MakeValid (geography データ型)

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

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

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

構文

.MakeValid ()

戻り値の型

SQL Server の戻り値の型: geography

CLR の戻り値の型: SqlGeography

説明

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

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

注意

無効なオブジェクトをデータベースに格納することができます。 無効なインスタンス (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 インスタンスの拡張メソッド