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

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

摘要

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

使用情况

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

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

    了解有关将 BIM 数据添加到 ArcGIS Pro 的详细信息

  • 输入 BIM 楼层平面图面图层参数值将是源 BIM 文件的 Floorplan 数据集中的 Floorplan_Polygon 要素图层。

    • 该工具使用 Floorplan_Polygon 图层构造“楼层”和“单元”要素。
    • 根据输入 BIM 楼层平面图面图层参数值,该工具会访问同一 Floorplan 数据集中的其他图层以构造室内数据集。 “覆盖区”图层用于构造“设施点”要素,而 Floorplan_Polyline 图层用于构造“细节”要素。
  • 当在 Revit 绘图中检测到 Autodesk Revit 设计选项 时,将启用设计选项参数。 设计选项与主要 Revit 模型并存,通常在建设项目的设计阶段使用。 设计选项被组织成集,每个集中只有一个选项可以指定为主要选项。

    该工具始终从 Revit 绘图的主模型中导入要素。 如果需要,可视化场景中的 Revit 绘图以确定还应导入哪些设计选项。 例如,使用定义查询逐层过滤 BIM 平面图多边形;然后使用 Option_SetDesign_Option 字段中的唯一值对图层进行符号化。

    注:

    运行该工具后,检查导入的单位和详细信息要素。 根据设计选项的组织方式,您可能会发现额外或缺失的要素。 运行验证规则可以帮助识别与设计选项相关的问题,例如重叠要素。

  • 目标单元要素目标详细信息要素目标楼层要素目标设施点要素参数必须参考包含符合 Indoors 模型的单元、详细信息、楼层和设施点要素的要素类或要素图层。

    注:

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

  • 设施点 ID 参数用于为室内数据集中导入的设施要素填充 FACILITY_ID 字段。 在设置此参数时,请牢记以下内容:

    • 不允许输入空格。 可以使用下划线字符替换空格。 例如,将 Building XYZ 改为 Building_XYZ。
    • 要将输入 BIM 数据添加为现有室内数据集中的新设施点,请指定未分配给目标设施点要素中其他设施点的设施点 ID。
    • 要更新现有设施点,请使用目标设施点要素中该设施点要素的 FACILITY_ID 字段值。
      注:

      要更新现有设施点要素,设施点 ID 参数值必须与设施点要素的 FACILITY_ID 字段值匹配,而设施点名称参数值必须与设施点要素的 NAME 字段值匹配。 匹配区分大小写。

  • 设施点名称参数用于为室内数据集中导入的设施要素填充 NAME 字段。

  • 一楼名称参数用于确定建筑物的一楼。 目标楼层要素中每个楼层的垂直顺序、楼层编号和 z 值均派生自此输入。 将向高程小于标识的一楼的任何楼层分配负垂直顺序。

    注:
    • 无需将设置为一楼的楼层导入室内数据集。
    • 此参数仅接受可占用的楼层作为输入。

  • 如果您为目标要素参数设置的位置中存在数据,则会将源 BIM 文件中的“设施点”和“楼层”名称与要素中的“设施点”和“楼层”名称进行比较,以确定要更新的要素。

    • 如果设施点 ID设施点名称参数值分别与目标设施要素的 FACILITY_IDNAME 字段值匹配,则将更新设施点要素。
    • 如果源 BIM 文件中楼层要素的 BldgLevel 字段值与目标楼层要素的 NAME 字段值匹配,则楼层要素及其关联的详细信息和单元要素将更新。
    注:

    如果设施点 ID设施点名称参数值与现有设施点要素的 FACILITY_IDNAME 字段不匹配,并且 BIM 楼层平面图面不与现有设施点要素相交,则该工具会将 BIM 数据作为具有指定设施点 ID设施点名称值的新设施点导入。

  • 楼层平面图面使用类型字段参数定义 Floorplan_Polygon 要素图层中的字段,该字段将用于填充目标单元要素的 USE_TYPE 字段。 如果未提供任何字段,则将使用 Floorplan_Polygon 图层中的 RoomName 字段值。

  • 可以使用以下参数将其他属性从源 BIM 文件中的房间图层映射到目标单元要素的现有字段:

    • 输入 BIM 房间图层参数定义位于源 BIM 文件中建筑数据集中的房间图层。
    • 房间属性映射参数可用于将字段从输入 BIM 房间图层映射到目标单元要素字段。 运行该工具之前,字段必须存在。 建议将源 BIM 房间图层中的字段映射到具有相同数据类型的目标字段。
  • 如果以下字段存在于 Units 要素类中且无法使用房间属性映射参数进行映射,则默认情况下会对其进行映射:AREA_GROSSAREA_NETAREA_UMELEVATION_ABSOLUTEELEVATION_RELATIVEFACILITY_IDFACILITY_NAMELEVEL_IDLEVEL_NAMELEVEL_NUMBERNAMEUNIT_IDUSE_TYPEVERTICAL_ORDER

  • 要导入的楼层参数定义将导入的 BIM 文件中的楼层。 您可以使用此参数在室内数据中添加或更新特定楼层。 如果未填充此参数,则将导入 BIM 文件中的所有楼层。

  • 使用面积测量单位参数可指定“楼层”和“单元”要素类中 AREA_GROSS 字段的单位。

  • 使用允许插入新的重叠设施点参数来防止意外导入冲突的平面图数据。

    • 默认情况下,此参数处于未选中状态。 取消选中此参数时,该工具将测试输入 BIM 楼层平面图面是否与目标设施点要素中的任何现有设施点面相交。 如果检测到相交,该工具将检查指定的设施点 ID设施点名称参数值是否与相交设施点要素的 FACILITY_IDNAME 字段值匹配。 如果值匹配,该工具将更新现有设施点。 如果值不匹配,该工具将发出警告消息并停止运行。
    • 选中此参数时,该工具将不会测试输入 BIM 楼层平面图面是否与目标设施点要素中的任何现有设施点面相交。 选中此参数以导入与现有设施点重叠或接触的建筑物。
  • 使用目标设施点 3D 要素目标单元 3D 要素目标细节 3D 要素参数将要素导入设施点 3D、单元 3D 和详细信息 3D 多面体图层。 对象将按如下方式导入到目标图层:

    • 目标设施点 3D 要素 - 多面体要素将在设施点 3D 图层中创建,表示来自 ExteriorShell 要素类的建筑物的设施外壳。
    • 目标单元 3D 要素 - 多面体要素将在单元 3D 图层中创建,表示 Revit 模型的房间类别中对象的轮廓线。
    • 目标细节 3D 要素 - 多面体要素将在详细信息 3D 图层中根据以下 Revit 类别的对象创建:门、坡道、楼梯、楼梯支撑、楼梯平台、柱、结构柱、墙壁、窗户、檐口和幕墙面板。

      符号系统是根据 Revit 模型的符号系统生成的。

    警告:

    确保室内 3D 数据集的坐标系与模型的坐标系相匹配,并且 Revit 模型经过准确地地理配准。 不匹配的坐标系或不准确的地理配准会导致 3D 要素的缩放问题。

