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


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

Возвращает приближение из многоугольников для экземпляра geometry, содержащего сегменты дуги.

Синтаксис

.CurveToLineWithTolerance ( tolerance, relative )

Аргументы

  • tolerance
    Выражение типа double, которое определяет максимальную ошибку между исходным сегментом дуги и его линейной аппроксимацией.

  • relative
    Представляет собой выражение bool, указывающее, следует ли использовать относительный максимум для отклонения. Когда для относительного параметра задается значение false (0), для абсолютного максимума устанавливается значение, равное возможному отклонению линейной аппроксимации. Если для относительного параметра задано значение true, то вычисляется погрешность, равная произведению параметра tolerance на диаметр ограничивающего прямоугольника для пространственного объекта.

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

Возвращаемый тип SQL Server: geometry

Возвращаемый тип CLR: SqlGeometry

Исключения

При задании tolerance <= 0 возникает исключение ArgumentOutOfRange.

Замечания

В этом методе можно указывать допустимое количество ошибок для результирующего объекта LineString.

В следующей таблице показан тип экземпляра, который возвращается методом CurveToLineWithTolerance() для различных типов.

Тип вызывающего экземпляра

Возвращенный пространственный тип

Пустой экземпляр геометрического объекта

Пустой экземпляр GeometryCollection

Point и MultiPoint

Экземпляр Point

MultiPoint

Экземпляр Point или MultiPoint

CircularString, CompoundCurve или LineString

Экземпляр LineString

MultiLineString

Экземпляр LineString или MultiLineString

CurvePolygon и Polygon

Экземпляр Polygon

MultiPolygon

Экземпляр Polygon или MultiPolygon

GeometryCollection с одним экземпляром, который не содержит сегмент дуги

Экземпляр, который находится в коллекции GeometryCollection, определяет тип возвращаемого экземпляра.

GeometryCollection с одним экземпляром одномерного сегмента дуги (CircularString, CompoundCurve)

Экземпляр LineString

GeometryCollection с одним экземпляром двухмерного сегмента дуги (CurvePolygon)

Экземпляр Polygon

GeometryCollection с несколькими одномерными экземплярами

Экземпляр MultiLineString

GeometryCollection с несколькими двухмерными экземплярами

Экземпляр MultiPolygon

GeometryCollection с несколькими экземплярами разных размерностей

Экземпляр GeometryCollection

Примеры

А.Использование различных значений погрешности в экземпляре CircularString

Следующий пример показывает, каким образом задание погрешности влияет на экземпляр LineString , возвращаемый из экземпляра CircularString:

DECLARE @g geometry;

SET @g = geometry::Parse('CIRCULARSTRING(0 0, 1 2.1082, 3 6.3246, 0 7, -3 6.3246, -1 2.1082, 0 0)');

SELECT @g.CurveToLineWithTolerance(0.1,0).STNumPoints(), @g.CurveToLineWithTolerance(0.01, 0).STNumPoints();

Б.Использование метода в экземпляре MultiLineString, содержащем один элемент LineString

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

DECLARE @g geometry;

SET @g = geometry::Parse('MULTILINESTRING((1 3, 4 8, 6 9))');

SELECT @g.CurveToLineWithTolerance(0.1,0).ToString();

В.Использование метода в экземпляре MultiLineString, содержащем несколько элементов LineString

Следующий пример показывает, что возвращается из экземпляра MultiLineString, который содержит более одного экземпляра LineString:

DECLARE @g geometry;

SET @g = geometry::Parse('MULTILINESTRING((1 3, 4 8, 6 9),(4 4, 9 18))');

SELECT @g.CurveToLineWithTolerance(0.1,0).ToString();

Г.Установка параметра relative в значение true для вызова экземпляра CurvePolygon

В следующем примере используется экземпляр CurvePolygon для вызова CurveToLineWithTolerance() с параметром relative, имеющим значение true:

DECLARE @g geometry = 'CURVEPOLYGON(COMPOUNDCURVE(CIRCULARSTRING(0 4, 4 0, 8 4), (8 4, 0 4)))';

SELECT @g.CurveToLineWithTolerance(.5,1).ToString();

Д.Использование метода с экземпляром GeometryCollection

В следующем примере метод CurveToLineWithTolerance() вызывается для коллекции GeometryCollection, которая содержит двухмерный экземпляр CurvePolygon и одномерный экземпляр CircularString. Метод CurveToLineWithTolerance() преобразует оба типа сегментов дуги в типы линейных сегментов и возвращает их в виде типа GeometryCollection.

DECLARE @g geometry;

SET @g = geometry::Parse('GEOMETRYCOLLECTION(CURVEPOLYGON( COMPOUNDCURVE(CIRCULARSTRING(0 2, 2 0, 4 2), (4 2, 0 2))), CIRCULARSTRING(4 4, 8 6, 9 5))');

SELECT @g.CurveToLineWithTolerance(0.1,0).STNumPoints(), @g.CurveToLineWithTolerance(0.1, 0).ToString();

См. также

Справочник

CurveToLineWithTolerance (тип данных geography)

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