Classer la superposition LAS (3D Analyst)

Synthèse

Classe les points LAS des balayages de superposition des enquêtes lidar aériennes.

Illustration

Illustration de l’outil Classer la superposition LAS

Utilisation

  • Une distribution régulière des points permet souvent d’améliorer les performances des outils en aval. Les données issues de points dont la distribution est irrégulière risquent de générer une marge d’erreur indésirable. Lorsque les levés lidar aériens ont des points LAS provenant de lignes de vol superposées, les données LAS présentent généralement une densité de points plus élevée dans la zone de superposition. L’angle de balayage des points à partir des différentes lignes de vol peut également varier largement. En règle générale, les points avec des angles de balayage supérieurs auront une marge d’erreur plus importante que ceux dont les angles de balayage sont plus proches du nadir. La classification des points superposés permet de filtrer les données LAS de façon à générer une densité de points cohérente. Lorsque les points sont désignés comme superposés, ils peuvent être filtrés et exclus des opérations de visualisation et d’analyse en aval.

  • L’attribut de l’ID source d’un point LAS identifie la ligne de vol à partir de laquelle le point a été collecté. Cet attribut permet d’établir la présence de points superposés. Les données LAS sont évaluées dans une distance d’échantillonnage donnée. Lorsque des points avec différents ID source de point sont détectés dans la zone en cours d’évaluation, l’angle de balayage est utilisé pour établir quel ID source de point représente les points non superposés. L’ID source du point présentant l’angle de balayage le plus proche de 0, ou du nadir, est conservé pour représenter les points non superposés. Les points associés aux ID source de point restants seront signalés comme superposés.

    La taille d’échantillon utilisée pour évaluer les points LAS doit être environ deux à trois fois supérieure à la taille de l’espacement nominal des points des données LAS. Si vous utilisez une distance d’échantillonnage plus élevée, il est possible que les points soient incorrectement classés, tandis que si vous utilisez des tailles d’échantillonnage inférieures, il est possible que le nombre de points capturés soit insuffisant pour identifier correctement les points superposés.

  • Cet outil fonctionne sur des fichiers .las ou .zlas tuilés qui combinent des enregistrements de points à partir de plusieurs lignes de vol. Chaque fichier est traité de manière indépendante, ce qui signifie que les points superposés ne sont pas détectés si chaque ligne de vol est stockée dans un fichier distinct. Utilisez l’outil Tuile LAS pour fusionner ces fichiers.

  • Les points superposés dans les fichiers LAS de version 1.4 avec des formats d’enregistrement des points 6 à 8 se verront attribuer l’indicateur de classification Superposition. Cela permet aux points de conserver la valeur de classification d’origine. Le code de classe de valeur 12 sera attribué aux points de superposition de tous les autres fichiers .las pris en charge. Si le code de classe de valeur 12 est déjà utilisé par les fichiers .las en entrée pour représenter autre chose que des balayages superposés, vous pouvez utiliser l’outil Modifier les codes de classes LAS pour réattribuer une autre valeur à ces points avant d’exécuter cet outil.

Paramètres

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

Jeu de données LAS tuilé qui sera traité.

LAS Dataset Layer
Distance d’exemple

La distance d'une dimension de la surface carrée qui sera utilisée pour évaluer les données LAS. Si Unknown (Inconnu) est spécifié en tant qu’unité linéaire, l’unité est définie par la référence spatiale du fichier .las en entrée.

Linear Unit
Étendue de traitement
(Facultatif)

