更新占用者要素 (Indoors)

摘要

更新符合 ArcGIS Indoors 信息模型的 Occupants 要素类。

此工具可更新使用创建 Indoors 数据库工具创建的 Occupants 要素类。 需要添加新的占用者、删除现有占用者或根据座位分配或楼层平面图的变化修改现有占用者信息时,可能需要更新占用者要素。 更新后的 Occupants 要素类可用于支持室内分析和功能,例如 Indoor ViewerIndoors Mobile 中的搜索、路径选择和工作空间预订,以及 Indoor Space Planner 中的空间规划。

使用情况

  • 输入占用者表必须包含 KNOWNASEMAIL 字段。 您也可以添加以下字段以增强 Space Planner 应用程序的体验,也可以添加其他字段,以包含您希望在 Occupants 图层中填充和维护的信息:ORG_LEVEL_1ORG_LEVEL_2JOB_TITLESTART_DATESITE_ID

    下表列出了输入占用者表的必填字段和可选字段。

    字段描述必需项
    KNOWNAS

    搜索占用者时最可能使用的名字和姓氏。

    EMAIL

    占用者的电子邮件地址。

    ORG_LEVEL_1

    占用者部门。

    ORG_LEVEL_2

    占用者团队。

    JOB_TITLE

    占用者职称。

    START_DATE

    占用者的开始日期。

    SITE_ID

    占用者的关联站点。 此字段中的值必须与 Indoors 模型中的 Sites 要素类的 SITE_ID 字段值匹配。

    注:

    仅当您使用占用者属性映射参数映射了 SITE_ID 字段时,SITE_ID 字段才会被填充。 如果未映射此字段,则占用者 SITE_ID 字段值将保留 NULL 值。 如果输入表中的字段名称与 Occupants 图层中的字段名称匹配,所有其他字段将默认被映射。

    了解有关加载占用者数据的详细信息

  • 您可以在输入占用者表的多个列中存储占用者的多个分配信息。 以下是具有多个列的分配信息示例:

    包含多个分配列的表

  • 工具可加载未分配到空间的占用者。 如果单元标识符(输入占用者表)参数中标识的字段具有 NULL 值或空值,则占用者将以未分配状态加载(不会被分配到单元)。 对于在输入占用者表中被分配到 Units 要素类中定义为旅馆式办公区域、公用办公桌或不可分配单元的占用者,也将以未分配状态加载。

    注:

    如果占用者单元标识符字段参数为空(针对 .csv 文件或 Excel 工作表)或 <NULL>(针对地理数据库表),并且没有为占用者定义居家办公,则占用者将以未分配状态加载。

  • 居家办公标识符参数支持加载分配到居家办公区域的占用者。 使用此参数定义输入占用者表中的字段和字段值,以指示占用者被分配到居家办公区域。

    如果已指定居家办公标识符参数,并且目标占用者要素参数值包含被分配到居家办公区域的占用者,他们将根据输入表中的信息进行更新。 如果没有提供参数值,当您运行工具时,Occupants 图层中分配到居家办公区域的占用者将不会被更新。

    您也可以使用 Space Planner管理居家办公区域分配

  • 一个用户可以在单次工具运行中被分配到多个单元。

  • 根据唯一占用者标识符字段值添加、删除和修改占用者信息。

    注:

    占用者标识符可以是包含唯一标识每个占用者的信息的任何字段。 建议字段为 EMAIL

  • 目标占用者要素参数值将根据座位分配更改或楼层平面图更改,使用输入占用者表参数值中的对应值填充以下字段:

    • UNIT_ID
    • UNIT_NAME (如果在目标占用者要素参数值中存在该字段。)
    • LEVEL_ID
    • SITE_ID (可以使用占用者属性映射参数中的输入占用者表值中的值映射字段。)
    注:

    如果未提供单元标识符(输入占用者表)参数值,则将仅更新在占用者属性映射参数中映射的字段。

  • 将更新 Units 图层的 ASSIGNMENT_TYPE 值,以显示单元的占用状态。 如果将占用者要素分配给一个单元,则该单元的 ASSIGNMENT_TYPE 值将设置为办公室。 该字段正被 Space Planner 使用。

  • 如果在向 Indoors 模型添加占用者后对楼层平面数据进行了更新,当再次运行更新占用者要素工具时,将发生以下情况:

    • 如果更新平面图后某个单元不复存在,则分配给该单元的任何用户都将被取消分配。
    • 如果单元的 ASSIGNMENT_TYPE 字段值在平面图更新后变为 Not Assignable,则分配给该单元的任何用户都将被取消。
    • 如果在更新平面图后,占用者要素不再位于所分配的单元内,占用者要素将被移回所分配的单元中心点
    注:

    更新占用者数据以与更新的平面图保持一致不需要输入占用者表参数。

  • 可以定期运行此工具以更新占用者数据以及座位分配或楼层平面图的更改。 您还可以将工具发布为地理处理服务并使用 Microsoft 计划程序CRON 运行工具。

  • 该工具会在临时目录下创建一个摘要文本文件,该文件在 ArcGIS Pro 会话中有效。 要维护摘要文本文件的永久记录,您必须将其保存在 ArcGIS Pro 会话之外的文件夹中。

