Diagramme de ligne d'horizon (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.
L'option de diagramme affiche seulement un diagramme avec une installation ArcGIS Desktop.
Syntaxe
Paramètre | Explication | Type de données |
in_observer_point_features |
The input features containing one or more observer points. | 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
The following sample demonstrates the use of this tool in the Python window:
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")
The following sample demonstrates the use of this tool in a stand-alone Python script:
'''**************************************************************************** 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)