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)