Proche-3D (3D Analyst)
Récapitulatif
Calcule la distance tridimensionnelle entre chaque entité en entrée et l'entité la plus proche résidant dans l'une ou plusieurs des classes d'entités de proximité.
Utilisation
Tous les types de géométrie sont pris en charge, et toutes les classes d'entités en entrée doivent comporter des valeurs Z.
Les Entités de proximité peuvent comprendre une ou plusieurs classes d'entités ayant des types de forme différents.
Un même jeu de données peut être utilisé pour les Entités de proximité et les Entités en entrée. Lorsque l'Entité de proximité la plus proche d'une entité en entrée est elle-même (la distance est égale à 0), cette entité est ignorée et la prochaine entité la plus proche est recherchée.
La principale différence entre les outils Proche et Proche-3D réside dans le fait que l'outil Proche-3D fonctionne avec des entités 3D au lieu d'entités 2D. En outre, les distances comparées par l'outil Proche-3D sont les distances 3D (pente), plutôt que les distances horizontales. Plusieurs champs supplémentaires peuvent être générés également.
Les champs d'angle sont créés et renseignés uniquement si l'option Angle est activée.
Les champs suivants sont ajoutés à la table attributaire de l'entité en entrée :
- NEAR_FID - FID de l'entité Proche la plus proche.
- NEAR_DIST - Distance 2D (horizontale) entre le point le plus proche d'une entité en entrée et le point le plus proche de l'entité Proche la plus proche.
- NEAR_DIST3 - Distance 3D (distance de la pente) entre le point le plus proche d'une entité en entrée et le point le plus proche de l'entité Proche la plus proche.
- NEAR_DELTX - Distance le long de l'axe X du point le plus proche sur l'entité en entrée au point le plus proche sur l'entité Proche la plus proche.
- NEAR_DELTY - Distance le long de l'axe Y du point le plus proche sur l'entité en entrée au point le plus proche sur l'entité Proche la plus proche.
- NEAR_DELTZ - Distance le long de l'axe Z du point le plus proche sur l'entité en entrée au point le plus proche sur l'entité Proche la plus proche.
- NEAR_FROMX - Coordonnée X du point le plus proche sur l'entité en entrée la plus proche du point le plus proche sur l'entité Proche la plus proche.
- NEAR_FROMY - Coordonnée Y du point le plus proche sur l'entité en entrée la plus proche du point le plus proche sur l'entité Proche la plus proche.
- NEAR_FROMZ - Coordonnée Z du point le plus proche sur l'entité en entrée la plus proche du point le plus proche sur l'entité Proche la plus proche.
- NEAR_X - Coordonnée X du point le plus proche sur l'entité Proche la plus proche ou du point imaginaire le plus proche le long de l'entité Proche la plus proche.
- NEAR_Y - Coordonnée Y du point le plus proche sur l'entité Proche la plus proche ou du point imaginaire le plus proche le long de l'entité Proche la plus proche.
- NEAR_Z - Coordonnée Z du point le plus proche sur l'entité Proche la plus proche ou du point imaginaire le plus proche le long de l'entité Proche la plus proche.
- NEAR_ANG_H - Angle géographique horizontal (azimutal nord), en degrés, entre le point le plus proche sur l'entité en entrée et le point le plus proche sur l'entité Proche la plus proche. Il s'agit du même système que celui utilisé par l'ancien outil Proche ; il ne s'agit pas d'un azimut ni d'un relèvement. Les angles sont à 0° plein est ; 45° au nord-est ; 90° plein nord ; -90° plein sud ; et 180° ou -180° plein ouest. Cette valeur ignore l'altitude.
- NEAR_ANG_V - Angle vertical (angle d'altitude), en degrés, du point le plus proche sur l'entité en entrée au point le plus proche sur l'entité Proche la plus proche. Les angles sont 0° à l'horizontale ; 90° tout droit vers le haut ; -90° tout droit vers le bas ; et 10° vers le haut à 10° au-dessus de l'horizontale.
- NEAR_FC - Chemin d'accès de la classe d'entités qui contient l'entité Proche la plus proche. Ce champ est ajouté uniquement lorsque plusieurs entités de proximité sont spécifiées.
Si les champs susmentionnés existent déjà, leur valeur est mise à jour.
Les valeurs de NEAR_FID, NEAR_DIST et NEAR_DIST3 s'élèvent à -1 si aucune correspondance n'est trouvée dans le rayon de recherche.
Les champs NEAR_DELTX, NEAR_DELTY et NEAR_DELTZ sont créés et renseignés uniquement si l'option Delta est activée.
Les champs NEAR_FROMX, NEAR_FROMY, NEAR_FROMZ, NEAR_X, NEAR_Y et NEAR_Z sont créés et renseignés uniquement si la case Emplacement est cochée.
Cet outil est un opérateur 3D qui fournit des fonctions analytiques sur les entités 3D. Pour plus d'informations sur les opérateurs de jeu à utiliser et sur la manière de les utiliser, reportez-vous à la rubrique Utilisation d'opérateurs de jeu 3D.
Syntaxe
Paramètre | Explication | Type de données |
in_features |
Classe d'entités en entrée dont les entités reçoivent les informations relatives à l'entité la plus proche. | Feature Layer |
near_features |
La ou les entités dont la proximité vis-à-vis des entités en entrée est calculée. Si plusieurs classes d'entités sont spécifiées, un champ supplémentaire nommé NEAR_FC est ajouté à la classe d'entités afin d'identifier la classe d'entités proche contenant l'entité la plus proche. | Feature Layer |
search_radius (Facultatif) |
La distance maximale entre les entités en entrée et les entités de proximité pour lesquelles la distance et le champ FID sont déterminés. Si aucun rayon de recherche n'est spécifié, toutes les entités de proximité sont utilisées. | Linear Unit |
location (Facultatif) |
Détermine si six champs de coordonnées (deux ensembles de valeurs XYZ) sont ajoutés à chaque entité en entrée. Les valeurs correspondent aux trois coordonnées de l'entité en entrée (NEAR_FROMX, NEAR_FROMY, NEAR_FROMZ) et aux trois coordonnées de l'entité la plus proche (NEAR_X, NEAR_Y, NEAR_Z). Les champs NEAR_FID et NEAR_DIST sont toujours ajoutés, indépendamment de l'option Emplacement.
| Boolean |
angle (Facultatif) |
Détermine si les angles entre l'entité en entrée et l'entité de proximité la plus proche sont calculés et stockés dans les champs NEAR_ANG_H et NEAR_ANG_V. Les valeurs des deux angles sont mesurées en degrés, où un degré représente 1/360e d'un cercle, et les fractions d'un degré sont représentées sous forme de valeurs décimales. Les angles horizontaux sont mesurés de 180° à -180° ; 0° à l'est, 90° au nord, 180° (-180°) à l'ouest et -90° au sud. Les angles verticaux équivalent à 0 pour l'horizontale, 90° pour la ligne droite vers le haut et -90° pour la ligne droite vers le bas.
| Boolean |
delta (Facultatif) |
Détermine si les distances le long des principaux axes entre l'entité en entrée et l'entité de proximité la plus proche sont calculées et stockées dans les champs NEAR_DELTX, NEAR_DELTY et NEAR_DELTZ.
| Boolean |
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.Near3D_3d("points_3D.shp", "buildings_multipatch.shp", "30", "LOCATION", "ANGLE", "DELTA")
L'exemple suivant illustre l'utilisation de cet outil dans un script Python autonome :
'''****************************************************************************
Name: Near 3D Example
Description: This script demonstrates how to use
the Near 3D tool to identify the nearest z-aware features
that satisfy the results from a queried feature.
****************************************************************************'''
# 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
inFC = 'homes.shp'
nearFC = 'radiotowers.shp'
# See the 'Building an SQL expression' topic for more information
# Query the field 'MATERIAL' for the string 'Reinforced Concrete'
SQL_Expression = "'"'MATERIAL'"' = 'Reinforced Concrete'"
#Execute Make Feature Layer
arcpy.MakeFeatureLayer_management(nearFC, 'Near Layer', SQL_Expression)
result = arcpy.GetCount_management('Near Layer')
if int(result.getOutput(0)) == 0:
arcpy.AddMessage('{0} has no features that satisfy the query: {1}'\
.format(nearFC, SQL_Expression))
else:
#Execute Near3D
arcpy.Near3D_3d(inFC, 'nearLayer', '', 'LOCATION', 'ANGLE')
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)