Horizon (3D Analyst)
Récapitulatif
Permet de générer une ligne ou une classe d'entités multipatch contenant les résultats d'une analyse de la silhouette de l'horizon.
Illustration
Utilisation
L'analyse est menée à partir des points d'observation au-dessus d'une surface fonctionnelle ou virtuelle et prend en compte également les entités rencontrées pendant son exécution. Si elle est utilisée avec d'autres outils (en particulier l'outil Barrière d'horizon), il est possible de créer des volumes d'ombre et d'autres entités de ce type.
L'outil Horizon est souvent utilisé conjointement avec l'outil Barrière d'horizon, et parfois avec l'outil Diagramme de ligne d'horizon. D'autres applications de l'outil Horizon sont décrites dans la rubrique Analyse de menaces aux trajectoires et couloirs de vol 3D.
L'outil Horizon permet de créer des silhouettes d'entités qui peuvent être extrudées dans des volumes d'ombre avec l'outil Barrière d'horizon. Pour plus d'informations, consultez la rubrique Fonctionnement de l'outil Horizon+++.
Si les silhouettes d'entités sont générées au lieu d'un horizon, les modalités d'utilisation et la description de certains paramètres seront différentes.
Si aucune entité n'est spécifiée, l'horizon se compose uniquement d'une crête (ligne d'horizon).
Si aucune surface fonctionnelle n'est spécifiée, une surface virtuelle (générée à partir du rayon et de l'altitude fournis) est alors utilisée.
-
Les seuls paramètres requis sont les points d'observation en entrée et la classe d'entités en sortie (l'horizon).
-
Si une ou plusieurs entités sont sélectionnées, seules ces entités sont prises en compte ; sinon, elles sont toutes prises en compte.
Une analyse d'horizon distincte est effectuée pour chaque point d'observation. Une ou plusieurs lignes sont générées pour représenter l'horizon tel qu'il est vu à partir de chaque point d'observation.
La valeur de l'intervalle azimut affecte uniquement la granularité de toute portion de crête de l'horizon, pas la portion de l'horizon qui apparaît le long des entités.
Chaque ligne en sortie a une valeur qui indique le FID de l'entité ponctuelle d'observation utilisée pour créer l'horizon représenté par la ligne.
Pour créer un volume d'ombre d'une ou de plusieurs entités, il est habituellement recommandé de sélectionner la case à cocher Segmenter la ligne d'horizon afin que chaque entité participant à l'horizon ait sa propre polyligne.
Lorsque vous créez un volume d'ombre, vous exécutez habituellement l'outil Horizon avec une seule entité sélectionnée par passage, puis l'outil Barrière d'horizon sur la polyligne spécifique qui représente l'entité.
La géométrie en sortie est une polyligne 3D.
Les champs suivants sont ajoutés à la classe d'entités en sortie qui contient les horizons :
- OID - FID de l'horizon.
- Forme - Géométrie de l'horizon.
- 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 classe d'entités en sortie qui contient les silhouettes :
- FID – Identifiant d'entité de la silhouette.
- Forme - Géométrie de la silhouette.
- 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 X 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).
Syntaxe
Paramètre | Explication | Type de données |
in_observer_point_features |
Points 3D représentant des points d'observation (un horizon distinct est généré pour chacun). | Feature Layer |
out_feature_class |
Classe d'entités linéaires dans laquelle les horizons sont placés. Peut être également une classe d'entités multipatch pour contenir des silhouettes d'entités. | Feature Class |
in_surface (Facultatif) |
Surface fonctionnelle pour la détermination de l'horizon. | LAS Dataset Layer; Raster Layer; TIN Layer; Terrain Layer |
virtual_surface_radius (Facultatif) |
Rayon de la surface virtuelle (au lieu d'une surface réelle) pour la définition de l'horizon. Cette valeur doit être positive. Ignoré si une surface réelle est fournie. La valeur par défaut est 1 000. | Linear Unit |
virtual_surface_elevation (Facultatif) |
Altitude de la surface virtuelle (au lieu d'une surface réelle) pour la définition de l'horizon. Ce paramètre est ignoré si une surface réelle est fournie. La valeur par défaut est 0. | Linear Unit |
in_features (Facultatif) |
Classe d'entités à utiliser dans l'analyse d'horizon. Les entités représentent en général des obstructions (les bâtiments d'une ville, par exemple). | Feature Layer |
feature_lod (Facultatif) |
Niveau de détail auquel chaque entité doit être examinée dans l'analyse d'horizon.
| String |
from_azimuth_value_or_field (Facultatif) |
Azimut (en degrés) à partir duquel les analyses d'horizon doivent être lancées. L'analyse démarre au point d'observation et se poursuit vers la droite, à partir de l'azimut de départ jusqu'à atteindre l'azimut d'arrivée. Doit être supérieur à -360 et inférieur à 360. La valeur par défaut est 0. | Double; Field |
to_azimuth_value_or_field (Facultatif) |
Direction (en degrés) dans laquelle les analyses d'horizon doivent être effectuées. L'analyse démarre au point d'observation et se poursuit vers la droite, à partir de l'azimut de départ jusqu'à atteindre l'azimut d'arrivée. Ne doit pas excéder 360 et être supérieur à l'azimut de départ. La valeur par défaut est 360. | Double; Field |
azimuth_increment_value_or_field (Facultatif) |
Intervalle angulaire (en degrés) auquel l'horizon doit être évalué lors de l'analyse d'horizon entre l'azimut de départ et celui d'arrivée. Ne doit pas excéder l'azimut de départ moins l'azimut d'arrivée. La valeur par défaut est 1. | Double; Field |
max_horizon_radius (Facultatif) |
Distance maximale pour rechercher un horizon à partir de l'emplacement d'observation. Une valeur nulle indique qu'aucune limite ne doit être imposée. La valeur par défaut est 0. | Double |
segment_skyline (Facultatif) |
Au lieu qu'une seule ligne soit générée pour représenter l'horizon de chaque point d'observation, la sortie est fractionnée en plusieurs lignes. Chacune de ces lignes représente une entité différente ou un étirement d'horizon entre entités. Si des silhouettes sont générées, ce paramètre indique alors si des rayons divergents doivent être utilisés. Pour les ombres, ce paramètre doit en général être défini sur aucun ou désactivé.
| Boolean |
scale_to_percent (Facultatif) |
Indique à quel pourcentage de l'angle vertical (angle au-dessus de l'horizon, ou angle d'altitude) ou de l'altitude d'origine chaque sommet d'horizon doit être placé. Si la valeur 0 ou 100 est entrée, aucune mise à l'échelle n'est effectuée. La valeur par défaut est 100. | Double |
scale_according_to (Facultatif) |
Valeurs d'après lesquelles la mise à l'échelle doit être déterminée.
| String |
scale_method (Facultatif) |
Sommet à utiliser pour effectuer le calcul.
| String |
use_curvature (Facultatif) |
Indique si la courbure de la Terre doit être prise en compte lors de la génération de la crête à partir d'une surface fonctionnelle.
| Boolean |
use_refraction (Facultatif) |
Indique si la réfraction atmosphérique doit être prise en compte lors de la génération d'une crête à partir d'une surface fonctionnelle. Si aucune surface réelle n'est spécifiée, le fait d'activer cette case à cocher (ou de transmettre REFRACTION dans Python) a pour effet de créer des silhouettes au lieu d'horizons.
| Boolean |
refraction_factor (Facultatif) |
Si la réfraction atmosphérique est prise en compte, vous devez alors appliquer une valeur scalaire. La valeur par défaut est 0,13. | Double |
pyramid_level_resolution (Facultatif) |
Si un MNT est spécifié pour une surface fonctionnelle, ce paramètre est alors renseigné avec les résolutions résidentes dans le MNT. L'une des résolutions peut être choisie en vue de générer la ligne d'horizon. La valeur par défaut est 0 (ou résolution maximale). | Double |
create_silhouettes (Facultatif) |
Spécifiez si les entités en sortie représenteront des silhouettes visibles à partir du point d'observation.
| Boolean |
Exemple de code
L'exemple suivant illustre l'utilisation de cet outil dans la fenêtre Python :
import arcpy
from arcpy import env
arcpy.CheckOutExtension("3D")
env.workspace = "C:/data"
arcpy.Skyline_3d("observers.shp", "skyline_output.shp", "sample.gdb/featuredataset/terrain")
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
import exceptions, sys, traceback
from arcpy import env
try:
# Obtain a license for the ArcGIS 3D Analyst extension
arcpy.CheckOutExtension('3D')
# Set environment settings
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.Skyline_3d(inPts, outFC, inSurface, surfRad, surfElev,
obstructionFCs, LOD, fromAzim, toAzim, incAzim,
maxHorizRad, segSky, scale, scaleAcc, scaleMethod)
except arcpy.ExecuteError:
print arcpy.GetMessages()
except:
# Get the traceback object
tb = sys.exc_info()[2]
tbinfo = traceback.format_tb(tb)[0]
# Concatenate error information into message string
pymsg = 'PYTHON ERRORS:\nTraceback info:\n{0}\nError Info:\n{1}'\
.format(tbinfo, str(sys.exc_info()[1]))
msgs = 'ArcPy ERRORS:\n {0}\n'.format(arcpy.GetMessages(2))
# Return python error messages for script tool or Python Window
arcpy.AddError(pymsg)
arcpy.AddError(msgs)