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


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

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

Синтаксис

.BufferWithTolerance ( distance, tolerance, relative )

Аргумент

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

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

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

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

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

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

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

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

Исключения

Параметр tolerance должен быть больше нуля. Если tolerance <= 0, то формируется исключение System.ArgumentOutOfRangeException.

ПримечаниеПримечание

Поскольку параметр tolerance имеет тип float, то может возникнуть исключение System.Runtime.InteropServices.COMException, если значение, заданное в качестве допуска, слишком мало, из-за особенностей округления типов с плавающей запятой.

Замечания

Если distance > 0, то возвращается экземпляр Polygon или MultiPolygon.

ПримечаниеПримечание

Поскольку аргумент distance относится к типу float, то в расчетах очень маленькое значение может быть приравнено к нулю. Когда это происходит, возвращается экземпляр geometry. См. раздел Типы данных float и real (Transact-SQL).

При distance = 0 возвращается копия вызывающего экземпляра geometry.

Если distance < 0, то

  • Возвращается пустой экземпляр GeometryCollection, если измерений экземпляра 0 или 1.

  • Возвращается отрицательный буфер, если измерений экземпляра 2 или более.

    ПримечаниеПримечание

    Отрицательный буфер может также создать пустой экземпляр GeometryCollection.

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

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

Примеры

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

DECLARE @g geometry;
SET @g = geometry::STGeomFromText('POINT(3 3)', 0);
SELECT @g.BufferWithTolerance(1, .5, 0).ToString();

См. также

Справочник

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

Другие ресурсы

Расширенные методы экземпляров Geometry