Краткая информация
Создает буферные полигоны вокруг входных объектов для заданного расстояния.
Иллюстрация
Использование
Как описано в статье Как работает инструмент Буфер, важным параметром инструмента Буфер является Метод , который определяет, каким именно образом будут построены буферные зоны. Существует два основных метода построения: Евклидовы и геодезические буферные зоны.
- Евклидов буфер измеряет расстояния на двухмерной координатной плоскости, где расстояние между двумя точками на плоскости измеряется по прямой, то есть как евклидово расстояние. Евклидовы буферы являются наиболее распространенными и хорошо подходят для анализа расстояний вокруг объектов, хранящихся в системе координат проекции, которые сосредоточены на относительно небольшой территории (такой как одна зона UTM).
- Геодезические буферы строятся с учетом реальной формы поверхности земли (например, эллипсоид или еще более точную модель – геоид) Расстояния измеряются между двумя точками на сферической поверхности (геоида), что отличается от измерения того же расстояния на плоскости. Создание геодезических буферов предпочтительно в следующих случаях
- Входные объекты располагаются далеко друг от друга (в разных зонах UTM, разных регионах мира и т.п.)
- Пространственная привязка (проекция карты) входных объектов сильно искажает реальные расстояния, но сохраняет другие свойства, например, площадь.
Параметр Метод определяет, как будут строиться буферные зоны.
- Опция по умолчанию - Плоскостной (method = "PLANAR" в Python). Эта опцию автоматически определяет подходящий метод в зависимости от системы координат Входных объектов.
- Если входные объекты имеют систему координат проекции, будут построены Евклидовы буферы.
- Если входные данные буфера заданы в географической системе координат, и вы указали Буферное расстояние в линейных единицах (метрах, футах и т.д., в противоположность угловым единицам, таким как градусы), будет построен геодезический буфер.
- При выборе этой опции будет получен результат, который получился бы при работе инструмента Буфер в версиях до ArcGIS 10.3.
- Геодезический (method = "GEODESIC" в Python) создает геодезические буферные зоны на реальной поверхности Земли независимо от системы координат входных объектов. Такой тип буферных зон уплотняет входные объекты перед созданием выходных геодезических буферов, чтобы построенные геодезические буферы максимально соответствали форме входных данных. Если вы переживаете по поводу формы буферных зон и их соответствия форме входных объектов, рекомендуется включить эту опцию, особенно если входные данные в географической системе координат. В некоторых случаях использование опции Плоскостные может занять больше времени, чем построение геодезического буфера, а результатом будет буфер, более точно повторяющий форму входного объекта.
Чтобы повысить точность построения буферных зон Плоскостным методом, можно выбрать такую проекцию, которая сводит к минимуму искажения расстояний, например Равнопромежуточную коническую или Равнопромежуточную азимутальную, и которая с географической точки зрения подходит для входных данных.
При создании буферных полигонов вокруг объектов, использующих систему координат проекции, с выводом в класс объектов базы геоданных, полученные геометрические формы часто включают в себя сегменты дуг окружности, особенно при создании буферных полигонов вокруг точек. При перепроецировании таких буферов в другие системы координат расположение и размер исходных буферов изменяются, но их форма остается неизменной, и в итоге перепроецированные буферы неточно представляют территорию, которую охватывал исходный буфер. Если нужно перепроецировать буферы, содержащие дуги окружности, сначала воспользуйтесь инструментом Уплотнить для конвертации сегментов дуги окружности в прямые линии, а затем перепроецируйте буферы.
Выходной класс объектов будет включать в себя поле BUFF_DIST, содержащее буферное расстояние, использованное для построения буфера вокруг каждого пространственного объекта, в линейных единицах системы координат входных объектов. При использовании Геодезического метода построения буферных полигонов, буферное расстояние будет конвертировано в метры в любом случае.
Если поле BUFF_DIST уже существует во входных объектах, его значения будут перезаписаны. Если используется Тип слияния of Все или Список (ALL или LIST в Python), то в выходном классе объектов этого поля не будет.
Выходной класс объектов будет иметь поле ORIG_FID, содержащее ID входного объекта, для которого был создан буфер. Если поле ORIG_FID уже существует во входных объектах, его значения будут перезаписаны. Если используется Тип слияния Все или Список, выходной класс объектов не будет содержать это поле.
При создании буферных полигонов вокруг полигональных объектов, могут использоваться отрицательные буферные расстояния для создания буферов внутри полигональных объектов. При использовании отрицательного буферного расстояния границы полигона уменьшатся на заданное расстояние.
Если для получения буферных расстояний используется поле из Входных объектов, значения поля должны быть или числами (5), или числами в корректными линейными единицами измерения (5 километров). Если расстояние в поле задано простым числом, подразумевается, что это расстояние в линейных единицах измерения, соответствующих системе координат входных объектов (кроме случаев, когда входные объекты находятся в географической системе координат; в этом случае значение измеряется в meters). Если заданная в значениях поля единица измерения является некорректной или не распознается, по умолчанию будет использоваться единица измерения пространственной привязки входных объектов.
Кнопка Добавить поле (Add Field) параметра Поля слияния (Dissolve Field(s)) используется только в ModelBuilder. В ModelBuilder, если предыдущий инструмент не был запущен или не существует его производных данных, параметр Поля слияния (Dissolve Field(s)) может не быть заполнен именами полей. Кнопка Добавить поле позволяет добавить нужные поля в список Полей слияния для ввода данных в диалоговом окне инструмента Буфер.
Синтаксис
Buffer(in_features, out_feature_class, buffer_distance_or_field, {line_side}, {line_end_type}, {dissolve_option}, {dissolve_field}, {method})
Параметр | Объяснение | Тип данных |
in_features | Входные точечные, линейные или полигональные объекты, вокруг которых будет строится буфер. | Feature Layer |
out_feature_class | Класс пространственных объектов, содержащий выходные буферы. | Feature Class |
buffer_distance_or_field | Расстояние вокруг входных объектов, для которых будут построены буферные полигоны. Расстояния могут быть представлены либо значением линейного расстояния, либо полем входных объектов, содержащим расстояние для буферизации каждого объекта. Если линейные единицы не заданы или введены как Неизвестные, используются линейные единицы пространственной привязки входных объектов. При определении расстояния в скриптах, если нужная линейная единица обозначается двумя словами, например Decimal Degrees, объедините два слова в одно (например, 20 DecimalDegrees). | Linear Unit; Field |
line_side (Дополнительный) | Стороны входных объектов, для которых будут построены буферные полигоны.
| String |
line_end_type (Дополнительный) | Форма буферного полигона на конце линейных входных объектов. Этот параметр нельзя использовать для полигональных входных объектов.
| String |
dissolve_option (Дополнительный) | Определяет, будет ли выполнено слияние для удаления перекрытия буферов.
| String |
dissolve_field [dissolve_field,...] (Дополнительный) | Перечень полей из входных объектов, значение которых будет определять слияние выходных буферных полигонов. Буферные полигоны, имеющие общие атрибутивные значения в перечисленных полях (переносятся из входных объектов), будут объединены в один объект. | Field |
method (Дополнительный) | Определяет, каким методом будут построены буферные зоны: Плоскостные или геодезические.
| String |
Пример кода
Buffer Пример 1 (окно Python)
На следующем скрипте окна Python показано, как использовать инструмент Буфер.
import arcpy
arcpy.env.workspace = "C:/data"
arcpy.Buffer_analysis("roads", "C:/output/majorrdsBuffered", "100 Feet", "FULL", "ROUND", "LIST", "Distance")
Buffer Пример 2 (автономный скрипт)
Поиск областей с соответствующим типом растительности с исключением областей, расположенных вблизи от основных магистралей.
# Name: Buffer.py
# Description: Find areas of suitable vegetation which exclude areas heavily impacted by major roads
# import system modules
import arcpy
from arcpy import env
# Set environment settings
env.workspace = "C:/data/Habitat_Analysis.gdb"
# Select suitable vegetation patches from all vegetation
veg = "vegtype"
suitableVeg = "C:/output/Output.gdb/suitable_vegetation"
whereClause = "HABITAT = 1"
arcpy.Select_analysis(veg, suitableVeg, whereClause)
# Buffer areas of impact around major roads
roads = "majorrds"
roadsBuffer = "C:/output/Output.gdb/buffer_output"
distanceField = "Distance"
sideType = "FULL"
endType = "ROUND"
dissolveType = "LIST"
dissolveField = "Distance"
arcpy.Buffer_analysis(roads, roadsBuffer, distanceField, sideType, endType, dissolveType, dissolveField)
# Erase areas of impact around major roads from the suitable vegetation patches
eraseOutput = "C:/output/Output.gdb/suitable_vegetation_minus_roads"
xyTol = "1 Meters"
arcpy.Erase_analysis(suitableVeg, roadsBuffer, eraseOutput, xyTol)
Параметры среды
- Выходное Z-значение по умолчанию
- Разрешение M
- Допуск M
- Выходной M домен
- Выходной XY домен
- Выходной Z домен
- Выходная система координат
- Экстент
- Выходная пространственная сетка 1
- Выходная пространственная сетка 2
- Выходная пространственная сетка 3
- Текущая рабочая область
- Географические преобразования
- Временная рабочая область
- Выходные данные содержат M-значения
- Выходные данные содержат Z значения
- Разрешение XY
- Допуск XY
- Разрешение Z
- Допуск Z
Информация о лицензиях
- Basic: Ограничено
- Standard: Ограничено
- Advanced: Да