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

Применимо к:SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure

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

Синтаксис

  
.CurveToLineWithTolerance ( tolerance, relative )  

Примечание.

Сведения о синтаксисе Transact-SQL для SQL Server 2014 (12.x) и более ранних версиях см . в документации по предыдущим версиям.

Аргументы

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

B. Использование метода в экземпляре 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();

C. Использование метода в экземпляре 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();

D. Установка параметра 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)