返回包含圆弧线段的 geometry 实例的多边形近似值。
语法
.STCurveToLine ( )
返回类型
SQL Server 返回类型:geometry
CLR 返回类型:SqlGeometry
注释
为空 geometry 实例变量返回空 GeometryCollection 实例,而为未初始化的 geometry 变量返回 NULL。
该方法返回的多边形近似值取决于用于调用该方法的 geometry 实例:
为 CircularString 或 CompoundCurve 实例返回 LineString 实例。
为 CurvePolygon 实例返回 Polygon 实例。
如果 geometry 实例不是 CircularString、CompoundCurve 或 CurvePolygon 实例,则返回该实例的副本。 例如,STCurveToLine 方法为属于 Point 实例的 geometry 实例返回 Point 实例。
与 SQL/MM 规范不同,STCurveToLine 方法不使用 z-coordinate 值来计算多边形近似值。 该方法忽略调用 geometry 实例中存在的任何 z-coordinate 值。
示例
A.使用未初始化的 Geometry 变量和空实例
在以下示例中,第一个 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];