参数

标注说明数据类型
目标占用者要素

将添加、更新或删除占用者记录的目标要素图层、要素类或要素服务。 输入必须包含可标识每个占用者的唯一值,并且必须与 Indoors 模型中的 Occupants 要素类相符。

Feature Layer
输入单元要素
(可选)

输入面要素,表示可能被占用的建筑空间。 输入必须是符合 Indoors 模型中单元要素类的要素图层、要素类或要素服务。 每个空间的质心将用作一个或多个占用者的点位置。

Feature Layer
输入占用者表
(可选)

包含有关建筑占用者信息的输入表。

输入表参数值必须为地理数据库表、 Microsoft Excel 工作簿中的工作表(.xls.xlsx 文件)、逗号分隔的文本文件 (.csv) 或 OLE DB 表。

Table View
占用者标识符(目标占用者要素)
(可选)

目标占用者要素参数值中的字段,将用作主键以将占用者与输入占用者表参数值相关联。 字段值必须唯一。

Field
占用者标识符(输入占用者表)
(可选)

输入占用者表参数值中的字段,将用作主键以将占用者与目标占用者要素参数值相关联。 字段值必须唯一。

Field
单元标识符(输入单元要素)
(可选)

输入单元要素参数值中的字段,用于存储与输入占用者表参数值中的单元标识符相匹配的唯一空间标识信息。 字段值必须唯一。

Field
单元标识符(输入占用者表)
(可选)

输入占用者表参数值中的字段,将用作主键以将占用者空间分配与输入单元要素参数值相关联。 如果字段值为空,则占用者将以未分配状态加载。

该参数支持输入占用者表中的多个字段,该输入占用者表存储一个占用者的多个空间分配。 仅提供的字段将用于更新 Occupants 要素类。

如果没有提供参数值,则不会在占用者功能类别中更新占用者的座位分配。 相反,Occupants 要素类中的记录将与输入占用者表中的记录相匹配,并且将更新占用者属性映射参数中映射的属性。

Field
占用者属性映射
(可选)

目标占用者要素参数值中的属性字段,将使用输入占用者表参数值中的字段值填充。 在运行工具之前,这些字段必须存在于目标占用者要素参数值中。 建议您将输入占用者表参数值中的字段映射到目标占用者要素参数值中具有相同字段类型的字段。

Field Mappings
插入新占用者
(可选)

指定是否将向目标占用者要素图层添加输入占用者表参数值的不匹配占用者记录。

  • 选中 - 不匹配的占用者记录将添加到目标占用者要素图层。 这是默认设置。
  • 未选中 - 不匹配的占用者记录不会添加到目标占用者要素图层。
Boolean
删除输入占用者表中不包含的占用者
(可选)

指定是否将从目标占用者要素图层删除输入占用者表参数值的不匹配占用者记录。

  • 选中 - 不匹配的占用者记录将从目标占用者要素图层中删除。 这是默认设置。
  • 未选中 - 不匹配的占用者记录不会从目标占用者要素图层中删除。
