Intersection ligne 3D avec multipatchs (3D Analyst)
Récapitulatif
Détermine et renvoie le nombre d'intersections géométriques entre les entités linéaires et multipatch. Les entités ponctuelles représentant l'intersection et les entités linéaires représentant les lignes en entrée divisées au niveau de ces points peuvent éventuellement être enregistrées dans les classes d'entités en sortie.
Illustration
Utilisation
-
Les entités linéaires 2D ne sont pas prises en charge par cet outil. Les entités linéaires 3D prenant en charge les valeurs Z sont requises, car les calculs d'intersection sont effectués sur des entités 3D dans l'espace euclidien 3D. Les entités linéaires 2D présentant des définitions de hauteur dans un champ attributaire peuvent être converties en 3D grâce à l'outil Entité en 3D par attribut.
Le nombre d'intersections est renvoyé sous forme d'entier dans la fenêtre de visualisation des messages et peut être utilisé dans un modèle ou un script afin d'établir des pré-conditions pour les opérations ultérieures.
-
La sortie des points facultative représente les points d'intersection entre les entités multipatch et linéaires en entrée, et contient les attributs suivants :
- LINE_OID - OBJECTID de la ligne d'origine le long de laquelle l'intersection a été trouvée.
- MPATCH_OID - OBJECTID du multipatch qui a intersecté la ligne à cet emplacement.
- DIST_3D - Distance 3D le long de la ligne d'origine à laquelle l'intersection a été trouvée.
-
La sortie des lignes facultative divise les entités linéaires en entrée aux points d'intersection et contient les attributs suivants :
- LINE_OID - OBJECTID de la ligne d'origine de laquelle la nouvelle ligne est dérivée.
- FROM_MP_ID - OBJECTID de l'entité multipatch qui intersecte le début de la ligne. Une valeur de -1 permet d'indiquer que le début de la ligne n'est pas un point d'intersection.
- TO_MP_ID - OBJECTID du multipatch qui intersecte la fin de la ligne. Une valeur de -1 permet d'indiquer que le début de la ligne n'est pas un point d'intersection.Remarque :
Si une ligne n'intersecte aucun multipatch, elle est copiée directement dans la sortie et ses champs FROM_MP_ID et TO_MP_ID sont définis sur une valeur de -1.
- DIST_3D - Distance 3D le long de la ligne d'origine à laquelle une intersection a été trouvée et qui représente le début de cette nouvelle ligne.
- LENGTH_3D - Longueur 3D de cette nouvelle ligne. La somme de la longueur de chaque nouvelle ligne issue d'une ligne d'origine est égale à la longueur 3D de cette ligne d'origine.
Les valeurs d'attribut des lignes d'origine peuvent être référencées dans les entités en sortie facultatives via l'utilisation de classe d'entités lignes en sortie, grâce au paramètre Attributs de jointure.
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_line_features |
Entités linéaires qui seront intersectées avec des entités multipatch. | Feature Layer |
in_multipatch_features |
Entités multipatch en fonction desquelles les lignes seront intersectées. | Feature Layer |
join_attributes (Facultatif) |
Indique si les attributs des entités linéaires en entrée sont conservés dans la classe d'entités lignes en sortie.
| String |
out_point_feature_class (Facultatif) |
Entités facultatives qui représentent les points d'intersection entre la ligne 3D et le multipatch. | Feature Class |
out_line_feature_class (Facultatif) |
Entités linéaires facultatives qui divisent les lignes 3D en entrée aux points d'intersection avec les entités multipatch. | Feature Class |
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.Intersect3DLineWithMultiPatch_3d('inLine.shp', 'inMultipatch.shp',
'IDS_ONLY', 'outPts.shp', 'outLine.shp')
L'exemple suivant illustre l'utilisation de cet outil dans un script Python autonome :
'''****************************************************************************
Name: Intersect3DLineWithMultiPatch Example
Description: This script demonstrates how to
use the Intersect3DLine tool.
****************************************************************************'''
# 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
inLineFC = 'sample.gdb/lines_3d'
inMP = 'sample.gdb/test_MP'
# Ensure a unique name is produced for output files
outPoint = arcpy.CreateUniqueName('OutPt_3DIntersect', 'sample.gdb')
outLine = arcpy.CreateUniqueName('OutLine_3DIntersect', 'sample.gdb')
# Execute Intersect 3D Line with Multipatch
arcpy.Intersect3DLineWithMultiPatch_3d(inLineFC, inMP, 'IDS_ONLY',
outPoint, outLine)
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)