导入 3D 文件 (3D Analyst)

描述

将一个或多个 3D 模型导入到多面体要素类。

使用方法

  • 通过在地理数据库中存储输出多面体保留 3D 模型的纹理。Shapefile 不支持保留纹理。

  • 如果生成的多面体要素的顶侧定向到侧面,可再次使用此工具通过启用 Y Is Up 参数来尝试调整方向。

  • GeoVRML 是唯一拥有已定义坐标系的格式。使用局部坐标系(XYZ 轴坐标中心定义在 0,0,0 处)可生成多种 3D 模型。可采用以下方法之一将此类要素配准到实际坐标:

    • 如果需要旋转和平移 3D 模型,可以考虑执行空间校正技术来正确定位要素。
    • 如果 3D 模型在给定坐标系中已正确定向,且仅需平移至正确位置,可考虑自定义坐标系属性来进行所需的平移。如果可以获得用来定义实际坐标中每个模型的质心位置的点要素,则可考虑使用导入 3D 文件工具直接输入这些点以校准模型。
  • 3D 文件中可能存在的点几何和线几何在输出多面体要素类中不会保留,因为多面体不支持它们。

    注:

    VRML 文件不支持的几何类型包括方框、圆锥、圆柱、拉伸、点集、球体和文本。

语法

arcpy.3d.Import3DFiles(in_files, out_featureClass, {root_per_feature}, {spatial_reference}, {y_is_up}, file_suffix, {in_featureClass}, {symbol_field})
参数说明数据类型
in_files
[in_files,...]

一个或多个 3D 模型或文件夹,支持的文件格式为 3D Studio Max (*.3ds)、VRML 和 GeoVRML (*.wrl)、OpenFlight (*.flt)、COLLADA (*.dae) 以及 Wavefront OBJ 模型 (*.obj)。

File; Folder
out_featureClass

从输入文件中创建的多面体。

Feature Class
root_per_feature
(可选)

指明是为每个文件生成一个要素还是为文件中的每个根结点生成一个要素。此选项仅适用于 VRML 模型。

  • ONE_ROOT_ONE_FEATURE生成的输出将为文件中的每个根结点包含一个要素。
  • ONE_FILE_ONE_FEATURE生成的输出将为每个文件包含一个要素。这是默认设置。
Boolean
spatial_reference
(可选)

输入数据的坐标系。对于大多数格式来说,这是未知的。只有 GeoVRML 格式存储其坐标系,其默认值将从列表中的第一个文件获得,除非在此处指定一个空间参考。

Spatial Reference
y_is_up
(可选)

标识定义输入文件垂直方向的轴。

  • Z_IS_UP指示 z 是向上的。这是默认设置。
  • Y_IS_UP指示 y 是向上的。
Boolean
file_suffix

从输入文件夹导入的文件的文件扩展名。将至少一个文件夹指定为输入时,此参数为必填项。

  • *所有受支持的文件。这是默认设置。
  • 3DS3D Studio Max
  • WRLVRML 或 GeoVRML
  • FLTOpenFlight
  • DAECollada
  • OBJWavefront OBJ 模型
String
in_featureClass
(可选)

其坐标定义输入文件实际位置的点要素。每个输入文件将与基于符号字段中存储的文件名的对应点相匹配。应将坐标系参数定义为与点的空间参考相匹配。

Feature Layer
symbol_field
(可选)

点要素中的字段,包含与各点相关联的 3D 文件的名称。

Field

代码示例

导入 3D 文件 (Import3DFiles) 示例 1(Python 窗口)

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

arcpy.env.workspace = "C:/data"
arcpy.Import3DFiles_3d("AddisSheraton.skp", "Test.gdb/AddisSheraton", False, "", False)
导入 3D 文件 (Import3DFiles) 示例 2(独立脚本)

下面的示例演示了如何在独立 Python 脚本中使用此工具。

'''****************************************************************************
Name: Import3DFiles Example
Description: This script demonstrates how to use the
             ListFiles method to collect all OpenFlight (*.flt) models in a
             workspace as input for the Import3DFiles tool.
****************************************************************************'''

# Import system modules
import arcpy

# Set environment settings
arcpy.env.workspace = "C:/data"

# Set Local Variables
OpenFlightList = arcpy.ListFiles("*.flt")
CS = "Coordinate Systems/Geographic Coordinate Systems/World/WGS 1984.prj"
outputFC = "Test.gdb/OpenFlight_Models"
if len(OpenFlightList) > 0:
    # Execute Import3DFiles
    arcpy.Import3DFiles_3d(OpenFlightList, outputFC, False, CS, False)
else:
    # Returned if there are no flt files in the target workspace
    print("There are no OpenFlight files in the " + env.workspace + " directory.")

许可信息

  • Basic: 需要 3D Analyst
  • Standard: 需要 3D Analyst
  • Advanced: 需要 3D Analyst

相关主题