将 CAD 导入室内数据集 (Indoors)

适用于 ArcGIS Indoors Pro 或 ArcGIS Indoors Maps 扩展模块。

摘要

可将要素从 CAD 文件导入符合 ArcGIS Indoors 信息模型的室内数据集。 可使用该工具的输出创建楼层感知型地图和场景,以及生成用于路由的室内网络。

使用情况

  • 可以使用此工具将楼层平面图数据加载到使用创建室内数据集工具或创建 Indoors 数据库工具创建的 Indoors 工作空间中。

  • 在运行该工具之前,必须对源 CAD 数据进行地理配准

  • 源 CAD 数据参数值必须至少为一个 .dwg.dgn 文件。

    警告:

    该工具一次导入一个设施点的一个楼层。 如果您有多个 CAD 文件包含同一楼层的数据,则可以将多个 CAD 文件添加到源 CAD 数据参数中。

  • 目标单元要素目标楼层要素目标设施点要素目标细节要素参数必须参考符合 Indoors 模型的要素类或要素图层。

    注:

    目标要素必须全部来自同一文件地理数据库、企业级地理数据库或要素服务。

    • 当在目标单元要素参数值中添加、更新或删除要素时,该工具会在 ArcGISProTemp 目录中创建一个汇总文本文件。 汇总文本文件列出了使用 UNIT_IDNAME 字段的所有已添加、更新或删除的单元要素。
  • 针对楼层名称参数,提供楼层的名称。 如果该楼层存在于目标 Levels 图层中,则可以从下拉列表中进行选择。 如果选择现有 Levels 图层,则将更新 Levels 要素以及关联的 Units 和 Details 要素。 如果未使用 CAD 注记映射参数进行映射,则将保留默认情况下未填充的 Levels 和 Units 图层中字段的字段值。 将删除并覆盖细节要素。

  • 可以从输入 CAD 数据 CAD 图层导入要素,或者将 CAD 数据添加至地图并从折线图层导入要素。 可以使用从源 CAD 选择图层参数以指定是从输入 CAD 图层还是从地图折线图层导入。

    • 如果选中从源 CAD 选择图层参数,则需要为 Units 的源 CAD 图层Levels 的源 CAD 图层Details 的源 CAD 图层Facilities 的源 CAD 图层参数提供 CAD 图层。 或者,在 Doors 的源 CAD 图层参数中包含门实体。
    • 如果取消选中从源 CAD 选择图层参数,则需要为 Units 的源图层Levels 的源图层Details 的源图层Facilities 的源图层参数提供 CAD 折线地图图层。 或者,在 Doors 的源图层参数中包含门实体。 该工具支持在输入地图图层进行选择和定义查询。
  • Units 的源 CAD 图层Units 的源图层参数提供表示单元边界的折线图层。 可能包括代表房间边界的单个图层,或者经过组合后表示房间边界的多个图层(例如外墙、内墙和门的图层)。

  • Levels 的源 CAD 图层Levels 的源图层参数提供表示级别边界的折线图层。

    如果没有为任一参数提供值,则该工具将根据单元面的范围创建级别面要素。

  • 楼层高程参数值设置为相对于地面的楼层高程。 该参数值必须包含数值和测量单位(国际英尺或米)。 将基于此值填充 Levels、Units 和 Details 的 Z 值。

  • 垂直顺序参数值提供表示每个楼层的垂直顺序的序数整数。 一楼的垂直顺序为零 (0)。 对于一楼之上的楼层,垂直顺序值为正;对于一楼之下的楼层,则为负。

  • Facilites 的源 CAD 图层Facilites 的源图层参数提供表示设施点边界的折线图层。

    如果没有为任一参数提供值,则该工具将根据设施点中所有楼层面的范围创建或更新设施点面。

  • Details 的源 CAD 图层Details 的源图层参数提供表示要在细节图层(例如墙壁、窗户、门、家具等)中作为折线要素导入的要素的折线图层。

  • 如果输入 CAD 数据包含必须闭合才能创建单元、楼层或设施点边界的门要素,请使用以下参数以闭合门:

    • 对于 Doors 的源 CAD 图层Doors 的源图层参数,请提供包含门要素的 CAD 或地图图层。
    • 或者,设置门到墙壁的距离参数的值。 该参数值用于指示工具从门要素搜索相关单元的边界的距离。 该参数值必须包含数值和测量单位(国际英寸或毫米)。 默认值为 0.3 国际英寸。
  • 可以使用 CAD 注记映射参数将 CAD 注记映射到 Indoors 模型中的要素。 至少,建议您将信息从 CAD 映射到 Units 图层中的 NAMEUSE_TYPE 字段。 这些字段值用于启用 ArcGIS Pro 以及 Indoors web 和移动应用程序中的功能。 当重新运行工具以更新 Indoors 工作空间中的要素时,NAME 字段也可用于更新方案。

    按以下方式设置值:

    • 目标 Indoor 图层 - 指定 Indoors 工作空间中要将注记映射到的图层。 可以将 Units、Levels 或 Facilities 设置为该值的输入,这些值对应于为目标单元要素目标楼层要素目标设施点要素参数提供的参数值。 不支持将注记映射到 Details 图层。
    • 目标字段 - 提供要将 CAD 注记映射到的目标室内图层中的字段。
    • 实体类型 - 指定正在映射的 CAD 注记的实体类型(Text 或 Block)。 如果源 CAD 数据中的 CAD 注记为 Text 或 MText,请选择 Text。 如果 CAD 注记存储为块注记,请选择 Block。
    • 源 CAD 图层 - 提供包含要映射的 CAD 注记的 CAD 图层。
    • 块属性 - 如果将实体类型值设置为 Block,请提供存储要映射到目标字段的 CAD 注记的块属性的名称。 如果将实体类型值设置为 Text,请勿提供值。
    • 分隔符 - 如果要映射到目标字段的值存储为分隔文本,则需要为此值设置分隔符。 例如,如果 CAD 注记以句点分隔,例如 CAMPUS.A.A-210,并且您希望将字符串 (A-210) 的第三部分映射为 UNIT_NAME 字段值,请使用句点 (.) 作为分隔符值。
    • 位置 - 如果要映射到目标字段的值存储为分隔文本,则需要设置要映射的值的位置,其中字符串的开头为位置 1。 例如,如果 CAD 注记以句点分隔,例如 CAMPUS.A.A-210,并且您希望将字符串 (A-210) 的第三部分映射为 UNIT_NAME 字段值),请使用 3 作为位置值。
    注:

    当针对 Units 要素类时,如果 CAD 注记源于多个 CAD 图层,则可以向针对同一字段的 CAD 注记映射参数提供多个输入。 如果多个指定 CAD 图层包含 Units 要素的注记,则该工具将使用提供的第一个包含该要素的注记的 CAD 图层中的 CAD 注记。

  • 最小单元宽度参数用于指示面必须被视为 Units 要素的最小宽度。 该参数值必须包含数值和测量单位(国际英尺或米)。 默认值为 3 国际英尺。

  • 最小单元面积参数用于指示面必须被视为单元要素的最小面积。 该参数值必须包含数值和测量单位(国际平方英尺或平方米)。 默认值为 9 国际平方英尺。

  • 对于任何不满足由最小单元宽度最小单元面积参数设置的阈值的面,会将其复制到 ArcGIS Pro 工程默认地理数据库中的临时要素类。 可以检查临时要素类面并根据需要将其中任何一个追加到 Units 图层。

  • 如果存在与楼层名称参数值同名的 Levels 要素,则将按如下方式更新该 Levels 要素及其关联的 Units 和 Details 要素:

    • 将更新 Levels 要素。 将保留默认情况下未填充的任何属性,包括自定义字段。
    • 该工具将比较 CAD 工程图和 Units 图层之间的 Units 要素。 如果找到具有匹配名称或几何的单元,则将对其进行更新。 将保留该工具默认情况下未填充且未使用 CAD 注记映射参数进行映射的任何字段。 将添加 CAD 工程图中存在,但 Units 图层中不存在的要素。 将删除 CAD 工程图中不存在,但 Units 图层中存在的要素。
    • 将从 CAD 工程图中删除 Details 要素并将其重新导入。
    • 如果为单元提供了地图图层作为输入,则该工具将遵循应用于这些图层的所有定义查询或选择。
    注:

    如果楼层名称参数值与现有 Levels 要素的 NAME 字段值不匹配,则该工具将导入 CAD 工程图作为具有指定楼层名称值的新楼层。