参数

标注说明数据类型
输入 BIM 楼层平面图面图层

源 BIM 文件中已添加到当前地图的 Floorplan_Polygon 要素图层。

Feature Layer
目标单元要素

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

Feature Layer
目标详细信息要素

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

Feature Layer
目标楼层要素

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

Feature Layer
目标设施点要素

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

Feature Layer
设施点 ID

将分配给输出 Indoors 要素的唯一设施点 ID。 设施点 ID 不能包含空格。

String
设施点名称

建筑物常用名称。

String
一楼名称

建筑物的一楼。 楼层的垂直顺序派生自此输入。 将向高程小于指定的一楼的任何楼层分配负垂直顺序。

String
楼层平面图面使用类型字段
(可选)

Floorplan_Polygon 要素图层中的字段,将用于填充目标单元要素的 USE_TYPE 字段。 如果未提供任何字段,则将使用 Floorplan_Polygon 图层中的 RoomName 字段值。

String
要导入的楼层
(可选)

输入 BIM 文件中将导入目标要素的楼层。 如果未提供楼层,则将导入所有楼层。

String
面积测量单位
(可选)

指定将用于楼层和单元要素类中的面积字段的测量单位。

  • 平方米面积单位将为平方米。
  • 平方英尺面积单位将为平方英尺。 这是默认设置。
String
输入 BIM 房间图层
(可选)

来自输入 BIM 文件的建筑数据集的房间图层。 该图层将用于获取扩展字段值,这些值可以使用房间属性映射参数映射到 Units 要素类中的现有字段。

