STCurveToLine (tipo de dados geometry)
Retorna uma aproximação poligonal de uma instância de geometry que contém segmentos de arco circulares.
Sintaxe
.STCurveToLine ( )
Tipos de retorno
SQL Server tipo de retorno: geometry
Tipo de retorno CLR: SqlGeometry
Comentários
Retorna uma instância de GeometryCollection vazia para variáveis de instância de geometry vazias e retorna NULL para variáveis geometry não inicializadas.
A aproximação poligonal que o método retorna depende da instância de geometry que você usa para chamar o método:
Retorna uma instância de LineString para uma instância de CircularString ou CompoundCurve.
Retorna uma instância de Polygon para uma instância de CurvePolygon.
Retorna um cópia da instância de geometry se esta não for CircularString, CompoundCurve, nem CurvePolygon. Por exemplo, o método STCurveToLine retornará uma instância de Point para uma instância de geometry que será uma instância de Point.
Ao contrário da especificação SQL/MM, o método STCurveToLine não usa valores de z-coordinate para calcular a aproximação poligonal. O método ignora qualquer valor de z-coordinate presente na chamada da instância de geometry.
Exemplos
A.Usando uma variável de geometria não inicializada e instância vazia
No exemplo a seguir, a primeira instrução SELECT usa uma instância de geometry não inicializada para chamar o método STCurveToLine e a segunda instrução SELECT usa uma instância de geometry vazia. Assim, o método retorna NULL à primeira instrução e uma coleção de GeometryCollection.
DECLARE @g geometry;
SET @g = @g.STCurveToLine();
SELECT @g.STGeometryType();
SET @g = geometry::Parse('LINESTRING EMPTY');
SELECT @g.STGeometryType();
B.Usando uma instância de LineString
A instrução SELECT no exemplo a seguir usa uma instância de LineString para chamar o método STCurveToLine. Assim, o método retorna uma instância de 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.Usando uma instância de CircularString
A primeira instrução SELECT no exemplo a seguir usa uma instância de CircularString para chamar o método STCurveToLine. Assim, o método retorna uma instância de LineString. Esta instrução SELECT também compara os comprimentos das duas instâncias que são aproximadamente os mesmos. Finalmente, a segunda instrução SELECT retorna o número de pontos para cada instância. Retorna só cinco pontos para a instância de CircularString, mas 65 pontos para a instância de LineString.
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.Usando uma instância de CurvePolygon
A instrução SELECT no exemplo a seguir usa uma instância de CurvePolygon para chamar o método STCurveToLine. Assim, o método retorna uma instância de 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];
Consulte também
Referência
STLength (tipo de dados geometry)
STNumPoints (tipo de dados geometry)
STGeometryType (tipo de dados geometry)