Étiquette | Explication | Type 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) | Spécifie les points LAS qui seront utilisés pour définir le toit du bâtiment.
| String |
Tolérance de simplification (Facultatif) | Valeur de tolérance z utilisée pour simplifier la géométrie du toit. Cette valeur définit l’écart maximal du modèle de toit en sortie par rapport à la surface TIN créée avec les points LAS. | Linear Unit |
Résolution d’échantillonnage (Facultatif) | Taille de regroupement utilisée pour affiner le nuage de points avant la construction de la surface du toit. | Linear Unit |
Champ de hauteur minimale (Facultatif) | Champ numérique contenant la hauteur minimale des points qui seront utilisés pour définir le toit. N’importe quel champ numérique peut être spécifié. Les points qui sont en dessous de la valeur de ce champ sont ignorés. | Field |
Champ de hauteur maximale (Facultatif) | Champ numérique contenant la hauteur maximale des points qui seront utilisés pour définir le toit. N’importe quel champ numérique peut être spécifié. Les points qui sont au-dessus de la valeur de ce champ sont ignorés. | Field |
Synthèse
Crée des modèles de bâtiment à l’aide de points de toit dans un jeu de données LAS.
Illustration
Utilisation
Cet outil crée des bâtiments en tant qu’entités multipatch à l’aide de points de toit d’un jeu de données LAS, de données de hauteur du sol et de polygones d’emprise de bâtiment. Chaque 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érivée de la valeur du paramètre Hauteur du sol. Ce TIN est ensuite converti en entité multipatch fermé à la hauteur de base. Étant donné que l’entité multipatch obtenue est basée sur la surface d’un TIN, l’entité multipatch n’inclut pas de détails le long du profil vertical du bâtiment.
Les points LAS en entrée doivent capturer le toit du bâtiment. Si possible, excluez les points représentant des éléments du bâtiment autre que le toit, car ils génèrent généralement des sorties avec des caractéristiques indésirables. L’outil Classer des bâtiments LAS permet d’attribuer un code de classe de valeur 6 aux points de toit du bâtiment. L’outil attribue alors un code de classe de valeur 6 aux points représentant des toits de bâtiment, mais il inclut des options pour classer les points situés sous ou sur le toit. Si vous décidez de classer ces points, utilisez un code de classe différent de 6 pour les définir, afin qu’ils soient exclus lorsqu’ils sont utilisés pour créer des entités de bâtiment. Passez en revue les résultats de la classification des bâtiments et apportez les corrections nécessaires via la mise à jour interactive ou en exécutant de nouveau l’outil Classer des bâtiments LAS avec d’autres paramètres. Si le jeu de données LAS ne contient pas de points autres que des bâtiments sur les emprises de bâtiments, tous les points peuvent potentiellement être utilisés pour définir la surface du toit.
La valeur du paramètre Résolution d’échantillonnage permet d’affiner les points du jeu de données LAS avant la construction du TIN. Ce paramètre optimise les performances de l’outil lorsque l’entrée est un nuage de points à forte densité ou lorsque les points le long du profil vertical du bâtiment sont en cours de traitement. La valeur du paramètre correspond à la longueur et à la largeur de la zone à affiner. Ainsi, une distance de 2 pieds regroupe le nuage de points dans un carroyage de 2 pieds. Le point le plus haut de chaque groupe est utilisé pour construire le TIN du toit. Cela permet de limiter l’impact des points sur le côté du bâtiment.
La création de polygones d’emprise qui se composent de segments d’arc n’est pas prise en charge par cet outil. Utilisez l’outil Densifier pour remplacer les segments d’arc par des segments de ligne.
La valeur du paramètre Hauteur du sol peut être une surface d’élévation ou un champ de la table attributaire du polygone d’emprise. Si vous utilisez une surface, la hauteur de base du bâtiment est la valeur z la plus petite le long de la limite de l’emprise. La surface doit utiliser le même système de coordonnées verticales que le jeu de données LAS. Il est possible de dériver une surface au sol du jeu de données LAS pour s’assurer que les bâtiments correspondent aux hauteurs du nuage de points d’origine. Pour créer une surface d’élévation à partir du jeu de données LAS, procédez comme suit :
- Assurez-vous que les points classés comme sol sont présents dans le jeu de données LAS. Si ce n’est pas le cas, utilisez l’outil Classer le sol LAS pour attribuer aux points au sol un code de classe de valeur 2.
- Filtrez la couche du 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.
- Utilisez l’outil Jeu de données LAS vers raster ou Jeu de données LAS vers TIN pour créer un raster ou une surface TIN qui peut être utilisé comme entrée pour cet outil.
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, utilisez l’outil Calculer un champ pour calculer les nouvelles valeurs de hauteur dans les unités linéaires du jeu de données LAS. La hauteur minimale du sol peut être attribuée aux polygones d’emprise de bâtiment à partir d’une surface d’élévation au sol à l’aide de l’outil Ajouter des informations de surface.
Si des entités de bâtiment sont générées pour des structures adjacentes ayant des toits d’une hauteur totalement différente, l’entité résultante pour chaque bâtiment peut être définie par les points du bâtiment à proximité. Pour limiter ce problème, une approche possible consiste à attribuer à chaque entité la plage de hauteur du toit du bâtiment et à utiliser ces champs comme valeurs des paramètres Champ de hauteur minimale et Champ de hauteur maximale.
Les points LAS sont traités plus efficacement lorsque le jeu de données LAS dispose de statistiques. Utilisez l’outil Statistiques du jeu de données LAS pour calculer des statistiques.
Paramètres
arcpy.ddd.LasBuildingMultipatch(in_las_dataset, in_features, ground, out_feature_class, {point_selection}, {simplification}, {sampling_resolution}, {min_height_field}, {max_height_field})
Nom | Explication | Type 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) | Spécifie les points LAS qui seront utilisés pour définir le toit du bâtiment.
| String |
simplification (Facultatif) | Valeur de tolérance z utilisée pour simplifier la géométrie du toit. Cette valeur définit l’écart maximal du modèle de toit en sortie par rapport à la surface TIN créée avec les points LAS. | Linear Unit |
sampling_resolution (Facultatif) | Taille de regroupement utilisée pour affiner le nuage de points avant la construction de la surface du toit. | Linear Unit |
min_height_field (Facultatif) | Champ numérique contenant la hauteur minimale des points qui seront utilisés pour définir le toit. N’importe quel champ numérique peut être spécifié. Les points qui sont en dessous de la valeur de ce champ sont ignorés. | Field |
max_height_field (Facultatif) | Champ numérique contenant la hauteur maximale des points qui seront utilisés pour définir le toit. N’importe quel champ numérique peut être spécifié. Les points qui sont au-dessus de la valeur de ce champ sont ignorés. | Field |
Exemple de code
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')
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())
Environnements
Informations de licence
- Basic: Nécessite 3D Analyst
- Standard: Nécessite 3D Analyst
- Advanced: Nécessite 3D Analyst
Rubriques connexes
Vous avez un commentaire à formuler concernant cette rubrique ?