STCurveN (тип данных geometry)

Область применения: yesSQL Server (все поддерживаемые версии) YesБаза данных SQL Azure YesУправляемый экземпляр SQL Azure

Возвращает кривую, указанную в экземпляре geometry типа LineString, CircularString, CompoundCurve или MultiLineString.

Синтаксис

  
.STCurveN ( curve_index )  

Примечание

Ссылки на описание синтаксиса Transact-SQL для SQL Server 2014 и более ранних версий, см. в статье Документация по предыдущим версиям.

Аргументы

curve_index
Выражение типа int от 1 до количества кривых в экземпляре geometry.

Типы возвращаемых данных

Тип возвращаемых данных SQL Server: geometry

Тип возвращаемых данных CLR: SqlGeometry

Исключения

Если curve_index < 1, вызывается исключение ArgumentOutOfRangeException.

Комментарии

Значение NULL возвращается при выполнении любого из указанных ниже условий.

  • Экземпляр geometry объявлен, но не создан.

  • Экземпляр geometry является пустым.

  • curve_index превышает число кривых в экземпляре geometry.

  • Экземпляр geometry относится к типу Point, MultiPoint, Polygon, CurvePolygon или MultiPolygon.

Примеры

A. Применение STCurveN() к экземпляру CircularString

Следующий пример возвращает вторую кривую в экземпляре 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();

Приведенный ранее в этом разделе пример возвращает:

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

Б. Применение STCurveN() к экземпляру CompoundCurve с одним экземпляром CircularString

Следующий пример возвращает вторую кривую в экземпляре 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();

Приведенный ранее в этом разделе пример возвращает:

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

В. Применение STCurveN() к экземпляру CompoundCurve с тремя экземплярами CircularString

Следующий пример использует экземпляр CompoundCurve, который сочетает три отдельных экземпляра CircularString в одной последовательности кривых, как в предыдущем примере:

 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();

Приведенный ранее в этом разделе пример возвращает:

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

Обратите внимание, что результаты во всех трех предыдущих примерах совпадают. Какой бы формат WKT (Well-known Text) ни использовался для ввода одной и той же последовательности кривой, результаты, возвращаемые STCurveN() при использовании экземпляра CompoundCurve, будут совпадать.

Г. Проверка параметра перед вызовом STCurveN()

В приведенном ниже примере показано, как проверить допустимость @n перед вызовом метода 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

См. также

STNumCurves (тип данных geometry)
Методы OGC в экземплярах Geometry