参数

标注说明数据类型
源 CAD 数据

包含要导入 Indoors 模型的楼层平面图信息的 .dwg.dgn 文件。

CAD Drawing Dataset
目标楼层要素

符合 Indoors 模型并与目标设施点、单元和细节要素位于同一工作空间中的目标楼层要素图层、要素类或要素服务。

Feature Layer
楼层名称

源 CAD 数据所在楼层的唯一楼层名称。

String
垂直顺序

表示每个楼层的垂直顺序的序数整数。 一楼的垂直顺序为零 (0)。 对于一楼之上的楼层,垂直顺序值为正;对于一楼之下的楼层,则为负。

Long
楼层的高程

楼层相对于平坦地形的高程。 此值用于填充 Levels、Units 和 Details 的 z 值。

Linear Unit
目标设施点要素

符合 Indoors 模型并与目标楼层、单元和详细信息要素位于同一工作空间中的目标设施点要素图层、要素类或要素服务。

Feature Layer
设施点名称

源 CAD 数据所在建筑物的唯一设施点名称。

String
目标单元要素

符合 Indoors 模型并与目标设施点、楼层和细节要素位于同一工作空间中的目标单元要素图层、要素类或要素服务。

Feature Layer
目标细节要素

符合 Indoors 模型并与目标设施点、单元和细节要素位于同一工作空间中的目标细节要素图层、要素类或要素服务。

