BufferWithTolerance (тип данных geography)
Область применения: SQL Server
База данных SQL Azure
Управляемый экземпляр SQL Azure
базе данных SQL в Microsoft Fabric
Возвращает геометрический объект, представляющий объединение всех точек, расстояние от которых до заданного экземпляра geography не превышает заданного значения с указанной погрешностью.
Этот метод типа данных geography поддерживает экземпляры FullGlobe или пространственные экземпляры, размер которых больше полушария.
Синтаксис
.BufferWithTolerance ( distance, tolerance, relative )
Аргументы
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