使用事件记录更新要素 (犯罪分析和安全)

摘要

根据 x,y 坐标或街道地址更新现有表或将非空间表转换为点要素,并使用表中的新记录或更新记录信息更新现有数据集。

使用情况

  • 在将追加或更新输入表中的记录的位置中必须存在点要素类、点要素图层或表。

  • 可在此工具中使用从计算机辅助分派系统或记录管理系统导出的表格数据。

  • 此工具支持以下表格式作为输入:

    • 地理数据库
    • dBASE (.dbf)
    • Microsoft Excel 工作表(.xls.xlsx
    • 基于内存的表
    • 分隔文件
      • 逗号分隔的文件(.csv.txt.asc
      • 制表符分隔的文件(.tsv.tab
      • 竖线分隔的文件 (.psv)

    对于带分隔符的文件,输入文件的第一行将用作输出表上的字段名称。 字段名称不能包含空格或特殊字符(如 $ 或 *),如果输入文件的第一行包含空格或特殊字符,则将出错。

  • 使用 ArcGIS World Geocoding Service 执行地理编码操作需要 ArcGIS Online 组织账户并需要消耗配额。 组织账户必须具有足够的配额,才能完成整个地理编码请求。

  • 当创建可选无效记录表参数值时,该表将包含未作为新要素或更新要素处理的记录。 完整的输入表记录以及一个 INV_REASON 字段将添加到无效记录表参数值中。 INV_REASON 字段将包含一个代码,用于标识无法将记录作为新要素或更新要素处理的原因。

    将使用以下代码将 INV_REASON 字段添加至无效记录表值:

    • NULL_ADDR - 输入表记录中的所有地址字段均包含空值。
    • NULL_ID - 输入表记录的输入 ID 字段包含空值。
    • NULL_XY - 输入表的 x 和 y 坐标字段包含空值。
    • BAD_DATE - 输入表记录的输入日期为空或无法转换为有效日期。
    • BAD_ADDR - 输入表记录中的地址候选项不匹配。
    • BAD_FM - 输入表记录的字段映射失败,因为无法将值写入输出字段。 例如,当值长度大于字段长度时,无法将文本值添加到数值字段,并且无法将文本值添加到文本字段。 当出现此代码时,会将 INV_FLD 字段添加至无效记录表值,并列出输入表值中的相应字段,这些字段包含无法写入目标要素值的值。
    • DUP_ID - 输入表记录具有重复 ID,并且尚未更新到目标要素,因为其版本早于现有记录或存在较新的记录。 此项根据上次修改日期确定。 如果未使用上次修改日期,则根据最高的 OBJECTID 值确定。

    如果未提供无效记录表参数值,则将在临时工作空间环境中创建 invalid_records_<timestamp>.fid 文件。 该文件将包含无法在目标要素参数中添加或更新的每个输入表记录的 OBJECTID 值。

  • 当选中更新现有目标要素更新现有要素的几何参数时,输入表参数值中的位置字段将与目标要素参数值中的位置字段进行比较,以确定是否将在目标要素参数值中更新几何。 当位置类型设置为地址时,将比较地址字段值。 如果检测到输入表记录和目标要素参数值之间存在差异,目标要素几何会使用基于输入表记录中的地址字段的地理编码位置进行更新。 如果未检测到差异,则不会对输入表记录进行地理编码。

  • 目标要素参数值中指定的图层为要素服务图层时,可以使用将日期转换为 UTC 时区参数来指定是否将输入表中的日期值转换为 UTC 时间。 默认情况下,日期值假定为本地系统时区。

参数

标注说明数据类型
输入表

非空间表或表包含定义记录位置的 x 和 y 坐标或地址。

Table View
目标要素

将更新的点要素类、点要素图层或表。

Feature Layer; Table View
位置类型
(可选)

指定是使用 x,y 坐标还是地址创建要素。

仅当目标要素参数值为要素类或图层时,此参数才处于活动状态。

  • 坐标将使用输入记录的 x,y 坐标创建要素。
  • 地址将通过定位器使用输入记录的地址创建要素。
String
X 字段
(可选)

输入表中包含 X 坐标(或经度)的字段。

仅当将位置类型参数设置为坐标目标要素参数值为要素类或图层时,此参数才处于活动状态。

Field
Y 字段
(可选)

输入表中包含 Y 坐标(或纬度)的字段。

仅当将位置类型参数设置为坐标目标要素参数值为要素类或图层时,此参数才处于活动状态。

Field
坐标系
(可选)

x 和 y 坐标的坐标系。

仅当将位置类型参数设置为坐标目标要素参数值为要素类或图层时,此参数才处于活动状态。

Coordinate System
地址定位器
(可选)

将用于对地址表进行地理编码的地址定位器。

当此参数设置为使用 ArcGIS World Geocoding Service 时,此操作可能会消耗配额。

注:

使用本地地址定位器时,可选择在定位器路径末尾的定位器名称后添加 .loc 扩展名。

仅当将位置类型参数设置为地址目标要素参数值为要素类或图层时,此参数才处于活动状态。

Address Locator
地址类型
(可选)

指定如何将地址定位器使用的地址字段映射到地址输入表中的字段。

如果输入表中的完整地址存储在一个字段中,例如 303 Peachtree St NE, Atlanta, GA 30308,则需指定单个字段。 如果将常规美国地址的输入划分为 Address、City、State 和 ZIP 等多个字段,请指定多个字段

仅当将位置类型参数设置为地址目标要素参数值为要素类或图层时,此参数才处于活动状态。

  • 多个字段将划分为多个字段的地址。
  • 单字段地址将包含在一个字段中。
String
地址字段
(可选)

与地址定位器的定位器地址字段对应的输入表字段。

某些定位器支持多个输入地址字段,例如 AddressAddress2Address3。 在此情况下,可以将地址组件分为多个字段,然后在进行地理编码时将地址字段连接在一起。 例如,跨三个字段的 100、Main st 和 Apt 140,或者跨两个字段的 100 Main st 和 Apt 140,在进行地理编码时,都将成为 100 Main st Apt 140。

如果未将地址定位器所使用的可选输入地址字段映射到输入地址表中的字段,则将字段名称留空以指定不存在任何映射。

仅当将位置选项参数设置为地址时,此参数才处于活动状态。

Value Table
无效记录表
(可选)

包含无效记录和关联无效代码列表的输出表。

Table
表达式
(可选)

用于选择输入数据集记录子集的 SQL 表达式。 如果指定了多个输入数据集,将使用表达式对它们进行评估。 如果没有与输入数据集表达式匹配的记录,将不会向目标追加该数据集的记录。

有关 SQL 语法的详细信息,请参阅在 ArcGIS 中使用的查询表达式的 SQL 参考

SQL Expression
更新现有目标要素
(可选)

指定是否将在目标要素参数值中更新现有记录。

  • 选中 - 将在目标要素参数(如果存在)中更新输入表参数值中的记录。
  • 未选中 - 输入表参数值中的记录将追加到目标要素参数中。 这是默认设置。
Boolean
匹配字段
(可选)

用于确定输入表值和目标要素值之间的匹配项的一个或多个 ID 字段。

仅当选中更新现有目标要素参数时,此参数才会处于活动状态。

Value Table
输入表上次修改日期字段
(可选)

包含输入要素记录的上次修改日期的字段。

支持日期和字符串字段类型。

仅当选中更新现有目标要素参数时,此参数才会处于活动状态。

Field
目标要素上次修改日期字段
(可选)

包含目标要素记录的上次修改日期的字段。

该字段必须为日期字段类型。

仅当选中更新现有目标要素参数时,此参数才会处于活动状态。

Field
仅更新匹配要素
(可选)

指定是仅更新现有记录还是更新现有记录并添加新记录。

  • 选中 - 仅更新现有记录。
  • 未选中 - 将更新现有记录并添加新记录。 这是默认设置。

仅当选中更新现有目标要素参数时,此参数才会处于活动状态。

Boolean
更新现有要素的几何
(可选)

指定是否更新现有要素的几何。

  • 选中 - 如果输入表参数值中的几何信息与目标要素参数值的几何不同,将更新现有记录的几何。 这是默认设置。
  • 未选中 - 不会更新现有记录的几何。

仅当已选中更新现有目标要素参数且目标要素参数值为要素类或图层时,此参数才会处于活动状态。

Boolean
字段匹配类型
(可选)

指定输入表的字段是否必须与目标要素的字段匹配才能追加数据。

  • 输入字段必须与目标字段匹配输入数据集的字段与目标数据集的字段相匹配。 将忽略不匹配的字段。 这是默认设置
  • 使用字段映射协调字段差异输入数据集的字段不需要与目标数据集的字段相匹配。 不会将与目标数据集字段不匹配的输入数据集字段映射到目标数据集,除非在字段映射参数中显式设置了映射。
String
字段映射
(可选)

控制如何将输入表中的属性字段传输或映射到目标要素。

仅当将字段匹配类型参数设置为使用字段映射协调字段差异时,此参数才处于活动状态。

由于输入表值追加到的现有目标要素具有预定义字段,因此无法在字段映射中添加、移除或更改字段类型。 但是,可以为每个输出字段设置合并规则。

字段映射还可以用于将两个或多个输入字段的值合并为单个输出字段。

Field Mappings
时间格式

包含时间值的输入字段的格式。 类型可以是短型、长型、浮点型、双精度、文本或日期。 可从下拉列表中选择标准时间格式,也可以提供自定义格式。

注:

格式字符串区分大小写。

  • 如果时间字段的数据类型为日期、仅日期或时间戳偏移,则不需要时间格式。
  • 如果时间字段的数据类型是数值(短整型、长整型、浮点型、双精度或大整型),将在下拉列表中提供标准数值时间格式。
  • 如果时间字段的数据类型是字符串,将在下拉列表中提供标准字符串时间格式。 如果使用字符串字段,您也可以为其指定自定义时间格式。 例如,可采用标准格式将时间值存储在字符串字段中,如 yyyy/MM/dd HH:mm:ss 或以自定义格式存储,如 dd/MM/yyyy HH:mm:ss。 如果使用自定义格式,您还可以指定 a.m. 或 p.m. 指示符。
  • 对于符合 ISO-8601 要求的字符串,使用 yyyy-MM-ddTHH:mm:ss.s 作为输入格式。 此输入选择可处理使用 UTC 指示符 (Z) 或 UTC 偏移 (±hh:mm) 的输入。
  • 下面列出了常用的格式:
    • yyyy - 年,以四位数表示。
    • MM - 数字形式的月份,个位数月份有前导零。
    • MMM - 月,以三个字母的缩略形式表示。
    • dd - 数字形式的每月日期,且单位数日期具有前导零。
    • ddd - 星期,以三个字母的缩略形式表示。
    • hh - 小时,且单位数小时具有前导零,12 小时制
    • HH - 小时,且单位数小时具有前导零,24 小时制
    • mm - 分钟,且单位数分钟有前导零。
    • ss - 秒,且单位数秒有前导零。
    • t - 单字符时间标记字符串,例如,A 或 P。
    • tt - 多字符时间标记字符串,例如,AM 或 PM。
    • unix_us - UNIX 时间,以微秒为单位
    • unix_ms - UNIX 时间,以毫秒为单位
    • unix_s - UNIX 时间,以秒为单位
    • unix_hex - 以十六进制表示的 UNIX 时间

了解有关自定义日期和时间格式的详细信息

仅当输入表上次修改日期参数值为文本字段且目标要素上次修改日期字段参数值为日期字段,或者字段映射参数输入值为文本字段且输出值为日期字段时,此参数才处于活动状态。

String
将日期转换为 UTC 时区
(可选)

指定输入记录的日期值是否会从本地系统的时区转换为协调世界时间 (UTC)。

  • 选中 - 输入记录的日期值将从本地系统的时区转换为 UTC。 这是默认设置。
  • 未选中 - 输入记录的日期值将保留为本地系统的时区。

仅当目标要素参数值为要素服务图层时,此参数才处于活动状态。

Boolean

派生输出

标注说明数据类型
更新后的目标要素

已更新的目标数据集。

Feature Layer; Table View

arcpy.ca.UpdateFeaturesWithIncidentRecords(in_table, target_features, {location_type}, {x_field}, {y_field}, {coordinate_system}, {address_locator}, {address_type}, {address_fields}, {invalid_records_table}, {where_clause}, {update_target}, {match_fields}, {in_date_field}, {target_date_field}, {update_matching}, {update_geometry}, {field_matching_type}, {field_mapping}, time_format, {convert_local_time})
名称说明数据类型
in_table

非空间表或表包含定义记录位置的 x 和 y 坐标或地址。

Table View
target_features

将更新的点要素类、点要素图层或表。

Feature Layer; Table View
location_type
(可选)

指定是使用 x,y 坐标还是地址创建要素。

  • COORDINATES将使用输入记录的 x,y 坐标创建要素。
  • ADDRESSES将通过定位器使用输入记录的地址创建要素。

仅当 target_features 参数值为要素类或图层时,才会启用此参数。

String
x_field
(可选)

输入表中包含 X 坐标(或经度)的字段。

仅当将 location_type 参数设置为 COORDINATEStarget_features 参数值为要素类或图层时,才会启用此参数。

Field
y_field
(可选)

输入表中包含 Y 坐标(或纬度)的字段。

仅当将 location_type 参数设置为 COORDINATEStarget_features 参数值为要素类或图层时,才会启用此参数。

Field
coordinate_system
(可选)

x 和 y 坐标的坐标系。

仅当将 location_type 参数设置为 COORDINATEStarget_features 参数值为要素类或图层时,才会启用此参数。

Coordinate System
address_locator
(可选)

将用于对地址表进行地理编码的地址定位器。

当此参数设置为使用 ArcGIS World Geocoding Service 时,此操作可能会消耗配额。

注:

使用本地地址定位器时,可选择在定位器路径末尾的定位器名称后添加 .loc 扩展名。

仅当将 location_type 参数设置为 ADDRESSEStarget_features 参数值为要素类或图层时,才会启用此参数。

Address Locator
address_type
(可选)

指定如何将地址定位器使用的地址字段映射到地址输入表中的字段。

  • MULTI_FIELD_ADDRESS将划分为多个字段的地址。
  • SINGLE_FIELD_ADDRESS地址将包含在一个字段中。

如果输入表中的完整地址存储在一个字段中,例如 303 Peachtree St NE, Atlanta, GA 30308,则需指定 SINGLE_FIELD_ADDRESS。 如果将常规美国地址的输入划分为 Address、City、State 和 ZIP 等多个字段,请指定 MULTI_FIELD_ADDRESS

仅当将 location_type 参数设置为 ADDRESSEStarget_features 参数值为要素类或图层时,才会启用此参数。

String
address_fields
[address_fields,...]
(可选)

与地址定位器的定位器地址字段对应的输入表字段。

某些定位器支持多个输入地址字段,例如 AddressAddress2Address3。 在此情况下,可以将地址组件分为多个字段,然后在进行地理编码时将地址字段连接在一起。 例如,跨三个字段的 100、Main st 和 Apt 140,或者跨两个字段的 100 Main st 和 Apt 140,在进行地理编码时,都将成为 100 Main st Apt 140。

如果未将地址定位器所使用的可选输入地址字段映射到输入地址表中的字段,则将字段名称留空以指定不存在任何映射。

仅当 location_type 参数设置为 ADDRESSES 时,此参数才会启用。

Value Table
invalid_records_table
(可选)

包含无效记录和关联无效代码列表的输出表。

Table
where_clause
(可选)

用于选择输入数据集记录子集的 SQL 表达式。 如果指定了多个输入数据集,将使用表达式对它们进行评估。 如果没有与输入数据集表达式匹配的记录,将不会向目标追加该数据集的记录。

有关 SQL 语法的详细信息,请参阅在 ArcGIS 中使用的查询表达式的 SQL 参考

SQL Expression
update_target
(可选)

指定是否将在 target_features 参数值中更新现有记录。

  • UPDATE将在 target_features 参数值(如果存在)中更新 in_table 参数值中的记录。
  • APPENDin_table 参数值中的记录将追加到 target_features 参数值中。 这是默认设置。
Boolean
match_fields
[match_fields,...]
(可选)

用于确定 in_table 值和 target_features 值的一个或多个 ID 字段。

仅当将 update_target 参数设置为 UPDATE 时,才会启用此参数。

Value Table
in_date_field
(可选)

包含 in_table 记录的上次修改日期的字段。

支持日期和字符串字段类型。

仅当将 update_target 参数设置为 UPDATE 时,才会启用此参数。

Field
target_date_field
(可选)

包含 target_features 记录的上次修改日期的字段。

该字段必须为日期字段类型。

仅当将 update_target 参数设置为 UPDATE 时,才会启用此参数。

Field
update_matching
(可选)

指定是仅更新现有记录还是更新现有记录并添加新记录。

  • UPDATE_MATCHING_ONLY仅更新现有记录。
  • UPSERT将更新现有记录并添加新记录。 这是默认设置。

仅当将 update_target 参数设置为 UPDATE 时,才会启用此参数。

Boolean
update_geometry
(可选)

指定是否更新现有要素的几何。

  • UPDATE_GEOMETRY如果 in_table 参数值中的几何信息与 target_features 参数值的几何不同,将更新现有记录的几何。 这是默认设置。
  • KEEP_GEOMETRY不会更新现有记录的几何。

仅当将 update_target 参数设置为 UPDATEtarget_features 参数值为要素类或图层时,才会启用此参数。

Boolean
field_matching_type
(可选)

指定输入表的字段是否必须与目标要素的字段匹配才能追加数据。

  • AUTOMATIC输入数据集的字段与目标数据集的字段相匹配。 将忽略不匹配的字段。 这是默认设置
  • FIELD_MAP输入数据集的字段不需要与目标数据集的字段相匹配。 不会将与目标数据集字段不匹配的输入数据集字段映射到目标数据集,除非在字段映射参数中显式设置了映射。
String
field_mapping
(可选)

控制如何将输入表中的属性字段传输或映射到目标要素。

仅当将 field_matching_type 参数设置为 FIELD_MAP 时,才会启用此参数。

由于输入表值追加到的现有目标要素具有预定义字段,因此无法在字段映射中添加、移除或更改字段类型。 但是,可以为每个输出字段设置合并规则。

字段映射还可以用于将两个或多个输入字段的值合并为单个输出字段。

Python 中,使用 FieldMappings 类来定义此参数。

Field Mappings
time_format

包含时间值的输入字段的格式。 类型可以是短型、长型、浮点型、双精度、文本或日期。 可从下拉列表中选择标准时间格式,也可以提供自定义格式。

注:

格式字符串区分大小写。

  • 如果时间字段的数据类型为日期、仅日期或时间戳偏移,则不需要时间格式。
  • 如果时间字段的数据类型是数值(短整型、长整型、浮点型、双精度或大整型),将在下拉列表中提供标准数值时间格式。
  • 如果时间字段的数据类型是字符串,将在下拉列表中提供标准字符串时间格式。 如果使用字符串字段,您也可以为其指定自定义时间格式。 例如,可采用标准格式将时间值存储在字符串字段中,如 yyyy/MM/dd HH:mm:ss 或以自定义格式存储,如 dd/MM/yyyy HH:mm:ss。 如果使用自定义格式,您还可以指定 a.m. 或 p.m. 指示符。
  • 对于符合 ISO-8601 要求的字符串,使用 yyyy-MM-ddTHH:mm:ss.s 作为输入格式。 此输入选择可处理使用 UTC 指示符 (Z) 或 UTC 偏移 (±hh:mm) 的输入。
  • 下面列出了常用的格式:
    • yyyy - 年,以四位数表示。
    • MM - 数字形式的月份,个位数月份有前导零。
    • MMM - 月,以三个字母的缩略形式表示。
    • dd - 数字形式的每月日期,且单位数日期具有前导零。
    • ddd - 星期,以三个字母的缩略形式表示。
    • hh - 小时,且单位数小时具有前导零,12 小时制
    • HH - 小时,且单位数小时具有前导零,24 小时制
    • mm - 分钟,且单位数分钟有前导零。
    • ss - 秒,且单位数秒有前导零。
    • t - 单字符时间标记字符串,例如,A 或 P。
    • tt - 多字符时间标记字符串,例如,AM 或 PM。
    • unix_us - UNIX 时间,以微秒为单位
    • unix_ms - UNIX 时间,以毫秒为单位
    • unix_s - UNIX 时间,以秒为单位
    • unix_hex - 以十六进制表示的 UNIX 时间

了解有关自定义日期和时间格式的详细信息

仅当 in_date_field 参数值是文本字段且 target_date_field 参数值是日期字段,或者 field_mapping 参数输入值是文本字段且输出值是日期字段时,此参数才会启用

仅当将 update_target 参数设置为 UPDATE 时,才会启用此参数。

String
convert_local_time
(可选)

指定输入记录的日期值是否会从本地系统的时区转换为协调世界时间 (UTC)。

  • CONVERT输入记录的日期值将从本地系统的时区转换为 UTC。 这是默认设置。
  • NO_CONVERT输入记录的日期值将保留为本地系统的时区。

仅当 target_features 参数值为要素服务图层时,此参数才处于活动状态。

Boolean

派生输出

名称说明数据类型
updated_target_features

已更新的目标数据集。

Feature Layer; Table View

代码示例

UpdateFeaturesWithIncidentRecords 示例 1(Python 窗口)

以下脚本演示了如何在即时模式下使用 UpdateFeaturesWithIncidentRecords 函数。


import arcpy
arcpy.env.workspace = r"C:\data\city_pd.gdb"

arcpy.ca.UpdateFeaturesWithIncidentRecords("C:/data/calls_for_service_records.csv",
                                           "calls_for_service_features",
                                           "COORDINATES",
                                           "Longitude",
                                           "Latitude",
                                           4326)
UpdateFeaturesWithIncidentRecords 示例 2(独立脚本)

下面的独立脚本演示了如何在脚本中使用 UpdateFeaturesWithIncidentRecords 函数:

# Name: UpdateFeaturesWithIncidentRecords.py
# Description: Update the calls for service feature class with new updates from the records management system (RMS).

# Import script modules 
import arcpy

# Set the workspace
arcpy.env.workspace = r"C:/data/city_pd.gdb"

# Address Field Pairs formatted as ["Locator Address Field Name", "Input Field Name"]
address_field_pairs = [
        ["Address", "locdesc"],
        ["Address2", ""],
        ["Address3", ""],
        ["Neighborhood", ""],
        ["City", "municipality"],
        ["Subregion", ""],
        ["Region", "state"],
        ["Postal", "zip5"],
        ["PostalExt", ""],
        ["CountryCode", ""]
    ]

arcpy.ca.UpdateFeaturesWithIncidentRecords("C:/data/calls_for_service_records.csv",
                                           "calls_for_service_features",
                                           location_type="ADDRESSES",
                                           address_locator="https://geocode.arcgis.com/arcgis/rest/services/World/GeocodeServer/ArcGIS World Geocoding Service",
                                           address_type="MULTI_FIELD_ADDRESS",
                                           address_fields=address_field_pairs,
                                           update_target="UPDATE",
                                           match_fields=[["callid", "callid"]],
                                           update_matching="UPSERT",
                                           update_geometry="UPDATE_GEOMETRY",
                                           field_matching_type="AUTOMATIC")

许可信息

  • Basic: 是
  • Standard: 是
  • Advanced: 是

相关主题