Import BIM To Indoor Dataset (Indoors)

Available with the ArcGIS Indoors Pro or ArcGIS Indoors Maps extension.

Summary

Imports features from a Revit file (.rvt) to an Indoors workspace that conforms to the ArcGIS Indoors Information Model. The output of this tool can be used to create floor-aware maps and scenes, as well as to generate an indoor network for routing.

Usage

  • You can use this tool to load floor plan data into an indoor dataset created using the Create Indoor Dataset tool or an Indoors geodatabase created using the Create Indoors Database tool.

  • The source BIM data must be georeferenced before running the tool.

    Caution:

    Ensure that the BIM data is accurately georeferenced (including any linked Revit models) and the coordinate system of the indoor dataset and indoor 3D dataset match the coordinate system in the associated .wld3 file. Both the horizontal and vertical coordinate system units must match, and any linked Revit models must have the same horizontal and vertical coordinate systems as the host Revit model. Inaccurate georeferencing or mismatched coordinate systems can result in scaling issues for 3D features.

    Learn more about adding BIM data to ArcGIS Pro

  • The Input BIM Floorplan Polygon Layer parameter value will be the Floorplan_Polygon feature layer from the Floorplan dataset in the source BIM file workspace.

    • The tool uses the Floorplan_Polygon layer to construct the Levels and Units features.
    • Based on the Input BIM Floorplan Polygon Layer parameter value, the tool accesses additional layers from the same Floorplan dataset to construct the indoor dataset. The Footprint layer is used to construct the Facilities features, and the Floorplan_Polyline layer is used to construct the Details features.
    • You can select linked Revit files as input to the Linked Files parameter, which will appear automatically if the input Floorplan_Polygon layer is sourced from a host Revit model with linked files.
    • Linked Revit files must be located in the same folder or nested folders in the same folder as the host Revit model to be detected by the tool. You must input the Floorplan_Polygon layer of the host Revit model for any associated linked Revit files to be detected.

      Note:

      The tool only supports importing linked models that are .rvt files.

  • The Design Options parameter is enabled when Autodesk Revit design options are detected in the Revit drawing. Design options exist alongside the main Revit model and are typically used during the design phase of construction projects. Design options are organized into sets, and only one option in each set can be assigned as primary.

    Design options for any selected linked Revit files will automatically appear for selection under the Design Options parameter.

    The tool always imports features from the host model of the Revit drawing. If needed, visualize the Revit drawing in a scene to determine which design options should also be imported. For example, use a definition query to filter the BIM floor plan polygon layer by floor; then symbolize the layer using unique values in the Option_Set and Design_Option fields.

    Note:

    After running the tool, inspect the imported Units and Details features. Depending on how the design options were organized, you may find extra or missing features. Running validation rules can help identify issues related to design options, such as overlapping features.

  • The Target Unit Features, Target Detail Features, Target Facility Features, Target Level Features, Target Unit 3D Features, Target Detail 3D Features, and Target Facility 3D Features parameters must reference feature classes or feature layers that conform to the Indoors model.

    Note:

    Target 2D features must all be from the same file geodatabase, enterprise geodatabase, or feature service.

    Target 3D features can be from a different workspace than target 2D features.

  • The Facility ID parameter is used to populate the FACILITY_ID field for the imported facility features in the indoor dataset. Keep the following in mind when setting this parameter:

    • Spaces are not allowed. You can replace spaces with underscore characters. For example, instead of Building XYZ, use Building_XYZ.
    • To add the input BIM data as a new facility in an existing indoor dataset, specify a facility ID that is not assigned to another facility in the target facility features.
    • To update an existing facility, use the FACILITY_ID field value for that facility feature in the target facility features.
      Note:

      To update an existing facility feature, the Facility ID parameter value must match the facility feature's FACILITY_ID field value, and the Facility Name parameter value must match the facility feature's NAME field value. The matching is case sensitive.

  • The Facility Name parameter is used to populate the NAME field for the imported facility features in the indoor dataset.

  • The Ground Floor Name parameter defines the ground floor of the building. The vertical order, level number, and z-value for each level in the target level features are derived from this input. Any levels with an elevation that is less than the defined ground floor are assigned a negative vertical order.

    Note:
    • You do not need to import the floor you set as the ground floor to the indoor dataset.
    • Only occupiable levels are accepted as inputs for this parameter.

  • If data exists in the locations you set for the target feature parameters, the Facility and Level names in the source BIM file will be compared to the Facility and Level names of the features to determine the features to update.

    • A Facilities feature will be updated if the Facility ID and Facility Name parameter values match the FACILITY_ID and NAME field values, respectively, for a target Facilities feature.
    • A Levels feature and its associated Details and Units features will be updated if the BldgLevel field value for a Levels feature in the source BIM file matches the NAME field value for a target Levels feature.
    Note:

    If the Facility ID and Facility Name parameter values do not match the FACILITY_ID and NAME fields for an existing facility feature, and the BIM floor plan polygon does not intersect an existing facility feature, the tool imports the BIM data as a new facility with the specified Facility ID and Facility Name values.

  • The Floorplan Polygon Use Type Field parameter defines the field from the Floorplan_Polygon feature layer that will be used to populate the USE_TYPE field for the target Units features. If no field is provided, the RoomName field value from the Floorplan_Polygon layer will be used.

  • You can map additional attributes from the Rooms layer in the source BIM file to existing fields for the target Units features using the following parameters:

    • The input BIM Rooms Layer parameter defines the Rooms layer located in the Architectural dataset in the source BIM file.
    • The Room Properties Mapping parameter can be used to map fields from the input BIM Rooms layer to target unit feature fields. Fields must exist before you run the tool. It is recommended that you map fields from the source BIM Rooms layer to target fields that have the same data type.
    • If you selected linked files for import using the Linked Files parameter, you can map to fields in the Units layer from multiple Rooms layers. The selected Rooms layers must be sourced from either the host Revit model or any selected linked Revit files. If a field is mapped from one Rooms layer and that field exists in multiple linked files, the field will be mapped to any units created from the linked files during the tool run.
    • You can't use multiple input layers with the same name in the Room Properties Mapping parameter. Instead, use the Browse button in the Geoprocessing pane to browse to the full path locations of each of the Rooms layers.
  • The following fields are mapped by default if they are in the Units feature class and cannot be mapped using the Room Properties Mapping parameter: AREA_GROSS, AREA_NET, AREA_UM, ELEVATION_ABSOLUTE, ELEVATION_RELATIVE, FACILITY_ID, FACILITY_NAME, LEVEL_ID, LEVEL_NAME, LEVEL_NUMBER, NAME, UNIT_ID, USE_TYPE, and VERTICAL_ORDER.

  • You can use the Floors To Import parameter to define the floors in the input BIM file that will be imported in the following ways:

    • Add or update specific levels in the indoor data.
    • Import levels with associated floor or roof elements.

    If an input is provided to this parameter, only that subset of data will be imported. If no input is provided to this parameter, all floors from the BIM file will be imported. Roof elements will only be imported if provided as input to this parameter.

  • Use the Area Unit of Measure parameter to specify the units for the AREA_GROSS field in the Levels and Units feature classes.

  • Use the Allow insert of new overlapping facility parameter to prevent accidental import of conflicting floor plan data.

    • This parameter is unchecked by default. When this parameter is unchecked, the tool tests whether the input BIM floor plan polygon intersects any existing facility polygon in the target facility features. If an intersection is detected, the tool checks whether the specified Facility ID and Facility Name parameter values match the FACILITY_ID and NAME field values of the intersecting Facilities feature. If the values match, the tool updates the existing facility. If the values do not match, the tool issues a warning message and stops running.
    • When this parameter is checked, the tool does not test whether the input BIM floor plan polygon intersects any existing facility polygon in the target facility features. Check this parameter to import a building that overlaps or touches an existing facility.
  • Use the Target Facility 3D Features, Target Unit 3D Features, and Target Detail 3D Features parameters to import features into the Facilities 3D, Units 3D, and Details 3D multipatch layers. Features will be imported to the target layers as follows:

    • Target Facility 3D Features—Multipatch features will be created in the Facilities 3D layer representing the facility shell of the building from the ExteriorShell feature class.
    • Target Unit 3D Features—Multipatch features will be created in the Units 3D layer representing the footprint of objects in the Revit model's Rooms category.
    • Target Detail 3D Features—Multipatch features will be created in the Details 3D layer from objects in the following Revit categories: Doors, Ramps, Stairs, Stair supports, Stair Landings, Columns, Structural Columns, Walls, Windows, Cornices, and Curtain Wall Panels.

    • Symbology is generated based on the symbology of the Revit model.

