Horizon (3D Analyst)

Synthèse

Permet de générer une ligne ou une classe d’entités multipatch contenant les résultats d’une analyse de la silhouette ou de l’horizon.

En savoir plus sur le fonctionnement de l’outil Horizon

Illustration

Illustration de l’outil Horizon

Utilisation

  • Cet outil exige que toutes les données en entrée soient dans un système de coordonnées projetées. Une classe d’entités en entrée qui n’est pas dans un système de coordonnées projetées peut être reprojetée à l’aide de l’outil Projeter et une surface raster en entrée peut être reprojetée à l’aide de l’outil Projeter un raster.

  • Le paramètre Segmenter l’horizon permet de déterminer la quantité d’horizon définie par des entités multipatch spécifiques ou la surface d’élévation environnante. Cela permet de savoir si des lieux d’intérêt spécifiques contribuent à la ligne d’horizon d’un point d’observation donné.

  • Cet outil permet de créer des silhouettes d’entités qui peuvent être extrudées dans des volumes d’ombre en utilisant l’outil Barrière d’horizon. Les ombres générées par ce processus sont créées avec un léger décalage à partir de la géométrie des entités en entrée. Vous pouvez également utiliser l’outil Volume d’ombre du soleil pour générer des volumes d’ombre qui s’étendent à partir de la géométrie des entités sur une distance inférieure à la hauteur de l’entité. L’outil Fréquence d’ombre du soleil permet également de projeter sur une surface l’ombre d’une entité 3D causée par le soleil.

  • Les champs suivants sont ajoutés à la valeur du paramètre Output Feature Class (Classe d’entités en sortie) qui contient les horizons :

    • OBSV_PT_ID : FID du point d’observation utilisé pour créer cet horizon
    • ORIGFTR_ID : FID de l’entité (bâtiment, par exemple)
  • Les champs suivants sont ajoutés à la valeur du paramètre Output Feature Class (Classe d’entités en sortie) qui contient les silhouettes :

    • OBSV_PT_ID : FID du point d’observation utilisé pour créer cette silhouette
    • ORIGFTR_ID : FID de l’entité d’origine (bâtiment, par exemple) représentée par cette silhouette
    • DIR_VECT_X : composant x du vecteur d’unité représentant la direction des rayons lumineux à partir du point d’observation
    • DIR_VECT_Y : composant y du vecteur d’unité représentant la direction des rayons lumineux à partir du point d’observation
    • DIR_VECT_Z : composant z du vecteur d’unité représentant la direction des rayons lumineux à partir du point d’observation
    • FEAT_CTR_X : composant z du centre de l’enveloppe de l’entité d’origine (par exemple, bâtiment)
    • FEAT_CTR_Y : composant y du centre de l’enveloppe de l’entité
    • FEAT_CTR_Z : composant z du centre de l’enveloppe de l’entité
    • BHND_CTR_X : composant x du centre de l’enveloppe de l’entité, déplacé derrière l’entité
    • BHND_CTR_Y : composant y du centre de l’enveloppe de l’entité, déplacé derrière l’entité
    • BHND_CTR_Z : composant z du centre de l’enveloppe de l’entité, déplacé derrière l’entité
    • USED_PARLL : création ou non de la silhouette à l’aide de rayons lumineux parallèles (1 pour oui, 0 pour non)
    • MADE_VERT : silhouette créée à la verticale ou non, plutôt que perpendiculaire aux rayons lumineux (1 pour oui, 0 pour non)
    • MOVED_BHND : silhouette déplacée ou non derrière l’entité, plutôt que placée au centre (1 pour oui, 0 pour non)
  • La réfraction atmosphérique et la correction de courbure de la Terre ne sont appliquées que lorsque la valeur du paramètre Input Surface (Surface en entrée) est un jeu de données raster. Si la surface est définie par un jeu de données TIN, de MNT ou LAS, utilisez l’un des outils suivants pour exporter les données vers un raster :

Paramètres

ÉtiquetteExplicationType de données
Entités ponctuelles d’observation en entrée

