标注 | 说明 | 数据类型 |
输入多面体要素 | 要导出的多面体要素。 | Feature Layer |
输出 COLLADA 文件夹 | 将放置输出 COLLADA 文件和纹理图像文件的目标文件夹。 | Folder |
前置源名称 (可选) | 指定是否在输出 COLLADA 文件的名称前面附加源要素图层的名称。
| Boolean |
使用字段名称 (可选) | 将用作每个导出要素的输出 COLLADA 文件名称的要素属性。 如果未指定字段,将使用要素的对象 ID。 | Field |
COLLADA 版本 | 指定导出文件的目标 COLLADA 版本。
| String |
摘要
用于将一个或多个多面体要素转换为输出文件夹中的 COLLADA 文件 (.dae) 和引用纹理影像文件的集合。
使用情况
COLLADA 文件是 3D 对象的 XML 表示,它可以引用附加的图像文件以用作 3D 几何上覆盖的纹理。 这意味着将多面体要素导出为 COLLADA 会创建多个文件:一个包含 3D 对象的 XML 表示的 .dae 文件和一个或多个包含纹理的图像文件(例如,.jpg 或 .png 文件)。
此工具为其导出的每个多面体要素创建一个 COLLADA 表示。 工具使用每个要素中的字段值(默认为对象 ID)来定义输出文件名。 这样,即可识别哪个要素导出到哪个 COLLADA 文件,并提供了将多个要素导出到同一目录时定义唯一名称的方法。 纹理文件存储在与 COLLADA 文件相同的目录中。 为了最小化导出文件的总大小,在多个 COLLADA 文件中使用的纹理(例如重复的砖纹理或窗户纹理)仅导出一次并由相应的 .dae 文件引用。
此工具会自动覆盖具有相同文件名的现有 COLLADA 文件。 发生这种情况时,会出现一条警告消息,说明在导出过程中使用新文件覆盖的文件。 还会为无法导出的要素生成地理处理消息,例如以下情况:输出位置是只读位置或磁盘已满。
要确保为所有导出的多面体要素创建新的 COLLADA 文件,请将目标目录设置为空文件夹或新文件夹,并为每个要素选择一个唯一的文件名字段。 导出具有相同属性值的两个要素将导致第二个导出的要素覆盖第一个要素的 COLLADA 文件。
通过将多面体要素导出到 COLLADA 并在 ArcGIS 外部进行更改来迭代更新多面体要素时,每次都将要素导出到相同的位置。 此操作将在磁盘上为该要素保留一个文件,表示 3D 对象的最新状态。
如果导出的多面体位于投影坐标系中(例如存储在 UTM 区域中的建筑物),则还将在输出文件夹中创建一个包含 WGS84 坐标的 .kml 文件。 此过程不使用基准面变换,因为这一变换可能导致查看 KML 时出现位置差异。
提示:
从图层转换多面体时,此工具将自动嵌入在图层渲染器中定义的颜色。 例如,如果图层正在基于利用类型属性渲染要素(例如红色表示商业、蓝色表示住宅等),则这些颜色将包含在输出 COLLADA 文件中。 显示的颜色将应用于纹理和非纹理多面体要素,前者需要更新要素的底层纹理文件。 您可以使用单一的白色显示颜色来导出使用未更改图像的带纹理的多面体。
参数
arcpy.conversion.MultipatchToCollada(in_features, output_folder, {prepend_source}, {field_name}, collada_version)
名称 | 说明 | 数据类型 |
in_features | 要导出的多面体要素。 | Feature Layer |
output_folder | 将放置输出 COLLADA 文件和纹理图像文件的目标文件夹。 | Folder |
prepend_source (可选) | 指定是否在输出 COLLADA 文件的名称前面附加源要素图层的名称。
| Boolean |
field_name (可选) | 将用作每个导出要素的输出 COLLADA 文件名称的要素属性。 如果未指定字段,将使用要素的对象 ID。 | Field |
collada_version | 指定导出文件的目标 COLLADA 版本。
| String |
代码示例
下面的示例演示了如何在 Python 窗口中使用此工具。
import arcpy
arcpy.env.workspace = "C:/data"
arcpy.conversion.MultipatchToCollada("Sample.gdb/Buildings", "C:/COLLADA",
"PREPEND_SOURCE_NAME", "BldName")
下面的示例演示了如何在独立 Python 脚本中使用此工具。
'''*********************************************************************
Name: Convert Multipatch To Collada
Description: Converts multipatch features in an input workspace
to a Collada model.
*********************************************************************'''
# Import system modules
import arcpy
# Script variables
inWorkspace = arcpy.GetParameterAsText(0)
# Set environment settings
arcpy.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'
# Run MultipatchToCollada
arcpy.conversion.MultipatchToCollada(fc, outDir, prepend, fldName)
else:
print('There are no feature classes in {0}.'.format(inWorkspace))