Буфер (Buffer) (Анализ)
Резюме
Создает буферные полигоны вокруг входных объектов для заданного расстояния.
Более подробно о том, как работает инструмент Буфер (Buffer)
Рисунок
![]() |
Использование
-
При создании буферных полигонов для класса объектов, который использует систему координат проекции, и содержит объекты, покрывающие большой участок, или если используется очень большое буферное расстояние, искажения в проекции могут привести к созданию неточных буферов. Можно полностью избежать искажений при создании буферных полигонов при условии, что класс пространственных объектов имеет географическую систему координат, и Буферное расстояние (Buffer Distance) задано в линейных единицах (метрах, футах и т.д., в противоположность угловым единицам, таким как градусы). При использовании этой комбинации входных значений инструмент создает истинные геодезические буферы, которые точно показывают расстояния на поверхности Земли. Геодезические буферы могут иметь неадекватную форму на плоской карте, но на глобусе они будут отображаться правильно (вы можете использовать приложения ArcGlobe или ArcGIS Explorer, чтобы просмотреть географические данные на трехмерном глобусе). Более подробно см. Как работает инструмент Буфер (Buffer).
Примечание:
Вы можете изменить систему координат класса объектов, используя инструмент Проецировать (Project), или вы можете установить параметр среды геообработки Выходная система координат (Output Coordinate System) до использования инструмента Буфер (Buffer), и эта система координат будет использоваться при создании буферных полигонов.
Можно повысить точность создания буферных полигонов для проецируемых входных данных, используя проекцию, которая сводит к минимуму искажение расстояний, например Равнопромежуточную коническую (Equidistant Conic) или Азимутальную равнопромежуточную (Azimuthal Equidistant), и которая с географической точки зрения подходит к вашим входным данным.
При создании буферных полигонов вокруг объектов, использующих систему координат проекции, с выводом в класс объектов базы геоданных полученные геометрические формы часто включают в себя сегменты дуги окружности, особенно при создании буферных полигонов вокруг точек. В случае перепроецирования таких буферов с дугами окружности в другие системы координат расположение и размер исходных буферов изменяются, но их форма остается неизменной, и в итоге перепроецированные буферы неточно представляют территорию, которую охватывал исходный буфер. Если нужно перепроецировать буферы, содержащие дуги окружности, сначала воспользуйтесь инструментом Уплотнить (Densify) для конвертации сегментов дуги окружности в прямые линии, а затем перепроецируйте буферы.
-
Выходной класс объектов будет иметь поле с названием BUFF_DIST, содержащее буферное расстояние, используемое для построения буфера вокруг каждого пространственного объекта, в единицах измерения, соответствующих системе координат входных объектов. При использовании для Типа слияния (Dissolve Type) опции ALL или LIST выходной класс объектов не будет иметь этого поля.
-
При создании буферных полигонов вокруг полигональных объектов, могут использоваться отрицательные буферные расстояния для создания буферов внутри полигональных объектов. При использовании отрицательного буферного расстояния уменьшатся границы полигона на заданное расстояние.
Внимание:
Если отрицательное буферное расстояние достаточно большое, чтобы свернуть полигон, будет создана нулевая геометрия. Будет дано предупреждающее сообщение, и объекты с нулевой геометрией не будут записаны в выходной класс объектов.
-
Если для получения буферных расстояний используется поле атрибутивной таблицы Входные объекты (Input Features), значениями поля может быть число (5) или число с корректной линейной единицей измерения (5 километров). Если расстояние в поле задано простым числом, подразумевается, что это расстояние - в линейных единицах измерения, соответствующих системе координат входных объектов (кроме случаев, когда линейные объекты находятся не в географической системе координат; в этом случае значение измеряется в метрах). Если заданная в значениях поля единица измерения является некорректной или не распознается, по умолчанию будет использоваться единица измерения пространственной привязки входных объектов.
-
Кнопка Добавить поле (Add Field) параметра Поле(я) слияния (Dissolve Field(s)) используется только в ModelBuilder. В ModelBuilder, где предыдущий инструмент не был запущен или не существует его производных данных, параметр Поле(я) слияния (Dissolve Field(s)) может не быть заполнен именами полей. Кнопка Добавить поле (Add Field) позволяет, чтобы нужные поля были добавлен в список Поле(я) слияния (Dissolve Field(s)), чтобы закрыть диалоговое окно инструмента Буфер (Buffer).

Опции LEFT, RIGHT и OUTSIDE_ONLY для Типа стороны (Side Type) (line_side) и опция FLAT для Типа окончания (End Type) (line_end_type) доступны только с лицензией Advanced.
Синтаксис
Параметр | Объяснение | Тип данных |
in_features |
Входные точечные, линейные или полигональные объекты, вокруг которых будет строится буфер. | Feature Layer |
out_feature_class |
Класс пространственных объектов, содержащий выходные буферы. | Feature Class |
buffer_distance_or_field |
Расстояние вокруг входных объектов, для которых будут построены буферные полигоны. Расстояния могут как быть как значением линейного расстояния, так и полем входных объектов, которое содержит линейное расстояние для буферизации каждого объекта. Если линейные единицы не заданы или введены как Неизвестные (Unknown), используются линейные единицы пространственной привязки входных объектов. При определении расстояния в скриптах, если нужная линейная единица обозначается двумя словами, например Десятичные градусы (Decimal Degrees), объедините два слова в одно (например, "20 DecimalDegrees"). | Linear unit ;Field |
line_side (дополнительно) |
Сторона(ы) входных объектов, для которых будут построены буферные полигоны.
![]() Этот дополнительный параметр не доступен с лицензией Basic или Standard. | String |
line_end_type (дополнительно) |
Форма буферного полигона на конце линейных входных объектов. Этот параметр нельзя использовать для полигональных входных объектов.
![]() Этот дополнительный параметр не доступен с лицензией Basic или Standard. | String |
dissolve_option (дополнительно) |
Определяет, будет ли выполнено слияние для удаления всех перекрывающихся буферов.
| String |
dissolve_field [dissolve_field,...] (дополнительно) |
Перечень полей из входных объектов, значение которых будет определять слияние выходных буферных полигонов. Буферные полигоны, имеющие общие атрибутивные значения в перечисленных полях (переносятся из входных объектов) будут объединены в один объект. | Field |
Пример кода
На следующем скрипте окна Python показано, как использовать инструмент Буфер (Buffer).
import arcpy
arcpy.env.workspace = "C:/data"
arcpy.Buffer_analysis("roads", "C:/output/majorrdsBuffered", "100 Feet", "FULL", "ROUND", "LIST", "Distance")
Поиск областей, с соответствующим типом растительности, с исключением областей, расположенных вблизи от основных магистралей.
# 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)