Points 3D représentant les points d’observation. Chaque entité aura sa propre sortie.

Feature Layer
Classe d’entités en sortie

Entités 3D qui seront des lignes représentant l’horizon ou des multipatchs représentant les silhouettes.

Feature Class
Surface en entrée
(Facultatif)

Surface topographique qui permettra de définir l’horizon. Si aucune surface n’est fournie, une surface virtuelle est utilisée, définie par les valeurs des paramètres Virtual Surface Radius (Rayon de surface virtuelle) et Virtual Surface Elevation (Altitude de surface virtuelle).

LAS Dataset Layer; Mosaic Layer; Raster Layer; TIN Layer; Terrain Layer
Rayon de surface virtuelle
(Facultatif)

Rayon de la surface virtuelle qui servira à définir l’horizon si aucune surface en entrée n’est fournie. La valeur par défaut est 1,000 mètres.

Linear Unit
Altitude de surface virtuelle
(Facultatif)

Altitude de la surface virtuelle qui servira à définir l’horizon, au lieu d’une surface réelle. Ce paramètre est ignoré si une surface réelle est fournie. La valeur par défaut est 0.

Linear Unit
Entités en entrée
(Facultatif)

Les entités utilisées pour déterminer l’horizon. Si aucune entité n’est spécifiée, l’horizon se compose uniquement de la ligne d’horizon, telle qu’elle est définie par la surface topographique ou virtuelle.

Feature Layer
Niveau de détail de l’entité
(Facultatif)

Indique le niveau de détail auquel chaque entité est examinée.

  • Détails completsChaque tronçon de l’entité est pris en compte dans l’analyse d’horizon (uniquement les tronçons des triangles et les boucles extérieures sont pris en compte). Cette opération, qui demande beaucoup de temps, est la plus précise. Il s’agit de l’option par défaut.
  • Emprise convexeL’analyse d’horizon utilise le périmètre supérieur de l’enveloppe convexe de l’emprise de chaque entité extrudée à l’altitude du plus haut sommet dans l’entité.
  • EnveloppeL’analyse d’horizon utilise le périmètre de l’enveloppe de l’entité en trois dimensions. Il s’agit de la technique la plus rapide.
String
Azimut de départ
(Facultatif)

La direction à partir de laquelle commencera l’analyse d’horizon.

La valeur est un angle géométrique en degrés dans la plage -360° à 360°. La valeur par défaut est 0°, ce qui correspond au nord. Les valeurs angulaires augmentent dans le sens horaire, de sorte que 90° correspond à l’est, 180° au sud et 270 à l’ouest. De même, -90° correspond à l’ouest, -180° au sud et -270° à l’est. Un champ numérique de la valeur du paramètre Entités ponctuelles d’observation en entrée peut également être utilisé pour fournir une direction de départ différente pour chaque point d’observation. L’analyse se poursuit jusqu’à ce que la valeur du paramètre Azimut de destination soit atteinte.

Double; Field
Azimut de destination
(Facultatif)

Direction dans laquelle l’analyse d’horizon va se terminer.

La valeur est un angle géométrique en degrés dans la plage -360° à 360°. L’analyse démarre au point d’observation et se poursuit vers la droite, à partir de la valeur du paramètre Azimut de départ jusqu’à atteindre la valeur du paramètre Azimut de destination. Cette valeur ne peut pas dévier de plus de 360° par rapport à la valeur du paramètre Azimut de départ. La valeur par défaut est 360°, ce qui correspond au nord.

Ainsi, un azimut de départ de 0° avec un azimut de destination de 360° produira un tour d’horizon complet autour du point d’observation. Un azimut de départ de 90° avec un azimut de destination de 270° couvrira la moitié sud de la plage radiale autour du point d’observation.

Un champ numérique de la valeur du paramètre Entités ponctuelles d’observation en entrée peut être utilisé pour fournir une direction de destination différente pour chaque point d’observation.

Double; Field
Intervalle azimut
(Facultatif)