Boolean
居家办公标识符
(可选)

一个 SQL 查询,用于定义输入占用者表中的字段和字段值,以指示占用者被分配到居家办公区域。

SQL Expression

派生输出

标注说明数据类型
已更新占用者要素

用于此工具的目标占用者要素的已更新版本。

Feature Layer

arcpy.indoors.UpdateOccupantFeatures(target_occupant_features, {in_unit_features}, {in_occupant_table}, {occupant_id_from_target_occupant_features}, {occupant_id_from_input_table}, {unit_id_from_units_features}, {unit_id_from_input_table}, {occupant_attributes_mapping}, {allow_insert}, {allow_delete}, {home_office_identifier})
名称说明数据类型
target_occupant_features

将添加、更新或删除占用者记录的目标要素图层、要素类或要素服务。 输入必须包含可标识每个占用者的唯一值,并且必须与 Indoors 模型中的 Occupants 要素类相符。

Feature Layer
in_unit_features
(可选)

输入面要素,表示可能被占用的建筑空间。 输入必须是符合 Indoors 模型中单元要素类的要素图层、要素类或要素服务。 每个空间的质心将用作一个或多个占用者的点位置。

Feature Layer
in_occupant_table
(可选)

包含有关建筑占用者信息的输入表。

输入表参数值必须为地理数据库表、 Microsoft Excel 工作簿中的工作表(.xls.xlsx 文件)、逗号分隔的文本文件 (.csv) 或 OLE DB 表。

Table View
occupant_id_from_target_occupant_features
(可选)

target_occupant_features 参数值中的字段,将用作主键以将占用者与 in_occupant_table 参数值相关联。 字段值必须唯一。

Field
occupant_id_from_input_table
(可选)

in_occupant_table 参数值中的字段,将用作主键以将占用者与 target_occupant_features 参数值相关联。 字段值必须唯一。

Field
unit_id_from_units_features
(可选)

in_unit_features 参数值中的字段,用于存储与 in_occupant_table 参数值中的单元标识符相匹配的唯一空间标识信息。 字段值必须唯一。

Field
unit_id_from_input_table
[unit_id_from_input_table,...]
(可选)

in_occupant_table 参数值中的字段,将用作主键以将占用者空间分配与 in_unit_features 参数值相关联。 如果字段值为空,则占用者将以未分配状态加载。

该参数支持输入占用者表中的多个字段,该输入占用者表存储一个占用者的多个空间分配。 仅提供的字段将用于更新 Occupants 要素类。

如果没有提供参数值,则不会在占用者功能类别中更新占用者的座位分配。 相反,Occupants 要素类中的记录将与输入占用者表中的记录相匹配,并且将更新 occupant_attributes_mapping 参数中映射的属性。

Field
occupant_attributes_mapping
(可选)

target_occupant_features 参数值中的属性字段,将使用 in_occupant_table 参数值中的字段值填充。 在运行工具之前,这些字段必须存在于 target_occupant_features 参数值中。 建议您将 in_occupant_table 参数值中的字段映射到 target_occupant_features 参数值中具有相同字段类型的字段。

Field Mappings
allow_insert
(可选)

指定是否将 in_occupant_table 参数值的不匹配占用者记录添加到目标占用者要素图层。

  • INSERT_OCCUPANTS不匹配的占用者记录将添加到目标占用者要素图层。 这是默认设置。
  • NO_INSERT_OCCUPANTS不匹配的占用者记录不会添加到目标占用者要素图层。
Boolean
allow_delete
(可选)

指定是否将从目标占用者要素图层中删除 in_occupant_table 参数值的不匹配占用者记录。

  • DELETE_OCCUPANTS不匹配的占用者记录将从目标占用者要素图层中删除。 这是默认设置。
  • NO_DELETE_OCCUPANTS不匹配的占用者记录不会从目标占用者要素图层中删除。
Boolean
home_office_identifier
(可选)

一个 SQL 查询,用于定义输入占用者表中的字段和字段值,以指示占用者被分配到居家办公区域。

SQL Expression

