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

Краткая информация

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

Иллюстрация

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

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

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

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

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

  • Полигоны, содержащие сегменты дуг, не поддерживаются этим инструментом. Если такие объекты присутствуют во входных данных, вы можете сделать копию этих объектов, затем заменить геометрию дуг линейными сегментами, используя инструмент Уплотнить.

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

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

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

Параметры

ПодписьОписаниеТип данных
Входной набор данных LAS

Набор данных LAS, содержащий точки, которые задают крыши зданий.

LAS Dataset Layer
Входные объекты

Полигональные объекты, представляющие контуры зданий.

Feature Layer
Высота земли

Источником значений высоты поверхности Земли может быть числовое поле в таблице атрибутов контуров зданий, а так же растровая или TIN поверхность. Источник значений высоты Земли на основе поля будет обрабатываться быстрее, чем источник на основе поверхности.

Field; Raster Layer; TIN Layer
Выходной класс объектов-мультипатчей

Выходной класс объектов-мультипатчей, в котором будут храниться выходные модели зданий.

Feature Class
Выборка точек крыш в LAS
(Дополнительный)

Задает точки LAS, которые будут использоваться для задания крыш зданий.

  • Классифицированные точки зданийБуду использованы точки LAS, которым присвоено значение кода класса 6. Это значение по умолчанию
  • Отфильтрованные точки слояБудут использованы точки LAS, которые отфильтрованы с помощью входного слоя.
  • Все точкиБудут использованы все точки LAS, которые накладываются на контуры зданий.
String
Допуск упрощения
(Дополнительный)

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

Linear Unit
Разрешение выборки
(Дополнительный)

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

Linear Unit

arcpy.ddd.LasBuildingMultipatch(in_las_dataset, in_features, ground, out_feature_class, {point_selection}, {simplification}, {sampling_resolution})
ИмяОписаниеТип данных
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-допуска, которое будет использоваться для упрощения геометрии крыши. Это значение определяет максимальное отклонение выходной модели крыши от поверхности TIN, созданной с использованием точек LAS.

Linear Unit
sampling_resolution
(Дополнительный)

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

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

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