Intervalle angulaire (en degrés) auquel l’horizon doit être évalué lors de l’analyse d’horizon entre les valeurs des paramètres Azimut de départ et Azimut de destination. La valeur ne doit pas être supérieure à la valeur Azimut de destination moins la valeur Azimut de départ. La valeur par défaut est 1.

Double; Field
Rayon maximum de l’horizon
(Facultatif)

Distance maximale à partir de l’emplacement d’observation à laquelle l’horizon va être recherché. Une valeur nulle indique qu’aucune limite n’est imposée. La valeur par défaut est 0.

Linear Unit
Segmenter l’horizon
(Facultatif)

Indique si la ligne d’horizon obtenue dispose d’une entité pour chaque point d’observation ou si la ligne d’horizon de chaque point d’observation est segmentée par les éléments uniques qui constituent la ligne d’horizon. Ce paramètre est disponible uniquement si une ou plusieurs entités multipatch sont spécifiées pour le paramètre Entités en entrée.

Si des silhouettes sont générées, ce paramètre indique alors si des rayons divergents sont utilisés. Pour les ombres, désactivez ce paramètre.

  • Désactivé : chaque entité de la ligne d’horizon représentera un point d’observation. Il s’agit de l’option par défaut.
  • Activé : la ligne d’horizon de chaque point d’observation sera segmentée par les éléments uniques qui constituent la ligne d’horizon.
Boolean
Mettre à l’échelle en pourcentage
(Facultatif)

Le pourcentage de l’angle vertical d’origine (angle au-dessus de l’horizon ou angle d’altitude) ou de l’altitude d’origine auquel chaque sommet d’horizon va être placé. Si la valeur 0 ou 100 est utilisée, la mise à l’échelle n’a pas lieu. La valeur par défaut est 100.

Double
Mettre à l’échelle selon
(Facultatif)

Indique la manière dont la mise à l’échelle est effectuée.

  • Angle vertical depuis le point d’observationLa mise à l’échelle est effectuée en fonction de l’angle vertical de chaque sommet par rapport au point d’observation. Il s’agit de l’option par défaut.
  • ÉlévationLa mise à l’échelle est effectuée en fonction de l’altitude de chaque sommet par rapport au point d’observation.
String
Méthode de mise à l’échelle
(Facultatif)

Indique le sommet à utiiser pour calculer l’échelle.

  • Ligne d’horizon maximumLes sommets seront mis à l’échelle par rapport à l’angle vertical (ou à l’altitude) du sommet ayant l’angle vertical le plus élevé (ou l’altitude la plus élevée). Il s’agit de l’option par défaut.
  • Chaque sommetLes sommets seront mis à l’échelle par rapport à l’angle vertical original (ou à l’altitude originale) de chaque sommet.
String
Utiliser la courbure
(Facultatif)

Indique si la courbure de la Terre est utilisée lors de la génération de la crête. Ce paramètre est disponible uniquement si une surface raster est spécifiée pour le paramètre Surface en entrée.

  • Désactivé : la courbure de la Terre n’est pas utilisée. Il s’agit de l’option par défaut.
  • Activé : la courbure de la Terre est utilisée.
Boolean
Utiliser la réfraction
(Facultatif)

Indique si la réfraction atmosphérique est appliquée lors de la génération d’une crête à partir d’une surface en entrée. Cette option est disponible uniquement si une surface raster est spécifiée pour le paramètre Input Surface (Surface en entrée).

  • Désactivé : la réfraction atmosphérique n’est pas appliquée. Il s’agit de l’option par défaut.
  • Activé : la réfraction atmosphérique est appliquée.
Boolean
Facteur de réfraction
(Facultatif)

Coefficient de réfraction à utiliser si la réfraction atmosphérique est appliquée. La valeur par défaut est 0.13.

Double
Résolution des niveaux de pyramide
(Facultatif)

Résolution de taille de fenêtre ou de tolérance z du niveau de pyramide de MNT qui sera utilisée. La valeur par défaut est 0 (ou résolution maximale).

Double
Créer des silhouettes
(Facultatif)

