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

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

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

Этот метод типа данных geography поддерживает экземпляры FullGlobe или пространственные экземпляры, размер которых больше полушария.

Синтаксис

  
.BufferWithTolerance ( distance, tolerance, relative )  

Примечание.

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

Аргументы

distance
Это выражение типа float задает расстояние от экземпляра geography, для которого вычисляется буфер.

Максимальное расстояние при вычислении буфера не может превышать 0,999 × π × minorAxis × minorAxis / majorAxis (примерно 0,999 от половины окружности Земли), то есть максимально возможное расстояние на поверхности Земли.

tolerance
Выражение типа float, задающее погрешность буферного расстояния.

Максимальное отклонение в идеальном буферном расстоянии для возвращенной линейной аппроксимации — это значение tolerance.

Например, идеальной границей буфера для точки является окружность, однако ее необходимо приблизительно изобразить многоугольником. Чем меньше погрешность, тем из большего количества точек будет состоять многоугольник. Это увеличивает сложность результата, но уменьшает его погрешность.

Минимальный предел составляет 0,1 % от расстояния, и любая меньшая погрешность будет округлена до этого значения.

relative
Значение типа bit, указывающее значение tolerance: относительное или абсолютное. Если значение равно "TRUE" или 1, погрешность является относительной. Это значение рассчитывается как произведение параметра tolerance и углового фактора, умноженное на экваториальный радиус эллипсоида. Погрешность является абсолютной, если значение равно "FALSE" или 0. Это значение tolerance является абсолютным максимальным отклонением в идеальном буферном расстоянии для возвращенной линейной аппроксимации.

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

Тип возвращаемого значения SQL Server: geography

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

Замечания

Этот метод выдает исключение ArgumentException, если distance не является числом (NAN) или если distance равно плюс/минус бесконечности. Этот метод также выдает исключение ArgumentException, если tolerance равно нулю (0), не является числом (NAN), отрицательное число или равно плюс/минус бесконечности.

STBuffer() возвращает экземпляр FullGlobe в определенных случаях; например, STBuffer() возвращает экземпляр FullGlobe для двух полюсов, если буферное расстояние больше, чем расстояние от экватора до полюса.

Этот метод вызовет исключение ArgumentException в тех экземплярах FullGlobe, где расстояние буфера превышает следующее ограничение:

0,999 * π * minorAxis * minorAxis / majorAxis (~0,999 * 1/2 окружности Земли)

Ошибка между теоретическим и вычисляемым буфером составляет max(tolerance, extents × 1.E-7), где tolerance определяется значением параметра tolerance. Дополнительные сведения об экстентах см. в разделе Справочник по методам типа данных geography.

Этот метод не является точным.

Примеры

В следующем примере создается экземпляр Point, а метод BufferWithTolerance() получает приблизительный буфер вокруг этого экземпляра.

DECLARE @g geography;  
SET @g = geography::STGeomFromText('POINT(-122.34900 47.65100)', 4326);  
SELECT @g.BufferWithTolerance(1, .5, 0).ToString();  

См. также

STBuffer (тип данных geography)
Расширенные методы в экземплярах Geography