Агрегировать полигоны (Aggregate Polygons) (Картография)
Краткая информация
Объединяет полигоны, находящиеся в пределах указанного расстояния друг от друга, в новые полигоны.
Рисунок
Использование
-
Инструмент используется при уменьшении масштаба представления данных, в том случае, когда входные объекты не могут далее отображаться индивидуально в связи с ограничением места на карте или требуемым разрешением данных. Агрегация имеет место только в случае, когда границы двух полигонов проходят в пределах установленного расстояния агрегации. Самоагрегации при этом не происходит, т.е. не осуществляется агрегация внутри входного полигона вдоль его границы, точно так же как не происходит агрегации в отношении частей полигонального объекта, состоящего из нескольких частей (multipart polygon feature).
Чтобы сохранить ортогональную форму выходных объектов, необходимо включить соответствующую опцию. Эта опция используется, если большая часть объектов входного класса прямоугольной формы. В ряде случаев, необходимость поддерживать прямоугольную форму выходных объектов может привести к ограничению агрегации. Например, два квадратных здания, расположенных по диагонали друг от друга в пределах расстояния агрегации, могут не объединиться, так как при агрегации невозможно будет сохранить ортогональную форму. Если не использовать опцию сохранения ортогональной формы, выходные полигоны будут иметь более сглаженную форму.
Используйте барьерные объекты, для того чтобы предотвратить осуществление агрегации через границы. Примеры показывают, как предотвратить агрегацию полигонов землепользования, находящихся на разных берегах реки, а также агрегацию зданий, которые располагаются на разных сторонах дороги. Следующие шаги могут быть использованы для создания точечных объектов, либо вершин линейных и полигональных объектов:
Если входной класс пространственных объектов ссылается на представление и существуют замещения формы каких-либо входных объектов, то во время агрегации будут оцениваться именно эти замещения, а не геометрия объектов.
-
Выходной класс объектов не содержит каких-либо атрибутов исходных объектов. Может быть дополнительно создана таблица со связью типа "один-ко-многим", которая связывает агрегированные полигоны с исходными. Эта связь может стать некорректной в случае изменения какого-либо из входных или выходных объектов.
-
Если входные объекты содержат значения Z, эти значения могут быть сохранены, если это указано в параметрах среды. Если положение вершин выходного объекта не изменилось по сравнению с входным, входные значения Z переносятся на соответствующие вершины выходного объекта, в противном случае значения Z будут заново вычислены для новых вершин либо проинтерполированы из исходных значений.
Обработка большого набора входных данных может вызвать превышение ограничений использования оперативной памяти. В таком случае попытайтесь разделить входные данные на части, определив соответствующий полигональный класс пространственных объектов с помощью параметра среды +++Картографические части (Cartographic Partitions. Части данных, разделенные между собой границами, будут последовательно обрабатываться отдельно друг от друга. Получившийся выходной класс объектов содержит разбитые линиями границ пересекающие такие линии объекты. В этом случае поле с названием BLD_STATUS будет иметь значение, равное 1.
Синтаксис
Параметр | Объяснение | Тип данных |
in_features |
Полигональные объекты, которые будут агрегироваться. Если входной класс пространственных объектов ссылается на представление и существуют замещения формы каких-либо входных объектов, то во время агрегации будут оцениваться именно эти замещения, а не геометрия объектов. | Feature Layer |
out_feature_class |
Выходной класс пространственных объектов, который будет создан. | Feature Class |
aggregation_distance |
Расстояние между границами полигонов, в пределах которого будет осуществляться агрегация. Должно быть указано расстояние, большее нуля. Вы можете выбрать предпочитаемые единицы измерения; единицами измерения по умолчанию являются единицы измерения объекта. | Linear unit |
minimum_area (дополнительно) |
Минимальная площадь полигинов, получаемых агрегацией. Значение по умолчанию равно нулю; в этом случае сохраняются все полигоны. Вы можете выбрать предпочитаемые единицы измерения; по умолчанию это единицы объекта. | Areal unit |
minimum_hole_size (дополнительно) |
Минимальная площадь «дырок» внутри полигонов, получаемых агрегацией. Значение по умолчанию 0, что позволяет сохранять все «дырки» внутри полигонов. Вы можете выбрать предпочитаемые единицы измерения; по умолчанию это единицы объекта. | Areal unit |
orthogonality_option (дополнительно) |
Определяет, будет или нет сохранена прямоугольная форма объектов при построении выходных полигонов.
| Boolean |
barrier_features (дополнительно) |
Слои, которые содержат линейные или полигональные объекты, являющиеся барьерами по отношению к входным объектам зданий. Объекты не будут агрегированы, если они пересекаются барьерами. Барьеры, геометрия которых не соответствует входным объектам, игнорируются. | Feature Layer |
out_table (дополнительно) |
Таблица отношений "один-ко-многим", которая связывает агрегированные полигоны с исходными полигональными объектами. Эта таблица содержит два поля: OUTPUT_FID и INPUT_FID, хранящие, соответственно, идентификаторы агрегированных и исходных объектов. С помощью этой таблицы вы можете получить необходимые атрибуты выходных объектов. По умолчанию таблице присваивается имя выходного классе пространственных объектов, с добавлением суффикса _tbl. Путь по умолчанию будет совпадать с путем выходного класса объектов. Если этот параметр оставить пустым, таблица не будет создана. | Table |
Пример кода
Представленный скрипт Окна Python демонстрирует порядок прямого использования инструмента Агрегировать полигоны.
import arcpy
arcpy.env.cartographicPartitions = "C:/data/county.gdb/zipcodepoly"
buildings = "C:/data/county.gdb/bldgspoly"
roads = "C:/data/county.gdb/roadnetwork"
output = "C:/data/county.gdb/BldgAggBarrierPartition"
output_table = "C:/data/county.gdb/BldgAggBarrierPartition_Tbl"
arcpy.AggregatePolygons_cartography(buildings, output, "20 Meters", "5 SquareMeters", "0 SquareMeters", "ORTHOGONAL", roads, output_table)
Следующий автономный скрипт демонстрирует порядок использования функции агрегирования полигонов.
# Name: AggregatePolygons_Example2.py
# Description: Aggregate grass features and then transfer attributes
# Author: ESRI
# Import system modules
import arcpy
from arcpy import env
import arcpy.cartography as CA
import arcpy.management as DM
import arcpy.analysis as AN
# Set environment settings
env.workspace = "C:/data/Portland.gdb/Vegetation"
# Set local variables
inGrassFeatures = "grass"
aggregatedFeatures = "C:/data/PortlandOutput.gdb/grassland"
aggregatedTable = "C:/data/PortlandOutput.gdb/grassland_Tbl"
frequencyTable = "C:/data/PortlandOutput.gdb/frequency_Tbl"
# Aggregate grass polygons.
CA.AggregatePolygons(inGrassFeatures, aggregatedFeatures, 50, 300, 300, "NON_ORTHOGONAL", "", aggregatedTable)
# Join the aggregatedTable with input and
# transfer the COUNT field to aggregatedTable.
DM.JoinField(aggregatedTable, "INPUT_FID", inGrassFeatures, "OBJECTID", "COUNT")
# Use Frequency on aggregatedTable and
# obtain sum for COUNT.
AN.Frequency(aggregatedTable, frequencyTable, "OUTPUT_FID", "COUNT")
# Join the aggregatedFeatures with frequencyTable
# and transfer the COUNT field to aggregatedFeatures.
DM.JoinField(aggregatedFeatures, "OBJECTID", frequencyTable, "OUTPUT_FID", "COUNT")