Feature Layer
从源 CAD 选择图层
(可选)

指定表示单元边界的折线是源自 CAD 文件,还是源自地图要素图层。 如果指定基于地图要素图层进行选择,则可以在图层上进行选择以导入要素子集。

  • 选中 - 表示单元边界的折线将直接源自 CAD 文件。 这是默认设置。
  • 未选中 - 表示单元边界的折线将源自地图要素图层。
Boolean
Units 的源 CAD 图层
(可选)

CAD 图层,包含定义设施点内可用空间的边和范围的折线实体。 这些折线将用于在目标 Units 图层中创建单元面要素。

String
Units 的源图层
(可选)

要素图层,包含定义设施点内可用空间的边和范围的折线实体。 这些折线将用于在目标 Units 图层中创建单元面要素。

Feature Layer
Levels 的源 CAD 图层
(可选)

CAD 图层,包含定义楼层的边和范围的折线实体。 这些折线将用于在目标 Levels 图层中创建单元面要素。

String
Levels 的源图层
(可选)

要素图层,包含定义楼层的边和范围的折线实体。 这些折线将用于在目标 Levels 图层中创建单元面要素。

Feature Layer
Doors 的源 CAD 图层
(可选)

CAD 图层,包含定义属于单元边界的门的折线实体。 将闭合这些折线以在目标 Units 图层中创建单元面要素。

String
Doors 的源图层
(可选)

要素图层,包含定义属于单元边界的门的折线实体。 将闭合这些折线以在目标 Units 图层中创建单元面要素。

Feature Layer
Details 的源 CAD 图层
(可选)

CAD 图层,包含表示楼层平面图细节(例如墙壁、窗户和门)的折线实体,这些实体将作为折线要素包含在目标 Details 图层中。

String
Details 的源图层
(可选)

要素图层,包含表示楼层平面图细节(例如墙壁、窗户和门)的折线实体,这些实体将作为折线要素包含在目标 Details 图层中。

Feature Layer
Facilities 的源 CAD 图层
(可选)

CAD 图层,包含定义设施点覆盖区的边和范围的折线实体。 如果未提供任何值,则将根据设施点内所有楼层的范围创建或更新设施点覆盖区。

String
Facilities 的源图层
(可选)

要素图层,包含定义设施点覆盖区的边和范围的折线实体。 如果未提供任何值,则将根据设施点内所有楼层的范围创建或更新设施点覆盖区。

Feature Layer
CAD 注记映射
(可选)

