Résumé
Crée des entités linéaires représentant des lignes de visée d'un ou plusieurs points d'observation vers les entités d'une classe d'entités cible.
Illustration
Utilisation
Les lignes de visée sont échantillonnées à partir du périmètre de lignes et polygones cibles selon la valeur spécifiée dans le paramètre Distance d’échantillonnage. La Distance d'échantillonnage doit être précisée avec les unités x-y de la classe d'entités en sortie.
Un champ de jointure permet de spécifier une ou plusieurs cibles pour un point d'observation donné. Si aucun champ de jointure n'est utilisé, tous les points sont connectés à toutes les cibles.
Une sortie tridimensionnelle est générée si une source hauteurs est spécifiée pour les entités d'observation et cible. La source hauteurs du point d'observation et les entités cible sont par défaut le premier nom de champ de cette liste :
- Shape.Z (uniquement disponible pour les entités prenant en charge les valeurs Z)
- Spot
- Z
- Z_Value
- Height
- Elev
- Elevation
- Contour
Si aucun champ de hauteur approprié n'existe, le mot-clé <Aucun> est utilisé par défaut pour indiquer que les entités ne présentent aucune valeur Z.
Si le champ de hauteur souhaité n'a pas une plus grande priorité dans la sélection de champ par défaut, le champ souhaité doit être spécifié explicitement. De même, si un champ de hauteur n'est pas requis alors que la classe d'entités comporte l'un des champs dans la liste de sélection par défaut, le mot-clé <Aucun> doit être spécifié.
Les champs suivants sont ajoutés à la classe d'entités en sortie qui contient les lignes de visée :
- OID_OBSERV : OID du point d’observation
- OID_TARGET : OID de l’entité cible
- DIST_ALONG : distance le long de l’entité cible s’il s’agit d’une ligne ou d’un polygone
Lorsque le paramètre Générer la direction est activé, les lignes de visée en sortie ont deux champs attributaires supplémentaires :
- AZIMUTH : degrés à partir du plein nord où les valeurs augmentent dans le sens horaire
- VERT_ANGLE : angle vertical, exprimé en degrés, à partir de l’horizon, où 90° est directement au-dessus de la tête et -90° directement en dessous. L'angle vertical est pertinent uniquement si un champ hauteur est spécifié.
Syntaxe
arcpy.ddd.ConstructSightLines(in_observer_points, in_target_features, out_line_feature_class, {observer_height_field}, {target_height_field}, {join_field}, {sample_distance}, {output_the_direction})
Paramètre | Explication | Type de données |
in_observer_points | Entités points uniques qui représentent des points d'observation. Les entités multi-points ne sont pas prises en charge. | Feature Layer |
in_target_features | Entités cible (points, multi-points, lignes et polygones). | Feature Layer |
out_line_feature_class | Classe d'entités en sortie contenant les lignes de visée. | Feature Class |
observer_height_field (Facultatif) | Source des valeurs de hauteur pour les points d'observation obtenus à partir de la table attributaire. Un champ Champ de hauteur de l'observateur par défaut est sélectionné parmi les options répertoriées ci-dessous par ordre de priorité. Si plusieurs champs existent, et si le champ requis n'a pas de plus grande priorité dans la sélection de champ par défaut, le champ requis doit être spécifié.
| String |
target_height_field (Facultatif) | Champ de hauteur pour la cible. Un champ Champ de hauteur cible par défaut est sélectionné parmi les options répertoriées ci-dessous par ordre de priorité. Si plusieurs champs existent, et si le champ requis n'a pas de plus grande priorité dans la sélection de champ par défaut, le champ requis doit être spécifié.
| String |
join_field (Facultatif) | Le champ de jointure est utilisé pour la correspondance des points d'observation avec des cibles spécifiques.
| String |
sample_distance (Facultatif) | Distance entre les échantillons lorsque la cible est une classe d'entités linéaires ou surfaciques. Les unités Distance d'échantillonnage sont interprétées dans les unités XY de la classe d'entités en sortie. | Double |
output_the_direction (Facultatif) | Ajoute des attributs de direction aux lignes de visée en sortie. Deux champs supplémentaires sont ajoutés et renseignés de manière à indiquer la direction : AZIMUTH et VERT_ANGLE (angle vertical).
| Boolean |
Exemple de code
1er exemple d'utilisation de l'outil ConstructSightLines (fenêtre Python)
L'exemple suivant illustre l'utilisation de cet outil dans la fenêtre Python.
arcpy.CheckOutExtension('3D')
arcpy.env.workspace = 'C:/data'
arcpy.ConstructSightLines_3d('observer_pt.shp', 'target.shp', 'sightlines.shp',
'BASEHEIGHT', 'TOP_HEIGHT', 'NAME', 1)
2e exemple d'utilisation de l'outil ConstructSightLines (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
Informations de licence
- Basic: Requiert 3D Analyst
- Standard: Requiert 3D Analyst
- Advanced: Requiert 3D Analyst