Parameters

LabelExplanationData Type
Input BIM Floorplan Polygon Layer

The Floorplan_Polygon feature layer from the source .rvt file that has been added to the current map.

Feature Layer
Target Unit Features

The target Units feature layer, feature class, or feature service that conforms to the Indoors model and resides in the same workspace as the target Facilities, Levels, and Details features.

Feature Layer
Target Detail Features

The target Details feature layer, feature class, or feature service that conforms to the Indoors model and resides in the same workspace as the target Facilities, Levels, and Units features.

Feature Layer
Target Level Features

The target Levels feature layer, feature class, or feature service that conforms to the Indoors model and resides in the same workspace as the target Facilities, Units, and Details features.

Feature Layer
Target Facility Features

The target Facilities feature layer, feature class, or feature service that conforms to the Indoors model and resides in the same workspace as the target Levels, Units, and Details features.

Feature Layer
Facility ID

The unique facility ID that will be assigned to the output Indoors features. The facility ID cannot contain spaces.

String
Facility Name

The common name of the building.

String
Ground Floor Name

The ground floor of the building. The vertical order of the levels is derived from this value. Any levels with an elevation that is less than the specified ground floor will be assigned a negative vertical order.

String
Floorplan Polygon Use Type Field
(Optional)

The field from the Floorplan_Polygon feature layer that will be used to populate the USE_TYPE field for the target unit features. If no field is provided, the RoomName field value from the Floorplan_Polygon layer will be used.

