Partilhar via


STCurveToLine (tipo de dados geometry)

Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure

Retorna uma aproximação poligonal de uma instância de geometry que contém segmentos de arco circulares.

Sintaxe

  
.STCurveToLine ( )  

Observação

Para exibir a sintaxe do Transact-SQL para o SQL Server 2014 (12.x) e versões anteriores, confira a Documentação das versões anteriores.

Tipos de retorno

Tipo de retorno do SQL Server: geometry

Tipo de retorno do CLR: SqlGeometry

Comentários

Retorna uma instância de GeometryCollection vazia para variáveis da instância de geometry vazia e retorna NULL para variáveis de 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 de CompoundCurve.

  • Retorna uma instância de Polygon para uma instância de CurvePolygon.

  • Retorna uma cópia da instância de geometry se essa instância não é uma instância de CircularString, CompoundCurve ou CurvePolygon. Por exemplo, o método STCurveToLine retorna uma instância de Point para uma instância de geometry que é uma instância de Point.

Ao contrário da especificação SQL/MM, o método STCurveToLine não usa valores da coordenada Z para calcular a aproximação poligonal. O método ignora os valores da coordenada Z presentes na instância de geometry de chamada.

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. Portanto, o método retorna NULL para a primeira instrução e uma coleção GeometryCollection para a segunda.

 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. Portanto, 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. Portanto, o método retorna uma instância de LineString. Esta instrução SELECT também compara os tamanhos 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 apenas 5 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. Portanto, 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

Visão geral de tipos de dados espaciais
STLength (tipo de dados geometry)
STNumPoints (tipo de dados geometry)
STGeometryType (tipo de dados geometry)