Spécifie l’étendue des données qui seront évaluées.

  • Current Display Extent (Étendue actuellement affichée) Current Display Extent : l’étendue repose sur la carte ou la scène active. Cette option est uniquement disponible lorsqu’une carte est active.
  • Dessiner l’étendue Draw Extent : l’étendue est basée sur un rectangle dessiné sur la carte ou dans la scène. Cette option crée une classe d’entités dans la géodatabase du projet et ajoute une couche à la carte. La classe d’entités possède le même système de coordonnées que la carte.
    Remarque :

    Cette option n’est pas disponible dans la boîte de dialogue Environnements. Elle est disponible uniquement dans un paramètre de l’outil correspondant à un type de données d’étendue ou dans l’onglet Environnements de la boîte de dialogue de l’outil.

    Remarque :

    Lorsque l’option de mise à jour Activer et désactiver la mise à jour de l’onglet Mettre à jour est activée, vous devez activer la mise à jour dans l’onglet du ruban Mettre à jour pour dessiner l’étendue.

  • Extent of a Layer (Étendue d’une couche) Layer : l’étendue repose sur une couche de carte active. Utilisez la liste déroulante pour choisir une couche disponible ou utilisez l’option Extent of data in all layers (Étendue des données dans toutes les couches) pour obtenir l’étendue combinée de toutes les couches de carte actives, y compris le fond de carte. Cette option est uniquement disponible lorsqu’une carte avec des couches est active.

    Chaque couche de carte comporte les options suivantes :

    • Toutes les entités Select All : étendue de toutes les entités dans la couche.
    • Entités sélectionnéesArea from Selected Features : étendue de toutes les entités sélectionnées dans la couche.
    • Entités visibles Extent Indicator : étendue de toutes les entités visibles dans la couche.
      Remarque :

      Les étendues des options Entités sélectionnées Area from Selected Features et Entités visibles Extent Indicator sont disponibles uniquement pour les couches d’entités.

  • Browse (Parcourir) Browse : l’étendue repose sur un jeu de données existant.
  • Intersection of Inputs (Intersection des entrées) Intersect : l’étendue repose sur l’étendue minimale ou l’étendue d’intersection de toutes les entrées. S’il n’existe aucune intersection entre les entrées, il en résulte une étendue nulle avec uniquement des zéros.
  • Union of Inputs (Union des entrées) Union : l’étendue est basée sur l’étendue maximale ou combinée de toutes les entrées.
  • Presse-papiers Paste : l’étendue peut être copiée depuis et vers le Presse-papiers.
    • Copier l’étendue Copy : copie les coordonnées et le système de coordonnées de l’étendue dans le Presse-papiers.
    • Coller l’étendue Paste : colle les coordonnées et, éventuellement, le système de coordonnées de l’étendue depuis le Presse-papiers. Si les valeurs du Presse-papiers n’incluent pas de système de coordonnées, l’étendue utilise celui de la carte.
    Remarque :

    Les coordonnées de l’étendue sont copiées vers et collées depuis le Presse-Papiers avec la même mise en forme et le même ordre que ceux de l’objet ArcPy Extent : X min, Y min, X max, Y max et la référence spatiale.

  • Reset Extent (Réinitialiser l’étendue) Reset : la valeur par défaut de l’étendue est rétablie.
  • Manually entered coordinates (Coordonnées saisies manuellement) : les coordonnées doivent être des valeurs numériques incluses dans le système de coordonnées de la carte active.
    Attention :

    La carte peut utiliser des unités d’affichage différentes de celles des coordonnées saisies. L’utilisation d’une direction cardinale (N, S, E, O) n’est pas prise en charge. Utilisez le signe moins pour les coordonnées sud et ouest.

Extent
Traiter l'intégralité des fichiers LAS qui intersectent l'étendue
(Facultatif)

Spécifie comment la zone d’intérêt est utilisée pour déterminer le traitement des fichiers .las. La zone d’intérêt est définie par la valeur du paramètre Étendue de traitement, la valeur du paramètre Limite de traitement ou les deux à la fois.

  • Désactivé : seuls les points LAS qui intersectent la zone d'intérêt sont traités. Il s’agit de l’option par défaut.
  • Activé : si une partie d’un fichier .las intersecte la zone d’intérêt, tous les points que ce fichier contient, y compris ceux situés à l’extérieur de la zone d’intérêt, seront traités.