String
Floors To Import
(Optional)

The floors in the input .rvt file that will be imported to the target features. If no floors are provided, all floors except roof elements will be imported.

String
Area Unit of Measure
(Optional)

Specifies the unit of measure that will be used for the area fields in the Levels and Units feature classes.

  • Square MetersThe area unit will be square meters.
  • Square FeetThe area unit will be square feet. This is the default.
String
Input BIM Rooms Layer
(Optional)

The Rooms layer from the Architectural dataset in the input .rvt file. This layer will be used to obtain extended field values that can be mapped to existing fields in the Units feature class using the Room Properties Mapping parameter.

Feature Layer
Room Properties Mapping
(Optional)

Controls which attribute fields in the Units feature class will be populated with field values from the input .rvt Rooms layer. The fields must exist before running the tool. It is recommended that you map fields from the input .rvt Rooms layer to fields from the Units feature class that have the same field type.

Field Mappings
Allow insert of new overlapping facility
(Optional)

Specifies whether a building from the input .rvt file will be imported if an intersection is detected between that building's floor plan and an existing Facilities feature in the target facility features.

  • Unchecked—The tool tests whether the input BIM floor plan polygon intersects any existing facility polygon in the target features. If an intersection is detected, the tool checks whether the specified Facility ID and Facility Name parameter values match the FACILITY_ID and NAME field values of the intersecting Facilities feature. If the values match, the tool updates the existing facility. If the values do not match, the tool issues a warning message and stops running. This is the default.
  • Checked—The tool does not test whether the input BIM floor plan polygon intersects any existing facility polygon in the target facility features. You can use this option to import a building that overlaps or touches an existing facility.
Boolean
Design Options
(Optional)

The Revit design options in the input .rvt file that will be included when importing features. If no value is specified, only the main model will be imported. This parameter is enabled when the input .rvt file includes Revit design options.

String
Target Unit 3D Features
(Optional)

The target 3D Units feature layer, feature class, or feature service that conforms to the Indoors model. Multipatch unit features will be created in the target 3D units layer that represent the base of each room in the input .rvt file.

Feature Layer
Target Detail 3D Features
(Optional)

The target 3D Details feature layer, feature class, or feature service that conforms to the Indoors model. Multipatch detail features will be created in the target 3D details layer from the following categories in the input .rvt file: Doors, Ramps, Stairs, Stair supports, Stair Landings, Columns, Structural Columns, Walls, Windows, Cornices, and Curtain Wall Panels.

Feature Layer
Target Facility 3D Features
(Optional)

The target 3D Facilities feature layer, feature class, or feature service that conforms to the Indoors model. A multipatch facility feature will be created in the target 3Dfacilities layer from the ExteriorShell category in the input .rvt file.

Feature Layer
Linked Files
(Optional)

The linked Revit files that are associated with the input .rvt file of the same building. Selected linked files will be imported to the Indoors model along with the main model. If no value is specified, only the main model will be imported. This parameter is only enabled when the input .rvt file includes linked Revit files.

String

Derived Output

LabelExplanationData Type
Updated Units

The updated target Units features.

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}, {linked_files})
NameExplanationData Type
in_bim_floorplan_layer

The Floorplan_Polygon feature layer from the source .rvt file that has been added to the current map.

Feature Layer
target_unit_features

The target Units feature layer, feature class, or feature service that conforms to the Indoors model and resides in the same workspace as the target Facilities, Levels, and Details features.

Feature Layer
target_detail_features

The target Details feature layer, feature class, or feature service that conforms to the Indoors model and resides in the same workspace as the target Facilities, Levels, and Units features.

Feature Layer
target_level_features

The target Levels feature layer, feature class, or feature service that conforms to the Indoors model and resides in the same workspace as the target Facilities, Units, and Details features.

Feature Layer
target_facility_features

The target Facilities feature layer, feature class, or feature service that conforms to the Indoors model and resides in the same workspace as the target Levels, Units, and Details features.

Feature Layer
facility_id

