Поделиться через


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

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

Синтаксис

                .BufferWithTolerance ( distance, tolerance, relative )

Аргумент

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

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

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

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

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

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

Возвращаемый тип SQL Server: geography

Возвращаемый тип CLR: SqlGeography

Замечания

Отрицательный буфер удаляет все точки в пределах заданного расстояния от границы экземпляра geography.

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

Примеры

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

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