Résumé
Extrait des fichiers LAS ou ZLAS qui intersectent une étendue ou un polygone de découpage.
Illustration
Utilisation
-
Lorsqu'un jeu de données LAS est spécifié en entrée, tous les points de données qu'il référence dans les fichiers LAS sont traités. Un sous-ensemble de données Lidar peut également être sélectionné en fonction de ses codes de classification, ses balises de classification et ses valeurs renvoyées en appliquant les filtres de points LAS souhaités via une couche de jeu de données LAS. Les filtres peuvent être définis par l'intermédiaire de la boîte de dialogue des propriétés de la couche ou de l'outil Créer une couche de jeu de données LAS.
Utilisez cet outil pour extraire un sous-ensemble de données Lidar capturées dans les fichiers Lidar source. Par exemple, si vous avez uniquement besoin d'utiliser une zone définie par une limite de polygone, vous pouvez extraire le fichier LAS en utilisant le polygone comme entité limite.
Pour reprojeter des fichiers LAS, spécifiez la référence spatiale souhaitée dans le paramètre d'environnement Système de coordonnées en sortie.
Si l'étendue d'extraction est définie avec une limite d'extraction, l'intersection des deux est utilisée pour définir la couverture des fichiers LAS extraits.
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.
Syntaxe
ExtractLas_3d (in_las_dataset, target_folder, {extent}, {boundary}, {process_entire_files}, {name_suffix}, {remove_vlr}, {rearrange_points}, {compute_stats}, {out_las_dataset})
Paramètre | Explication | Type de données |
in_las_dataset | Jeu de données LAS à traiter. | LAS Dataset Layer |
target_folder | Dossier dans lequel les fichiers LAS en sortie sont écrits. Chaque fichier en sortie dispose de la même version de fichiers LAS et du même format d'enregistrement des points que le fichier en entrée. | 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 les emplacements dans lesquels les fichiers LAS sont extraits. | 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) | Détermine si les enregistrements supplémentaires de longueur variable doivent être supprimés ou conservés dans les fichiers LAS.
| 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. Les statistiques permettent au filtrage de la couche du jeu de données LAS et aux options de symbologie de limiter l’affichage des attributs LAS aux valeurs présentes dans les fichiers LAS.
| Boolean |
out_las_dataset (Facultatif) | Jeu de données LAS en sortie. | LAS Dataset |
Sortie dérivée
Nom | Explication | Type de données |
out_folder | Dossier dans lequel les fichiers LAS en sortie sont écrits. |
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
- ArcGIS Desktop Basic: Requiert 3D Analyst
- ArcGIS Desktop Standard: Requiert 3D Analyst
- ArcGIS Desktop Advanced: Requiert 3D Analyst