生成边匹配链接 (编辑)

摘要

沿着源数据区域及其相邻数据区域的边缘查找匹配但是已断开的线要素,并生成从源线到相匹配相邻线的边匹配链接。

了解有关边匹配的详细信息

插图

“生成边匹配链接”工具图示

使用情况

  • 由于数据采集不一致或其他原因,单独的相邻数据集的线要素(例如相邻国家的道路)可能存在空隙或沿着连接边的方向发生偏移。 可使用该工具生成边匹配链接,从而一次性解决两个数据集之间的边匹配问题。 然后使用边匹配要素工具对要素进行调整,从而使要素相互连接。 这两组线要素称为源要素和相邻要素。 该工具在指定搜索距离内查找没有相交但是彼此对应的源线与相邻线,并生成表示源线与相邻线之间边匹配链接(也称为位移链接)的线。

    如果沿着边缘区域的两个互相断开的对应要素处于彼此搜索距离之内,但其端点位置超过了搜索距离,则不认为这两个要素为边匹配。

  • 注:

    所有输入必须处于同一坐标系。

    输出要素类将使用与输入要素类相同的坐标系。

  • 输出要素类包含通过以下字段表示边匹配链接的线要素:

    • 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_FIDTGT_FID 字段值。

参数

标注说明数据类型
源要素

将用作边匹配源要素的线要素。 所有边匹配链接均始于源要素。

Feature Layer
相邻要素

与源要素相邻的线要素。 所有边匹配链接均止于相匹配的相邻要素。

Feature Layer
输出要素类

包含线的输出要素类,该线表示边匹配链接。

Feature Class
搜索距离

将用于搜索匹配候选项的距离。 必须指定一个距离,且此距离必须大于零。 可以选择首选单位。 默认为要素单位。

Linear Unit
匹配字段
(可选)

源要素和目标要素中的字段,其中目标字段来自相邻要素。 如果已提供,则将检查每对字段中的匹配候选项,以帮助确定正确的匹配。

Value Table

arcpy.management.GenerateEdgematchLinks(source_features, adjacent_features, out_feature_class, search_distance, {match_fields})
名称说明数据类型
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

代码示例

GenerateEdgematchLinks 示例 1(Python 窗口)

以下 Python 窗口脚本演示了如何在即时模式下使用 GenerateEdgematchLinks 函数。

import arcpy
arcpy.env.workspace = "C:/data"
arcpy.edit.GenerateEdgematchLinks("countyA_Roads.shp",
                                  "countyB_Roads.shp", "em_Links.shp"
                                  "25 Feet")
GenerateEdgematchLinks 示例 2(独立脚本)

以下独立脚本是演示如何在脚本环境中应用 GenerateEdgematchLinks 函数的简单示例。

"""
Name:        EdgematchFeatures_example_script2.py
Description: Performs edgematching spatial adjustment using links produced by
             GenerateEdgematchLinks. The links go from input features to adjacent 
             features. The links are then checked for intersecting conditions, which
             may not be desired. They are then used to adjust input features 
             (a copy is made) to connect to the matched adjacent features.
"""

# Import system modules.
import arcpy

# Set environment settings.
arcpy.env.overwriteOutput = True
arcpy.env.workspace = r"D:\conflationTools\ScriptExamples\data.gdb"

# Set local variables.
inFeatures = "roads1"
adjFeatures = "roads2"
gelOutput = "gelinks_out"

search_distance = "200 Feet"
match_fields = "NAME ROAD_NAME"

qaLocations = "qa_locations"

# Generate rubbersheet links.
arcpy.edit.GenerateEdgematchLinks(inFeatures, adjFeatures, gelOutput, search_distance, match_fields)

"""
Note 1:  The result of GenerateEdgematchLinks may contain errors; see the tool reference.
         Inspection and editing may be necessary to ensure correct links before using
         them for edgematching.

         One of the possible errors is 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.analysis.Intersect(gelOutput, qaLocations, "", "", "POINT")

# Delete coincident points.
arcpy.management.DeleteIdentical(qaLocations, "Shape")

"""
Note 2:  You can manually inspect locations in qaLocations and delete or
         modify links as needed.
"""

# Make a copy of the inFeatures for edgematching.
inFeature_Copy = inFeatures + "_Copy"
arcpy.management.CopyFeatures(inFeatures, inFeature_Copy)

# Use the links to adjust the copy of the input features.
arcpy.edit.EdgematchFeatures(inFeature_Copy, gelOutput, "MOVE_ENDPOINT")