Available for an ArcGIS organization licensed with the Indoors extension.
The Import Floorplans To Indoors Geodatabase tool takes a configuration file as input. The configuration file is a Microsoft Excel workbook that contains information the tool needs to locate your CAD files, import CAD floor plan data, and convert the imported data into features and attributes in the indoor feature classes.
A template configuration file is included with the ArcGIS Pro installation and is located under <installation location>\Program Files\ArcGIS\Pro\Resources\Indoors\MappingFile\Config_CAD_Indoors_Template.xlsx. Make a copy of the template configuration file for use in your project.
Tip:
It may be helpful to add your CAD drawings to the map and become familiar with the CAD layer names and content before updating the configuration spreadsheet.
To set up the configuration file, complete each sheet as follows:
Map CAD layers to feature classes
The Layer to Feature Class worksheet maps the CAD layers in the CAD files to their corresponding features in your indoor feature classes.
Note:
At ArcGIS Pro 2.8 and earlier, this worksheet was named CAD Layer to FC Mapping.
The Import Floorplans To Indoors Geodatabase tool can generate polygon features from CAD layers that include closed or unclosed polyline entities. For example, if your CAD drawing has a layer with closed polylines defining units (offices, hallways, and other navigable spaces), populate the UNITS column with the name of that CAD layer:
Alternatively, if your CAD drawing has several layers with unclosed polylines that together define the boundary edges of units, populate the UNIT_LINES column with the names of those CAD layers:
Populate the Layer to Feature Class sheet as follows:
Note:
The columns related to zones and sections are only applicable to users of the Indoors geodatabase (created using the Create Indoors Database tool). If you are using the Indoors geodatabase, you have the option to populate these columns, and the Import Floorplans To Indoors Geodatabase tool honors them.
- In the FACILITIES column, list the CAD layer or layers with closed polylines that define the shape and extent of the facilities.
Alternatively, if your CAD layers have unclosed polylines that together define the extent and edges of a facility, list those CAD layers in the FACILITY_LINES column.
Note:
Later in the configuration there is an option to define the shape and extent of a facility by merging level polygons. Even if you choose that option, you must still populate either the FACILITIES or FACILITY_LINES column. If you choose to define a facility’s shape and extent using merged level polygons, this column is ignored.
- In the LEVELS column, list the CAD layer or layers with closed polylines that define the extent of individual levels.
This may include a ground floor, basement, mezzanine, and other spaces that have the same z-value in a building. Alternatively, if you have multiple CAD layers with unclosed polylines (such as exterior walls and doors) that together define the extent of the individual levels, list those CAD layers in the LEVEL_LINES column.
- In the UNITS column, list the CAD layer or layers with closed polylines that define the extents of individual units, such as rooms, hallways, and other navigable spaces.
Alternatively, if you have multiple CAD layers with unclosed polylines (such as interior and exterior walls) that together define the extents of individual units, list them in the UNIT_LINES column.
- In the DETAILS column, list any CAD layers with polylines (closed or unclosed) that define interior details that you want to import, such as walls, doors, and windows.
Note:
Consider how you intend to use the indoor GIS when choosing which interior details to import. For example, HVAC or electrical fixtures may be important for facility-management use cases, but not for managing office hotels.
- Optionally, define any door openings that should be closed when generating unit polygons.
This is good practice if you listed a CAD layer in the UNIT_LINES column that has doors drawn in the open position with a swinging arc like the one shown here, as it results in cleaner polygons.
- In the OPENINGS column, list the CAD layer or layers with polylines (closed or unclosed) that represent doors and should be shut when generating the output unit polygons.
- On the Level Properties sheet, set the CLOSE_DOORS column to Y.
- Save the file.
Map CAD annotation to attribute fields
Your CAD data may also include annotation for unique identifiers, common names, and other important information. The Import Floorplans To Indoors Geodatabase tool adds this information to imported features as attribute data based on CAD anchor points and configuration in the Annotation to Field sheet. The tool supports mapping CAD annotation to custom attributes, parsing delimited annotation values, and extracting block annotation. You can map CAD annotation to the following feature classes if they conform to the Indoors model: Units, Levels, Facilities, Sections, and Zones.
Note:
The Annotation to Field sheet was added at ArcGIS Pro 2.9 to support importing CAD annotation to custom attribute fields. Previous versions of the configuration file did not include this sheet and CAD annotation was mapped in the CAD Layer to FC Mapping sheet. Both versions of the configuration file are supported at ArcGIS Pro 2.9.
The Annotation to Field sheet includes three columns:
- SOURCE_ANNOTATION—Specifies a CAD layer that contains annotation
- TARGET_FEATURE_CLASS—Specifies the feature class in which you want to store the annotation
- TARGET_FIELD_NAME—Specifies the attribute field in the target feature class in which you want to store the annotation
Several rows in the worksheet are already partially prepared with target Indoors feature classes and attribute fields. For example, row two targets the UNIT_ID attribute field in the Units feature class. You can complete rows for which you have CAD layers with annotation by populating the SOURCE_ANNOTATION column. You can leave this column blank or delete the row if you don't want to include annotation for an attribute field. If you want to include additional CAD annotation, you can fill out additional rows on the Annotation to Field sheet.
When targeting the Units feature class, if the CAD annotation is sourced from multiple CAD layers, you can fill out multiple rows targeting the same field. If more than one of the specified CAD layers contain annotations for a unit feature, the tool uses the CAD annotation from the first CAD layer listed in the worksheet that contains annotation for the feature.
The following is an example of a completed Annotation to Field sheet:
In this example, the following updates were made to the Annotation to Field sheet:
- The SOURCE_ANNOTATION column is left blank for row two because there is no suitable CAD annotation. The Import Floorplans To Indoors Geodatabase tool automatically generates unique IDs for units features.
- Rows three and four both target the Unit's NAME field. To populate the NAME field for a unit feature, the tool first looks for CAD annotation in the A-AREA-NAME layer. If no annotation is found, the tool looks for CAD annotation in the A-AREA-ALT-NAME layer next. If no annotation is found in the configured CAD layers, the tool automatically generates a value for the unit's NAME.
- The SOURCE_ANNOTATION column in row five is set to a CAD layer called A-AREA-TYPE that contains CAD annotation describing room usage.
- The rows related to zones and sections were not being used and were deleted.
- Row six was added to map annotation from a CAD layer named A-ADMIN-NAME into a custom ADMIN_NAME attribute field in the Levels feature class. The custom ADMIN_NAME field must exist in the Levels feature class before running the Import Floorplans To Indoors Database tool.
Source annotation syntax
The SOURCE_ANNOTATION column supports special syntax that allows you to parse and extract portions of delimited CAD annotation or block annotation. If the CAD annotation consists of a long string delimited by characters or line breaks, you can use the following syntax in the SOURCE_ANNOTATION column to extract specific values:
<layer name>|<position>|<delimiter>
Example 1—A CAD layer named A-ANNO-LYR has annotation in the form of period-delimited strings, such as the following:
CAMPUS.A.A-210
To return the third part of the string, "A-210", use the following in the SOURCE_ANNOTATION column:
A-ANNO-LYR|3|.
Example 2—A CAD layer has annotation in the form of multiline strings (MTEXT), such as the following:
CAMPUS
H360
To return the second part of the string ("H360"), use \P as the delimiter as follows:
A-ANNO-LYR|2|\P
If the CAD data contains block annotation, you can use the following syntax in the SOURCE_ANNOTATION column to extract specific values:
<layer name>|1|{<FIELD_NAME>}
In this syntax, <FIELD_NAME> represents the custom field you are referencing in your annotation. For example, to extract unique identifiers from a CAD layer named A-ANNO-LYR that contains block annotation with a custom field named OFFICE_ID, use the following:
A-ANNO-LYR|1|{OFFICE_ID}
Populate the Annotation to Field sheet
Populate the Annotation to Field sheet as follows:
- Type the name of a CAD layer that contains unique room identifiers, such as L1w205 or A-101, in the SOURCE_ANNOTATION column in row two. If suitable CAD annotation is not available, you can leave this column blank and the Import Floorplans To Indoors Database tool will automatically generate unique UNIT_ID values.
You must provide a CAD layer that contains unique values for each unit feature to support updating floor plans and preserving fields used for space planning and workspace reservation.
Note:
The Import Floorplans To Indoors Geodatabase tool uses the CAD annotation's anchor point to determine the associated unit feature. Before specifying a CAD layer for annotation mapping, review the CAD annotation and ensure anchor points are positioned within their associated spaces.
- In row 3, in the SOURCE_ANNOTATION column, type the name of a CAD layer that contains common room names, such as Davies Hall or Server Room #4. If suitable CAD annotation is not available, you can leave this column blank and the tool will automatically generate values for the Unit's NAME attribute.
- In row 4, in the SOURCE_ANNOTATION column, type the name of a CAD layer that has descriptive usage strings, such as Office, Stairway, or Conference Room. If suitable CAD annotation is not available, you can leave this column blank, and the tool will assign Null values to the Units’ USE_TYPE attribute.
The USE_TYPE attribute is not required for Units, but including it allows you to symbolize units by use type in indoor maps and scenes.
- Optionally, fill out the SOURCE_ANNOTATION column for rows 5 through 8 to include CAD annotation for the Zones and Sections feature classes if they are a part of your indoor GIS.
If suitable CAD annotation is not available, you can leave this column blank, and the tool will generate ID and name values for Zones and Sections features. Providing CAD annotation that includes a unique value for each Section and Zone feature ensures that ID field values and custom fields you create in ArcGIS Pro are updated correctly.
Note:
Zones and Sections feature classes are created by the Create Indoors Database tool. If your indoor GIS does not include Zones and Sections feature classes, you can delete these rows or leave them blank.
- Create and populate additional rows as needed to map other CAD annotation to your Indoors attributes:
- In the SOURCE_ANNOTATION column, type the name of a CAD layer that contains annotation.
- In the TARGET_FEATURE_CLASS column, type the name of the Indoors feature class in which you want to store the annotation.
Note:
You can map CAD annotation to the following feature classes if they conform to the Indoors model: Units, Levels, Facilities, Sections, and Zones.
- In the TARGET_FIELD_NAME column, type the name of the attribute field in which you want to store the annotation.
The attribute field must already exist in the target feature class. The following field data types are supported: Text, Short, Long, Float, and Double.
Note:
If the target field is populated based on information elsewhere in the configuration file, the Annotation to Field mapping is ignored for that field.
- Save the file.
Configure facility properties
The Facility Properties sheet stores metadata about the facility or facilities to be imported, such as each facility's name and height. This metadata is applied to features and attributes in the indoor dataset during the import process.
The *_ID columns are used to generate a unique identifier string for each feature imported into the indoor dataset. Each feature’s unique identifier includes the IDs for the associated feature or features, so that features can be linked to associated locations. For example, a level ID includes the facility ID of the facility in which the level is located.
Note:
When you run the Import Floorplans To Geodatabase tool, you can choose the delimiter used to separate key values in the unique identifier string.
For example, consider a scenario where ABCXYZ University has a main campus and a branch campus. The university's facilities are named for famous scientists. In the CAD data, some of the room numbers contain hyphens, so you decide to use a period (.) as the delimiter. The *_ID values for this scenario would look like this:
Column name | Example values |
---|---|
SITE_ID | ABCXYZ.MAIN ABCXYZ.BRANCH |
FACILITY_ID | ABCXYZ.MAIN.GALILEO ABCXYZ.MAIN.CURIE ABCXYZ.BRANCH.FEYNMAN |
LEVEL_ID | ABCXYZ.MAIN.CURIE.1 ABCXYZ.MAIN.CURIE.2 ABCXYZ.MAIN.CURIE.3 |
Note:
To support floor-aware maps and scenes, the values in the *_ID columns must be prepended with the identifiers for all associated features in the correct order, separated by your chosen unique ID delimiter.
Populate the Facility Properties sheet as follows:
- In the SITE_ID column, list the unique identifier strings for each site.
If needed, include any additional information (such as organization or country) by prepending it with one of the available Unique ID Delimiter characters.
- Optionally, in the SITE_NAME column, list a common name for each site.
- Copy and paste as needed to create additional rows for each site, with one row for each facility at that site.
- Copy the values in the SITE_ID column and paste them into the FACILITY_ID column.
- In the FACILITY_ID column, append a delimiter and the unique identifier string for each facility.
Note:
Ensure that the same delimiter is used across all *_ID columns.
- In the NAME column, list common facility names for use as map labels.
Values in this column must be 100 characters or less.
- Optionally, in the NAME_LONG column, list full facility names.
Values in this column can be up to 255 characters.
- In the ELEVATION_RELATIVE column, list the elevation of the base of the facility, relative to a flat terrain surface.
In most cases, the facility's base has a relative elevation of 0.
Note:
This field is used to calculate the z-value of facility features.
- In the HEIGHT_RELATIVE column, list each facility's height relative to the terrain surface on which the facility sits.
- In the MERGE_LEVELS column, type a Y or N to configure how the Import Floorplans To Indoors Geodatabase tool should generate that facility’s polygon feature:
- Y—The facility's polygon feature will be generated by merging the facility's Level polygons.
- N—The facility's polygon feature will be generated from the CAD layer or layers listed in the Layer to Feature Class sheet's FACILITIES or FACILITY_LINES columns.
- Save the file.
Configure level properties
The Level Properties sheet stores metadata and configuration options for the floors to be imported.
Populate the Level Properties sheet as follows:
- Copy the values from the Facility Properties sheet's FACILITY_ID column and paste them into the Level Properties sheet's FACILITY_ID column.
- Copy and paste as needed to create additional rows for each facility. You should have one row for each level in that facility.
- Copy the values in the FACILITY_ID column and paste them into the LEVEL_ID column.
- In the LEVEL_ID column, append a delimiter and the unique identifier string for each level.
Usually this is the level number.
Note:
Ensure that the same delimiter is used across all *_ID columns.
- In the NAME column, list common floor names.
The tool uses these values to populate the LEVEL_NAME attributes for the Units and Details feature classes.
- In the NAME_SHORT column, list short floor names.
Values in this column must be four characters or less. These values are used in the floor filter when working with floor-aware maps and scenes in ArcGIS Pro or the ArcGIS Indoors mobile and web apps.
- In the LEVEL_NUMBER column, list integers representing the floor number for each floor, such as you might find on an elevator in the facility.
Tip:
Some facilities may not have certain floor numbers. For example, the number 13 is considered by many people to be unlucky, so taller buildings may not have a floor with that number.
- In the VERTICAL_ORDER column, list ordinal integers representing the vertical order of each level relative to other levels in the same facility.
Use zero (0) for the ground floor of each facility, positive consecutive integers for levels above the ground floor, and negative consecutive integers for levels below the ground floor.
- In the ELEVATION_RELATIVE column, list the elevation of the bottom of each level, relative to the ground.
In most cases, the relative elevation of a facility's ground floor is 0 meters, with floors above ground having positive relative elevation values and floors below ground having negative values.
Note:
This field is used to calculate the z-value for levels, units, and details features.
- In the HEIGHT_RELATIVE column, list the height of the top of each level, relative to the bottom of that level.
Tip:
One way to verify most facility's HEIGHT_RELATIVE value is to sum the values in the HEIGHT_RELATIVE column for the facility's above-ground levels, and compare that total to the facility's HEIGHT_RELATIVE value.
- In the CLOSE_DOORS column, type a Y or N to configure whether the Import Floorplans To Indoors Geodatabase tool should treat the level’s doors as closed when generating unit features from CAD polylines:
- Y—Doors should be treated as closed when generating unit features.
- N—Doors should not be treated as closed.
Note:
The CLOSE_DOORS column only has an effect when both the Layer to Feature Class sheet's UNIT_LINES and OPENINGS columns are populated.
- In the PROCESS column, type a Y or N to configure which levels should be processed by the Import Floorplans To Indoors Geodatabase tool. You can use this column to process individual levels for testing or updating purposes.
- Y—The level will be processed by the tool.
- N—The level will not be processed.
- Save the file.
Configure source files
The Source Files sheet stores file paths to the CAD drawings and relates each drawing to a level defined on the Level Properties sheet. If the CAD data for a single level resides in multiple drawings that overlay one another, you can define the source path for each of the drawing files and relate them to a single level.
Note:
The Source Files sheet was added at ArcGIS Pro 2.7 to support importing data from multiple CAD drawings per level. Prior to ArcGIS Pro 2.7, the configuration file did not include a Source Files sheet and CAD file source paths were stored directly in the Level Properties sheet. Both configuration files are supported for use at the current release.
Populate the Source Files sheet as follows:
- Copy the values from the Level Properties sheet's LEVEL_ID column and paste them into the Source Files sheet's LEVEL_ID column.
- Copy and paste as needed to create additional rows for each level.
You should have one row for each source CAD file that contains data for that level.
Note:
If all the CAD layers for a level are in a single CAD drawing, you do not need to copy and paste any additional rows for that level.
- In the SOURCE_PATH column, list the full network or local file path to each source CAD file.
- Save the file.
Once you have completed the configuration worksheet, you can import your CAD floor plans to the indoor dataset.