Generate Indoor Positioning Dataset (Indoor Positioning)

Summary

Generates an Indoor Positioning Dataset for an existing ArcGIS IPS installation. You can use a survey-based or survey-less method to generate the dataset.

This tool updates the IPS Positioning Datasets feature class, IPS Positioning Signals table, and IPS Positioning Points feature class in the ArcGIS IPS Information Model.

Usage

  • The tool generates an Indoor Positioning Dataset using one of the following methods:

    • Survey-Based—The IPS Recordings features consist of signals collected during a survey using the ArcGIS IPS Setup app. For this method, you need to provide IPS Recordings and Level features.
    • Survey-Less—These features are used to simulate Bluetooth signal propagation throughout the indoor environment. For this method, you need to provide IPS Beacons, IPS Areas, Walls, and Level features.
  • The Output Dataset Name parameter value must be unique in the Dataset Name field of the Target IPS Positioning feature class.

  • The Level Features parameter value must be a feature class or a feature layer that conforms to the Levels feature class in the ArcGIS Indoors Information Model.

    • If the Survey-Based generation method is used, a level must be associated with at least one valid IPS recording feature in the LEVEL_ID field.
    • If the Survey-Less generation method is used, a level must be associated with at least four beacons, one IPS area, and one wall feature.
    • In addition, the following attributes must be valid, up to date, and not NULL:
      • LEVEL_ID
      • VERTICAL_ORDER
      • FACILITY_ID

  • The IPS Recordings Features parameter value must be a feature layer or a feature class that conforms to the IPS_Recordings feature class  in the IPS Data Model. In a typical deployment workflow, the parameter value is part of a map that has been shared to ArcGIS Online or Enterprise.

    Note:

    Mixed Bluetooth and Wi-Fi deployments are allowed but only for different facilities within a site. Some facilities can provide Bluetooth positioning, and others can provide Wi-Fi positioning, but both Bluetooth and Wi-Fi recordings cannot be processed for the same facility into a single Indoor Positioning Dataset.

    If a facility contains survey recordings of both radio types, select features of one of the radio types before running the tool. For example, use the Select Layer By Attribute tool to select all of the Bluetooth recordings for a facility that contains both types and only run the tool on the selected features. The SITE_ID field can contain only one site ID per geoprocessing job. Process additional sites as separate Indoor Positioning Datasets.

  • The IPS Beacon Features parameter value must be a feature layer or a feature class that conforms to the IPS Beacons feature class in the IPS Data Model. The feature geometry must be accurate and the following attributes must be valid, up to date, and not NULL:

    • UUID
    • MAJOR
    • MINOR
    • LEVEL_ID
    • RSSI_1M
    Note:

    See the How to maintain beacon data for ArcGIS IPS blog article for additional information.

  • The IPS Area Features parameter value must be a polygon feature class or a feature layer accurately representing the indoor areas where you want to enable indoor positioning. The following conditions must be met:

    • The IPS area feature schema includes the LEVEL_ID field.
    • The IPS area feature is associated with an existing level using the LEVEL_ID attribute.
    • The LEVEL_ID attribute must not be NULL.
    • The feature geometry must be contained within the associated level.

    You can derive the IPS Area Features parameter value in various ways. A recommended method is to select features labeled as corridors and hallways from the Units feature class in the ArcGIS Indoors Information Model. Alternatively, you can manually create IPS Area Features, which allows you the flexibility to customize the dataset according to your needs and preferences. The selection of the derivation method depends on your requirements and the complexity of the use case.

  • The Wall Features parameter value must be a feature layer or a feature class representing as accurately as possible the physical extent of the walls in the facilities where the indoor positioning will be deployed. These features can be extracted from an existing Indoors Information Model. The schema of the Wall Features parameter value must include all the necessary attributes required for floor awareness. The following conditions must be met:

    • The wall must be associated with an existing level using the LEVEL_ID attribute.
    • The LEVEL_ID attribute must not be NULL.
    • The feature geometry must be contained within the associated level.
  • The Update Existing Dataset parameter value must be a Boolean value. To update an Indoor Positioning Dataset, check the Update Existing Dataset parameter.

    Note:

    Share the Indoor Positioning Dataset (Datasets, Points, and Signals) on the map if you want to update the dataset in the future.

  • The Existing Dataset parameter value is only available when the Update Existing Dataset parameter is checked. The parameter value must be the name of an existing Indoor Positioning Dataset contained in the Target IPS Positioning Datasets parameter value. The data contained in this dataset will be used in conjunction with the tool inputs to generate an updated version of the existing dataset.

Parameters

LabelExplanationData Type
Target IPS Positioning Datasets

The feature class where the generated Indoor Positioning Dataset will be stored.

Feature Layer
Output Dataset Name

The name of the output Indoor Positioning Dataset.

