Résumé
Détermine la visibilité des lignes de visée sur les obstructions constituées d’une surface et d’un jeu de données multipatch facultatif.
Illustration
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. Les lignes de visée doivent être des lignes droites composées de deux sommets représentant le point d'observation et l'emplacement cible pour lequel la visibilité est déterminée.
Envisagez de créer des lignes de visée à l'aide de l'outil Construire des lignes de visée si l'emplacement du point d'observation est identifié par des entités ponctuelles et que les cibles de visibilité se trouvent dans une classe d'entités différente.
Les lignes en sortie sont divisées le long des parties visibles et invisibles de la ligne de visée en entrée. Si une seule surface est utilisée pour déterminer la visibilité de la ligne de visée, les lignes en sortie suivent le profil de la surface. Si une entité multipatch est fournie lors du calcul de la ligne de visée, les lignes en sortie suivent la trajectoire des lignes de visée en sortie.
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
arcpy.ddd.LineOfSight(in_surface, in_line_feature_class, out_los_feature_class, {out_obstruction_feature_class}, {use_curvature}, {use_refraction}, {refraction_factor}, {pyramid_level_resolution}, {in_features})
Paramètre | Explication | Type de données |
in_surface | Jeu de données LAS, raster, TIN ou surface MNT utilisé pour définir la visibilité. | LAS Dataset Layer; Mosaic Layer; 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. 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. Cette option ne s'applique pas si des entités multipatch sont utilisées.
| 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 de taille de fenêtre ou de tolérance z du niveau de pyramide de MNT qui sera utilisée par cet outil. La valeur par défaut est 0 (ou résolution maximale). | Double |
in_features (Facultatif) | Une entité multipatch qui peut définir des éléments obstruants supplémentaires, tels que des bâtiments. Les options de réfraction ne sont pas respectées pour cette entrée. | Feature Layer |
Exemple de code
1er exemple d'utilisation de l'outil LineOfSight (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.LineOfSight_3d("tin", "line.shp", "los.shp", "buldings_multipatch.shp",
"obstruction.shp")
2e exemple d'utilisation de l'outil LineOfSight (script autonome)
L'exemple suivant illustre l'utilisation de cet outil dans un script Python autonome.
'''*********************************************************************
Name: Sight Line Visibility of Parade Path
Description: This script demonstrates how to create a sight line feature class
from a pair of observer and target points.
*********************************************************************'''
# Import system modules
import arcpy
import exceptions, sys, traceback
from arcpy import env
try:
# Checking out 3D Analyst Extension:
arcpy.CheckOutExtension('3D')
# Set Local Variables:
env.workspace = 'C:/data'
# Setting up input and output variables:
obs = "observer_pts.shp"
tar = "parade_path.shp"
sightlines = "output_sightlines.shp"
height = "<None>"
join_field = "#"
sampling = 0.5
direction = "OUTPUT_THE_DIRECTION"
surface = 'elevation.tif'
bldgs = 'buildings.shp'
arcpy.AddMessage("Building sightlines...")
arcpy.ddd.ConstructSightLines(obs, tar, sightlines, height, height,
join_field, sampling, direction)
arcpy.ddd.LineOfSight(surface, sightlines, "Parade_LOS.shp",
"Obstructions.shp", in_features=bldgs)
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)
Environnements
- Espace de travail courant
- Étendue
- Système de coordonnées en sortie
- Transformations géographiques
- Résolution XY
- Tolérance XY
- Domaine XY en sortie
- Résolution Z
- Tolérance Z
- Domaine Z en sortie
- Mot-clé CONFIG en sortie
- Validation automatique
- Grille spatiale 1 en sortie
- Grille spatiale 2 en sortie
- Grille spatiale 3 en sortie
- Utilisation de la mémoire de terrain
Informations de licence
- Basic: Requiert 3D Analyst
- Standard: Requiert 3D Analyst
- Advanced: Requiert 3D Analyst