Feature Layer
房间属性映射
(可选)

控制将使用来自输入 BIM 房间图层的字段值填充 Units 要素类中的哪些属性字段。 运行该工具之前,字段必须存在。 建议将输入 BIM 房间图层中的字段映射到具有相同字段类型的 Units 要素类中的字段。

Field Mappings
允许插入新的重叠设施点
(可选)

指定如果在建筑物的楼层平面图和目标设施点要素中的现有设施点要素之间检测到相交,是否将导入来自输入 BIM 文件的建筑物。

  • 未选中 - 该工具将测试输入 BIM 楼层平面图面是否与目标要素中的任何现有设施点面相交。 如果检测到相交,该工具将检查指定的设施点 ID设施点名称参数值是否与相交设施点要素的 FACILITY_IDNAME 字段值匹配。 如果值匹配,该工具将更新现有设施点。 如果值不匹配,该工具将发出消息并停止运行。 这是默认设置。
  • 选中此 - 该工具将不会测试输入 BIM 楼层平面图面是否与目标设施点要素中的任何现有设施点面相交。 可以使用此选项导入与现有设施点重叠或接触的建筑物。
Boolean
设计选项
(可选)

导入要素时将包括的输入 BIM 文件中的 Revit 设计选项。 如果未指定值,则只会导入主模型。 当输入 BIM 文件包含 Revit 设计选项时启用此参数。

Field Mappings
目标单元 3D 要素
(可选)

符合 ArcGIS Indoors 信息模型并与目标设施点、楼层和详细信息要素位于同一工作空间中的目标 3D 详细信息和目标 3D 设施点要素。 多面体单元要素将在代表输入 BIM 文件中每个房间底部的目标 3D 单元图层中创建。

Feature Layer
目标细节 3D 要素
(可选)

符合 ArcGIS Indoors 信息模型并与目标 3D 单元和目标 3D 设施点要素位于同一工作空间中的目标 3D 详细信息要素图层、要素类或要素服务。 多面体细节要素将在输入 BIM 文件的以下类别的目标 3D 细节图层中创建:门、坡道、楼梯、楼梯支撑、楼梯平台、柱、结构柱、墙壁、窗户、飞檐和幕墙面板。

Feature Layer
目标设施点 3D 要素
(可选)

符合 ArcGIS Indoors 信息模型并与目标 3D 单元和目标 3D 详细信息要素位于同一工作空间中的目标 3D 设施要素图层、要素类或要素服务。 将在输入 BIM 文件的 ExteriorShell 类别的目标 3Dfacilities 图层中创建多面体设施要素。

Feature Layer

派生输出

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

更新的目标单元要素。

Feature Layer

arcpy.indoors.ImportBIMToIndoorDataset(in_bim_floorplan_layer, target_unit_features, target_detail_features, target_level_features, target_facility_features, facility_id, facility_name, ground_floor_name, {floorplan_polygon_use_type_field}, {floors_to_import}, {area_unit_of_measure}, {in_bim_rooms_layer}, {room_properties_mapping}, {allow_insert_new_facility}, {design_options}, {target_unit3d_features}, {target_detail3d_features}, {target_facility3d_features})
名称说明数据类型
in_bim_floorplan_layer

源 BIM 文件中已添加到当前地图的 Floorplan_Polygon 要素图层。

Feature Layer
target_unit_features

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

Feature Layer
target_detail_features

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

Feature Layer
target_level_features

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

Feature Layer
target_facility_features

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

Feature Layer
facility_id

将分配给输出 Indoors 要素的唯一设施点 ID。 设施点 ID 不能包含空格。

String
facility_name

建筑物常用名称。

String
ground_floor_name

建筑物的一楼。 楼层的垂直顺序派生自此输入。 将向高程小于指定的一楼的任何楼层分配负垂直顺序。

String
floorplan_polygon_use_type_field
(可选)

Floorplan_Polygon 要素图层中的字段,将用于填充目标单元要素的 USE_TYPE 字段。 如果未提供任何字段,则将使用 Floorplan_Polygon 图层中的 RoomName 字段值。

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

输入 BIM 文件中将导入目标要素的楼层。 如果未提供楼层,则将导入所有楼层。

String
area_unit_of_measure
(可选)

