Share via


STCurveToLine (geometry データ型)

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

円弧を含む geometry インスタンスの多角形近似を返します。

構文

  
.STCurveToLine ( )  

Note

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

戻り値の型

SQL Server の戻り値の型: geometry

CLR 戻り値の型: SqlGeometry

注釈

空の geometry インスタンス変数に空の GeometryCollection インスタンスを返し、初期化されていない geometry 変数に NULL を返します。

メソッドによって返される多角形近似は、メソッドの呼び出しに使用した geometry インスタンスによって変わります。

  • CircularString または CompoundCurve インスタンスに対して LineString インスタンスを返します。

  • CurvePolygon インスタンスに対して Polygon インスタンスを返します。

  • そのインスタンスが CircularStringCompoundCurveCurvePolygon インスタンスではない場合、geometry インスタンスのコピーを返します。 たとえば、Point インスタンスである geometry インスタンスに対しては、STCurveToLine メソッドは Point インスタンスを返します。

SQL/MM 仕様とは異なり、STCurveToLine メソッドでは、多角形近似の計算に z 座標の値が使用されません。 このメソッドでは、呼び出し元 geography インスタンスに存在する z 座標値は無視されます。

A. 初期化されていないジオメトリ変数と空のインスタンスを使用する

次の例では、最初の SELECT ステートメントで初期化されていない geometry インスタンスを使用して STCurveToLine メソッドを呼び出し、2 つ目の SELECT ステートメントで空の geometry インスタンスを使用します。 したがって、最初のステートメントには NULL が返され、2 つ目のステートメントには GeometryCollection コレクションが返されます。

 DECLARE @g geometry; 
 SET @g = @g.STCurveToLine(); 
 SELECT @g.STGeometryType(); 
 SET @g = geometry::Parse('LINESTRING EMPTY'); 
 SELECT @g.STGeometryType();

B. LineString インスタンスを使用する

次の例の SELECT ステートメントでは、LineString インスタンスを使用して STCurveToLine メソッドを呼び出します。 したがって、LineString インスタンスが返されます。

 DECLARE @g geometry; 
 SET @g = geometry::Parse('LINESTRING(1 3, 5 5, 4 3, 1 3)'); 
 SET @g = @g.STCurveToLine(); 
 SELECT @g.STGeometryType();

C. CircularString インスタンスを使用する

次の例の最初の SELECT ステートメントでは、CircularString インスタンスを使用して STCurveToLine メソッドを呼び出します。 したがって、LineString インスタンスが返されます。 この SELECT ステートメントでは、ほとんど同じ 2 つのインスタンスの長さの比較も行います。 さらに、2 つ目の SELECT ステートメントは、各インスタンスのポイントの数を返します。 CircularString インスタンスについては 5 個だけポイントが返され、LineString インスタンスについては 65 個のポイントが返されます。

 DECLARE @g1 geometry, @g2 geometry; 
 SET @g1 = geometry::Parse('CIRCULARSTRING(10 0, 0 10, -10 0, 0 -10, 10 0)'); 
 SET @g2 = @g1.STCurveToLine(); 
 SELECT @g1.STGeometryType() AS [G1 Type], @g2.STGeometryType() AS [G2 Type], @g1.STLength() AS [G1 Perimeter], @g2.STLength() AS [G2 Perimeter], @g2.ToString() AS [G2 Def]; 
 SELECT @g1.STNumPoints(), @g2.STNumPoints();

D. CurvePolygon インスタンスを使用する

次の例の SELECT ステートメントでは、CurvePolygon インスタンスを使用して STCurveToLine メソッドを呼び出します。 したがって、このメソッドでは Polygon インスタンスが返されます。

 DECLARE @g1 geometry, @g2 geometry; 
 SET @g1 = geometry::Parse('CURVEPOLYGON(CIRCULARSTRING(10 0, 0 10, -10 0, 0 -10, 10 0))'); 
 SET @g2 = @g1.STCurveToLine(); 
 SELECT @g1.STGeometryType() AS [G1 Type], @g2.STGeometryType() AS [G2 Type];

参照

空間データ型の概要
STLength (geometry データ型)
STNumPoints (geometry データ型)
STGeometryType (geometry データ型)