Boolean
Calculer les statistiques
(Facultatif)

Spécifie si des statistiques seront calculées pour les fichiers .las référencés par le jeu de données LAS. Les statistiques de calcul fournissent un index spatial pour chaque fichier .las, ce qui contribue à améliorer les performances d’analyse et d’affichage. Les statistiques améliorent également l’expérience de filtrage et de symbologie en limitant l’affichage des attributs LAS (par exemple, les codes de classification et les informations renvoyées) aux valeurs présentes dans le fichier .las.

  • Activé : les statistiques sont calculées. Il s’agit de l’option par défaut.
  • Désactivé : les statistiques ne sont pas calculées.
Boolean
Mettre à jour la pyramide
(Facultatif)

Spécifie si la pyramide du jeu de données LAS est mise à jour après la modification des codes de classe.

  • Activé : la pyramide du jeu de données LAS est mise à jour. Il s’agit de l’option par défaut.
  • Désactivé : la pyramide du jeu de données LAS n’est pas mise à jour.
Boolean

Sortie obtenue

ÉtiquetteExplicationType de données
Jeu de données LAS en sortie

Le jeu de données LAS à modifier.

LAS Dataset Layer

arcpy.ddd.ClassifyLasOverlap(in_las_dataset, sample_distance, {extent}, {process_entire_files}, {compute_stats}, {update_pyramid})
NomExplicationType de données
in_las_dataset

Jeu de données LAS tuilé qui sera traité.

LAS Dataset Layer
sample_distance

La distance d'une dimension de la surface carrée qui sera utilisée pour évaluer les données LAS. Cette valeur peut être exprimée en tant que nombre ou valeur d'unité linéaire, par exemple 3 mètres. Si les unités linéaires ne sont pas spécifiées ou si elles sont désignées avec la mention Unknown, l’unité est définie par la référence spatiale du fichier .las en entrée.

Linear Unit
extent
(Facultatif)

Spécifie l’étendue des données qui seront évaluées.

  • MAXOF : l’étendue maximale de toutes les entrées est utilisée.
  • MINOF : l’étendue minimale commune à toutes les entrées est utilisée.
  • DISPLAY : l’étendue est égale à l’affichage visible.
  • Nom de la couche : l’étendue de la couche spécifiée est utilisée.
  • Objet Extent : l’étendue de l’objet spécifié est utilisée.
  • Chaîne délimitée par des espaces de coordonnées géographiques : l’étendue de la chaîne spécifiée est utilisée. Les coordonnées sont exprimées dans l’ordre x-min, y-min, x-max, y-max.
Extent
process_entire_files
(Facultatif)

Indique comment l’étendue de traitement est appliquée.

  • PROCESS_EXTENTSeuls les points LAS qui intersectent la zone d'intérêt sont traités. Il s’agit de l’option par défaut.
  • PROCESS_ENTIRE_FILESSi une partie d’un fichier .las intersecte la zone d’intérêt, tous les points que le fichier contient, y compris ceux situés à l’extérieur de la zone d’intérêt, seront traités.
Boolean
compute_stats
(Facultatif)

Spécifie si des statistiques seront calculées pour les fichiers .las référencés par le jeu de données LAS. Les statistiques de calcul fournissent un index spatial pour chaque fichier .las, ce qui contribue à améliorer les performances d’analyse et d’affichage. Les statistiques améliorent également l’expérience de filtrage et de symbologie en limitant l’affichage des attributs LAS (par exemple, les codes de classification et les informations renvoyées) aux valeurs présentes dans le fichier .las.

  • COMPUTE_STATSLes statistiques sont calculées. Il s’agit de l’option par défaut.
  • NO_COMPUTE_STATSLes statistiques ne sont pas calculées.
Boolean
update_pyramid
(Facultatif)

