Partilhar via


STCurveN (Tipo de Dados de geometria)

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

Retorna a curva especificada de uma instância de geometry que é uma LineString, uma CircularString, uma CompoundCurve ou uma MultiLineString.

Sintaxe

  
.STCurveN ( curve_index )  

Argumentos

curve_index
É uma expressão int entre 1 e o número de curvas na instância de geometry.

Tipos de retorno

Tipo de retorno do SQL Server: geometry

Tipo de retorno do CLR: SqlGeometry

Exceções

Se curve_index< 1, uma ArgumentOutOfRangeException será gerada.

Comentários

NULL é retornado quando ocorre uma das seguintes opções:

  • a instância de geometry é declarada, mas não é criada uma instância dela

  • a instância de geometry está vazia

  • curve_index excede o número de curvas na instância de geometry

  • a instância de geometry é um Point, um MultiPoint, um Pplygon, um CurvePolygon ou um MultiPolygon

Exemplos

a. Usando STCurveN() em uma instância de CircularString

O exemplo a seguir retorna a segunda curva em uma instância de CircularString:

 DECLARE @g geometry = 'CIRCULARSTRING(0 0, 1 2.1082, 3 6.3246, 0 7, -3 6.3246, -1 2.1082, 0 0)';  
 SELECT @g.STCurveN(2).ToString();

O exemplo anterior neste tópico retorna:

CIRCULARSTRING (3 6.3246, 0 7, -3 6.3246)

B. Usando STCurveN() em uma instância de CompoundCurve com uma instância de CircularString

O exemplo a seguir retorna a segunda curva em uma instância de CompoundCurve:

 DECLARE @g geometry = 'COMPOUNDCURVE(CIRCULARSTRING(0 0, 1 2.1082, 3 6.3246, 0 7, -3 6.3246, -1 2.1082, 0 0))';  
 SELECT @g.STCurveN(2).ToString();

O exemplo anterior neste tópico retorna:

CIRCULARSTRING (3 6.3246, 0 7, -3 6.3246)

C. Usando STCurveN() em uma instância de CompoundCurve com três instâncias de CircularString

O exemplo seguinte usa uma instância de CompoundCurve que combina três instâncias de CircularString separadas na mesma sequência de curva como o exemplo anterior:

 DECLARE @g geometry = 'COMPOUNDCURVE (CIRCULARSTRING (0 0, 1 2.1082, 3 6.3246), CIRCULARSTRING(3 6.3246, 0 7, -3 6.3246), CIRCULARSTRING(-3 6.3246, -1 2.1082, 0 0))';  
 SELECT @g.STCurveN(2).ToString();

O exemplo anterior neste tópico retorna:

CIRCULARSTRING (3 6.3246, 0 7, -3 6.3246)

Note que os resultados são os mesmos para os três exemplos anteriores. Qualquer que seja o formato WKT (Well-known Text) usado para inserir a mesma sequência de curva, os resultados retornados por STCurveN() serão os mesmos quando uma instância de CompoundCurve for usada.

D. Validando o parâmetro antes de chamar STCurveN()

O exemplo a seguir mostra como verificar se @n é válido antes de chamar o método STCurveN():

 DECLARE @g geometry;  
 DECLARE @n int;  
 SET @n = 3;  
 SET @g = geometry::Parse('CIRCULARSTRING(0 0, 1 2.1082, 3 6.3246, 0 7, -3 6.3246, -1 2.1082, 0 0)');  
 IF @n >= 1 AND @n <= @g.STNumCurves()  
 BEGIN  
 SELECT @g.STCurveN(@n).ToString();  
 END

Consulte Também

STNumCurves (tipo de dados geometry)
Métodos OGC em instâncias geometry