Étiquette | Explication | Type 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.
| 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 |
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
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 :
- 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.
- 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
arcpy.ddd.LasBuildingMultipatch(in_las_dataset, in_features, ground, out_feature_class, {point_selection}, simplification)
Nom | Explication | Type 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.
| 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
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
Cas particuliers
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 ?