The unique facility ID that will be assigned to the output Indoors features. The facility ID cannot contain spaces.

String
facility_name

The common name of the building.

String
ground_floor_name

The ground floor of the building. The vertical order of the levels is derived from this value. Any levels with an elevation that is less than the specified ground floor will be assigned a negative vertical order.

String
floorplan_polygon_use_type_field
(Optional)

The field from the Floorplan_Polygon feature layer that will be used to populate the USE_TYPE field for the target unit features. If no field is provided, the RoomName field value from the Floorplan_Polygon layer will be used.

String
floors_to_import
[floors_to_import,...]
(Optional)

The floors in the input .rvt file that will be imported to the target features. If no floors are provided, all floors except roof elements will be imported.

String
area_unit_of_measure
(Optional)

Specifies the unit of measure that will be used for the area fields in the Levels and Units feature classes.

  • SQUARE_METERSThe area unit will be square meters.
  • SQUARE_FEETThe area unit will be square feet. This is the default.
String
in_bim_rooms_layer
[in_bim_rooms_layer,...]
(Optional)

The Rooms layer from the Architectural dataset in the input .rvt file. This layer will be used to obtain extended field values that can be mapped to existing fields in the Units feature class using the Room Properties Mapping parameter.

Feature Layer
room_properties_mapping
(Optional)

Controls which attribute fields in the Units feature class will be populated with field values from the input .rvt Rooms layer. The fields must exist before running the tool. It is recommended that you map fields from the input .rvt Rooms layer to fields from the Units feature class that have the same field type.

Field Mappings
allow_insert_new_facility
(Optional)

Specifies whether a building from the input .rvt file will be imported if an intersection is detected between that building's floor plan and an existing Facilities feature in the target facility features.

  • NO_ALLOW_INSERT_NEW_FACILITYThe tool tests whether the input BIM floor plan polygon intersects any existing facility polygon in the target facility features. If an intersection is detected, the tool checks whether the specified facility_id and facility_name parameter values match the FACILITY_ID and NAME field values of the intersecting Facilities feature. If the values match, the tool updates the existing facility. If the values do not match, the tool issues a warning message and stops running. This is the default.
  • ALLOW_INSERT_NEW_FACILITY The tool does not test whether the input BIM floor plan polygon intersects any existing facility polygon in the target facility features. You can use this option to import a building that overlaps or touches an existing facility.
Boolean
design_options
[design_options,...]
(Optional)

The Revit design options in the input .rvt file that will be included when importing features. If no value is specified, only the main model will be imported. This parameter is enabled when the input .rvt file includes Revit design options.

String
target_unit3d_features
(Optional)

The target 3D Units feature layer, feature class, or feature service that conforms to the Indoors model. Multipatch unit features will be created in the target 3D units layer that represent the base of each room in the input .rvt file.

Feature Layer
target_detail3d_features
(Optional)

The target 3D Details feature layer, feature class, or feature service that conforms to the Indoors model. Multipatch detail features will be created in the target 3D details layer from the following categories in the input .rvt file: Doors, Ramps, Stairs, Stair supports, Stair Landings, Columns, Structural Columns, Walls, Windows, Cornices, and Curtain Wall Panels.

Feature Layer
target_facility3d_features
(Optional)

The target 3D Facilities feature layer, feature class, or feature service that conforms to the Indoors model. A multipatch facility feature will be created in the target 3Dfacilities layer from the ExteriorShell category in the input .rvt file.

Feature Layer
linked_files
[linked_files,...]
(Optional)

The linked Revit files that are associated with the input .rvt file of the same building. Selected linked files will be imported to the Indoors model along with the main model. If no value is specified, only the main model will be imported. This parameter is only enabled when the input .rvt file includes linked Revit files.

String

Derived Output

NameExplanationData Type
updated_units

The updated target Units features.

Feature Layer

Code sample

ImportBIMToIndoorDataset example 1 (Python window)

The following Python window script demonstrates how to use the ImportBIMToIndoorDataset function in immediate mode.

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', 'ROOF'],
                                        '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'
                                       'ExampleCampus - Structure.rvt')
ImportBIMToIndoorDataset example 2 (stand-alone script)

The following stand-alone script demonstrates how to use the ImportBIMToIndoorDataset function.

# 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'
in_bim_floorplan_layer = arcpy.management.MakeFeatureLayer(in_bim_floorplan_fc, 'floorplan_polygon')

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', 'ROOF']
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'

# Select any linked Revit models that contain information relevant to your GIS data
linked_files = 'ExampleCampus - Structure.rvt'

# 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, linked_files)

Environments

Licensing information

  • Basic: No
  • Standard: No
  • Advanced: Requires ArcGIS Indoors Pro or ArcGIS Indoors Maps

Related topics