Importer des fichiers 3D (3D Analyst)

Niveau de licence :BasicStandardAdvanced

Récapitulatif

Importe un ou plusieurs modèles 3D dans une classe d'entités multipatch.

Utilisation

Syntaxe

Import3DFiles_3d (in_files, out_featureClass, {root_per_feature}, {spatial_reference}, {y_is_up}, file_suffix, {in_featureClass}, {symbol_field})
ParamètreExplicationType de données
in_files

Un ou plusieurs modèles 3D ou dossiers contenant ces fichiers dans les formats pris en charge, à savoir 3D Studio Max (*.3ds), SketchUp (*.skp), VRML et GeoVRML (*.wrl), OpenFlight (*.flt) et COLLADA (*.dae).

File; Folder
out_featureClass

Entités multipatch qui seront créées à partir des fichiers en entrée.

Feature Class
root_per_feature
(Facultatif)

Indique qu'il convient de produire une entité par fichier ou une entité pour chaque nœud racine du fichier. Cette option ne s'applique qu'aux modèles VRML.

  • ONE_ROOT_ONE_FEATURELa sortie générée contient une entité pour chaque nœud racine du fichier.
  • ONE_FILE_ONE_FEATURELa sortie générée contient un fichier pour chaque entité. Il s'agit de l'option par défaut.
Boolean
spatial_reference
(Facultatif)

Système de coordonnées des données en entrée. Pour la plupart des formats, il est inconnu. Seul le format GeoVRML stocke son système de coordonnées et sa valeur par défaut est obtenue à partir du premier fichier de la liste, à moins qu'une référence spatiale ne soit spécifiée à cet endroit.

Spatial Reference
y_is_up
(Facultatif)

Identifie l'axe qui définit l'orientation verticale des fichiers en entrée.

  • Z_IS_UPIndique que l'axe des Z est orienté vers le haut. Il s'agit de l'option par défaut.
  • Y_IS_UPIndique que l'axe des Y est orienté vers le haut.
Boolean
file_suffix

Extension des fichiers à importer à partir d'un dossier en entrée. Ce paramètre est requis lorsqu'au moins un dossier est spécifié en tant qu'entrée.

  • *Tous les fichiers pris en charge. Il s'agit de l'option par défaut.
  • 3DS3D Studio Max
  • WRLVRML ou GeoVRML
  • SKPSketchUp 6.0
  • FLTOpenflight
  • DAECollada
String
in_featureClass
(Facultatif)

Entités ponctuelles dont les coordonnées définissent la position des fichiers en entrée dans le monde réel. Chaque fichier en entrée est apparié au point correspondant en fonction des noms de fichier stockés dans le champ Champ de symbole. Le paramètre Système de coordonnées doit être défini pour qu'une correspondance soit établie avec la référence spatiale des points.

Feature Class
symbol_field
(Facultatif)

Champ dans les entités ponctuelles contenant le nom du fichier 3D associé à chaque point.

Field

Exemple de code

1er exemple d'utilisation de l'outil Import3DFiles (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.Import3DFiles_3d("AddisSheraton.skp", "Test.gdb/AddisSheraton", False, "", False)
2e exemple d'utilisation de l'outil Import3DFiles (script autonome)

L'exemple suivant illustre l'utilisation de cet outil dans un script Python autonome :

'''*********************************************************************
Name: Model Shadows For GeoVRML Models
Description: Creates a model of the shadows cast by GeoVRML models 
             imported to a multipatch feature class for a range of dates
             and times. A range of times from the start time and end 
             time can also be specified by setting the EnforceTimes 
             Boolean to True. This sample is designed to be used in a 
             script tool.
*********************************************************************'''
# Import system modules
import arcpy
from datetime import datetime, time, timedelta

#*************************  Script Variables  **************************
inFiles = arcpy.GetParameterAsText(0) # list of input features
spatialRef = arcpy.GetParameterAsText(1) # list of GeoVRML files
outFC = arcpy.GetParameterAsText(2) # multipatch from 3D files
inTimeZone = arcpy.GetParameterAsText(3) # time zone
startDate = arcpy.GetParameter(4) # starting date as datetime
endDate = arcpy.GetParameter(5) # ending date as datetime
dayInterval = arcpy.GetParameter(6) # day interval as long (0-365)
minInterval = arcpy.GetParameter(7) # minute interval as long (0-60)
enforceTime = arcpy.GetParameter(8) # minute interval as Boolean
outShadows = arcpy.GetParameterAsText(9) # output shadow models
outIntersection = arcpy.GetParameterAsText(10) # shadow & bldg intersection

# Function to find all possible date/time intervals for shadow modelling
def time_list():
    dt_result = [startDate]
    if dayInterval:
        if endDate: #Defines behavior when end date is supplied
            while startDate < endDate:
                startDate += timedelta(days=dayInterval)
                dt_result.append(startDate)
            dt_result.append(endDate)
        else: # Behavior when end date is not given
            daymonthyear = datetime.date(startDate)
            while startDate <= datetime(daymonthyear.year, 12, 31, 23, 59):
                startDate += timedelta(days=dayInterval)
                dt_result.append(startDate)
    return dt_result

try:
    arcpy.CheckOutExtension('3D')
    importFC = arcpy.CreateUniqueName('geovrml_import', 'in_memory')
    # Import GeoVRML files to in-memory feature
    arcpy.ddd.Import3DFiles(inFiles, importFC, 'ONE_FILE_ONE_FEATURE', 
                            spatialRef, 'Z_IS_UP', 'wrl')
    # Ensure that building models are closed
    arcpy.ddd.EncloseMultiPatch(importFC, outFC, 0.05)
    # Discard in-memory feature
    arcpy.management.Delete(importFC)
    dt_result = time_list()
    for dt in dt_result:
        if dt == dt_result[0]:
            shadows = outShadows
        else:
            shadows = arcpy.CreateUniqueName('shadow', 'in_memory')
        arcpy.ddd.SunShadowVolume(outFC, dt, shadows, 'ADJUST_FOR_DST', 
                                  inTimeZone, '', minInterval, 'MINUTES')
        if dt is not dt_result[0]:
            arcpy.management.Append(shadows, outShadows)
            arcpy.management.Delete(shadows)
    arcpy.ddd.Intersect3D(outFC, outIntersection, outShadows, 'SOLID')
    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

Thèmes connexes

Informations de licence

ArcGIS for Desktop Basic: Requis 3D Analyst
ArcGIS for Desktop Standard: Requis 3D Analyst
ArcGIS for Desktop Advanced: Requis 3D Analyst
6/5/2014