Поделиться через


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

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

Синтаксис

.STCurveN ( curve_index )

Аргументы

  • 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.

Примеры

А.Применение 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