Indique si les entités en sortie représentent des lignes d’horizon définissant la barrière entre les données en entrée et le ciel ouvert ou les silhouettes représentant la façade des entités en entrée observables. Cette option est disponible uniquement si une ou plusieurs entités multipatch sont spécifiées pour le paramètre Entités en entrée.

  • Désactivé : les entités polylignes en sortie représenteront l’horizon. Il s’agit de l’option par défaut.
  • Activé : les entités multipatch en sortie représenteront les silhouettes.
Boolean
Appliquer un rayon maximal aux entités
(Facultatif)

Spécifie si la valeur du paramètre Rayon maximum de l’horizon sera appliquée aux entités en entrée.

  • Désactivé : le rayon ne s’appliquera pas aux entités en entrée. Il s’agit de l’option par défaut.
  • Activé : le rayon s’appliquera aux entités en entrée.
Boolean

arcpy.ddd.Skyline(in_observer_point_features, out_feature_class, {in_surface}, {virtual_surface_radius}, {virtual_surface_elevation}, {in_features}, {feature_lod}, {from_azimuth_value_or_field}, {to_azimuth_value_or_field}, {azimuth_increment_value_or_field}, {max_horizon_radius}, {segment_skyline}, {scale_to_percent}, {scale_according_to}, {scale_method}, {use_curvature}, {use_refraction}, {refraction_factor}, {pyramid_level_resolution}, {create_silhouettes}, {apply_max_radius_to_features})
NomExplicationType de données
in_observer_point_features

Points 3D représentant les points d’observation. Chaque entité aura sa propre sortie.

Feature Layer
out_feature_class

Entités 3D qui seront des lignes représentant l’horizon ou des multipatchs représentant les silhouettes.

Feature Class
in_surface
(Facultatif)

Surface topographique qui permettra de définir l’horizon. Si aucune surface n’est fournie, une surface virtuelle est utilisée, définie par les valeurs des paramètres virtual_surface_radius et virtual_surface_elevation.

LAS Dataset Layer; Mosaic Layer; Raster Layer; TIN Layer; Terrain Layer
virtual_surface_radius
(Facultatif)

Rayon de la surface virtuelle qui servira à définir l’horizon si aucune surface en entrée n’est fournie. La valeur par défaut est 1,000 mètres.

Linear Unit
virtual_surface_elevation
(Facultatif)

Altitude de la surface virtuelle qui servira à définir l’horizon, au lieu d’une surface réelle. Ce paramètre est ignoré si une surface réelle est fournie. La valeur par défaut est 0.

Linear Unit
in_features
[in_features,...]
(Facultatif)

Les entités utilisées pour déterminer l’horizon. Si aucune entité n’est spécifiée, l’horizon se compose uniquement de la ligne d’horizon, telle qu’elle est définie par la surface topographique ou virtuelle.

Feature Layer
feature_lod
(Facultatif)

Indique le niveau de détail auquel chaque entité est examinée.

  • FULL_DETAILChaque tronçon de l’entité est pris en compte dans l’analyse d’horizon (uniquement les tronçons des triangles et les boucles extérieures sont pris en compte). Cette opération, qui demande beaucoup de temps, est la plus précise. Il s’agit de l’option par défaut.
  • CONVEX_FOOTPRINTL’analyse d’horizon utilise le périmètre supérieur de l’enveloppe convexe de l’emprise de chaque entité extrudée à l’altitude du plus haut sommet dans l’entité.
  • ENVELOPEL’analyse d’horizon utilise le périmètre de l’enveloppe de l’entité en trois dimensions. Il s’agit de la technique la plus rapide.
String
from_azimuth_value_or_field
(Facultatif)

La direction à partir de laquelle commencera l’analyse d’horizon.

La valeur est un angle géométrique en degrés dans la plage -360° à 360°. La valeur par défaut est 0°, ce qui correspond au nord. Les valeurs angulaires augmentent dans le sens horaire, de sorte que 90° correspond à l’est, 180° au sud et 270 à l’ouest. Les valeurs angulaires augmentent dans le sens horaire, de sorte que 90° correspond à l’est, 180° au sud et 270 à l’ouest. Un champ numérique de la valeur du paramètre in_observer_point_features peut également être utilisé pour fournir une direction de départ différente pour chaque point d’observation. L’analyse se poursuit jusqu’à ce que la valeur du paramètre to_azimuth_value_or_field soit atteinte.

