Résumé
Filtre, découpe et projette à nouveau la collection des données Lidar référencées par un jeu de données LAS.
Illustration
Utilisation
-
Vous pouvez configurer la couche de jeu de données LAS pour qu’elle limite les points LAS affichés et traités. Pour ce faire, sélectionnez une combinaison de codes de classification, d’indicateurs de classification et de valeurs renvoyées dans les paramètres de filtre de la couche. Les filtres peuvent être définis par l’intermédiaire de la boîte de dialogue Layer Properties (Propriétés de la couche) ou de l’outil Make LAS Dataset Layer (Créer une couche de jeu de données LAS).
Pour reprojeter les fichiers LAS dans un système de coordonnées différent, spécifiez la référence spatiale dans le paramètre d’environnement Output Coordinate System (Système de coordonnées en sortie). Une référence spatiale doit être définie pour que les fichiers LAS soient reprojetés. Si la référence spatiale inclut un système de coordonnées verticales, les fichiers LAS peuvent également être reprojetés dans un autre système de référence de hauteur si les grilles de transformation verticale de datum sont installées et qu’une transformation est disponible dans la référence source et dans le système de coordonnées cible. La référence spatiale d’un fichier LAS peut être définie dans son en-tête ou dans un fichier PRJ auxiliaire qui définit la référence spatiale grâce à la convention textuelle connue. Le fichier PRJ doit se trouver au même emplacement que le fichier LAS et porter le même nom que lui. Lorsqu’il est présent, le fichier PRJ écrase les informations de référence spatiale de l’en-tête du fichier LAS. Vous pouvez créer des fichiers PRJ pour les fichiers LAS avec une référence spatiale manquante ou mal définie à l’aide de l’outil Define Projection (Définir une projection) pour un fichier LAS ou ZLAS unique ou à l’aide de l’outil Create LAS Dataset (Créer un jeu de données LAS) avec l’option PRJ activée.
Il n’est pas rare que les enregistrements de points LAS soient stockés dans le fichier LAS selon une séquence binaire qui ne correspond pas à l’agrégation spatiale des points. Lorsque les données d’une telle distribution sont interrogées, l’accès aux enregistrements binaires représentant les points LAS risque d’être moins efficace. La réorganisation des points dans le fichier LAS obtenu optimise les données pour la visualisation et d’autres opérations spatiales. Les statistiques sont automatiquement calculées lorsque l’option de réorganisation est activée. Si vous choisissez de ne pas réorganiser les points LAS, vous pouvez activer ou désactiver le calcul des statistiques. Le calcul des statistiques optimise les requêtes spatiales, offre un résumé des codes de classe et renvoie les valeurs présentes dans le fichier LAS. Il allonge toutefois également la durée de traitement de l’outil. Si les fichiers LAS obtenus ne sont pas destinés à être utilisés dans ArcGIS, vous pouvez désactiver les statistiques afin d’exécuter l’outil plus rapidement.
Lors du découpage des fichiers LAS, si une étendue d’extraction est définie avec une limite d’extraction, l’intersection des deux définira la couverture des fichiers LAS extraits.
Les fichiers LAS obtenus correspondront à la version LAS et au format d’enregistrement des points de l’entrée.
Syntaxe
arcpy.ddd.ExtractLas(in_las_dataset, target_folder, {extent}, {boundary}, {process_entire_files}, {name_suffix}, {remove_vlr}, {rearrange_points}, {compute_stats}, {out_las_dataset}, {compression})
Paramètre | Explication | Type de données |
in_las_dataset | Jeu de données LAS à traiter. | LAS Dataset Layer |
target_folder | Dossier existant dans lequel les fichiers LAS en sortie sont écrits. | Folder |
extent (Facultatif) | Spécifie l’étendue des données qui seront évaluées par cet outil. | Extent |
boundary (Facultatif) | Limite de polygone qui définit la zone des fichiers LAS à découper. | Feature Layer |
process_entire_files (Facultatif) | Indique comment appliquer l’étendue de traitement.
| Boolean |
name_suffix (Facultatif) | Texte qui est ajouté au nom de chaque fichier LAS en sortie. Chaque fichier hérite de son nom de base de son fichier source, suivi du suffixe indiqué dans ce paramètre. | String |
remove_vlr (Facultatif) | Chaque fichier LAS peut éventuellement contenir un ensemble d’enregistrements de longueur variable ajouté par le logiciel qui l’a généré. Généralement, seul le logiciel d’origine est en mesure de comprendre ces enregistrements. À moins que les données LAS en sortie ne soient destinées à être traitées par une application qui comprend ces informations, la conservation des enregistrements de longueur variable n’apporte aucune valeur ajoutée. La suppression des enregistrements de longueur variable peut parfois permettre d’économiser beaucoup d’espace disque, selon leur taille totale et le nombre de fichiers correspondants.
| Boolean |
rearrange_points (Facultatif) | Détermine si les points doivent être réorganisés dans les fichiers LAS.
| Boolean |
compute_stats (Facultatif) | Spécifie si des statistiques doivent être calculées pour les fichiers LAS référencés par le jeu de données LAS. Le calcul des statistiques fournit un index spatial pour chaque fichier LAS, ce qui améliore les performances d’analyse et d’affichage. Les statistiques permettent également d’optimiser l’utilisation des filtres et de la symbologie en limitant l’affichage des attributs LAS (tels que les codes de classification et les informations renvoyées) aux valeurs présentes dans le fichier LAS.
| Boolean |
out_las_dataset (Facultatif) | Jeu de données LAS en sortie qui fait référence aux fichiers LAS récemment créés. | LAS Dataset |
compression (Facultatif) | Indique si le fichier LAS en sortie sera dans un format compressé ou au format LAS standard.
| String |
Sortie dérivée
Nom | Explication | Type de données |
out_folder | Dossier dans lequel les fichiers LAS seront écrits. | Dossier |
Exemple de code
Exemple 1 d'utilisation de l'outil ExtractLas (fenêtre Python)
L'exemple suivant illustre l'utilisation de cet outil dans la fenêtre Python.
import arcpy
from arcpy import env
env.workspace = 'C:/data'
arcpy.ddd.ExtractLas('test.lasd', 'c:/lidar/subset', boundary='study_area.shp',
name_suffix='subset', remove_vlr=True,
rearrange_points='REARRANGE_POINTS',
out_las_dataset='extracted_lidar.lasd')
Exemple 2 d'utilisation de l'outil ExtractLas (script autonome)
L'exemple suivant illustre l'utilisation de cet outil dans un script Python autonome.
'''****************************************************************************
Name: Split Large LAS File
Description: Divides a large LAS file whose point distribution covers the full
XY extent of the data into smaller files to optimize performance
when reading lidar data.
****************************************************************************'''
# Import system modules
import arcpy
import tempfile
import math
in_las_file = arcpy.GetParameterAsText(0)
tile_width = arcpy.GetParameter(1) # double in LAS file's XY linear unit
tile_height = arcpy.GetParameter(2) # double in LAS file's XY linear unit
out_folder = arcpy.GetParameterAsText(3) # folder for LAS files
out_name_suffix = arcpy.GetParameterAsText(4) # basename for output files
out_lasd = arcpy.GetParameterAsText(5) # output LAS dataset
try:
temp_lasd = arcpy.CreateUniqueName('temp.lasd', tempfile.gettempdir())
arcpy.management.CreateLasDataset(in_las_file, temp_lasd,
compute_stats='COMPUTE_STATS')
desc = arcpy.Describe(temp_lasd)
total_columns = int(math.ceil(desc.extent.width/tile_width))
total_rows = int(math.ceil(desc.extent.height/tile_height))
digits = int(math.log10(max(cols, rows))) + 1
for row in range(1, total_rows+1):
yMin = desc.extent.YMin + tile_height*(row-1)
yMax = desc.extent.YMin + tile_height*(row)
for col in range (1, total_columns+1):
xMin = desc.extent.XMin + tile_width*(col-1)
xMax = desc.extent.XMax + tile_width*(col)
name_suffix = '_{0}_{1}x{2}'.format(out_name_suffix,
str(row).zfill(digits),
str(col).zfill(digits))
arcpy.ddd.ExtractLas(temp_lasd, out_folder,
arcpy.Extent(xMin, yMin, xMax, yMax),
name_suffix=name_suffix,
rearrange_points='REARRANGE_POINTS',
compute_stats='COMPUTE_STATS')
arcpy.env.workspace = out_folder
arcpy.management.CreateLasDataset(arcpy.ListFiles('*{0}*.las'.format(out_name_suffix)),
out_lasd, compute_stats='COMPUTE_STATS',
relative_paths='RELATIVE_PATHS')
except arcpy.ExecuteError:
print(arcpy.GetMessages())
Environnements
Informations de licence
- Basic: Requiert 3D Analyst
- Standard: Requiert 3D Analyst
- Advanced: Requiert 3D Analyst