描述
查找源线要素与目标线要素在空间上匹配的位置,并生成表示从源位置到相应目标位置的橡皮页变换链接的线。
插图
使用方法
由于数据收集不一致或其他原因,来自不同数据源并覆盖相同区域的线要素(例如由市政府维护的道路和来自商业数据提供商的同一城市的道路)可能不会完全对齐。对应要素之间的空间平移常常并不统一。如果了解某个源的数据精度低于其他源的数据,则可以通过橡皮页变换调整来提高数据精度,方法为使用该工具生成橡皮页变换链接,然后再使用橡皮页变换要素工具执行调整。这两组线要素称为源要素与目标要素(通常更为准确)。该工具在指定搜索距离内查找对应的源线和目标线,并生成源线与目标线之间的橡皮页变换链接(也称为位移链接)。
输入范围的并集用作处理范围。参与源要素与目标要素的计数会在处理消息中报告。
输出要素类包含表示常规橡皮页变换链接(该链接是橡皮页变换要素工具的输入链接)的线。常规链接将源位置连接至匹配但不相同的目标位置。
与任何其他线要素一样,您可以在地图显示这些链接。可绘制端点处带有箭头的线,从而生成与上图相似的地图。
除了输出线要素类之外,该工具还创建了包含标识链接的派生点要素类。标识链接将源位置连接至匹配且相同的目标位置;在橡皮页变换中,带有标识链接的位置是不会发生移动的。如果不存在互相匹配的相同源位置和目标位置,那么将不会生成标识链接;因此,输出点要素类为空。仅当点要素类不为空时,才需要提供点要素类作为橡皮页变换要素工具的输入。输出点要素类与输出要素类的位置相同,其名称也与输出要素类的名称相同,但是具有 _pnt 后缀。例如,如果输出要素类的名称为 outputLinks,则输出点要素类的名称便为 outputLinks_pnt。
两种输出(常规橡皮页变换链接与标识链接)均具有以下字段:
- SRC_FID - 链接起点处的源要素 ID。如果有多个源要素共享该位置(例如道路交叉口),则该值为 -1。
- TGT_FID - 链接终点处的目标要素 ID。如果有多个目标要素共享该位置(例如道路交叉口),则该值为 -1。
搜索距离参数用于查找匹配候选项。使用足以获取相应要素间大多数偏移的距离,但是距离不可过大,以防止出现对过多候选项的不必要处理并避免得出错误匹配的潜在风险。
通过分析线拓扑、模式和几何特征来完成要素匹配。一旦要素在空间上匹配,便会生成从源位置到对应目标位置的橡皮页变换链接。对于作为参数(真)曲线的源要素,会在沿着曲线的增密位置生成链接。
如果在匹配字段参数中指定了一对或多对字段,则将根据这些字段值来检查空间匹配候选项,从而帮助确定正确的匹配。例如,假设源要素和目标要素均具有包含街道名称的 STREET_NAME 字段。如果某个源要素在空间上与两个目标要素匹配,但是只有一个目标要素具有与源要素相同的 STREET_NAME 值,那么该目标要素与源要素的匹配度更高。文本字符串的比较不区分大小写,这表示 First St 与 first st 被视为相同的文本。
输出匹配表为可选项。此匹配表可提供完整的要素匹配信息,其中包括源 FID 与目标 FID、匹配组、匹配关系以及从空间和属性匹配条件中获取的匹配置信度级别。此信息能够帮助您了解匹配情况,并有助于进行后检查、后编辑和进一步分析。有关详细信息,请参阅关于要素匹配与匹配表。
要素匹配精度取决于两个输入的数据质量、复杂程度和相似程度。
在预处理过程中,您需要尽可能减少数据错误,并选择相关要素作为输入。通常情况下,如果某个输入数据集内的要素具有正确的拓扑结构和有效的几何,且本身为单部件而无重复,这将非常有用;否则可能会出现意外结果。
建议检查这些结果,并进行必要的修改。在后检查和后编辑过程中,您可以使用现有的“编辑”工具来编辑链接,例如删除不需要的链接、通过移动链接的起止折点来更改链接或在必要时添加新链接。确保对 SRC_FID 和 TGT_FID 值进行相应更新。
注:
所有输入必须处于同一坐标系。
语法
arcpy.edit.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 | 包含标识链接的要素类。 | 要素类 |
代码示例
以下 Python 窗口脚本演示了如何在即时模式下使用 GenerateRubbersheetLinks 函数。
import arcpy
arcpy.env.workspace = "C:/data"
arcpy.GenerateRubbersheetLinks_edit("source_Roads.shp", "target_Roads.shp",
"rubbersheet_Links.shp", "25 Feet")
以下独立脚本演示了如何在脚本环境中应用 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 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")
许可信息
- Basic: 否
- Standard: 否
- Advanced: 是