Partilhar via


STCurveToLine (tipo de dados de geometria)

Aplica-se a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceBase de dados SQL no Microsoft Fabric

Retorna uma aproximação poligonal de uma ocorrência de geometria que contém segmentos de arco circulares.

Syntax

  
.STCurveToLine ( )  

Tipos de devolução

Tipo de retorno do SQL Server: geometria

Tipo de retorno CLR: SqlGeometry

Remarks

Retorna uma instância GeometryCollection vazia para variáveis de instância de geometria vazia e retorna NULL para variáveis de geometria não inicializadas.

A aproximação poligonal que o método retorna depende da instância de geometria que você usa para chamar o método:

  • Retorna uma ocorrência de LineString para uma ocorrência de CircularString ou CompoundCurve .

  • Retorna uma ocorrência de Polygon para uma ocorrência de CurvePolygon .

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

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

Examples

A. Usando uma variável de geometria não inicializada e uma instância vazia

No exemplo a seguir, a primeira instrução SELECT usa uma instância de geometria não inicializada para chamar o STCurveToLine método e a segunda instrução SELECT usa uma ocorrência de geometria vazia. Assim, o método retorna NULL para a primeira instrução e uma coleção GeometryCollection para a segunda instrução.

 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 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 ocorrência de CircularString

A primeira instrução SELECT no exemplo a seguir usa uma instância CircularString para chamar o STCurveToLine método. 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. Ele retorna apenas 5 pontos para a ocorrência de CircularString , mas 65 pontos para a ocorrê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 do CurvePolygon

A instrução SELECT no exemplo a seguir usa uma instância CurvePolygon para chamar o STCurveToLine método. Assim, o método retorna uma instância 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];

Ver também

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