Ligne de visée (3D Analyst)
Récapitulatif
Détermine la visibilité de lignes de visée sur une surface définie par un jeu de données multipatch, raster, TIN, de MNT ou LAS.
Utilisation
-
Seules les extrémités de la ligne en entrée sont utilisées pour définir le point d'observation et la cible. Idéalement, les lignes de visée doivent être simples, les lignes droites composées de deux sommets représentant le point d'observation et l'emplacement cible en fonction duquel la visibilité est déterminée.
Si l'emplacement d'observation est identifié par des entités ponctuelles et que les emplacements cible résident dans une classe d'entités différente, reportez-vous à la rubrique Construire des lignes de visée pour générer une entrée pour cet outil.
Vous pouvez spécifier l'entité ponctuelle d'obstruction facultative pour identifier l'emplacement du premier obstacle bloquant la visibilité de la cible pour chaque ligne.
La table attributaire de l'entité linéaire en sortie contient les champs suivants :
- SourceOID - ID unique de l'entité linéaire utilisé pour calculer la visibilité.
- 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 - ID unique du multipatch qui bloque 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 égale à -9999.
Syntaxe
Paramètre | Explication | Type de données |
in_surface |
Jeu de données raster, TIN, de MNT ou LAS qui définit la surface utilisée dans le calcul de la visibilité. | Raster Layer; Terrain Layer; TIN Layer |
in_line_feature_class |
Entités linéaires dont le premier sommet définit le point d'observation et le dernier l'emplacement cible. La hauteur des emplacements d'observation et cible est obtenue à partir des valeurs z des entités 3D et interpolée à partir de la surface des entités 2D. Les lignes 2D sont également décalées d'une unité, laquelle est ajoutée à leur altitude pour élever les points au-dessus de la surface. Si l'entité contient un champ OffsetA, sa valeur est ajoutée à la hauteur du point d'observation. Si l'entité contient un champ OffsetB, sa valeur est ajoutée à la hauteur de la position cible. | 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 ponctuelles facultative identifiant l'emplacement de la première obstruction vers sa cible sur la ligne de visée du point d'observation. | 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 (ou résolution maximale). | Double |
in_features (Facultatif) |
Classe d'entités multipatch facultative qui peut définir des éléments obstruants supplémentaires, tels que les bâtiments. | Feature Layer |
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.LineOfSight_3d("tin", "line.shp", "los.shp", "buldings_multipatch.shp",
"obstruction.shp")
L'exemple suivant illustre l'utilisation de cet outil dans un script Python 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)