生成橡皮页变换链接 (编辑)

摘要

查找源线要素与目标线要素在空间上匹配的位置,并生成表示从源位置到相应目标位置的橡皮页变换链接的线。

插图

“生成橡皮页变换链接”工具图示

使用情况

  • 由于数据收集不一致或其他原因,来自不同数据源并覆盖相同区域的线要素(例如由市政府维护的道路和来自商业数据提供商的同一城市的道路)可能不会完全对齐。 对应要素之间的空间平移常常并不统一。 如果了解某个源的数据精度低于其他源的数据,则可以通过橡皮页变换调整来提高数据精度,方法为:使用该工具生成橡皮页变换链接。 然后再使用橡皮页变换要素工具执行调整。 这两组线要素称为源要素与目标要素(通常更为准确)。 该工具在指定搜索距离内查找对应的源线和目标线,并生成源线与目标线之间的橡皮页变换链接(也称为位移链接)。

  • 注:

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

  • 输入范围的并集用作处理范围。 参与源要素与目标要素的计数会在处理消息中报告。

  • 输出要素类包含表示常规橡皮页变换链接(该链接是橡皮页变换要素工具的输入链接)的线。 常规链接将源位置连接至匹配但不相同的目标位置。

    与任何其他线要素一样,您可以在地图上显示这些链接。 可在每个端点处绘制带有箭头的线,从而生成与上图相似的地图。

  • 除了输出线要素类之外,还会创建包含标识链接的派生点要素类。 标识链接将源位置连接至匹配的相同目标位置。 在橡皮页变换中,带有标识链接的位置是不会发生移动的。 如果不存在互相匹配的相同源位置和目标位置,那么将不会生成标识链接;并且,输出点要素类为空。 仅当点要素类不为空时,才需要提供点要素类作为橡皮页变换要素工具的输入。 输出点要素类与输出要素类的位置相同,其名称也与输出要素类的名称相同,但是具有 _pnt 后缀。 例如,如果输出要素类的名称为 outputLinks,则输出点要素类的名称便为 outputLinks_pnt

  • 常规橡皮页变换链接输出和标识链接输出均具有以下字段:

    • SRC_FID- 链接起点处的源要素 ID。 如果有多个源要素共享该位置(例如道路交叉口),则该值为 -1。
    • TGT_FID- 链接终点处的目标要素 ID。 如果有多个目标要素共享该位置(例如道路交叉口),则该值为 -1。

  • 搜索距离参数用于查找匹配候选项。 使用足以获取相应要素间大多数偏移的距离,但是距离不可过大,以防止出现对过多候选项的不必要处理并避免得出错误匹配的潜在风险。

  • 通过分析线拓扑、模式和几何特征来完成要素匹配。 一旦要素在空间上匹配,便会生成从源位置到对应目标位置的橡皮页变换链接。 对于作为参数(真)曲线的源要素,会在沿着曲线的增密位置生成链接。

  • 如果在匹配字段参数中指定了一对或多对字段,则将空间匹配候选项与这些字段值来比较,以帮助确定正确的匹配。 例如,假设源要素和目标要素均具有包含街道名称的 STREET_NAME 字段。 如果某个源要素在空间上与两个目标要素匹配,但是只有一个目标要素具有与源要素相同的 STREET_NAME 字段值,那么该目标要素与源要素的匹配度更高。 文本字符串的比较不区分大小写,因此 First Stfirst st 被视为相同。

  • 输出匹配表参数为可选项。 此匹配表可提供完整的要素匹配信息,其中包括源 FID 与目标 FID、匹配组、匹配关系以及从空间和属性匹配条件中获取的匹配置信度级别。 此信息能够帮助您了解匹配情况,并有助于进行后检查、后编辑和进一步分析。 有关详细信息,请参阅关于要素匹配与匹配表

  • 要素匹配精度取决于两个输入的数据质量、复杂程度和相似程度。

    在预处理过程中,需要尽可能减少数据错误,并选择相关要素作为输入。 通常情况下,如果某个输入数据集中的要素具有正确的拓扑结构和有效的几何,且本身为单部分而无重复,这将非常有用;否则,可能会出现意外结果。

  • 建议检查这些结果,并进行必要的修改。 在后检查和后编辑过程中,您可以使用现有编辑工具来编辑链接,例如删除链接、通过移动链接的起止折点来更改链接或者添加新链接。 相应地更新 SRC_FIDTGT_FID 字段值。

参数

标注说明数据类型
源要素

将用作生成橡皮页变换链接的源要素的线要素。 所有链接均始于源要素。

Feature Layer
目标要素

将用作生成橡皮页变换链接的目标要素的线要素。 所有链接均止于相匹配的目标要素。

Feature Layer
输出要素类

包含线的输出要素类,该线表示常规橡皮页变换链接。

Feature Class
搜索距离

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

Linear Unit
匹配字段
(可选)

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

Value Table
输出匹配表
(可选)

包含完整的要素匹配信息的输出表。

Table

派生输出

标注说明数据类型
标识链接

包含标识链接的要素类。

Feature Class

arcpy.management.GenerateRubbersheetLinks(source_features, target_features, out_feature_class, search_distance, {match_fields}, {out_match_table})
名称说明数据类型
source_features

将用作生成橡皮页变换链接的源要素的线要素。 所有链接均始于源要素。

Feature Layer
target_features

将用作生成橡皮页变换链接的目标要素的线要素。 所有链接均止于相匹配的目标要素。

Feature Layer
out_feature_class

包含线的输出要素类,该线表示常规橡皮页变换链接。

Feature Class
search_distance

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

Linear Unit
match_fields
[[source_field, target_field],...]
(可选)

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

Value Table
out_match_table
(可选)

包含完整的要素匹配信息的输出表。

Table

派生输出

名称说明数据类型
out_point_feature_class

包含标识链接的要素类。

Feature Class

代码示例

GenerateRubbersheetLinks 示例 1(Python 窗口)

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

import arcpy
arcpy.env.workspace = "C:/data"
arcpy.edit.GenerateRubbersheetLinks("source_Roads.shp", "target_Roads.shp", 
                                    "rubbersheet_Links.shp", "25 Feet")
GenerateRubbersheetLinks 示例 2(独立脚本)

以下独立脚本演示了如何在脚本环境中应用 GenerateRubbersheetLinks 函数。

"""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 then used to adjust the
             base roads (a copy is made) to better align with the updated roads.
"""

# Import system modules
import arcpy

# Set environment settings
arcpy.env.overwriteOutput = True
arcpy.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.edit.GenerateRubbersheetLinks(sourceFeatures, targetFeatures, grlOutput, search_distance, match_fields)

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

         One of the common 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(grlOutput, 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 sourceFeatures for rubbersheeting
arcpy.management.CopyFeatures(sourceFeatures, "sourceFeatures_Copy")


# Use the links for rubbersheeting
arcpy.edit.RubbersheetFeatures("sourceFeatures_Copy", grlOutput, grlOutputPts, "LINEAR")