Multipatch de bâtiment LAS (3D Analyst)

Synthèse

Permet de créer des modèles de bâtiment dérivés de points de toit capturés dans des données lidar.

Illustration

Illustration de l’outil Multipatch de bâtiment LAS

Utilisation

  • Il est présumé que les points LAS fournissent la couverture recherchée pour le toit du bâtiment. Pour obtenir les meilleurs résultats possibles, veillez à exclure les points qui représentent d’autres parties du bâtiment que le toit, car ils produisent généralement du bruit dans le modèle de bâtiment obtenu. Si le jeu de données LAS ne contient pas de points classés de bâtiment, utilisez l’outil Classer des bâtiments LAS pour classer des points de bâtiment. L’outil attribue alors un code de classe de valeur 6 aux points représentant des toits de bâtiment. Examinez les résultats de la classification, puis apportez les corrections nécessaires en réexécutant l’outil avec des choix de paramètres différents ou par la mise à jour de la classification interactive. Générez le modèle une fois que la couverture des bâtiments de la classification vous convient.

  • Classez les points au sol avant d’exécuter cet outil. Utilisez l’outil Classer le sol LAS pour attribuer aux points au sol un code de classe de valeur 2 s’ils n’ont pas déjà été classés.

  • Le modèle de bâtiment est généré par la construction d’un TIN à partir des points LAS qui se superposent au polygone d’emprise de bâtiment. L’emprise est incorporée dans ce TIN comme un polygone de découpage dont la hauteur est définie par la source indiquée pour le paramètre Hauteur du sol. La valeur du paramètre Hauteur du sol peut être exprimée sous la forme d’un champ de la table attributaire du polygone d’emprise ou d’une surface d’altitude.

  • Les polygones qui se composent de segments d’arc ne sont pas pris en charge par cet outil. Si de telles entités sont présentes dans les données en entrée, prévoyez de faire une copie de ces entités et remplacez les géométries d’arc par des segments de ligne à l’aide de l’outil Densifier.

  • Lorsque la hauteur du sol est dérivée d’un champ de la table attributaire de l’emprise, l’unité de hauteur est censée être la même que l’unité z du jeu de données LAS en entrée. Si la hauteur dans la table attributaire est exprimée dans une unité linéaire différente, pensez à utiliser l’outil Calculer un champ pour appliquer le facteur de conversion approprié avant d’utiliser cet outil. La hauteur du sol peut être attribuée aux polygones d’emprise de bâtiment comme suit :

    • Filtrez le jeu de données LAS pour les points au sol en utilisant les propriétés de la couche ou l’outil Créer une couche de jeu de données LAS.
    • Exécutez l’outil Ajouter des informations de surface avec les entités en entrée définies sur le polygone d’emprise de bâtiment, la surface en entrée définie sur le jeu de données LAS filtré par le sol et la propriété en sortie définie sur la valeur Z_MIN pour faire en sorte que le bâtiment commence à la valeur z la plus faible.
  • Lorsque la hauteur du sol est définie par une surface, la plus petite valeur z le long de la limite du polygone détermine la hauteur de base du bâtiment. Utilisez le même système de coordonnées verticales pour la surface que celui du jeu de données LAS. Il est possible de créer un TIN ou une surface raster du sol à partir des points LAS classés comme terrestres en filtrant le jeu de données LAS pour les points classés comme terrestres, et en utilisant, au choix, l’outil Jeu de données LAS vers raster ou l’outil Jeu de données LAS vers TIN pour générer la surface.

  • Les points LAS sont traités plus efficacement lorsque le jeu de données LAS dispose de statistiques. Il est possible d’utiliser l’outil Statistiques du jeu de données LAS pour calculer les statistiques.

Paramètres

ÉtiquetteExplicationType de données
Jeu de données LAS en entrée

Jeu de données LAS contenant les points qui vont définir le toit du bâtiment.

LAS Dataset Layer
Entités en entrée

Entités surfaciques qui définissent l'emprise du bâtiment.

Feature Layer
Hauteur du sol

La source des valeurs de hauteur du sol peut être un champ numérique dans la table attributaire d’emprise du bâtiment, ou une surface raster ou TIN. Une source terrestre basée sur un champ sera traitée plus rapidement qu'une source terrestre basée sur une surface.

Field; Raster Layer; TIN Layer
Classe d’entités multipatch en sortie

Classe d'entité multipatch qui stockera les modèles de bâtiment en sortie.

Feature Class
Sélection des points du toit LAS
(Facultatif)

Points LAS qui seront utilisés pour définir le toit du bâtiment.

  • Points classés de bâtimentLes points LAS auxquels est attribuée la valeur de code de classe 6 sont utilisés. Il s’agit de l’option par défaut.
  • Points filtrés de coucheLes points LAS filtrés selon la couche en entrée sont utilisés.
  • Tous les pointsTous les points LAS superposés à l’emprise du bâtiment sont utilisés.
String
Tolérance de simplification

Valeur de tolérance z qui sera utilisée pour réduire le nombre de points LAS pris en compte dans la modélisation du toit du bâtiment. Cette valeur définit le seuil maximal d'écart entre le modèle de toit en sortie et la surface de toit créée à partir de la haute résolution des points LAS.

Linear Unit

arcpy.ddd.LasBuildingMultipatch(in_las_dataset, in_features, ground, out_feature_class, {point_selection}, simplification)
NomExplicationType de données
in_las_dataset

Jeu de données LAS contenant les points qui vont définir le toit du bâtiment.

LAS Dataset Layer
in_features

Entités surfaciques qui définissent l'emprise du bâtiment.

Feature Layer
ground

La source des valeurs de hauteur du sol peut être un champ numérique dans la table attributaire d’emprise du bâtiment, ou une surface raster ou TIN. Une source terrestre basée sur un champ sera traitée plus rapidement qu'une source terrestre basée sur une surface.

Field; Raster Layer; TIN Layer
out_feature_class

Classe d'entité multipatch qui stockera les modèles de bâtiment en sortie.

Feature Class
point_selection
(Facultatif)

Points LAS qui seront utilisés pour définir le toit du bâtiment.

  • BUILDING_CLASSIFIED_POINTSLes points LAS auxquels est attribuée la valeur de code de classe 6 sont utilisés. Il s’agit de l’option par défaut.
  • LAYER_FILTERED_POINTSLes points LAS filtrés selon la couche en entrée sont utilisés.
  • ALL_POINTSTous les points LAS superposés à l’emprise du bâtiment sont utilisés.
String
simplification

Valeur de tolérance z qui sera utilisée pour réduire le nombre de points LAS pris en compte dans la modélisation du toit du bâtiment. Cette valeur définit le seuil maximal d'écart entre le modèle de toit en sortie et la surface de toit créée à partir de la haute résolution des points LAS.

Linear Unit

Exemple de code

Exemple 1 d'utilisation de l'outil LasBuildingMultipatch (fenêtre Python)

L'exemple suivant illustre l'utilisation de cet outil dans la fenêtre Python.

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

arcpy.LasBuildingMultipatch_3d('Highland.lasd', 'footprint.shp', 'dem.tif', 
                               'highland_3d_bldgs.shp', simplification='4 Feet')
Exemple 2 d'utilisation de l'outil LasBuildingMultipatch (script autonome)

L'exemple suivant illustre l'utilisation de cet outil dans un script Python autonome.

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

Informations de licence

  • Basic: Nécessite 3D Analyst
  • Standard: Nécessite 3D Analyst
  • Advanced: Nécessite 3D Analyst

Rubriques connexes