ArcGIS for Desktop

  • 文档
  • 合约
  • 支持

  • My Profile
  • 帮助
  • Sign Out
ArcGIS for Desktop

ArcGIS Online

专为贵组织打造的制图平台

ArcGIS for Desktop

全面的专业性 GIS

ArcGIS for Server

面向企业的 GIS

ArcGIS for Developers

用于构建位置感知应用程序的工具

ArcGIS Solutions

适用于行业的免费模板地图和应用程序

ArcGIS Marketplace

获取适用于组织的应用程序和数据

  • 文档
  • 合约
  • 支持
Esri
  • 登录
user
  • 我的个人资料
  • 登出

帮助

  • 主页
  • 入门
  • 制图
  • 分析
  • 管理数据
  • 工具
  • 更多...

多面体转 Collada

  • 摘要
  • 用法
  • 语法
  • 代码实例
  • 环境
  • 许可信息

摘要

将一个或多个多面体要素转换为 COLLADA (.dae) 文件及其引用的纹理图像文件的集合并将此集合存储在输出文件夹中。输入可以是图层或要素类。

用法

  • COLLADA 文件是 3D 对象的 XML 表示,可以引用其他用作叠加在 3D 几何上的纹理的图像文件。这表示,将多面体要素导出到 COLLADA 会创建若干文件 - 一个包含 3D 对象的 XML 表示的 .dae 文件以及一个或多个包含纹理的图像文件(例如 .jpg 或 .png 文件)。

  • 此工具为其导出的每个多面体要素创建一个 COLLADA 表示。此工具使用每个要素的一个字段值(默认情况下是“对象 ID”字段值)定义输出文件名。这样更易于识别哪个要素导出到哪个 COLLADA 文件,同时,在将多个要素导出到同一个目录中时,也提供了定义唯一文件名的方法。纹理文件与 COLLADA 文件存储在同一个目录中。为了将导出文件的总体大小降至最低,可以将用于多个 COLLADA 文件的纹理(如重复使用的砖块或窗户纹理)仅导出一次,然后由适用的 DAE 文件进行引用。

  • 此工具自动覆盖具有相同文件名的现有 COLLADA 文件。如果发生覆盖文件的情况,将显示警告消息,提示导出过程中新文件覆盖了哪些文件。对于任何无法导出的要素,还将生成 GP 消息,例如,输出位置为只读,或者磁盘已满。

  • 要确保为所有导出的多面体要素创建新的 COLLADA 文件,请将目标目录设置为空文件夹或新文件夹,并选择对每个要素唯一的文件名字段。导出具有相同属性值的两个要素会造成第二个导出的要素覆盖第一个导出的要素的 COLLADA 文件。

  • 采用将多面体要素导出到 COLLADA 并在 ArcGIS 之外进行更改这种方式反复更新多面体要素时,请每次都将要素导出到相同位置。这样只需在磁盘上为该要素保存一个文件,此文件表示 3D 对象的最新状态。

  • 如果导出的多面体(如存储在 UTM 区域中的建筑物)在投影坐标系中,则还将在输出文件夹中创建包含坐标(如 WGS84)的 KML 文件。请注意,此过程不会使用基准面变换,如果使用基准面变换,则在查看 KML 时可能会导致定位偏差。

    提示:

    由图层转换多面体时,“多面体转 COLLADA”工具将自动嵌入任何在图层渲染器中定义的颜色。例如,如果图层根据使用类型属性渲染要素(例如红色用于商业、蓝色用于住宅等),则这些颜色将包含在输出的 COLLADA 文件中。显示的颜色将应用到带纹理和无纹理的多面体要素,其中前者需要更新要素的基础纹理文件。可以使用白色单显示色导出带纹理的含有未更改图像的多面体。

语法

MultipatchToCollada_conversion (in_features, output_folder, {prepend_source}, {field_name})
参数说明数据类型
in_features

要导出的多面体要素。

Feature Layer
output_folder

放置输出 COLLADA 文件和纹理图像文件的目标文件夹。

Folder
prepend_source
(可选)

将源要素图层的名称添加为输出 COLLADA 文件的文件名的前缀。

  • PREPEND_SOURCE_NAME —添加文件名前缀。
  • PREPEND_NONE —不添加文件名前缀。这是默认设置。
Boolean
field_name
(可选)

用作每个导出的要素的输出 COLLADA 文件名的要素属性。如果未指定字段,则使用要素的“对象 ID”。

Field

代码实例

多面体转 COLLADA (MultipatchToCollada) 示例 1(Python 窗口)

下面的示例演示了如何在 Python 窗口中使用此工具。

import arcpy
from arcpy import env

env.workspace = "C:/data"
arcpy.MultipatchToCollada_conversion("Sample.gdb/Buildings", "C:/COLLADA", 
                                   "PREPEND_SOURCE_NAME", "BldName")
多面体转 COLLADA (MultipatchToCollada) 示例 2(独立脚本)

下面的示例演示了如何在独立 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)

环境

此工具不使用任何地理处理环境

许可信息

  • ArcGIS for Desktop Basic: 是
  • ArcGIS for Desktop Standard: 是
  • ArcGIS for Desktop Advanced: 是

相关主题

  • “转为 Collada”工具集概述
有关此主题的反馈?

ArcGIS for Desktop

  • 主页
  • 文档
  • 合约
  • 支持

ArcGIS 平台

  • ArcGIS Online
  • ArcGIS for Desktop
  • ArcGIS for Server
  • ArcGIS for Developers
  • ArcGIS Solutions
  • ArcGIS Marketplace

关于 Esri

  • 关于我们
  • 招贤纳士
  • 内部人员博客
  • 用户大会
  • 开发者峰会
Esri
© Copyright 2016 Environmental Systems Research Institute, Inc. | 隐私政策 | 法律声明