Disponible avec une licence 3D Analyst.
Récapitulatif
Permet de calculer la visibilité du ciel et génère une table et un diagramme polaire en option.
La table et le diagramme représentent les angles horizontaux et verticaux allant du point d'observation jusqu'à chacun des sommets de l'horizon.
Illustration
Utilisation
- Un point d'observation et un horizon (ligne 3D) sont requis en entrée.
- L'azimut et l'angle vertical du point d'observation à chaque sommet sont calculés.
- L'outil renvoie toujours le ratio de ciel visible (entre 0 et 1, par exemple 0,8 si le ciel est visible à 80 %).
- L'outil peut, en option, générer une table d'angles. Si une table est générée, un diagramme polaire peut également être produit.
- L'outil indique toujours le pourcentage de ciel visible dans la fenêtre de résultats (ou dans les informations sur les résultats, si cette fenêtre n'est pas affichée) ainsi que les angles verticaux minimaux et maximaux.
- Si une table est générée, elle contient les lignes de deux nombres (ou plus) à double précision. Chaque ligne contient au moins un angle horizontal arithmétique et un angle zénithal, tous les deux en degrés.
- Si l'option Champs supplémentaires est sélectionnée, des colonnes supplémentaires sont générées et contiennent des informations telles que la source du tronçon qui suit le sommet dans l'horizon (FEATURE_ID), la distance entre le point d'observation et le sommet, et les coordonnées du sommet. (La source peut être le FID de l'entité qui participe à l'horizon ou un code pour indiquer que l'horizon est sur la surface.)
Les champs qui apparaissent toujours dans la table sont les suivants :
- HORIZ_ANG - Angle horizontal.
- ZENITH_ANG - Angle zénithal.
Les champs supplémentaires sont les suivants :
- VERTEX_X – Coordonnée X du sommet.
- VERTEX_Y – Coordonnée Y du sommet.
- VERTEX_Z – Coordonnée Z du sommet.
- DIST_2D - Distance horizontale entre le point d'observation et le sommet.
- DIST_3D - Distance de pente entre le point d'observation et le sommet.
Les champs supplémentaires ne sont pas nécessaires pour la génération du diagramme.
L'angle horizontal arithmétique est égal à 90 moins l'azimut, et l'angle zénithal est égal à 90 moins l'angle vertical. (Un angle horizontal arithmétique égal à 0 est plein est, et égal à 90, plein nord. Un angle zénithal égal à 90 est horizontal, et égal à 0, tout droit vers le haut.)
- Le diagramme facultatif est un diagramme polaire. Il s'affiche comme si l'horizon (polyligne 3D) avait été projeté sur la surface d'une sphère et comme si le point d'observation avait une vue plongeante sur le centre de la sphère (le centre de la sphère est situé au point d'observation).
- Le diagramme polaire est linéaire lorsque l'on s'éloigne de son centre, ce qui signifie que l'anneau/le cercle qui représente l'équateur fait deux fois le rayon de l'anneau qui représente un angle d'altitude de 45 degrés, en supposant que le centre du diagramme représente un angle d'altitude de 90 degrés (angle zénithal de zéro).
- Le pourcentage de ciel visible est toujours répertorié dans les résultats. Cette valeur est égale à la surface au-dessus de l'horizon, divisée par la surface au-dessus de l'angle visible de base (l'un des paramètres, ayant zéro comme valeur par défaut, signifiant à la même altitude que le point d'observation), et est calculée uniquement dans la plage d'azimuts de l'horizon.
Le diagramme ne s'affiche que si l'outil est exécuté dans ArcMap, ArcGlobe ou ArcScene.
Syntaxe
SkylineGraph_3d (in_observer_point_features, in_line_features, {base_visibility_angle}, {additional_fields}, {out_angles_table}, {out_graph})
Paramètre | Explication | Type de données |
in_observer_point_features | Entités en entrée contenant un ou plusieurs points d'observation. | Feature Layer |
in_line_features | Classe d'entités linéaires représentant l'horizon. | Feature Layer |
base_visibility_angle (Facultatif) | Angle vertical utilisé en tant que ligne de base pour calculer le pourcentage de ciel visible (0 signifiant l'horizon, 90 signifiant tout droit vers le haut, -90 signifiant tout droit vers le bas). La valeur par défaut est 0. | Double |
additional_fields (Facultatif) | Détermine si des champs supplémentaires doivent être ajoutés ou non à la table et pas seulement les deux valeurs d'angle.
| Boolean |
out_angles_table (Facultatif) | Table à créer pour générer les angles. La valeur par défaut est vide, ce qui signifie aucune table. | Table |
out_graph (Facultatif) | Nom du diagramme facultatif. Une table doit être créée pour que le diagramme puisse être créé. Le diagramme sera affiché et pourra être enregistré et/ou modifié. La valeur par défaut est vide, ce qui signifie aucun diagramme. | Graph |
Exemple de code
1er exemple d'utilisation de l'outil SkylineGraph (fenêtre Python)
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.SkylineGraph_3d("observers.shp", "skyline_outline.shp", 0, "ADDITIONAL_FIELDS", "table.dbf")
2e exemple d'utilisation de l'outil SkylineGraph (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
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"
inLines = "skyline_outline.shp"
baseVisibility = 25
# Ensure output table has unique name
outTable = arcpy.CreateUniqueName("angles_table.dbf")
#Execute SkylineGraph
arcpy.SkylineGraph_3d(inPts, inLines, 0, "ADDITIONAL_FIELDS", outTable)
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)
Environnements
Informations de licence
- ArcGIS for Desktop Basic: Requis 3D Analyst
- ArcGIS for Desktop Standard: Requis 3D Analyst
- ArcGIS for Desktop Advanced: Requis 3D Analyst