Объединить 3D (3D Analyst)
Резюме
Производит слияние замкнутых, перекрывающихся объектов-мультипатчей из входного класса пространственных объектов.
Рисунок
Использование
-
Для такого анализа требуется замкнутая геометрия мультипатч. Инструмент Замкнутые 3D (Is Closed 3D) можно использовать, чтобы определить, содержит ли класс объектов мультипатч замкнутые объекты. А инструмент Замкнуть мультипатч (Enclose Multipatch) можно использовать для устранения разрывов в объектах мультипатч.
Объекты-мультипатчи, включающие в себя перекрывающиеся объемы, объединяются путем пересечения треугольников и колец, составляющих оболочку этих объектов, затем происходит удаление избыточных внутренних частей. Этот процесс повторяется итеративно до тех пор, пока не будут обработаны все мультипатчи в классе пространственных объектов.
Поле группировки может использоваться для идентификации объединяемых объектов, например в случае, когда мультипатчи представляют собой части городских зданий, и одно здание состоит из нескольких таких объектов. Это позволяет существенно повысить быстродействие, поскольку уменьшается количество проходов инструмента через весь набор данных. Вместо сравнения одного объекта со всеми объектами, производится только сравнение объекта с членами его группы.
При включении оптимизации инструмент предпринимает попытку самостоятельно разделить объекты на группы, анализируя прямоугольные фигуры, в которые вписан каждый из объектов. Отключение оптимизации увеличит быстродействие инструмента, если было указано поле группировки. Оптимизация также может быть отключена и при отсутствии поля группировки, если требуется объединить все перекрывающиеся объекты в один мультипатч.
-
Внимательно выбирайте количество объектов для агрегирования, поскольку в выходном классе могут получиться большие и сложные объекты, что повлечет за собой низкую производительность при отображении.
Сообщение об ошибке с указанием, что итоговый объект не является простым и не может быть создан, возникает в случае, когда два или более объекта-мультипатча имеют только одну общую вершину или ребро. То же сообщение возникает, если какая-либо группа содержит мультипатчи, не имеющие общего объема (внутреннего пространства).
-
Дополнительно может быть создана таблица с указанием атрибутов исходных объектов, которые были объединены в один выходной объект (для всех выходных объектов).
Примечание:Может быть установлено отношение между этой таблицей и выходным классом пространственных объектов для осуществления запросов к атрибутам, относящимся к исходным объектам. Дополнительная информация приведена в разделе Связывание атрибутов одной таблицы с другой.
Этот инструмент – это оператор, предоставляющий аналитические функции для 3D объектов. Дополнительные сведения об операциях пересечения 3D объектов и их использовании см. в разделе Работа с операциями пересечения 3D объектов.
Синтаксис
Параметр | Объяснение | Тип данных |
in_feature_class |
Замкнутые объекты-мультипатчи, которые будут пересечены и объединены. | Feature Layer |
group_field (дополнительно) |
Поле, применяемое для идентификации пространственных объектов, которые следует объединить в один объект. | Field |
out_feature_class |
Выходной класс объектов-мультипатчей, который будет хранить агрегированные объекты. | Feature Class |
out_table (дополнительно) |
Таблица типа «многие-к-одному», которая представляет связь между входными объектами и их агрегированными аналогами. | Table |
disable_optimization (дополнительно) |
Определяет, будет ли включена или отключена автоматическая оптимизация:
| Boolean |
output_all (дополнительно) |
Определяет, будет ли выходной класс содержать все объекты или только перекрывающиеся объекты, которые были объединены.
| Boolean |
Пример кода
В следующем примере показано использование этого инструмента в окне Python:
import arcpy
from arcpy import env
arcpy.CheckOutExtension('3D')
env.workspace = 'C:/data'
arcpy.Union3D_3d('multipatch.shp', 'union_output.shp', 'GROUP_FIELD',
'DISABLE', 'ENABLE', 'UnionTable.dbf')
В следующем примере показано использование этого инструмента в автономном скрипте Python:
'''****************************************************************************
Name: Union3D Example
Description: This script demonstrates how to use the
Union3D tool.
****************************************************************************'''
# Import system modules
import arcpy
import exceptions, sys, traceback
from arcpy import env
try:
arcpy.CheckOutExtension('3D')
# Set environment settings
env.workspace = 'C:/data'
# Set Local Variables
inMP = "multipatch.shp"
# Ensure output multipatch has a unique name
outMP = arcpy.CreateUniqueName("union_output.shp")
outTbl = arcpy.CreateUniqueName("UnionTable.dbf")
GroupField = "Type"
optimize = "DISABLE"
solids = "ENABLE"
#Execute Union3D
arcpy.ddd.Union3D(inMP, outMP, GroupField, optimize, solids, outTbl)
arcpy.CheckInExtension('3D')
except arcpy.ExecuteError:
print arcpy.GetMessages()
except:
# Get the traceback object
tb = sys.exc_info()[2]
tbinfo = traceback.format_tb(tb)[0]
# Concatenate error information into message string
pymsg = 'PYTHON ERRORS:\nTraceback info:\n{0}\nError Info:\n{1}'\
.format(tbinfo, str(sys.exc_info()[1]))
msgs = 'ArcPy ERRORS:\n {0}\n'.format(arcpy.GetMessages(2))
# Return python error messages for script tool or Python Window
arcpy.AddError(pymsg)
arcpy.AddError(msgs)