The output dataset name must be unique in the Dataset Name field of the Target IPS Positioning feature class.

String
Generation Method

Specifies the method that will be used to generate the Indoor Positioning Dataset.

  • Survey-BasedThe dataset will be generated by processing IPS Recordings.
  • Survey-LessThe dataset will be generated by simulating the Bluetooth signal propagation through the indoor environment.
String
Level Features

The polygon features representing Level footprints within the facilities.

Feature Layer
IPS Recordings Features
(Optional)

The feature class or feature service that contains IPS Setup survey recordings.

This parameter is required when the Generation Method parameter is set to Survey-Based.

Feature Layer
IPS Beacon Features
(Optional)

The point features representing the position and settings of Bluetooth beacons deployed in the indoor environment.

This parameter is required when the Generation Method parameter is set to Survey-Less.

Feature Layer
IPS Area Features
(Optional)

The polygon features representing the area where the Indoor Positioning Dataset will be generated.

This parameter is required when the Generation Method parameter is set to Survey-Less.

Feature Layer
Wall Features
(Optional)

The polygon features representing the physical extent of walls.

This parameter is required when the Generation Method parameter is set to Survey-Less.

Feature Layer
Update Existing Dataset
(Optional)

Specifies whether an Indoor Positioning Dataset will be created by combining an existing dataset and the tool inputs. This parameter is only valid if the Generation Method parameter is set to Survey-Based.

  • Checked—An Indoor Positioning Dataset will be created using the existing dataset and the tool inputs.
  • Unchecked—A new Indoor Positioning Dataset will be created. This is the default.

Boolean
Existing Dataset
(Optional)

The name of an existing dataset contained in the Target IPS Positioning Datasets. The parameter value must be the name of an existing Indoor Positioning Dataset contained in the Target IPS Positioning Datasets. The data contained in this dataset will be used in conjunction with the tool inputs to generate an updated version of the existing dataset. This parameter is only used in combination with the Update Existing Dataset parameter.

String

Derived Output

LabelExplanationData Type
Updated IPS Positioning Datasets

The updated IPS Positioning Datasets feature class that contains the newly created Indoor Positioning Dataset.

Feature Layer

arcpy.indoorpositioning.GenerateIndoorPositioningDataset(target_ips_positioning_datasets, dataset_name, generation_method, in_levels, {in_ips_recordings}, {in_beacons}, {in_ips_areas}, {in_walls}, {update_existing}, {existing_dataset})
NameExplanationData Type
target_ips_positioning_datasets

The feature class where the generated Indoor Positioning Dataset will be stored.

Feature Layer
dataset_name

The name of the output Indoor Positioning Dataset.

The output dataset name must be unique in the Dataset Name field of the Target IPS Positioning feature class.

String
generation_method

Specifies the method that will be used to generate the Indoor Positioning Dataset.

  • SURVEY_BASEDThe dataset will be generated by processing IPS Recordings.
  • SURVEY_LESSThe dataset will be generated by simulating the Bluetooth signal propagation through the indoor environment.
String
in_levels

The polygon features representing Level footprints within the facilities.

Feature Layer
in_ips_recordings
(Optional)

The feature class or feature service that contains IPS Setup survey recordings.

This parameter is required when the generation_method parameter is set to SURVEY_BASED.

Feature Layer
in_beacons
(Optional)

The point features representing the position and settings of Bluetooth beacons deployed in the indoor environment.

This parameter is required when the generation_method parameter is set to SURVEY_LESS.

Feature Layer
in_ips_areas
(Optional)

The polygon features representing the area where the Indoor Positioning Dataset will be generated.

This parameter is required when the generation_method parameter is set to SURVEY_LESS.

Feature Layer
in_walls
(Optional)

The polygon features representing the physical extent of walls.

This parameter is required when the generation_method parameter is set to SURVEY_LESS.

Feature Layer
update_existing
(Optional)

Specifies whether an Indoor Positioning Dataset will be created by combining an existing dataset and the tool inputs. This parameter is only valid if the generation_method parameter is set to SURVEY_BASED.

  • UPDATE_EXISTINGAn Indoor Positioning Dataset will be created using the existing dataset and the tool inputs.
  • NO_UPDATE_EXISTINGA new Indoor Positioning Dataset will be created. This is the default.
Boolean
existing_dataset
(Optional)

The name of an existing dataset contained in the Target IPS Positioning Datasets. The parameter value must be the name of an existing Indoor Positioning Dataset contained in the Target IPS Positioning Datasets. The data contained in this dataset will be used in conjunction with the tool inputs to generate an updated version of the existing dataset. This parameter is only used in combination with the update_existing parameter.

String

Derived Output

NameExplanationData Type
out_ips_datasets

The updated IPS Positioning Datasets feature class that contains the newly created Indoor Positioning Dataset.

