Import BIM To Indoor Dataset (Indoors)

Available for an ArcGIS organization licensed with the Indoors extension.

Summary

Imports features from a BIM file into an indoor dataset that conforms to the ArcGIS Indoors Information Model. The output of this tool can be used to create floor-aware maps and scenes for use in floor-aware apps, 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.

    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.

    • 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.
  • The Target Unit Features, Target Detail Features, Target Level Features, and Target Facility Features parameters must reference feature classes or feature layers containing units, details, levels, and facilities features that conform to the Indoors model.

    Note:

    The target features must all be from the same file geodatabase, enterprise geodatabase, or feature service.

  • 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 determines 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 identified 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 features.
    • 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 floorplan 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.
  • The following fields are mapped by default if they are present 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.

  • The Floors To Import parameter defines the floors in the input BIM file that will be imported. You can use this parameter to add or update specific levels in the indoor data. If this parameter is not populated, all floors from the BIM file will be imported.

  • 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 floorplan 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 floorplan 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.

Parameters

LabelExplanationData Type
Input BIM Floorplan Polygon Layer

The Floorplan_Polygon feature layer from the source BIM 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 ArcGIS Indoors Information 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 ArcGIS Indoors Information 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 ArcGIS Indoors Information 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 ArcGIS Indoors Information 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 input. 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 BIM file that will be imported to the target features. If no floors are provided, all floors 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 BIM 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 BIM Rooms layer. The fields must exist before running the tool. It is recommended that you map fields from the input BIM 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 BIM 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 floorplan 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 message and stops running. This is the default.
  • Checked—The tool does not test whether the input BIM floorplan 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

Derived Output

LabelExplanationData Type
Updated Units

The updated target unit 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})
NameExplanationData Type
in_bim_floorplan_layer

The Floorplan_Polygon feature layer from the source BIM 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 ArcGIS Indoors Information 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 ArcGIS Indoors Information 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 ArcGIS Indoors Information 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 ArcGIS Indoors Information 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 input. 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 BIM file that will be imported to the target features. If no floors are provided, all floors 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
(Optional)

The Rooms layer from the Architectural dataset in the input BIM 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 BIM Rooms layer. The fields must exist before running the tool. It is recommended that you map fields from the input BIM 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 BIM 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 floorplan 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 message and stops running. This is the default.
  • ALLOW_INSERT_NEW_FACILITY The tool does not test whether the input BIM floorplan 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

Derived Output

NameExplanationData Type
updated_units

The updated target unit 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'],
                                        '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')
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'
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)

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

Environments

Licensing information

  • Basic: No
  • Standard: No
  • Advanced: Requires Indoors

Related topics