指定 CAD 注记要素的字段映射以填充 Indoors 工作空间中图层的字段。

  • 目标 Indoor 图层 - Indoors 工作空间中要将注记映射到的图层。 该工具支持映射到为“目标 Facilities”、“目标 Levels”和“目标 Units”参数提供的图层。
  • 目标字段 - 要将注记映射到的目标图层中的字段。 该字段必须已经存在。
  • 实体类型 - 要映射的注记的实体类型。 支持 Text 和 Block 类型。
  • 源 CAD 图层 - CAD 图层,包含将进行映射的注记。
  • 块属性 - 对于具有 Block 实体类型的注记,提供包含要映射的信息的块属性。
  • 分隔符 - 对于存储在分隔字符串中的注记,请提供分隔字符。
  • 位置 - 对于存储在分隔字符串中的注记,请提供要映射的值的位置。

Value Table
门到墙壁的距离
(可选)

该工具将从门要素搜索单元边界的距离(以国际英寸或毫米为单位)。 默认值为 0.3 国际英寸。

Linear Unit
最小单元宽度
(可选)

空间被视为 Units 要素的最小宽度(以国际英尺或米为单位)。 宽度小于此阈值的要素将写入非单元面要素类,并且不包含在目标 Units 图层中。 默认值为 3 国际英尺。

Linear Unit
最小单元面积
(可选)

空间必须被视为 Units 要素的最小面积(以平方英尺或平方米为单位)。 面积小于此阈值的要素将写入非单元面要素类,并且不包含在目标 Units 图层中。 默认值为 9 国际平方英尺。

Areal Unit

派生输出

标注说明数据类型
更新单元

更新后的目标单元要素。

Feature Layer

arcpy.indoors.ImportCADToIndoorDataset(input_cad_datasets, target_level_features, level_name, vertical_order, level_elevation, target_facility_features, facility_name, target_unit_features, target_detail_features, {allow_layers_from_cad}, {input_unit_layers_cad}, {input_unit_feature_layers}, {input_level_layers_cad}, {input_level_feature_layers}, {input_door_layers_cad}, {input_door_feature_layers}, {input_detail_layers_cad}, {input_detail_feature_layers}, {input_facility_layers_cad}, {input_facility_feature_layers}, {cad_annotation_mapping}, {door_close_buffer}, {input_unit_minimum_width}, {input_unit_minimum_area})
名称说明数据类型
input_cad_datasets
[input_cad_datasets,...]

包含要导入 Indoors 模型的楼层平面图信息的 .dwg.dgn 文件。

CAD Drawing Dataset
target_level_features

符合 Indoors 模型并与目标设施点、单元和细节要素位于同一工作空间中的目标楼层要素图层、要素类或要素服务。

Feature Layer
level_name

源 CAD 数据所在楼层的唯一楼层名称。

String
vertical_order

表示每个楼层的垂直顺序的序数整数。 一楼的垂直顺序为零 (0)。 对于一楼之上的楼层,垂直顺序值为正;对于一楼之下的楼层,则为负。

Long
level_elevation

楼层相对于平坦地形的高程。 此值用于填充 Levels、Units 和 Details 的 z 值。

Linear Unit
target_facility_features

符合 Indoors 模型并与目标楼层、单元和详细信息要素位于同一工作空间中的目标设施点要素图层、要素类或要素服务。

Feature Layer
facility_name

源 CAD 数据所在建筑物的唯一设施点名称。

String
target_unit_features

符合 Indoors 模型并与目标设施点、楼层和细节要素位于同一工作空间中的目标单元要素图层、要素类或要素服务。

Feature Layer
target_detail_features

符合 Indoors 模型并与目标设施点、单元和细节要素位于同一工作空间中的目标细节要素图层、要素类或要素服务。

Feature Layer
allow_layers_from_cad
(可选)

指定表示单元边界的折线是源自 CAD 文件,还是源自地图要素图层。 如果指定基于地图要素图层进行选择,则可以在图层上进行选择以导入要素子集。

  • ALLOW_LAYERS_FROM_CAD表示单元边界的折线将直接源自 CAD 数据。 这是默认设置。
  • NO_ALLOW_LAYERS_FROM_CAD表示单元边界的折线将源自地图要素图层。
Boolean
input_unit_layers_cad
[input_unit_layers_cad,...]
(可选)

CAD 图层,包含定义设施点内可用空间的边和范围的折线实体。 这些折线将用于在目标 Units 图层中创建单元面要素。

