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

摘要

根据 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 - 输入表记录的字段映射失败,因为无法将值添加到输出字段。 例如,当值长度大于字段长度时,无法将文本值添加到数值字段,并且无法将文本值添加到文本字段。
    • DUP_ID - 输入表记录具有重复 ID,并且尚未更新到目标要素,因为其版本早于现有记录或存在较新的记录。 此项根据上次修改日期确定。 如果不使用上次修改日期,则根据最高的 OBJECTID 值确定。

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

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

参数

标注说明数据类型
输入表

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

Table View
目标要素

要更新的点要素类或要素图层。

Feature Layer
位置类型

指定是使用 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,请选择单个字段。 如果将常规美国地址的输入地址拆分成“地址”、“城市”、“州”和“邮政编码”等多个字段,请选择多个字段

仅当位置类型参数设置为地址时,此参数才会启用。

  • 多个字段地址将拆分为多个字段。
  • 单字段地址将包含在一个字段中。
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
字段映射
(可选)

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

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

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

合并规则用于指定如何将两个或更多个输入字段的值合并或组合为一个输出值。 有多种合并规则可用于确定如何用值填充输出字段。

  • First - 使用输入字段的第一个值。
  • Last - 使用输入字段的最后一个值。
  • Join - 串连(连接)输入字段的值。
  • Sum - 计算输入字段值的总和。
  • Mean - 计算输入字段值的平均值。
  • Median - 计算输入字段值的中值。
  • Mode - 使用具有最高频率的值。
  • Min - 使用所有输入字段值中的最小值。
  • Max - 使用所有输入字段值中的最大值。
  • Standard deviation - 对所有输入字段值使用标准差分类方法。
  • Count - 查找计算中所包含的记录数。

Field Mappings
时间格式

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

注:

格式字符串区分大小写。

  • 如果时间字段的数据类型为日期,则不需要时间格式。
  • 如果时间字段的数据类型是数值(短整型、长整型、浮点型或双精度),将在下拉列表中提供标准数值时间格式。
  • 如果时间字段的数据类型是字符串,将在下拉列表中提供标准字符串时间格式。 对于字符串字段来说,您也可以为其指定自定义时间格式。 例如,可采用标准格式将时间值存储在字符串字段中,如 yyyy/MM/dd HH:mm:ss 或以自定义格式存储,如 dd/MM/yyyy HH:mm:ss。 如果使用自定义格式,您还可以指定 a.m. 或 p.m. 指示符。 以下列出了部分常用格式:
    • 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

派生输出

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

更新后的目标要素。

Feature Layer

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)
名称说明数据类型
in_table

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

Table View
target_features

要更新的点要素类或要素图层。

Feature Layer
location_type

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

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

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

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

Field
y_field
(可选)

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

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

Field
coordinate_system
(可选)

x 和 y 坐标的坐标系。

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

Coordinate System
address_locator
(可选)

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

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

注:

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

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

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 参数设置为 ADDRESSES 时,此参数才会启用。

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将在 in_table 参数(如果存在)中更新 target_features 参数中的记录。
  • 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 参数设置为 UPDATE 时,才会启用此参数。

Boolean
field_matching_type
(可选)

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

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

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

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

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

合并规则用于指定如何将两个或更多个输入字段的值合并或组合为一个输出值。 有多种合并规则可用于确定如何用值填充输出字段。

  • First - 使用输入字段的第一个值。
  • Last - 使用输入字段的最后一个值。
  • Join - 串连(连接)输入字段的值。
  • Sum - 计算输入字段值的总和。
  • Mean - 计算输入字段值的平均值。
  • Median - 计算输入字段值的中值。
  • Mode - 使用具有最高频率的值。
  • Min - 使用所有输入字段值中的最小值。
  • Max - 使用所有输入字段值中的最大值。
  • Standard deviation - 对所有输入字段值使用标准差分类方法。
  • Count - 查找计算中所包含的记录数。

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

Field Mappings
time_format

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

注:

格式字符串区分大小写。

  • 如果时间字段的数据类型为日期,则不需要时间格式。
  • 如果时间字段的数据类型是数值(短整型、长整型、浮点型或双精度),将在下拉列表中提供标准数值时间格式。
  • 如果时间字段的数据类型是字符串,将在下拉列表中提供标准字符串时间格式。 对于字符串字段来说,您也可以为其指定自定义时间格式。 例如,可采用标准格式将时间值存储在字符串字段中,如 yyyy/MM/dd HH:mm:ss 或以自定义格式存储,如 dd/MM/yyyy HH:mm:ss。 如果使用自定义格式,您还可以指定 a.m. 或 p.m. 指示符。 以下列出了部分常用格式:
    • 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

派生输出

名称说明数据类型
updated_target_features

更新后的目标要素。

Feature Layer

代码示例

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: 是

相关主题