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

  • Cet outil suppose que les points LAS en cours de traitement fournissent la couverture recherchée pour le toit du bâtiment. Pour de meilleurs résultats, évitez d’inclure les points représentant d’autres parties du bâtiment, car ils produisent généralement du bruit dans le modèle de bâtiment obtenu.

  • Le modèle de bâtiment est généré en construisant un TIN à l’aide des points LAS sélectionnés figurant à l’intérieur de l’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 le point LAS le plus bas au sein de l’étendue. La hauteur du sol fournit la base du bâtiment et peut être dérivée d’un champ de la table attributaire de l’emprise et l’unité linéaire ou d’une surface d’altitude.

  • 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 :

    1. 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 jeux de données LAS.
    2. Exécutez l’outil Ajouter des informations de surface avec les entités en entrée définies sur le polygone d’emprise du 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 s’assurer 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. La surface doit utiliser le même système de coordonnées verticales que le 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, puis 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.

  • Il convient de classer les points au sol avant d’exécuter cet outil. Envisagez d'utiliser l'outil Classer le sol LAS pour classer les points au sol si ceux-ci n'ont pas encore été classés.

  • Envisagez d’utiliser l’outil Classer des bâtiments LAS pour identifier les points représentant les toits des bâtiments, notamment s’il est courant que de la végétation surplombe les toits. Passez en revue les résultats de la classification automatique et apportez les corrections nécessaires via la mise à jour de la classification interactive avant d’exécuter cet outil avec les points classés de bâtiment.

  • Les points LAS sont traités plus efficacement lorsque le jeu de données LAS dispose de statistiques. Utilisez éventuellement l’outil Statistiques du jeu de données LAS pour calculer des statistiques, si nécessaire.

Paramètres

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

Jeu de données LAS dont les points définissent 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âtimentPoints LAS auxquels est assignée la valeur de code de classe 6. Il s’agit de l’option par défaut.
  • Points filtrés de couchePoints LAS filtrés par la couche en entrée.
  • Tous les pointsTous les points LAS superposés à l'emprise du bâtiment.
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 dont les points définissent 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_POINTSPoints LAS auxquels est assignée la valeur de code de classe 6. Il s’agit de l’option par défaut.
  • LAYER_FILTERED_POINTSPoints LAS filtrés par la couche en entrée.
  • ALL_POINTSTous les points LAS superposés à l'emprise du bâtiment.
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