String
input_unit_feature_layers
[input_unit_feature_layers,...]
(可选)

要素图层,包含定义设施点内可用空间的边和范围的折线实体。 这些折线将用于在目标 Units 图层中创建单元面要素。

Feature Layer
input_level_layers_cad
[input_level_layers_cad,...]
(可选)

CAD 图层,包含定义楼层的边和范围的折线实体。 这些折线将用于在目标 Levels 图层中创建单元面要素。

String
input_level_feature_layers
[input_level_feature_layers,...]
(可选)

要素图层,包含定义楼层的边和范围的折线实体。 这些折线将用于在目标 Levels 图层中创建单元面要素。

Feature Layer
input_door_layers_cad
[input_door_layers_cad,...]
(可选)

CAD 图层,包含定义属于单元边界的门的折线实体。 将闭合这些折线以在目标 Units 图层中创建单元面要素。

String
input_door_feature_layers
[input_door_feature_layers,...]
(可选)

要素图层,包含定义属于单元边界的门的折线实体。 将闭合这些折线以在目标 Units 图层中创建单元面要素。

Feature Layer
input_detail_layers_cad
[input_detail_layers_cad,...]
(可选)

CAD 图层,包含表示楼层平面图细节(例如墙壁、窗户和门)的折线实体,这些实体将作为折线要素包含在目标 Details 图层中。

String
input_detail_feature_layers
[input_detail_feature_layers,...]
(可选)

要素图层,包含表示楼层平面图细节(例如墙壁、窗户和门)的折线实体,这些实体将作为折线要素包含在目标 Details 图层中。

Feature Layer
input_facility_layers_cad
[input_facility_layers_cad,...]
(可选)

CAD 图层,包含定义设施点覆盖区的边和范围的折线实体。 如果未提供任何值,则将根据设施点内所有楼层的范围创建或更新设施点覆盖区。

String
input_facility_feature_layers
[input_facility_feature_layers,...]
(可选)

要素图层,包含定义设施点覆盖区的边和范围的折线实体。 如果未提供任何值,则将根据设施点内所有楼层的范围创建或更新设施点覆盖区。

Feature Layer
cad_annotation_mapping
[cad_annotation_mapping,...]
(可选)

指定 CAD 注记要素的字段映射以填充 Indoors 工作空间中图层的字段。

  • 目标 Indoor 图层 - Indoors 工作空间中要将注记映射到的图层。 该工具支持映射到为“目标 Facilities”、“目标 Levels”和“目标 Units”参数提供的图层。
  • 目标字段 - 要将注记映射到的目标图层中的字段。 该字段必须已经存在。
  • 实体类型 - 要映射的注记的实体类型。 支持 Text 和 Block 类型。
  • 源 CAD 图层 - CAD 图层,包含将进行映射的注记。
  • 块属性 - 对于具有 Block 实体类型的注记,提供包含要映射的信息的块属性。
  • 分隔符 - 对于存储在分隔字符串中的注记,请提供分隔字符。
  • 位置 - 对于存储在分隔字符串中的注记,请提供要映射的值的位置。

Value Table
door_close_buffer
(可选)

该工具将从门要素搜索单元边界的距离(以国际英寸或毫米为单位)。 该参数值必须包含数值和测量单位。 默认值为 0.3 国际英寸。

Linear Unit
input_unit_minimum_width
(可选)

空间必须被视为 Units 要素的最小宽度(以国际英尺或米为单位)。 宽度小于此阈值的要素将写入非单元面要素类,并且不包含在目标 Units 图层中。 该参数值必须包含数值和测量单位。 默认值为 3 国际英尺。

Linear Unit
input_unit_minimum_area
(可选)

空间必须被视为 Units 要素的最小面积(以平方英尺或平方米为单位)。 面积小于此阈值的要素将写入非单元面要素类,并且不包含在目标 Units 图层中。 该参数值必须包含数值和测量单位。 默认值为 9 国际平方英尺。

Areal Unit

派生输出

名称说明数据类型
updated_units

更新后的目标单元要素。

Feature Layer

代码示例

ImportCADToIndoorDataset 示例 1(Python 窗口)

以下 Python 窗口脚本演示了如何在即时模式下使用 ImportCADToIndoorDataset 函数。

