Generate Rubbersheet Links (Editing)

Summary

Finds where the source line features spatially match the target line features and generates lines representing links from source locations to corresponding target locations for rubbersheeting.

Illustration

Generate Rubbersheet Links tool illustration

Usage

  • Line features from different data sources and covering the same area, for example, roads maintained by a city government and roads of the same city from a commercial data provider, may not perfectly line up due to inconsistent data collections or other reasons. The spatial shifts between corresponding features are often not uniform. If you know the data of one source is less accurate than the other, you can improve the data accuracy through rubbersheeting adjustment by using this tool to generate rubbersheet links. Then use the Rubbersheet Features tool to perform the adjustment. The two sets of line features are referred to as source features and target features (usually more accurate). This tool finds corresponding source and target lines within the specified search distance and generates rubbersheet links (also known as displacement links) between them.

  • Note:

    All inputs must be in the same coordinate system.

  • The union of input extents is used as the processing extent. The counts of participating source and target features are reported in the processing messages.

  • The output feature class contains lines representing regular rubbersheet links for input to the Rubbersheet Features tool. A regular link connects a source location to a matched, nonidentical target location.

    You can display these links on a map as you would any other line features. The lines can be drawn with an arrow at each end to produce a map similar to the illustration above.

  • In addition to the output line feature class, a derived point feature class is created that contains the identity links. An identity link connects a source location to a matched identical target location. Locations with identity links are not moved in rubbersheeting. If there are no identical source locations and target locations are matched, no identity links are generated, and the output point feature class is empty. You only need to supply the point feature class as input to the Rubbersheet Features tool when it is not empty. The output point feature class is in the same location as the output feature class and has the same name as the output feature class but with a suffix of _pnt. For example, if the output feature class is named outputLinks, the output point feature class is named outputLinks_pnt.

  • Both the regular rubbersheet links output and the identity links output have the following fields:

    • SRC_FID—The source feature IDs at the starting points of the links. The value is -1 if the location is shared by more than one source feature (for example, a road intersection).
    • TGT_FID—The target feature IDs at the ending points of the links. The value is -1 if the location is shared by more than one target feature (for example, a road intersection).

  • The Search Distance parameter is used in finding match candidates. Use a distance large enough to catch most of the shifts between corresponding features, but not too large to cause unnecessary processing of too many candidates and potentially getting wrong matches.

  • Feature matching is done by analyzing line topology, patterns, and geometric characteristics. Once features are spatially matched, rubbersheet links are generated from source locations to corresponding target locations. For source features that are parametric (true) curves, links are generated at densified locations along the curves.

  • If you specify one or more pairs of fields for the Match Fields parameter, spatially matched candidates are compared to these field values to help determine the correct match. For example, suppose the source and target features both have a STREET_NAME field containing street names. If a source feature spatially matches two target features but only one target candidate has the same STREET_NAME field value as the source feature, it is the better match. The comparison of text strings is not case sensitive, so First St is considered the same as first st.

  • The Output Match Table parameter is optional. The match table provides complete feature matching information, including the source and target FIDs, match groups, match relationships, and the level of confidence of the matching derived from spatial and attribute matching conditions. This information can help you understand the match situations and aid in postinspection, postediting, and further analysis. See About feature matching and the match table for details.

  • Feature matching accuracy relies on data quality, complexity, and similarities of the two inputs.

    Minimize data errors and select relevant features as input through preprocessing. In general, it is helpful when the features in an input dataset are topologically correct, have valid geometry, and are singlepart and not duplicate; otherwise, unexpected results may occur.

  • It is recommended that you review the results and make necessary corrections. During postinspection and postediting, you can use the existing editing tools to edit the links, for example, to delete a link, alter a link by moving its start or end vertex, or add a new link. Update the SRC_FID and TGT_FID field values accordingly.

Parameters

LabelExplanationData Type
Source Features

The line features that will be used as source features for generating rubbersheet links. All links start at source features.

Feature Layer
Target Features

The line features that will be used as target features for generating rubbersheet links. All links end at matched target features.

Feature Layer
Output Feature Class

The output feature class containing lines representing regular rubbersheet links.

Feature Class
Search Distance

The distance that will be used to search for match candidates. A distance must be specified and it must be greater than zero. You can choose a preferred unit. The default is the feature unit.

Linear Unit
Match Fields
(Optional)

Lists of fields from source and target features. If provided, each pair of fields are checked for match candidates to help determine the right match.

Value Table
Output Match Table
(Optional)

The output table containing complete feature matching information.

Table

Derived Output

LabelExplanationData Type
Identity Links

A feature class that contains the identity links.

Feature Class

arcpy.management.GenerateRubbersheetLinks(source_features, target_features, out_feature_class, search_distance, {match_fields}, {out_match_table})
NameExplanationData Type
source_features

The line features that will be used as source features for generating rubbersheet links. All links start at source features.

Feature Layer
target_features

The line features that will be used as target features for generating rubbersheet links. All links end at matched target features.

Feature Layer
out_feature_class

The output feature class containing lines representing regular rubbersheet links.

Feature Class
search_distance

The distance that will be used to search for match candidates. A distance must be specified and it must be greater than zero. You can choose a preferred unit. The default is the feature unit.

Linear Unit
match_fields
[[source_field, target_field],...]
(Optional)

Lists of fields from source and target features. If provided, each pair of fields are checked for match candidates to help determine the right match.

Value Table
out_match_table
(Optional)

The output table containing complete feature matching information.

Table

Derived Output

NameExplanationData Type
out_point_feature_class

A feature class that contains the identity links.

Feature Class

Code sample

GenerateRubbersheetLinks example 1 (Python window)

The following Python window script demonstrates how to use the GenerateRubbersheetLinks function in immediate mode.

import arcpy
arcpy.env.workspace = "C:/data"
arcpy.edit.GenerateRubbersheetLinks("source_Roads.shp", "target_Roads.shp", 
                                    "rubbersheet_Links.shp", "25 Feet")
GenerateRubbersheetLinks example 2 (stand-alone script)

The following stand-alone script is an example of how to apply the GenerateRubbersheetLinks function in a scripting environment.

"""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")