Мультипатчи зданий из LAS (3D Analyst)

Сводка

Создает модели зданий на основе точечных лидарных данных, представляющих формы крыш.

Иллюстрация

Иллюстрация инструмента Мультипатчи зданий из LAS

Использование

  • Этот инструмент предполагает, что обрабатываемые точки LAS отображают поверхность крыши здания. Для достижения наилучших результатов рекомендуется не включать в работу точки, которые представляют другие элементы здания, не крышу, поскольку они только добавят шумы к итоговой модели здания.

  • Модель здания создается путем построения TIN из выбранных точек LAS, которые находятся внутри контура крыши. Сам контур встраивается в модель TIN как ограничивающий полигон, чья высота определяется самой нижней точкой LAS в пределах обрабатываемой области. Уровень земной поверхности определяет фундамент здания, его можно получить как на основании значения поля в атрибутивной таблице полигонов контуров, так и непосредственно из слоя поверхности высот.

  • Если высота поверхности получена из атрибутивной таблицы полигонов контуров, то единицы измерения должны быть такими, же как и единицы z во входном наборе данных LAS. Если же высота записана в других линейных единицах измерения, воспользуйтесь инструментом Вычислить поле, чтобы предварительно перевести эти значения в нужные единицы. Высота поверхности земли в полигонах контуров зданий может быть записана следующим образом:

    1. Отфильтруйте набор данных LAS для отображения точек земной поверхности в свойствах слоя или с помощью инструмента Создать слой набора данных LAS.
    2. Запустите инструмент Добавить информацию о поверхности с входными объектами, установленными как полигоны контуров зданий, входной поверхностью, установленной как набор данных LAS с фильтром по земной поверхности, и выходным свойством с установленным значением Z_MIN, это будет гарантировать то, что здание будет соответствовать наименьшему значению z.
  • Если же высота поверхности земли определяется непосредственно поверхностью, наименьшее значение z среди границы полигона будет определять высоту фундамента здания. Поверхность должна использовать ту же самую вертикальную систему координат, что и набор данных LAS. TIN или растровая поверхность земли могут быть созданы на основе точек LAS, классифицированных как поверхность. Это можно сделать путем применения фильтра к набору данных LAS для отбора точек, классифицированных как поверхность, а затем создав поверхность с помощью инструментов Набор данных LAS в растр или Набор данных LAS в TIN.

  • Точки поверхности должны быть классифицированы до запуска этого инструмента. Для классификации точек земли, если этого еще не сделано, рассмотрите возможность использования инструмента Классифицировать поверхность LAS.

  • Можно использовать инструмент Классифицировать здания LAS для поиска точек, которые представляют собой крыши зданий, особенно если они часто перекрываются окружающей растительностью. Просмотрите результат автоматической классификации и внесите в него правки, если необходимо, с помощью интерактивной классификации, а уже затем запускайте инструменты для точек, классифицированных как здания.

  • Точки LAS обрабатываются более эффективно, когда набор данных LAS содержит статистику. Используйте инструмент Статистика набора данных LAS для вычисления статистики, если это необходимо.

Синтаксис

arcpy.3d.LasBuildingMultipatch(in_las_dataset, in_features, ground, out_feature_class, {point_selection}, simplification)
ParameterОбъяснениеТип данных
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, которые будут использоваться для задания крыш зданий.

  • BUILDING_CLASSIFIED_POINTSТочки LAS, которым присвоено значение кода класса 6. Используется по умолчанию.
  • LAYER_FILTERED_POINTSТочки LAS, которые отфильтрованы с помощью входного слоя.
  • ALL_POINTSВсе точки LAS, которые накладываются на контуры зданий.
String
simplification

Значение допуска по z, которое будет использоваться для уменьшения количества точек LAS, обрабатываемых при моделировании крыш зданий. Это значение задает максимальный порог отклонения между выходной моделью крыш и поверхностью крыш, созданной по точкам LAS с полным разрешением.

Linear Unit

Пример кода

LasBuildingMultipatch, пример 1 (окно Python)

В следующем примере показано использование этого инструмента в окне Python.

arcpy.env.workspace = 'C:/data'

arcpy.LasBuildingMultipatch_3d('Highland.lasd', 'footprint.shp', 'dem.tif', 
                               'highland_3d_bldgs.shp', simplification='4 Feet')
LasBuildingMultipatch, пример 2 (автономный скрипт)

В следующем примере показано использование этого инструмента в автономном скрипте 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

Связанные разделы