指定将用于楼层和单元要素类中的面积字段的测量单位。

  • SQUARE_METERS面积单位将为平方米。
  • SQUARE_FEET面积单位将为平方英尺。 这是默认设置。
String
in_bim_rooms_layer
(可选)

来自输入 BIM 文件的建筑数据集的房间图层。 该图层将用于获取扩展字段值,这些值可以使用房间属性映射参数映射到 Units 要素类中的现有字段。

Feature Layer
room_properties_mapping
(可选)

控制将使用来自输入 BIM 房间图层的字段值填充 Units 要素类中的哪些属性字段。 运行该工具之前,字段必须存在。 建议将输入 BIM 房间图层中的字段映射到具有相同字段类型的 Units 要素类中的字段。

Field Mappings
allow_insert_new_facility
(可选)

指定如果在建筑物的楼层平面图和目标设施点要素中的现有设施点要素之间检测到相交,是否将导入来自输入 BIM 文件的建筑物。

  • NO_ALLOW_INSERT_NEW_FACILITY该工具将测试输入 BIM 楼层平面图面是否与目标设施点要素中的任何现有设施点面相交。 如果检测到相交,该工具将检查指定的 facility_idfacility_name 参数值是否与相交设施点要素的 FACILITY_IDNAME 字段值匹配。 如果值匹配,该工具将更新现有设施点。 如果值不匹配,该工具将发出消息并停止运行。 这是默认设置。
  • ALLOW_INSERT_NEW_FACILITY该工具将不会测试输入 BIM 楼层平面图面是否与目标设施点要素中的任何现有设施点面相交。 可以使用此选项导入与现有设施点重叠或接触的建筑物。
Boolean
design_options
[design_options,...]
(可选)

导入要素时将包括的输入 BIM 文件中的 Revit 设计选项。 如果未指定值,则只会导入主模型。 当输入 BIM 文件包含 Revit 设计选项时启用此参数。

Field Mappings
target_unit3d_features
(可选)

符合 ArcGIS Indoors 信息模型并与目标设施点、楼层和详细信息要素位于同一工作空间中的目标 3D 详细信息和目标 3D 设施点要素。 多面体单元要素将在代表输入 BIM 文件中每个房间底部的目标 3D 单元图层中创建。

Feature Layer
target_detail3d_features
(可选)

符合 ArcGIS Indoors 信息模型并与目标 3D 单元和目标 3D 设施点要素位于同一工作空间中的目标 3D 详细信息要素图层、要素类或要素服务。 多面体细节要素将在输入 BIM 文件的以下类别的目标 3D 细节图层中创建:门、坡道、楼梯、楼梯支撑、楼梯平台、柱、结构柱、墙壁、窗户、飞檐和幕墙面板。

Feature Layer
target_facility3d_features
(可选)

符合 ArcGIS Indoors 信息模型并与目标 3D 单元和目标 3D 详细信息要素位于同一工作空间中的目标 3D 设施要素图层、要素类或要素服务。 将在输入 BIM 文件的 ExteriorShell 类别的目标 3Dfacilities 图层中创建多面体设施要素。

Feature Layer

派生输出

名称说明数据类型
updated_units

更新的目标单元要素。

Feature Layer

代码示例

ImportBIMToIndoorDataset 示例 1(Python 窗口)

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

import arcpy
arcpy.indoors.ImportBIMToIndoorDataset('C:/ExampleCampus.rvt/Floorplan/Floorplan_Polygon', 
                                        'C:/Indoors/ExampleCampus.gdb/Indoor/Units', 
                                        'C:/Indoors/ExampleCampus.gdb/Indoor/Details', 
                                        'C:/Indoors/ExampleCampus.gdb/Indoor/Levels', 
                                        'C:/Indoors/ExampleCampus.gdb/Indoor/Facilities', 
                                        'Building_A',
                                        'Building A',
                                        'LEVEL 01',
                                        'RoomName',
                                        ['BASEMENT', 'LEVEL 01', 'LEVEL 02'],
                                        'SQUARE_FEET',
                                        'C:/ExampleCampus.rvt/Architectural/Rooms',
                                       'UNIT_ID "Unit ID" true true false 255 Text 0 0,First,#,Rooms,ObjectId,0,255;'
                                       'NAME "Name" true true false 100 Text 0 0,First,#;'
                                       'NAME_LONG "Long Name" true true false 255 Text 0 0,First,#,Rooms,Department,0,255;LEVEL_ID "Level ID" true true false 255 Text 0 0,First,#;'
                                       'AREA_GROSS "Gross Area" true true false 8 Double 0 0,First,#;'
                                       'HEIGHT_RELATIVE "Relative Height" true true false 8 Double 0 0,First,#,Rooms,SourceHeight,-1,-1',
                                       'NO_ALLOW_INSERT_NEW_FACILITY',
                                       '',
                                       'C:/Indoors/ExampleCampus.gdb/Indoor3D/Units3d',
                                       'C:/Indoors/ExampleCampus.gdb/Indoor3D/Details3d',
                                       'C:/Indoors/ExampleCampus.gdb/Indoor3D/Facilities3d')
