BufferWithTolerance (тип данных geography)
Возвращает геометрический объект, представляющий объединение всех точек, расстояние от которых до заданного экземпляра geography не превышает заданного значения с указанной погрешностью.
Этот метод типа данных geography поддерживает экземпляры FullGlobe или пространственные экземпляры, размер которых больше полушария.
Синтаксис
.BufferWithTolerance ( distance, tolerance, relative )
Аргументы
distance
Это выражение типа float задает расстояние от экземпляра geography, для которого вычисляется буфер.Максимальное расстояние при вычислении буфера не может превышать 0,999 * π * minorAxis * minorAxis / majorAxis (~0,999 * 1/2 окружности Земли) или полную окружность Земли.
tolerance
Выражение типа float, задающее погрешность буферного расстояния.Значение отклонения относится к максимальному отклонению в идеальном буферном расстоянии для возвращенной линейной аппроксимации.
Например, идеальной границей буфера для точки является окружность, однако ее необходимо приблизительно изобразить многоугольником. Чем меньше заданная погрешность, тем из большего числа точек должен состоять многоугольник. Это увеличивает сложность результата, но уменьшает его погрешность.
Минимальный предел составляет 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. Дополнительные сведения о параметре extents см. в разделе Справочник по методам типа данных 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)