共用方式為


STCurveToLine (geometry 資料類型)

適用於:SQL Server Azure SQL 資料庫 Azure SQL 受控執行個體

傳回包含圓弧線段之 geometry 執行個體的多邊形近似值。

Syntax

  
.STCurveToLine ( )  

注意

若要檢視 SQL Server 2014 (12.x) 和更早版本的 Transact-SQL 語法,請參閱舊版文件

傳回型別

SQL Server 傳回類型:geometry

CLR 傳回類型:SqlGeometry

備註

針對空的 geometry 執行個體變數,會傳回空的GeometryCollection 執行個體,而針對未初始化的 geometry 變數,則會傳回 NULL

此方法所傳回的多邊形近似值取決於您用來呼叫方法的 geometry 執行個體:

  • 傳回 CircularStringCompoundCurve 執行個體的 LineString 執行個體。

  • 傳回 CurvePolygon 執行個體的 Polygon 執行個體。

  • 如果 geometry 執行個體不是 CircularStringCompoundCurve, 或 CurvePolygon 執行個體,便傳回其複本。 例如,STCurveToLine 方法會針對本身是 Point 執行個體的 geometry 執行個體,傳回 Point 執行個體。

與 SQL/MM 規格不同,STCurveToLine 方法並不使用 z 座標值來計算多邊形近似值。 此方法會忽略呼叫端 geometry 執行個體中已有的任何 z 座標值。

範例

A. 使用未初始化的幾何變數和空白執行個體

在下列範例中,第一個 SELECT 陳述式使用未初始化的 geometry 執行個體來呼叫 STCurveToLine 方法,第二個 SELECT 陳述式使用空的 geometry 執行個體。 因此,此方法會對第一個陳述式傳回 NULL,對第二個陳述式則傳回 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 陳述式也會比較兩個執行個體的長度,它們的長度大致相同。 最後,第二個 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 資料類型)