Identify double digitised polylines
Summary :: Usage :: Parameters :: Outputs :: Warnings :: Limitations :: Code sample
Summary
Checks for double digitised polylines, any found are logged in the error log table.
Usage
This tool checks for double digitised polylines. Double digitised is the scenario when two polylines share the same FROM and TO nodes AND intersect each other at a location other than the nodes. These can be visually hard to spot. You can think of these as lines as weaving over each other.
The tool filters the data down to candidate polylines and then checks for intersections. Large networks with many loops will generate large numbers of candidates that must be checked, so this tool has longer run times for large networks.
Any found to be double digitised have their polyline ID written to an error log table called tblDoubleDigitised. If the table already exists then a new table name is created with a simple numeric suffix.
The tool optionally adds the error log table to the map (default) and if selected builds a standard relate between river network layer and error log table. You can use the relate to select and jump to the polyline to streamline your editing experience.
Parameters
Name |
Help |
Data type |
River Network |
The river network. For best results the network should be within a File GeoDatabase |
Feature Layer |
Add Error Log Table to Map |
If this is ticked (default) the error log table will be added to the map for your convenience if any errors were found. |
Boolean |
Build a Relate for Error Log |
If this tick box is checked then the error log table must be loaded into the map and RivEX builds a standard relate between the Error Log table and the river network layer. You can use the relate to help you jump to and review the error. |
Boolean |
Outputs
RivEX will return the ID number of one the polylines. This may not be the erroneous polyline! RivEX has simply identified a location with a problem. It is up to you, the user, to make the informed decision on which polyline to remove or edit. Maybe it is due to poor digitising and there really are two channels or it's a data capture error and one of the polylines need to be removed?
This tool creates a stand alone table named tblDoubleDigitised, if any polylines are double digitised within the river network. The table is created in the RivEX workspace folder and stored in the File GeoDatabase found in ..\RivEX_Workspace\ErrorLogs\fGDB_RivEXErrorLogs.gdb
Advice on the structure of the error log table and how it can be used is found within this section of the manual. Take note of the warning if you plan to construct a model using the error log output in subsequent processing.
Warnings
With the release of ArcGIS Pro 3.2.1 a switch control appears on parameters that accept tables\feature classes, do not interact with it! More advice here.
Limitations
Any selection on the input layer is cleared and then the tool checks all polylines in the river network.
RivEX searches for these types of errors over the length of a single polyline. If your double digitising occurs over two or more polylines these will not be identified. The image below demonstrates this issue. The green line is a single polyline. The reach it represents has been captured as four polylines by the underlying blue polylines. Thus the green polyline does not share it's nodes with a single polyline. In this case it is probably safe to delete the green polyline.
Code sample
A minimum code example showing how to call this tool in a python script. This can be run in console or your preferred IDE. If you right click on the tool in the RivEX toolbox and select properties you can view parameter order.
import arcpy
# Import RivEX toolbox
arcpy.ImportToolbox(r"C:\RivEX_ArcPro\RivEX.atbx")
try:
# Input river Feature Class
fc = r"C:\Temp\ORN\ORN.gdb\ORN"
# Run RivEX quality control tool
res = arcpy.scrQCDoubleDigitised_RivEX(fc, False, False)
# The rivers Feature Class, a derived output
fcRivers = res.getOutput(0)
# Get error table
tblError = res.getOutput(1)
# Check if error table exists
if arcpy.Exists(tblError):
# Count number of rows
res = arcpy.GetCount_management(tblError)
n = int(res.getOutput(0))
if n > 0:
print(str(n) + " error(s) were recorded")
else:
print("No error table created!")
except arcpy.ExecuteError:
print("FAILED to quality control network")