STCurveToLine (tipo de dados de geometria)

Aplica-se a:SQL ServerBase de Dados SQL do AzureAzure 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];