Double; Field
to_azimuth_value_or_field
(Facultatif)

Direction dans laquelle l’analyse d’horizon va se terminer.

La valeur est un angle géométrique en degrés pouvant être exprimé par n’importe quel nombre compris dans la plage allant de -360° à 360°. L’analyse démarre au point d’observation et s’incrémente en partant de la valeur du paramètre from_azimuth_value_or_field jusqu’à atteindre la valeur du paramètre to_azimuth_value_or_field. Cette valeur ne peut pas dévier de plus de 360° par rapport à la valeur du paramètre from_azimuth_value_or_field. La valeur par défaut est 360°, ce qui correspond au nord.

Ainsi, un azimut de départ de 0° avec un azimut de destination de 360° produira un tour d’horizon complet autour du point d’observation. Un azimut de départ de 90° avec un azimut de destination de 270° couvrira la moitié sud de la plage radiale autour du point d’observation.

Un champ numérique de la valeur du paramètre in_observer_point_features peut également être utilisé pour fournir une direction de destination différente pour chaque point d’observation.

Double; Field
azimuth_increment_value_or_field
(Facultatif)

Intervalle angulaire (en degrés) auquel l’horizon va être évalué lors de l’analyse d’horizon entre les valeurs des paramètres from_azimuth_value_or_field et to_azimuth_value_or_field. La valeur ne doit pas être supérieure à la valeur to_azimuth_value_or_field moins la valeur from_azimuth_value_or_field. La valeur par défaut est 1.

Double; Field
max_horizon_radius
(Facultatif)

Distance maximale à partir de l’emplacement d’observation à laquelle l’horizon va être recherché. Une valeur nulle indique qu’aucune limite n’est imposée. La valeur par défaut est 0.

Linear Unit
segment_skyline
(Facultatif)

Indique si la ligne d’horizon obtenue dispose d’une entité pour chaque point d’observation ou si la ligne d’horizon de chaque point d’observation est segmentée par les éléments uniques qui constituent la ligne d’horizon. Ce paramètre est disponible uniquement si des entités multipatch sont spécifiées pour le paramètre in_features.

Si des silhouettes sont générées, ce paramètre indique alors si des rayons divergents sont utilisés. Pour les ombres du soleil, utilisez l’option NO_SEGMENT_SKYLINE.

  • NO_SEGMENT_SKYLINEChaque entité de la ligne d’horizon représentera un point d’observation. Il s’agit de l’option par défaut.
  • SEGMENT_SKYLINELa ligne d’horizon de chaque point d’observation sera segmentée par les éléments uniques qui constituent la ligne d’horizon.
Boolean
scale_to_percent
(Facultatif)

Le pourcentage de l’angle vertical d’origine (angle au-dessus de l’horizon ou angle d’altitude) ou de l’altitude d’origine auquel chaque sommet d’horizon va être placé. Si la valeur 0 ou 100 est utilisée, la mise à l’échelle n’a pas lieu. La valeur par défaut est 100.

Double
scale_according_to
(Facultatif)

Indique la manière dont la mise à l’échelle est effectuée.

  • VERTICAL_ANGLELa mise à l’échelle est effectuée en fonction de l’angle vertical de chaque sommet par rapport au point d’observation. Il s’agit de l’option par défaut.
  • ELEVATIONLa mise à l’échelle est effectuée en fonction de l’altitude de chaque sommet par rapport au point d’observation.
String
scale_method
(Facultatif)

Indique le sommet à utiiser pour calculer l’échelle.

  • SKYLINE_MAXIMUMLes sommets seront mis à l’échelle par rapport à l’angle vertical (ou à l’altitude) du sommet ayant l’angle vertical le plus élevé (ou l’altitude la plus élevée). Il s’agit de l’option par défaut.
  • EACH_VERTEXLes sommets seront mis à l’échelle par rapport à l’angle vertical original (ou à l’altitude originale) de chaque sommet.
