Partilhar via


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)

Conceitos

Visão geral de tipos de dados espaciais