描述
根据 x,y 坐标或街道地址将非空间表转换为点要素,并使用表中的新记录或更新记录信息更新现有数据集。
使用方法
在将追加或更新输入表中的记录的位置中必须存在点要素类或要素图层。
可在此工具中使用从计算机辅助分派系统或记录管理系统导出的表格数据。
此工具支持以下表格式作为输入:
- 地理数据库
- dBASE (.dbf)
- 逗号分隔值(.csv 或 .txt)
- Microsoft Excel 工作表(.xls 或 .xlsx)
- 内存型表视图
对于文件输入(.csv 或 .txt),输入文件的第一行将用作输出表上的字段名称。字段名称不能包含空格或特殊字符(如 $ 或 *),如果输入文件的第一行包含空格或特殊字符,您将收到一条错误消息。
使用 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")时,输入表参数中的位置字段将与目标要素参数中的位置字段进行比较,以确定是否将在目标要素参数中更新几何。当位置类型设置为地址时,将比较地址字段值。如果检测到输入表记录和目标要素参数值之间存在差异,目标要素几何会使用基于输入表记录中的地址字段的地理编码位置进行更新。如果未检测到差异,则不会对输入表记录进行地理编码。
语法
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 坐标还是地址创建要素。
| 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 (可选) | 指定如何将地址定位器使用的地址字段映射到地址输入表中的字段。
如果完整地址储存在输入表的一个字段中,例如 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,...] (可选) | 与地址定位器的定位器地址字段对应的输入表字段。 某些定位器支持多个输入地址字段,例如 Address、Address2 和 Address3。在此情况下,可以将地址组件分为多个字段,然后在进行地理编码时将地址字段连接在一起。例如,跨三个字段的 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 参数中更新现有记录。
| 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_target 参数设置为 UPDATE 时,才会启用此参数。 | Boolean |
update_geometry (可选) | 指定是否更新现有要素的几何。
仅当将 update_target 参数设置为 UPDATE 时,才会启用此参数。 | Boolean |
field_matching_type (可选) | 指定输入表的字段是否必须与目标要素的字段匹配才能追加数据。
| String |
field_mapping (可选) | 控制如何将输入表中的属性字段传输或映射到目标要素。 仅当将 field_matching_type 参数设置为 FIELD_MAP 时,此参数才会启用。 由于输入表值追加到的现有目标要素具有预定义字段,因此无法在字段映射中添加、移除或更改字段类型。但是,可以为每个输出字段设置合并规则。 合并规则用于指定如何将两个或更多个输入字段的值合并或组合为一个输出值。有多种合并规则可用于确定如何用值填充输出字段。
在 Python 中,您可使用 FieldMappings 类来定义此参数。 | Field Mappings |
time_format | 包含时间值的输入字段的格式。类型可以是短型、长型、浮点型、双精度、文本或日期。可从下拉列表中选择标准时间格式,也可以输入自定义格式。 注:格式字符串区分大小写。
仅当 in_date_field 参数值是文本字段且 target_date_field 参数值是日期字段,或者 field_mapping 参数输入值是文本字段且输出值是日期字段时,此参数才会启用 仅当将 update_target 参数设置为 UPDATE 时,才会启用此参数。 | String |
派生输出
名称 | 说明 | 数据类型 |
updated_target_features | 更新后的目标要素。 | 要素图层 |
代码示例
以下脚本演示了如何在即时模式下使用 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 函数:
# 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: 是