Подпись | Описание | Тип данных |
Входной набор данных LAS
| Набор данных LAS, точки которого задают крыши зданий. | LAS Dataset Layer |
Входные объекты | Полигональные объекты, представляющие контуры зданий. | Feature Layer |
Высота земли
| Источником значений высоты Земли может быть числовое поле в таблице атрибутов контуров зданий или растровая или TIN поверхность. Источник значений высоты Земли на основе поля будет обрабатываться быстрее, чем источник на основе поверхности. | Field; Raster Layer; TIN Layer |
Выходной класс объектов-мультипатчей | Выходной класс объектов-мультипатчей, в котором будут храниться выходные модели зданий. | Feature Class |
Выборка точек крыш в LAS
(Дополнительный) | Точки LAS, которые будут использоваться для задания крыш зданий.
| String |
Допуск упрощения
| Значение допуска по z, которое будет использоваться для уменьшения количества точек LAS, обрабатываемых при моделировании крыш зданий. Это значение задает максимальный порог отклонения между выходной моделью крыш и поверхностью крыш, созданной по точкам LAS с полным разрешением. | Linear Unit |
Краткая информация
Создает модели зданий на основе точечных лидарных данных, представляющих формы крыш.
Иллюстрация
Использование
Этот инструмент предполагает, что обрабатываемые точки LAS отображают поверхность крыши здания. Для достижения наилучших результатов рекомендуется не включать в работу точки, которые представляют другие элементы здания, не крышу, поскольку они только добавят шумы к итоговой модели здания.
Модель здания создается путем построения TIN из выбранных точек LAS, которые находятся внутри контура крыши. Сам контур встраивается в модель TIN как ограничивающий полигон, чья высота определяется самой нижней точкой LAS в пределах обрабатываемой области. Уровень земной поверхности определяет фундамент здания, его можно получить как на основании значения поля в атрибутивной таблице полигонов контуров, так и непосредственно из слоя поверхности высот.
Если высота поверхности получена из атрибутивной таблицы полигонов контуров, то единицы измерения должны быть такими, же как и единицы z во входном наборе данных LAS. Если же высота записана в других линейных единицах измерения, воспользуйтесь инструментом Вычислить поле, чтобы предварительно перевести эти значения в нужные единицы. Высота поверхности земли в полигонах контуров зданий может быть записана следующим образом:
- Отфильтруйте набор данных LAS для отображения точек земной поверхности в свойствах слоя или с помощью инструмента Создать слой набора данных LAS.
- Запустите инструмент Добавить информацию о поверхности с входными объектами, установленными как полигоны контуров зданий, входной поверхностью, установленной как набор данных LAS с фильтром по земной поверхности, и выходным свойством с установленным значением Z_MIN, это будет гарантировать то, что здание будет соответствовать наименьшему значению z.
Если же высота поверхности земли определяется непосредственно поверхностью, наименьшее значение z среди границы полигона будет определять высоту фундамента здания. Поверхность должна использовать ту же самую вертикальную систему координат, что и набор данных LAS. TIN или растровая поверхность земли могут быть созданы на основе точек LAS, классифицированных как поверхность. Это можно сделать путем применения фильтра к набору данных LAS для отбора точек, классифицированных как поверхность, а затем создав поверхность с помощью инструментов Набор данных LAS в растр или Набор данных LAS в TIN.
Точки поверхности должны быть классифицированы до запуска этого инструмента. Для классификации точек земли, если этого еще не сделано, рассмотрите возможность использования инструмента Классифицировать поверхность LAS.
Можно использовать инструмент Классифицировать здания LAS для поиска точек, которые представляют собой крыши зданий, особенно если они часто перекрываются окружающей растительностью. Просмотрите результат автоматической классификации и внесите в него правки, если необходимо, с помощью интерактивной классификации, а уже затем запускайте инструменты для точек, классифицированных как здания.
Точки LAS обрабатываются более эффективно, когда набор данных LAS содержит статистику. Используйте инструмент Статистика набора данных LAS для вычисления статистики, если это необходимо.
Параметры
arcpy.ddd.LasBuildingMultipatch(in_las_dataset, in_features, ground, out_feature_class, {point_selection}, simplification)
Имя | Описание | Тип данных |
in_las_dataset | Набор данных LAS, точки которого задают крыши зданий. | LAS Dataset Layer |
in_features | Полигональные объекты, представляющие контуры зданий. | Feature Layer |
ground | Источником значений высоты Земли может быть числовое поле в таблице атрибутов контуров зданий или растровая или TIN поверхность. Источник значений высоты Земли на основе поля будет обрабатываться быстрее, чем источник на основе поверхности. | Field; Raster Layer; TIN Layer |
out_feature_class | Выходной класс объектов-мультипатчей, в котором будут храниться выходные модели зданий. | Feature Class |
point_selection (Дополнительный) | Точки LAS, которые будут использоваться для задания крыш зданий.
| String |
simplification | Значение допуска по z, которое будет использоваться для уменьшения количества точек LAS, обрабатываемых при моделировании крыш зданий. Это значение задает максимальный порог отклонения между выходной моделью крыш и поверхностью крыш, созданной по точкам LAS с полным разрешением. | Linear Unit |
Пример кода
В следующем примере показано использование этого инструмента в окне Python.
arcpy.env.workspace = 'C:/data'
arcpy.LasBuildingMultipatch_3d('Highland.lasd', 'footprint.shp', 'dem.tif',
'highland_3d_bldgs.shp', simplification='4 Feet')
В следующем примере показано использование этого инструмента в автономном скрипте Python.
'''****************************************************************************
Name: Extract Building Footprints & Generate 3D Models
Description: Extract footprint from lidar points classified as buildings,
regularize its geometry, and calculate the building height.
****************************************************************************'''
import arcpy
lasd = arcpy.GetParameterAsText(0)
footprint = arcpy.GetParameterAsText(1)
model = arcpy.GetParameterAsText(2)
try:
lasd_layer = 'building points'
arcpy.management.MakeLasDatasetLayer(lasd, lasd_layer, class_code=6)
temp_raster = 'in_memory/bldg_raster'
arcpy.management.LasPointStatsAsRaster(lasd_layer, temp_raster,
'PREDOMINANT_CLASS', 'CELLSIZE', 2.5)
temp_footprint = 'in_memory/footprint'
arcpy.conversion.RasterToPolygon(temp_raster, temp_footprint)
arcpy.ddd.RegularizeBuildingFootprint(temp_footprint, footprint,
method='RIGHT_ANGLES')
arcpy.ddd.LasPointStatsByArea(lasd_layer, footprint, ['MIN_Z', 'MAX_Z'])
arcpy.management.AddField(footprint, 'Height', 'Double')
arcpy.management.CalculateField(footprint, 'Height',
"round('!Z_Max! - !Z_Min!', 2)",
'PYTHON_9.3')
simplification = arcpy.Describe(lasd).pointSpacing * 4
arcpy.ddd.LasBuildingMultipatch(lasd_layer, footprint, 'Z_MIN', model,
'BUILDING_CLASSIFIED_POINTS', simplification)
except arcpy.ExecuteError:
print(arcpy.GetMessages())
Параметры среды
Особые случаи
Информация о лицензиях
- Basic: Обязательно 3D Analyst
- Standard: Обязательно 3D Analyst
- Advanced: Обязательно 3D Analyst