Importar archivos 3D (3D Analyst)

Resumen

Importa uno o más modelos 3D a una clase de entidad multiparche.

Uso

Sintaxis

Import3DFiles_3d (in_files, out_featureClass, {root_per_feature}, {spatial_reference}, {y_is_up}, {file_suffix}, {in_featureClass}, {symbol_field})
ParámetroExplicaciónTipo de datos
in_files

Uno o más modelos 3D o carpetas que contienen estos archivos en los formatos compatibles, que incluyen 3D Studio Max (*.3ds), SketchUp (*.skp), VRML y GeoVRML (*.wrl), OpenFlight (*.flt) y COLLADA (*.dae).

File; Folder
out_featureClass

El multiparche que se creará a partir de los archivos de entrada.

Feature Class
root_per_feature
(Opcional)

Indica si se debe producir una entidad por archivo o una entidad para cada nodo raíz del archivo. Esta opción solo se aplica a los modelos VRML.

  • ONE_ROOT_ONE_FEATURELa salida generada contendrá una entidad para cada nodo raíz en el archivo.
  • ONE_FILE_ONE_FEATURELa salida generada contendrá un archivo para cada entidad. Esta es la opción predeterminada.
Boolean
spatial_reference
(Opcional)

El sistema de coordenadas de los datos de entrada Para la mayoría de los formatos, esto es desconocido. Solo el formato GeoVRML almacena su sistema de coordenadas, y en su defecto se obtendrá desde el primer archivo de la lista a menos que una referencia espacial esté especificada aquí.

Spatial Reference
y_is_up
(Opcional)

Identifica el eje que define la orientación vertical de los archivos de entrada.

  • Z_IS_UPIndica que z está arriba. Esta es la opción predeterminada.
  • Y_IS_UPIndica que y está arriba.
Boolean
file_suffix
(Opcional)

El sufijo de los archivos para importar desde una carpeta de entrada. Este parámetro es necesario cuando se especifica una carpeta como entrada.

String
in_featureClass
(Opcional)

Las entidades de punto cuyas coordenadas definen la posición de los archivos de entrada en el mundo real. Se hará que cada archivo de entrada coincida con su punto correspondiente con base en los nombres de archivo almacenados en el campo Símbolo. El parámetro del Sistema de coordenadas se debe definir para que coincida con la referencia espacial de los puntos.

Feature Class
symbol_field
(Opcional)

El campo en las entidades de punto que contiene el nombre del archivo 3D asociado con cada punto.

Field

Ejemplo de código

Ejemplo 1 de Import3DFiles (ventana de Python)

El siguiente ejemplo muestra cómo usar de esta herramienta en la ventana Python:

import arcpy
from arcpy import env

arcpy.CheckOutExtension("3D")
env.workspace = "C:/data"
arcpy.Import3DFiles_3d("AddisSheraton.skp", "Test.gdb/AddisSheraton", False, "", False)
Ejemplo 2 de Import3DFiles (secuencia de comandos independiente)

El siguiente ejemplo muestra cómo usar esta herramienta en una secuencia de comandos independiente de Python:

'''*********************************************************************
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)

Entornos

Temas relacionados

9/11/2013