CurveToLineWithTolerance (тип данных geography)
Область применения: SQL Server
База данных SQL Azure
Управляемый экземпляр SQL Azure
базе данных SQL в Microsoft Fabric
Возвращает приближение из многоугольников для экземпляра geography, содержащего сегменты дуги.
Синтаксис
.CurveToLineWithTolerance( tolerance, relative )
Аргументы
tolerance
Выражение типа double, которое определяет максимальную ошибку между исходным сегментом дуги и его линейной аппроксимацией.
relative
Представляет собой выражение типа bool, указывающее, следует ли использовать относительный максимум для отклонения. Если относительный параметр принимает значение false (0), для абсолютного максимума устанавливается значение, равное возможному отклонению линейной аппроксимации. Если относительный параметр принимает значение true, то вычисляется погрешность, равная произведению параметра tolerance на диаметр ограничивающего прямоугольника для пространственного объекта.
Типы возвращаемых данных
Тип возвращаемого значения SQL Server: geography
Тип возвращаемых данных CLR: SqlGeography
Исключения
Если установить погрешность <= 0, возникнет исключение ArgumentOutOfRange.
Замечания
Этот метод позволяет указывать допустимое количество ошибок для результирующего объекта LineString.
Метод CurveToLineWithTolerance вернет экземпляр LineString для экземпляра CircularString или CompoundCurve и экземпляр Polygon для экземпляра CurvePolygon.
Примеры
А. Использование различных значений погрешности в экземпляре CircularString
В следующем примере показано, каким образом задание погрешности влияет на экземпляр LineString
, возвращаемый из экземпляра CircularString
:
DECLARE @g geography;
SET @g = geography::Parse('CIRCULARSTRING(-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653)');
SELECT @g.CurveToLineWithTolerance(0.1,0).STNumPoints(), @g.CurveToLineWithTolerance(0.01, 0).STNumPoints();
B. Использование метода в экземпляре MultiLineString, содержащем один элемент LineString
Следующий пример показывает, что возвращается из экземпляра MultiLineString
, который содержит только один экземпляр LineString
:
DECLARE @g geography;
SET @g = geography::Parse('MULTILINESTRING((-122.358 47.653, -122.348 47.649))');
SELECT @g.CurveToLineWithTolerance(0.1,0).ToString();
В. Использование метода в экземпляре MultiLineString, содержащем несколько элементов LineString
Следующий пример показывает, что возвращается из экземпляра MultiLineString
, который содержит более одного экземпляра LineString
:
DECLARE @g geography;
SET @g = geography::Parse('MULTILINESTRING((-122.358 47.653, -122.348 47.649),(-123.358 47.653, -123.348 47.649))');
SELECT @g.CurveToLineWithTolerance(0.1,0).ToString();
D. Установка параметра relative в значение true для вызова экземпляра CurvePolygon
В следующем примере используется экземпляр CurvePolygon
для вызова CurveToLineWithTolerance()
с параметром relative, имеющим значение true:
DECLARE @g geography = 'CURVEPOLYGON(COMPOUNDCURVE(CIRCULARSTRING(-122.358 47.653, -122.348 47.649, -122.348 47.658), (-122.348 47.658, -122.358 47.658, -122.358 47.653)))';
SELECT @g.CurveToLineWithTolerance(.5,1).ToString();