Spécifie si la pyramide du jeu de données LAS est mise à jour après la modification des codes de classe.

  • UPDATE_PYRAMIDLa pyramide du jeu de données LAS est mise à jour. Il s’agit de l’option par défaut.
  • NO_UPDATE_PYRAMIDLa pyramide du jeu de données LAS n’est pas mise à jour.
Boolean

Sortie obtenue

NomExplicationType de données
out_las_dataset

Le jeu de données LAS à modifier.

LAS Dataset Layer

Exemple de code

Exemple 1 d’utilisation de la fonction ClassifyLasOverlap (fenêtre Python)

L’exemple suivant illustre l’utilisation de cet outil dans la fenêtre Python.

arcpy.env.workspace = 'C:/data'

arcpy.ddd.ClassifyLasOverlap('Denver_2.lasd', '1 Meter')
Exemple 2 d'utilisation de l'outil ClassifyLasOverlap (script autonome)

L’exemple suivant illustre l’utilisation de cet outil dans un script Python autonome.

'''****************************************************************************
       Name: Classify Lidar & Extract Building Footprints
Description: Extract footprint from lidar points classified as buildings, 
             regularize its geometry, and calculate the building height.

****************************************************************************'''
import arcpy

lasd = arcpy.GetParameterAsText(0)
dem = arcpy.GetParameterAsText(1)
footprint = arcpy.GetParameterAsText(2)

try:
    desc = arcpy.Describe(lasd)
    if desc.spatialReference.linearUnitName in ['Foot_US', 'Foot']:
        unit = 'Feet'
    else:
        unit = 'Meters'
    ptSpacing = desc.pointSpacing * 2.25
    sampling = '{0} {1}'.format(ptSpacing, unit)
    # Classify overlap points
    arcpy.ddd.ClassifyLASOverlap(lasd, sampling)
    # Classify ground points
    arcpy.ddd.ClassifyLasGround(lasd)
    # Filter for ground points
    arcpy.management.MakeLasDatasetLayer(lasd, 'ground', class_code=[2])
    # Generate DEM
    arcpy.conversion.LasDatasetToRaster('ground', dem, 'ELEVATION', 
                                        'BINNING NEAREST NATURAL_NEIGHBOR', 
                                        sampling_type='CELLSIZE', 
                                        sampling_value=desc.pointSpacing)
    # Classify noise points
    arcpy.ddd.ClassifyLasNoise(lasd, method='ISOLATION', edit_las='CLASSIFY', 
                               withheld='WITHHELD', ground=dem, 
                               low_z='-2 feet', high_z='300 feet', 
                               max_neighbors=ptSpacing, step_width=ptSpacing, 
                               step_height='10 feet')
    # Classify buildings
    arcpy.ddd.ClassifyLasBuilding(lasd, '7.5 feet', '80 Square Feet')
    #Classify vegetation
    arcpy.ddd.ClassifyLasByHeight(lasd, 'GROUND', [8, 20, 55], 
                                  compute_stats='COMPUTE_STATS')
    # Filter LAS dataset for building points
    lasd_layer = 'building points'
    arcpy.management.MakeLasDatasetLayer(lasd, lasd_layer, class_code=[6])
    # Export raster from lidar using only building points
    temp_raster = 'in_memory/bldg_raster'
    arcpy.management.LasPointStatsAsRaster(lasd_layer, temp_raster,
                                           'PREDOMINANT_CLASS', 'CELLSIZE', 2.5)
    # Convert building raster to polygon
    temp_footprint = 'in_memory/footprint'
    arcpy.conversion.RasterToPolygon(temp_raster, temp_footprint)
    # Regularize building footprints
    arcpy.ddd.RegularizeBuildingFootprint(temp_footprint, footprint, 
                                          method='RIGHT_ANGLES')

except arcpy.ExecuteError:
    print(arcpy.GetMessages())

Rubriques connexes