Feature Layer

Code sample

GenerateIndoorPositioningDataset example 1 (Python window)

The following Python window script demonstrates how to use the survey-based method of the GenerateIndoorPositioningDataset function to generate an Indoor Positioning Dataset.

# Name: GenerateIndoorPositioningDataset_example1.py 
# Description: Generates an indoor positioning dataset using the survey-based method. 
 
# Import system modules 
import arcpy 
 
# Set local variables 
ips_datasets = r"C:\\Users\\myUser\\Documents\\ArcGIS\\Projects\\DemoProject\\DemoProject.gdb\IPS_Positioning_Datasets" 
dataset_name = 'NewDataset' 
levels = r"C:\\Users\\myUser\\Documents\\ArcGIS\\Projects\\DemoProject\\DemoProject.gdb\Levels" 
ips_recordings = r"C:\\Users\\myUser\\Documents\\ArcGIS\\Projects\\DemoProject\\DemoProject.gdb\IPS_Recordings" 
 
# Call the GenerateIndoorPositioningDataset tool 
arcpy.indoorpositioning.GenerateIndoorPositioningDataset(target_ips_positioning_datasets=ips_datasets,\ 
                                           dataset_name=dataset_name,\ 
                                           generation_method='SURVEY_BASED',\ 
                                           in_levels=levels,\ 
                                           in_ips_recordings=ips_recordings,\ 
                                           )
GenerateIndoorPositioningDataset example 2 (Python window)

The following Python window script demonstrates how to use the survey-less method of the GenerateIndoorPositioningDataset function to generate an Indoor Positioning Dataset.

# Name: GenerateIndoorPositioningDataset_example1.py 
# Description: Generates an indoor positioning dataset using the survey-less method. 
 
# Import system modules 
import arcpy 
 
# Set local variables 
ips_datasets = r"C:\\Users\\myUser\\Documents\\ArcGIS\\Projects\\DemoProject\\DemoProject.gdb\IPS_Positioning_Datasets" 
dataset_name = 'NewDataset' 
levels = r"C:\\Users\\myUser\\Documents\\ArcGIS\\Projects\\DemoProject\\DemoProject.gdb\Levels" 
beacons = r"C:\\Users\\myUser\\Documents\\ArcGIS\\Projects\\DemoProject\\DemoProject.gdb\IPS_Beacons" 
ips_areas = r"C:\\Users\\myUser\\Documents\\ArcGIS\\Projects\\DemoProject\\DemoProject.gdb\IPS_Areas" 
walls = r"C:\\Users\\myUser\\Documents\\ArcGIS\\Projects\\DemoProject\\DemoProject.gdb\Walls" 
 
# Call the GenerateIndoorPositioningDataset tool 
arcpy.indoorpositioning.GenerateIndoorPositioningDataset(target_ips_positioning_datasets=ips_datasets,\ 
                                           dataset_name=dataset_name,\ 
                                           generation_method='SURVEY_LESS',\ 
                                           in_levels=levels,\ 
                                           in_beacons=beacons,\ 
                                           in_ips_areas=ips_areas,\ 
                                           in_walls=walls)
GenerateIndoorPositioningDataset example 3 (Python window)

The following Python window script demonstrates how to update an existing Indoor Positioning Dataset using the survey-based method by combining data from an existing dataset and the tool inputs.

# Name: GenerateIndoorPositioningDataset_example3.py 
# Description: Updates an existing indoor positioning dataset using the survey-based method by combining data from an existing dataset and the tool inputs.

# Import system modules 

import arcpy 

# Set local variables 
ips_datasets = r"C:\\Users\\myUser\\Documents\\ArcGIS\\Projects\\DemoProject\\DemoProject.gdb\IPS_Positioning_Datasets" 
existing_dataset = 'Dataset1' 
dataset_name = 'Dataset1_updated'
levels = r"C:\\Users\\myUser\\Documents\\ArcGIS\\Projects\\DemoProject\\DemoProject.gdb\Levels" 
ips_recordings = r"C:\\Users\\myUser\\Documents\\ArcGIS\\Projects\\DemoProject\\DemoProject.gdb\IPS_Recordings" 

# Call the GenerateIndoorPositioningDataset tool 
arcpy.indoorpositioning.GenerateIndoorPositioningDataset(target_ips_positioning_datasets=ips_datasets,\
                                           dataset_name=dataset_name,\
                                           generation_method='SURVEY_BASED',\
                                           in_levels=levels,\
                                           in_ips_recordings=ips_recordings,\
                                           update_existing="UPDATE_EXISTING",\
                                           existing_dataset=existing_dataset)

Environments

Licensing information

  • Basic: No
  • Standard: Requires ArcGIS IPS
  • Advanced: Requires ArcGIS IPS

Related topics