Буфер (Анализ)
Краткая информация
Создает буферные полигоны вокруг входных объектов для заданного расстояния.
Рисунок
Использование
-
При создании буферных полигонов для класса объектов, который использует систему координат проекции, и содержит объекты, покрывающие большой участок, или если используется очень большое буферное расстояние, искажения в проекции могут привести к созданию неточных буферов. Можно полностью избежать искажений при создании буферных полигонов при условии, что класс пространственных объектов имеет географическую систему координат, и Буферное расстояние задано в линейных единицах (метрах, футах и т.д., в противоположность угловым единицам, таким как градусы). При использовании этой комбинации входных значений инструмент создает истинные геодезические буферы, которые точно показывают расстояния на поверхности Земли. Геодезические буферы могут иметь необычную форму на плоской карте, но на глобусе они будут отображаться правильно (вы можете использовать приложения ArcGlobe или ArcGIS Explorer, чтобы просмотреть географические данные на трехмерном глобусе). Для получения более подробной информации см. Как работает инструмент Буфер.
Примечание:Вы можете изменить систему координат класса объектов, используя инструмент Проецировать (Project), или вы можете установить параметр среды геообработки Выходная система координат до использования инструмента Буфер (Buffer), и эта система координат будет использоваться при создании буферных полигонов.
Можно повысить точность создания буферных полигонов для проецируемых входных данных, используя проекцию, которая сводит к минимуму искажение расстояний, например Равнопромежуточную коническую или Азимутальную равнопромежуточную, и которая с географической точки зрения подходит вашим входным данным.
При создании буферных полигонов вокруг объектов, использующих систему координат проекции, с выводом в класс объектов базы геоданных, полученные геометрические формы часто включают в себя сегменты дуг окружности, особенно при создании буферных полигонов вокруг точек. При перепроецировании таких буферов, содержащих дуги окружности, в другие системы координат расположение и размер исходных буферов изменяются, но их форма остается неизменной, и в итоге перепроецированные буферы неточно представляют территорию, которую охватывал исходный буфер. Если нужно перепроецировать буферы, содержащие дуги окружности, сначала воспользуйтесь инструментом Уплотнить (Densify) для конвертации сегментов дуги окружности в прямые линии, а затем перепроецируйте буферы.
-
Выходной класс объектов будет иметь поле BUFF_DIST, содержащее буферное расстояние, использованное для построения буфера вокруг каждого пространственного объекта, в линейных единицах системы координат входных объектов. Если поле BUFF_DIST уже существует во входных объектах, его значения будут перезаписаны. При использовании для Типа слияния (Dissolve Type) опции ALL или LIST выходной класс объектов не будет содержать этого поля.
Выходной класс объектов будет иметь поле ORIG_FID, содержащее FID входного объекта, для которого был создан буфер. Если поле ORIG_FID уже существует во входных объектах, его значения будут перезаписаны. При использовании для Типа слияния (Dissolve Type) опции ALL или LIST выходной класс объектов не будет содержать этого поля.
-
При создании буферных полигонов вокруг полигональных объектов, могут использоваться отрицательные буферные расстояния для создания буферов внутри полигональных объектов. При использовании отрицательного буферного расстояния границы полигона уменьшатся на заданное расстояние.
Внимание:Если отрицательное буферное расстояние достаточно большое, чтобы свернуть полигон, будет создана нулевая геометрия. Будет выведено предупреждающее сообщение, и объекты с нулевой геометрией не будут записаны в выходной класс объектов.
-
Если для получения буферных расстояний используется поле атрибутивной входных объектов, значениями поля может быть число (5) или число с корректной линейной единицей измерения (5 километров). Если расстояние в поле задано простым числом, подразумевается, что это расстояние – в линейных единицах измерения, соответствующих системе координат входных объектов (кроме случаев, когда входные объекты находятся в географической системе координат; в этом случае значение измеряется в метрах). Если заданная в значениях поля единица измерения является некорректной или не распознается, по умолчанию будет использоваться единица измерения пространственной привязки входных объектов.
-
Кнопка Добавить поле (Add Field) параметра Поля слияния (Dissolve Field(s)) используется только в ModelBuilder. В ModelBuilder, где предыдущий инструмент не был запущен или не существует его производных данных, параметр Поля слияния (Dissolve Field(s)) может не быть заполнен именами полей. Кнопка Добавить поле (Add Field) позволяет добавить нужные поля в список Поля слияния (Dissolve Field(s)) для ввода данных в диалоговом окне инструмента Буфер.
Поле ORIG_FID добавляется в выходной класс объектов, когда типом слияния является NONE. В поле ORIG_FID выходного объекта указывается ObjectID соответствующего входного объекта.
Опции Типа стороны (Side Type) (line_side) LEFT, RIGHT и OUTSIDE_ONLY и опция Типа окончания (End Type) (line_end_type) FLAT доступны только на уровне лицензии 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 показано, как использовать инструмент Буфер.
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)