派生输出

名称说明数据类型
updated_occupant_features

用于此工具的目标占用者要素的已更新版本。

Feature Layer

代码示例

UpdateOccupantFeatures 示例 1(Python 窗口)

以下 Python 窗口脚本演示了如何在即时模式下使用 UpdateOccupantFeatures 函数。 在此示例中,输入和输出位于同一地理数据库中。


import arcpy
arcpy.indoors.UpdateOccupantFeatures('C:/ExampleCampus.gdb/Indoors/Occupants', 
                                    'C:/ExampleCampus.gdb/Indoors/Units', 'C:/OccupantsData/2022Occupants.xlsx/2022Q2$',
                                    'EMAIL', 'EMAIL',
                                    'UNIT_ID', 'SPACE_ASSIGNMENT', 'KNOWNAS "Known As" true false false 255 Text 0 
                                    0,First,#,C:/OccupantsData/2022Occupants.xlsx/2022Q2$,KNOWNAS,0,255;SITE_ID "Site ID" true true false 255 Text 
                                    0 0,First,#',
                                    True, True, "HOME_OFFICE IS NOT NULL")
UpdateOccupantFeatures 示例 2(独立脚本)

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


# Import system modules 
import arcpy

# Set local variables 
target_occupant_features = r'C:\ExampleCampus.gdb\Indoors\Occupants'
in_unit_features = r'C:\ExampleCampus.gdb\Indoors\Units'
in_occupant_table = r'C:\OccupantSpreadsheets\BuildingL.xlsx\OccupantsSeatingAssignment$'
occupant_id_from_target_occupant_features = 'EMAIL' 
occupant_id_from_input_table = 'EMAIL' 
unit_id_from_units_features = 'UNIT_ID'
unit_id_from_input_table = "SPACE_ASSIGNMENT"
occupant_attributes_mapping = 'KNOWNAS "Known As" true false false 255 Text 0 0,First,#,
C:\OccupantSpreadsheets\BuildingL.xlsx\OccupantsSeatingAssignment$,KNOWNAS,0,255;CONTACT_PHONE "Contact Phone" true true false 255 Text 0 0,First,#,
C:\OccupantSpreadsheets\BuildingL.xlsx\OccupantsSeatingAssignment$,CONTACT_PHONE,0,255;CONTACT_EXTENSION "Contact Extension" true true false 255 Text 0 0,First,#,
C:\OccupantSpreadsheets\BuildingL.xlsx\OccupantsSeatingAssignment$,CONTACT_EXTENSION,-1,-1;SITE_ID "Site ID" true true false 255 Text 0 0,First,#;JOB_TITLE "Job Title" true true false 255 Text 0 0,First,#,
C:\OccupantSpreadsheets\BuildingL.xlsx\OccupantsSeatingAssignment$,JOB_TITLE,0,255;ORG_LEVEL_1 "Department" true true false 255 Text 0 0,First,#,
C:\OccupantSpreadsheets\BuildingL.xlsx\OccupantsSeatingAssignment$,ORG_LEVEL_1,0,255;ORG_LEVEL_2 "Team" true true false 255 Text 0 0,First,#,
C:\OccupantSpreadsheets\BuildingL.xlsx\OccupantsSeatingAssignment$,ORG_LEVEL_2,0,255;START_DATE "Start Date" true true false 8 Date 0 0,First,#,
C:\OccupantSpreadsheets\BuildingL.xlsx\OccupantsSeatingAssignment$,START_DATE,-1,-1' 

allow_insert = True
allow_delete = True

#Set the query for occupants that are assigned to a home office
home_office_identifier = "SPACE_ASSIGNMENT LIKE ‘%HOME OFFICE%’"

# Run the tool 
arcpy.indoors.UpdateOccupantFeatures(target_occupant_features, in_unit_features, in_occupant_table,
                                     occupant_id_from_target_occupant_features, occupant_id_from_input_table,
                                     unit_id_from_units_features, unit_id_from_input_table, occupant_attributes_mapping,
                                     allow_insert, allow_delete, home_office_identifier)

许可信息

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

相关主题