STDifference (geography データ型)

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

別の geography インスタンスの外部にある任意の geography インスタンスの地点のセットを表すオブジェクトを返します。

構文

  
.STDifference ( other_geography )  

Note

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

引数

other_geography
STDifference() を呼び出したインスタンスからどの地点を削除するかを示す、別の geography インスタンスです。

戻り値の型

SQL Server 戻り値の型: geography

CLR の戻り値の型: SqlGeography

例外

このメソッドは、このインスタンスに対蹠点が含まれている場合、ArgumentException をスローします。

解説

geography インスタンスの SRID (spatial reference ID) が一致しない場合、このメソッドは常に null を返します。

SQL Server では、サーバー上で返される結果セットが FullGlobe インスタンスに拡張されています。 SQL Server では、半球より大きい空間インスタンスをサポートしています。 結果に円弧が含まれるのは、入力インスタンスに円弧が含まれる場合のみです。 このメソッドは正確ではありません。

A. 2 つの geography インスタンス間の差異を計算する

STDifference() を使用して 2 つの geography インスタンスの差分を計算する例を次に示します。

DECLARE @g geography;  
DECLARE @h geography;  
SET @g = geography::STGeomFromText('POLYGON((-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653))', 4326);  
SET @h = geography::STGeomFromText('LINESTRING(-122.360 47.656, -122.343 47.656)', 4326);  
SELECT @g.STDifference(@h).ToString();  

B. STDifference() と共に FullGlobe を使用する

FullGlobe インスタンスを使用する例を次に示します。 最初の結果は空の GeometryCollection で、2 番目の結果は Polygon インスタンスです。 STDifference() は、GeometryCollection インスタンスがパラメーターのときに空の FullGlobe を返します。 呼び出し元の geography インスタンスのすべての点が、FullGlobe インスタンスに含まれています。

 DECLARE @g geography = 'POLYGON((-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653))';  
 DECLARE @h geography = 'FULLGLOBE';  
 SELECT @g.STDifference(@h).ToString(),  
 @h.STDifference(@g).ToString();

参照

Geography インスタンスの OGC メソッド