ImportBIMToIndoorDataset 示例 2(独立脚本)

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

# Name: ImportBIMToIndoorDataset_example2.py
# Description: Imports features from a BIM file into the indoor dataset

import arcpy

# Set tool parameters 
in_bim_floorplan_fc = 'C:/ExampleCampus.rvt/Floorplan/Floorplan_Polygon'
arcpy.management.MakeFeatureLayer(in_bim_floorplan_fc, 'in_bim_floorplan_layer')

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' 
facility_id = 'BUILDING_A'
facility_name = 'Building A'
ground_floor_name = 'LEVEL 01'
floorplan_polygon_use_type_field = 'Category'
floors_to_import = ['BASEMENT', 'LEVEL 01', 'LEVEL 02']
area_unit_of_measure = 'SQUARE_FEET'
in_bim_rooms_layer = 'C:/ExampleCampus.rvt/Architectural/Rooms'
room_properties_mapping = ""
allow_insert_new_facility = 'NO_ALLOW_INSERT_NEW_FACILITY'

# Create field mapping object
room_properties_mapping = arcpy.FieldMappings()
#set target schema
TargetSchema = 'C:/Indoors/ExampleCampus.gdb/Indoor/Units'
room_properties_mapping.addTable(TargetSchema)

# Map the target field "NAME_LONG", using values from "RoomNumber" field from source BIM file
fldMap = arcpy.FieldMap()
fldMap.addInputField(in_bim_rooms_layer, 'RoomNumber')
RoomNumber = fldMap.outputField
RoomNumber.name, RoomNumber.aliasName, RoomNumber.type = 'NAME_LONG', 'Long Name', 'TEXT'
fldMap.outputField = RoomNumber
room_properties_mapping.addFieldMap(fldMap)

# Map the target field "HEIGHT_RELATIVE", using values from "SourceHeight"
fldMap = arcpy.FieldMap()
fldMap.addInputField(in_bim_rooms_layer, 'SourceHeight')
SourceHeight = fldMap.outputField
SourceHeight.name, SourceHeight.aliasName, SourceHeight.type = 'HEIGHT_RELATIVE', 'Relative Height', 'DOUBLE'
fldMap.outputField = SourceHeight
fldMap.addInputField(in_bim_rooms_layer, 'SourceHeight')
room_properties_mapping.addFieldMap(fldMap)

# Prepare the design option strings
option_set_name1 = "Option Set 1"
design_option_name1 = "Design 1"
option_set_name2 = "Option Set 2"
design_option_name2 = "Design 2"
design_options = [option_set_name1 + " | " + design_option_name1, option_set_name2 + " | " + design_option_name2]

# Set target layers for 3D features
target_unit3d_features = 'C:/Indoors/ExampleCampus.gdb/Indoor3D/Units3D' 
target_detail3d_features = 'C:/Indoors/ExampleCampus.gdb/Indoor3D/Details3D' 
target_facility3d_features = 'C:/Indoors/ExampleCampus.gdb/Indoor3D/Facilities3D'

# Run the tool
arcpy.indoors.ImportBIMToIndoorDataset(in_bim_floorplan_layer, target_unit_features, target_detail_features,
                                       target_level_features, target_facility_features, facility_id, facility_name,
                                       ground_floor_name, floorplan_polygon_use_type_field, floors_to_import,
                                       area_unit_of_measure, in_bim_rooms_layer, room_properties_mapping,
                                       allow_insert_new_facility, design_options, target_unit3d_features, target_detail3d_features, target_facility3d_features)

许可信息

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

相关主题