import arcpy
arcpy.indoors.ImportCADToIndoorDataset('C:/Indoors/Building_H/Bldg_H_1.dwg', 'C:/Indoors/ExampleCampus.gdb/Indoor/Levels', 'H1', '0',
                                       "0 Meters", 'C:/Indoors/ExampleCampus.gdb/Indoor/Facilities', 'Building H', 
                                       'C:/Indoors/ExampleCampus.gdb/Indoor/Units', 'C:/Indoors/ExampleCampus.gdb/Indoor/Details',
                                       'ALLOW_LAYERS_FROM_CAD', 'A-ROOMS', '',
                                       'A-FLOOR-OUTLINE', '',
                                       '', '',
                                       '','',
                                       'Units NAME Text A-AREA-IDEN # # #;Units USE_TYPE Text A-AREA-TYPE # # #', '',
                                       '0.455 Meters', '0.4 SquareMeters')
ImportCADToIndoorDataset 示例 2(独立脚本)

以下独立脚本演示了如何使用 ImportCADToIndoorDataset 函数。

import arcpy

#Set the CAD dataset to import
input_cad_datasets = 'C:/Indoors/Building_H/Bldg_H_2.dwg'

#Set target layers that conform to the ArcGIS Indoors Information model
target_unit_features = 'C:/Indoors/ExampleCampus.gdb/Indoor/Units'
target_detail_features = 'C:/Indoors/ExampleCampus.gdb/Indoor/Details'
target_level_features = 'C:/Indoors/ExampleCampus.gdb/Indoor/Levels'
target_facility_features = 'C:/Indoors/ExampleCampus.gdb/Indoor/Facilities'

#Set the level information
level_name = "H2"
vertical_order = 1
level_information = "8 FeetInt"

#Set the facility name
facility_name = "Building H"

# Choose to import CAD layers added to a map, 
# create the map layers from polyline features in CAD
allow_layers_from_cad = "NO_ALLOW_LAYERS_FROM_CAD"
input_unit_layers_cad = ''
in_CAD_fc = "C:/Indoors/Building_H/Bldg_H_2.dwg/Polyline"
input_unit_feature_layers = arcpy.management.MakeFeatureLayer(in_CAD_fc, 'units_feature_layer', "Layer IN('A-DOOR', 'A-WALL', 'I-WALL')") 
input_level_layers_cad = ''
input_level_feature_layers = arcpy.management.MakeFeatureLayer(in_CAD_fc, 'level_feature_layer', "Layer = 'A-FLOOR-OUTLINE'")
input_facility_layers_cad = ''
input_facility_feature_layers = arcpy.management.MakeFeatureLayer(in_CAD_fc, 'facility_feature_layer', "Layer = 'A-BLDG-OUTLINE'")
input_door_layers_cad = ''
input_door_feature_layers = arcpy.management.MakeFeatureLayer(in_CAD_fc, 'level_feature_layer', "Layer = 'A-DOOR'")

#Map CAD annotation
cad_annotation_mapping = 'Units NAME Text A-AREA-IDEN # # #;'\
                         'Units USE_TYPE Block A-ROOM-INFO ROOMUSE # #;'\
                         'Facilities NAME_LONG Text A-BLDG-INFO # . 2'

# Set the minimum width and area that should be considered a unit feature
door_close_buffer = ''
input_unit_minimum_width = ""
input_unit_minimum_area = ""

# Run the tool
arcpy.indoors.ImportCADToIndoorDataset(input_cad_datasets, target_level_features, level_name, vertical_order,
                                       level_elevation, target_facility_features, facility_name, target_unit_features,
                                       target_detail_features, allow_layers_from_cad, 
                                       input_unit_layers_cad, input_unit_feature_layers,
                                       input_level_layers_cad, input_level_feature_layers,
                                       input_door_layers_cad, input_door_feature_layers,
                                       input_facility_layers_cad, input_facility_feature_layers,
                                       cad_annotation_mapping, door_close_buffer,
                                       input_unit_minimum_width, input_unit_minimum_area)

环境

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

许可信息

  • Basic: 否
  • Standard: 否
  • Advanced: 需要 ArcGIS Indoors Pro 或 ArcGIS Indoors Maps

相关主题