De multiparche a Collada (Conversión)
Resumen
Convierte una o más entidades multiparches en un conjunto de archivos COLLADA y hacen referencia a archivos de imagen de textura en una carpeta de salida. Las entradas pueden ser una capa o clase de entidad.
Uso
-
Los archivos COLLADA son una representación XML de un objeto 3D que pueden hacer referencia a archivos de imagen adicional que actúan como texturas desplegadas en la geometría 3D. Esto significa que exportar una entidad multiparche a COLLADA puede resultar en la creación de varios archivos: un archivo .dae que contiene la representación XML del objeto 3D y uno o más archivos de imagen (por ejemplo, un archivo .jpg o .png) que contiene las texturas.
Esta herramienta crea una representación COLLADA para cada entidad multiparche que exporta. Esta herramienta utiliza un valor de campo de cada entidad, por defecto este es el Id. de objeto, para definir los nombres de archivo de salida. Esto permite una identificación más fácil de qué entidad se exportó a qué archivo COLLADA y también proporciona la metodología para definir nombres únicos cuando se exportan varias entidades al mismo directorio. Los archivos de textura se almacenan en el mismo directorio que el archivo COLLADA.
Esta herramienta automáticamente sobrescribe cualquier archivo COLLADA existente con el mismo nombre de archivo. Cuando esto ocurre, se proporciona un mensaje de advertencia que establece qué archivos se sobrescribieron con un nuevo archivo durante el proceso de exportación. También se genera un mensaje GP para cualquier entidad que no se pueda exportar, por ejemplo, si la ubicación de salida es de solo lectura o el disco está lleno.
Para asegurarse de que se cree un nuevo archivo COLLADA para todas las entidades multiparches que se exportaron, establezca el directorio de destino a una carpeta vacía o nueva y elija un campo de nombre de archivo que sea único para cada entidad. Exportar dos entidades con el mismo valor de atributo provocará que la segunda entidad que se exportó sobrescriba el archivo COLLADA de la primera.
Cuando actualiza una entidad multiparche de manera iterativa al exportarla a COLLADA y realiza cambios fuera de ArcGIS, exporte la entidad a la misma ubicación todas la veces. Esto mantendrá un solo archivo en el disco para esa entidad, lo que representa el estado más actualizado del objeto 3D.
Si el multiparche que se exportó está en un sistema de coordenadas proyectadas, como un edificio almacenado en una zona UTM, también se crea un archivo KML con las coordenadas como WGS84 en la carpeta de salida. Tenga en cuenta que este proceso no utiliza una transformación de datum, que puede resultar en discrepancias de posición cuando se visualiza el KML.
Sugerencia:Cuando se convierten multiparches a partir de una capa, la herramienta De multiparche a COLLADA incorporará automáticamente cualquiera de los colores definidos en el renderizador de la capa. Por ejemplo, si la capa está representando en pantalla entidades con base en un atributo del tipo de uso como rojo para comercial, azul para residencial y etc., entonces estos colores se incluirán en los archivos COLLADA de salida. El color que se visualiza se aplica a ambas entidades multiparche con textura y sin textura con el antiguo necesitando una actualización para los archivos de textura subyacentes de entidad. Puede usar una pantalla de único color de blanco para exportar multiparches con textura con imágenes sin modificar.
Sintaxis
Parámetro | Explicación | Tipo de datos |
in_features |
Las entidades multiparches que se van a exportar. | Feature Layer |
output_folder |
La carpeta de destino en la que se ubicarán los archivos COLLADA de salida y los archivos de imagen de textura. | Folder |
prepend_source (Opcional) | Anteponga los nombres de archivo de los archivos COLLADA de salida con el nombre de la capa de entidades de origen.
| Boolean |
field_name (Opcional) |
El atributo de entidad que se va a utilizar como el nombre de archivo COLLADA de salida para cada entidad que se exportó. Si no se especifica ningún campo, se utiliza el Id. de objeto de la entidad. | Field |
Ejemplo de código
El siguiente ejemplo muestra cómo usar de esta herramienta en la ventana Python:
import arcpy
from arcpy import env
env.workspace = "C:/data"
arcpy.MultipatchToCollada_conversion("Sample.gdb/Buildings", "C:/COLLADA",
"PREPEND_SOURCE_NAME", "BldName")
El siguiente ejemplo muestra cómo usar esta herramienta en una secuencia de comandos independiente de Python:
'''*********************************************************************
Name: Convert Multipatch To Collada
Description: Converts multipatch features in an input workspace
to a Collada model.
*********************************************************************'''
# Import system modules
import arcpy
import exceptions, sys, traceback
from arcpy import env
# Script variables
inWorkspace = arcpy.GetParameterAsText(0)
try:
# Set environment settings
env.workspace = inWorkspace
# Create list of feature classes in workspace
fcList = arcpy.ListFeatureClasses()
# Determine if the list contained any feature classes
if fcList:
# Iterate through each feature class
for fc in fcList:
# Describe the feature class
desc = arcpy.Describe(fc)
# Determine if feature class is a multipatch
if desc.shapeType is 'MultiPatch':
# Ensure unique name for output folder
outDir = arcpy.CreateUniqueName('collada_dir')
# Specify that collada file is prefixed by source name
prepend = 'PREPEND_SOURCE_NAME'
# Specify the feature attribute used to name Collada files
fldName = 'OID'
#Execute MultipatchToCollada
arcpy.MultipatchToCollada(fc, outDir, prepend, fldName)
else:
print 'There are no feature classes in {0}.'.format(inWorkspace)
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)