STSymDifference (geometry データ型)

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceMicrosoft Fabric の SQL 分析エンドポイントMicrosoft Fabric のウェアハウス

任意の geometry インスタンスと別の geometry インスタンスのいずれかに存在する地点すべてを表すオブジェクトを返します。つまり、両方のインスタンスに存在する地点は除外されます。

構文

  
.STSymDifference ( other_geometry )  

Note

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

引数

other_geometry
STSymDifference() を呼び出したインスタンスの対象となる、別の geometry インスタンスです。

戻り値の型

SQL Server の戻り値の型: geometry

CLR 戻り値の型: SqlGeometry

注釈

geometry インスタンスの SRID (spatial reference ID) が一致しない場合、このメソッドは常に null を返します。 結果に円弧が含まれるのは、入力インスタンスに円弧が含まれる場合のみです。

A. 2 つの Polygon インスタンスの対称差を計算する

次の例では、STSymDifference() を使用して 2 つの Polygon インスタンスの対称差を計算します。

DECLARE @g geometry;  
DECLARE @h geometry;  
SET @g = geometry::STGeomFromText('POLYGON((0 0, 0 2, 2 2, 2 0, 0 0))', 0);  
SET @h = geometry::STGeomFromText('POLYGON((1 1, 3 1, 3 3, 1 3, 1 1))', 0);  
SELECT @g.STSymDifference(@h).ToString();  

B. CurvePolygon インスタンスと Polygon インスタンスの対称差を計算する

次の例は、GeometryCollectionCurvePolygon の間の対称差を表す Polygon を返します。

 DECLARE @g geometry = 'CURVEPOLYGON (CIRCULARSTRING (0 -4, 4 0, 0 4, -4 0, 0 -4))';  
 DECLARE @h geometry = 'POLYGON ((1 -1, 5 -1, 5 3, 1 3, 1 -1))';  
 SELECT @h.STSymDifference(@g).ToString();

C. Polygon インスタンスが内接する CurvePolygon インスタンスで STSymDifference() を使用する

次の例は、比較対象の 2 つのインスタンスの対称差を表す、内部 Polygon リングを含む CurvePolygon インスタンスを返します。

 DECLARE @g geometry = 'CURVEPOLYGON (CIRCULARSTRING (0 -4, 4 0, 0 4, -4 0, 0 -4))';  
 DECLARE @h geometry = 'POLYGON ((1 -1, 2 -1, 2 1, 1 1, 1 -1))';  
 SELECT @h.STSymDifference(@g).ToString();

参照

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