生成边匹配链接 (Editing)
插图
用法
-
由于数据采集不一致或其他原因,单独的相邻数据集的线要素(例如相邻国家的道路)可能存在空隙或沿着连接边的方向发生偏移。可使用该工具生成边匹配链接,从而一次性解决两个数据集之间的边匹配问题,然后使用边匹配要素工具对要素进行调整,从而使要素相互连接。这两组线要素称为源要素和相邻要素。该工具在指定搜索距离内查找没有相交但是彼此对应的源线与相邻线,并生成表示源线与相邻线之间边匹配链接(也称为位移链接)的线。
如果沿着边缘区域的两个互相断开的对应要素处于彼此搜索距离之内,但其端点位置超过了搜索距离,则不认为这两个要素为边匹配。
- 注:
所有输入必须处于同一坐标系。
输出要素类使用与输入要素类相同的坐标系。
输出要素类包含通过以下字段表示边匹配链接的线要素。
- SRC_FID- 链接起点处的源要素 ID。
- ADJ_FID- 链接终点处的相邻要素 ID。
- EM_CONF - 表示边匹配置信度级别的值。这些值说明了在搜索距离内发现的候选项数量、属性匹配情况和源要素与相邻要素之间的连续性。该值范围为 0 到 100(不包括 0),其中 100 表示最高的置信度级别。EM_CONF 取值越大,链接正确的可能性就越大。请参阅关于边匹配中的示例。
-
搜索距离参数用于查找匹配候选项。使用足以获取相应要素间大多数偏移的距离,但是距离不可过大,以防止出现对过多候选项的不必要处理并避免得出错误匹配的潜在风险。
一旦找到匹配候选项,便会对候选项的形状特征进行分析。在连续性最好的源要素与相邻要素之间确定匹配。从源线端点到所匹配相邻线的端点生成表示边匹配链接的线。
与任何其他线要素一样,您可以在地图显示这些链接。可绘制端点处带有箭头的线,从而生成与上图相似的地图。
如果为匹配字段参数指定一对或多对字段,则会根据字段值检查空间上相匹配的要素。例如,假设更新要素和基础要素均具有包含街道名称的 STREET_NAME 字段。如果某个源要素在空间上与两个相邻要素匹配,但是只有一个相邻候选要素具有与源要素相同的 STREET_NAME 值,那么该相邻要素与源要素的匹配度更高。文本字符串的比较不区分大小写,这意味着会将 First St 视为与 first st 相同。
属性匹配条件会影响上述 EM_CONF 字段的值。
边匹配精度取决于两个沿边输入的数据质量与复杂程度。
在预处理过程中,您需要尽可能减少数据错误,并选择相关要素作为输入。通常情况下,如果某个输入数据集内的要素具有正确的拓扑结构和有效的几何,且本身为单部件而无重复,这将非常有用;否则可能会出现意外结果。
建议检查这些结果,并进行必要的修改。在后检查和后编辑过程中,您可以使用现有的“编辑”工具来编辑链接,例如删除不需要的链接、通过移动链接的起止折点来更改链接或在必要时添加新链接。确保对 SRC_FID 和 TGT_FID 值进行相应更新。
语法
参数 | 说明 | 数据类型 |
source_features |
作为边匹配源要素的线要素。所有边匹配链接均始于源要素。 | Feature Layer |
adjacent_features |
与源要素相邻的线要素。所有边匹配链接均止于相匹配的相邻要素。 | Feature Layer |
out_feature_class |
包含线的输出要素类,该线表示边匹配链接。 | Feature Class |
search_distance |
用于搜索匹配候选项的距离。必须指定一个距离,且此距离必须大于零。可以选择首选单位;默认为要素单位。 | Linear unit |
match_fields [[source_field, target_field],...] (可选) |
源要素和目标要素中的字段,其中目标字段来自相邻要素。在经过指定的情况下,检查每对字段是否为匹配候选项,从而帮助确定正确的匹配。 | Value Table |
代码实例
以下 Python 窗口脚本演示了如何在即时模式下使用 GenerateEdgematchLinks 函数。
import arcpy
arcpy.env.workspace = "C:/data"
arcpy.GenerateEdgematchLinks_edit("countyA_Roads.shp",
"countyB_Roads.shp", "em_Links.shp"
"25 Feet")
以下独立脚本是在脚本环境中应用 GenerateEdgematchLinks 函数的简单示例。
# Name: GenerateRubbersheetLinks_example_script2.py
# Description: Generates links for rubbersheeting spatial adjustment. The links go
# from base road data to newly updated road data. The links are then
# analyzed for potential errors; they are finally used to adjust the
# base roads (a copy is made) to better align with the updated roads.
# Author: Esri
# -----------------------------------------------------------------------
# Import system modules
import arcpy
from arcpy import env
# Set environment settings
env.overwriteOutput = True
env.workspace = r"D:\conflationTools\ScriptExamples\data.gdb"
# Set local variables
sourceFeatures = "baseRoads"
targetFeatures = "updateRoads"
grlOutput = "grlinks_out"
grlOutputPts = "grlinks_out_pnt"
search_distance = "300 Feet"
match_fields = "FULLNAME RD_NAME"
qaLocations = "qa_locations"
# Generate rubbersheet links
arcpy.GenerateRubbersheetLinks_edit(sourceFeatures, targetFeatures, grlOutput, search_distance, match_fields)
# ====================================================================================
# Note 1: The result of GenerateRubbersheetLinks may contain errors; see tool reference.
# Inspection and editing may be necessary to ensure correct links before using
# them for rubbersheeting.
#
# One of the common errors are intersecting or touching links. Their locations
# can be found by the process below.
# ====================================================================================
# Find locations where links intersect or touch; the result contains coincident points
arcpy.Intersect_analysis(grlOutput, qaLocations, "", "", "POINT")
# Delete coincident points
arcpy.DeleteIdentical_management(qaLocations, "Shape")
# ====================================================================================
# Note 2: At this point you can manually inspect locations in qaLocations; delete or
# modify links as needed.
# ====================================================================================
# Make a copy of the sourceFeatures for rubbersheeting
arcpy.CopyFeatures_management(sourceFeatures, "sourceFeatures_Copy")
# Use the links for rubbersheeting
arcpy.RubbersheetFeatures_edit("sourceFeatures_Copy", grlOutput, grlOutputPts, "LINEAR")