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

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

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

Иллюстрация

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

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

  • Этот инструмент создает здания в виде объектов-мультипатчей, используя точки крыш из набора данных LAS, данные о высоте земли и полигоны контуров зданий. Каждая модель здания обычно создается построением поверхности TIN из точек LAS, которые перекрываются полигонами контуров зданий. Сам контур встраивается в модель TIN как вырезающий полигон, чья высота определяется значением параметра Высота земли. Затем TIN преобразуется в мультипатч, который закрывается на базовой высоте. Поскольку готовый мультипатч основан на поверхности TIN, он не будет содержать детали вдоль вертикального профиля здания.

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

  • Значение параметра Разрешения выборки используется для уменьшения количества точек в наборе данных LAS перед построением TIN. Этот параметр оптимизирует производительность инструмента, когда входными данными является облако точек с высокой плотностью или когда обрабатываются точки вдоль вертикального профиля здания. Значение параметра представляет длину и ширину прореживаемой области, поэтому расстояние в 2 фута приведет к объединению облака точек в 2-футовую сетку. Самая высокая точка в каждом бине будет использована для построения TIN крыши. Таким образом, воздействие точек со стороны здания может быть смягчено.

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

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

    1. Убедитесь, что в наборе данных LAS присутствуют классифицированные наземные точки. Если это не так, используйте инструмент Классифицировать поверхность LAS, чтобы присвоить точкам земли значение кода класса, равное 2.
    2. Отфильтруйте слой набора данных LAS для отображения точек земной поверхности в свойствах слоя или с помощью инструмента Создать слой набора данных LAS.
    3. Используйте инструмент Набор данных LAS в растр или Набор данных LAS в TIN, чтобы создать растровую поверхность или поверхность TIN, которую можно использовать в качестве входных данных для этого инструмента.
  • Если высота поверхности получена из атрибутивной таблицы полигонов контуров, то единицы измерения должны быть такими, же как и единицы z во входном наборе данных LAS. Если высота в таблице атрибутов указана в других линейных единицах измерения, используйте инструмент Вычислить поле для вычисления новых значений высоты в линейных единицах набора данных LAS. Минимальная высота земли может быть перенесена в полигон контуров здания с поверхности высот земли с помощью инструмента Добавить данные высот поверхности.

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

  • Точки 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
Поле минимальной высоты
(Дополнительный)

Числовое поле, содержащее минимальную высоту точек, которые будут использоваться для определения крыши. Можно указать любое числовое поле. Точки, находящиеся ниже указанного в этом поле значения, будут проигнорированы.

Field
Поле максимальной высоты
(Дополнительный)

Числовое поле, содержащее максимальную высоту точек, которые будут использоваться для определения крыши. Можно указать любое числовое поле. Точки, находящиеся выше указанного в этом поле значения, будут проигнорированы.

Field

arcpy.ddd.LasBuildingMultipatch(in_las_dataset, in_features, ground, out_feature_class, {point_selection}, {simplification}, {sampling_resolution}, {min_height_field}, {max_height_field})
ИмяОписаниеТип данных
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
min_height_field
(Дополнительный)

Числовое поле, содержащее минимальную высоту точек, которые будут использоваться для определения крыши. Можно указать любое числовое поле. Точки, находящиеся ниже указанного в этом поле значения, будут проигнорированы.

Field
max_height_field
(Дополнительный)

Числовое поле, содержащее максимальную высоту точек, которые будут использоваться для определения крыши. Можно указать любое числовое поле. Точки, находящиеся выше указанного в этом поле значения, будут проигнорированы.

Field

Пример кода

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())

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