Ligne de visée (3D Analyst)
Récapitulatif
Cet outil utilise une classe d'entités polylignes 2D ou 3D en entrée avec une surface de jeu de données de raster, de réseau triangulé irrégulier (TIN) ou de MNT afin de déterminer la visibilité entre les points d'observation et les points cible. Il est possible de fournir une classe d'entités multipatch pour l'analyse de visibilité.
Pour en savoir plus sur la fonction Ligne de visée (3D Analyst)
Utilisation
-
Le point d'observation est le point utilisé pour déterminer la visibilité. La cible est l'extrémité opposée de la ligne, vers laquelle est déterminée la visibilité.
-
Seuls les points de fin de la ligne en entrée sont utilisés pour définir le point d'observation et la cible.
Si une ou plusieurs cibles ne sont pas visibles, l'outil Ligne de visée produit une classe d'entités points en sortie facultative. Cette dernière indique l'emplacement de la première obstruction rencontrée pour chaque ligne dont la cible n'est pas visible.
Produit une classe d'entités linéaires en sortie contenant des informations sur la visibilité des lignes et des cibles.
Les champs suivants sont ajoutés à la classe d'entités en sortie qui contient l'analyse des lignes de visée :
- SourceOID : identifiant d'entité de la ligne de visée d'où provient cette sortie.
- VisCode : visibilité le long de la ligne. Une valeur de 1 indique que la cible est visible, tandis qu'une valeur de 2 indique qu'elle n'est pas visible. Ce champ existe seulement si la géométrie en sortie est une ligne.
- TarIsVis : visibilité cible le long de la ligne. Une valeur de 1 indique que la cible est visible, tandis qu'une valeur de 0 indique qu'elle n'est pas visible. Ce champ existe seulement si la géométrie en sortie est une ligne.
- OBSTR_MPID : OID du multipatch qui obstrue la ligne de visée. Si aucun multipatch n'obstrue la ligne de visée, le champ contient une valeur de -1 ou -9999. Si la cible est obstruée par la surface, la valeur est -1. Si la cible est visible, la valeur est -9999.
Syntaxe
Paramètre | Explication | Type de données |
in_surface |
Surface de MNT, de raster ou de TIN en entrée sur laquelle sont basés les calculs. | TIN Layer; Raster Layer; Terrain Layer |
in_line_feature_class |
Classe d'entités polylignes en entrée sur laquelle la visibilité doit être calculée. Il peut s'agir d'une classe d'entités 2D ou 3D. | Feature Layer |
out_los_feature_class |
Classe d'entités linéaires en sortie sur laquelle la visibilité a été déterminée. Deux champs attributaires sont créés. VisCode indique la visibilité le long de la ligne, 1 signifiant visible et 2 invisible. La valeur TarIsVis indique la visibilité de la cible, 0 signifiant non visible et 1 signifiant visible. | Feature Class |
out_obstruction_feature_class (Facultatif) |
Classe d'entités points en sortie indiquant le premier point d'obstruction le long de la ligne de visée, si la cible n'est pas visible. | Feature Class |
use_curvature (Facultatif) |
Indique si la courbure de la Terre doit être prise en compte lors de l'analyse de la ligne de visée. Pour que cette option soit activée, la surface doit avoir une référence spatiale définie dans des coordonnées projetées avec des unités z définies.
| Boolean |
use_refraction (Facultatif) |
Indique si la réfraction atmosphérique doit être prise en compte lors de la génération d'une ligne de visée à partir d'une surface fonctionnelle.
| Boolean |
refraction_factor (Facultatif) |
Indique la valeur à utiliser comme facteur de réfraction. Le facteur de réfraction par défaut est 0,13. | Double |
pyramid_level_resolution (Facultatif) |
Résolution du niveau de pyramide du jeu de données de MNT à utiliser pour le géotraitement. La valeur par défaut est 0 (résolution maximale). | Double |
in_features (Facultatif) |
Classe d'entités des multipatches qui risquent d'obstruer les lignes de visée. Ce champ est vide par défaut. | Feature Layer |
Exemple de code
Le script de fenêtre Python suivant illustre l'utilisation de la fonction Ligne de visée en mode immédiat.
import arcpy from arcpy import env arcpy.CheckOutExtension("3D") env.workspace = "C:/data" arcpy.LineOfSight_3d("tin", "line.shp", "los.shp", "buldings_multipatch.shp", "obstruction.shp")
Le script Python ci-dessous illustre l'utilisation de la fonction Ligne de visée dans un script autonome.
'''********************************************************************* Name: Sight Line Visibility Description: This script demonstrates how to calculate visibility for sight lines against the obstructions presented by terrain elevation & building models in a multipatch. *********************************************************************''' # Import system modules import arcpy import exceptions, sys, traceback from arcpy import env try: arcpy.CheckOutExtension('3D') # Set Local Variables env.workspace = 'C:/data' obs_pts = "Observers.shp" target = "Observation_Targets.shp" sight_lines = "in_memory/sightlines" surface = "sample.gdb/elevation/terrain" buildings = "city_buildings.shp" outLOS = arcpy.CreateUniqueName("Line_of_Sight.shp") obstruction_pts = arcpy.CreateUniqueName("Obstruction_Points.shp") arcpy.AddMessage("Constructing sight lines...") arcpy.ddd.ConstructSightLines(obs_pts, target, sight_lines) arcpy.AddMessage("Calculating line of sight...") arcpy.ddd.LineOfSight(surface, sight_lines, outLOS, obstruction_pts, "CURVATURE", "REFRACTION", 0.35, 0, buildings) arcpy.GetMessages(0) arcpy.CheckInExtension("3D") 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)