String
use_curvature
(Facultatif)

Indique si la courbure de la Terre est utilisée lors de la génération de la crête à partir d’une surface fonctionnelle. Ce paramètre est disponible uniquement si une surface raster est spécifiée pour le paramètre in_surface.

  • CURVATURELa courbure de la Terre est utilisée.
  • NO_CURVATURELa courbure de la Terre n’est pas utilisée. Il s’agit de l’option par défaut.
Boolean
use_refraction
(Facultatif)

Indique si la réfraction atmosphérique est appliquée lors de la génération d’une crête à partir d’une surface fonctionnelle. Cette option est disponible uniquement si une surface raster est spécifiée pour le paramètre in_surface.

  • NO_REFRACTIONLa réfraction atmosphérique n’est pas appliquée. Il s’agit de l’option par défaut.
  • REFRACTIONLa réfraction atmosphérique est appliquée.
Boolean
refraction_factor
(Facultatif)

Coefficient de réfraction à utiliser si la réfraction atmosphérique est appliquée. La valeur par défaut est 0.13.

Double
pyramid_level_resolution
(Facultatif)

Résolution de taille de fenêtre ou de tolérance z du niveau de pyramide de MNT qui sera utilisée. La valeur par défaut est 0 (ou résolution maximale).

Double
create_silhouettes
(Facultatif)

Indique si les entités en sortie représentent des lignes d’horizon définissant la barrière entre les données en entrée et le ciel ouvert ou les silhouettes représentant la façade des entités en entrée observables. Cette option est disponible uniquement si une ou plusieurs entités multipatch sont spécifiées pour le paramètre in_features.

  • NO_CREATE_SILHOUETTESLes entités polylignes en sortie représenteront l’horizon. Il s’agit de l’option par défaut.
  • CREATE_SILHOUETTESLes entités multipatch en sortie représenteront les silhouettes.
Boolean
apply_max_radius_to_features
(Facultatif)

Spécifie si la valeur du paramètre max_horizon_radius sera appliquée aux entités en entrée.

  • NO_APPLY_MAX_RADIUS_TO_FEATURESLe rayon ne s’appliquera pas aux entités en entrée. Il s’agit de l’option par défaut.
  • APPLY_MAX_RADIUS_TO_FEATURESLe rayon s’appliquera aux entités en entrée.
Boolean

Exemple de code

1er exemple d’utilisation de l’outil Skyline (fenêtre Python)

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

arcpy.env.workspace = "C:/data"
arcpy.ddd.Skyline("observers.shp", "skyline_output.shp", "sample.gdb/featuredataset/terrain")
2e exemple d’utilisation de l’outil Skyline (script autonome)

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

'''****************************************************************************
Name: Skyline Example
Description: This script demonstrates how to use the 
             Skyline tool.
****************************************************************************'''
# Import system modules
import arcpy

# Set environment settings
arcpy.env.workspace = 'C:/data'

# Set Local Variables
inPts = "observers.shp"

# Make sure output has a unique name
outFC = arcpy.CreateUniqueName("skyline_output.shp")
inSurface = "sample.gdb/featuredataset/terrain"
obstructionFCs = "buildings.shp; billboards.shp"
surfRad = "1000 meters"
surfElev = "100 meters"
LOD = "FULL_DETAIL"
fromAzim = 0
toAzim = 360
incAzim = 1
maxHorizRad = 0
segSky = "SEGMENT_SKYLINE"
scale = 100
scaleAcc = "ELEVATION"
scaleMethod = "SKYLINE_MAXIMUM"

# Execute Skyline
arcpy.ddd.Skyline(inPts, outFC, inSurface, surfRad, surfElev, 
                  obstructionFCs, LOD, fromAzim, toAzim, incAzim, 
                  maxHorizRad, segSky, scale, scaleAcc, scaleMethod)

Rubriques connexes