Snap pour points

The Snap Pour Points tool can be used to move the location of pour points (i.e. outlets used in a watershedding operation) to the location coincident with the highest flow accumulation value within a specified distance. The user must specify the names of the pour point (i.e. outlet) file, the flow accumulation raster, and the output file. The pour points file can be either a raster or a vector. If a raster file is specified as the pour point input, it would typically contain a zero background with individual pour point identifiers specified by non-zero values. Pour point rasters can be created from X, Y, Z text files using the XYZTextToRaster tool. Alternatively, it is possible to create a new blank image using the New Image From Base Raster tool and manually entering outlet cells using the Modify Pixel Values in Active Map Layer tool from the toolbar. Vector pour point files can be created by on-screen digitizing. If the output of the Snap Pour Points tool is to be used with the Watershed tool, the flow accumulation raster should be generated using the D8 algorithm. The snap distance, measured in meters, must also be specified. This distance will serve as the search radius placed around each pour point during the search for the maximum flow accumulation. In general, each outlet will be relocated the distance specified by the snap distance.

For a detailed discussion of this technique, and other more sophisticated techniques for adjusting pour point locations used in watershedding operations including Jenson's snap pour points method, please see the following article:

Lindsay JB, Rothwell JJ, and Davies H. 2008. Mapping outlet points used for watershed delineation onto DEM-derived stream networks, Water Resources Research, 44, W08442, doi:10.1029/2007WR006507.

See Also:


The following is an example of a Python script that uses this tool:

wd = pluginHost.getWorkingDirectory()
outletsFile = wd + "outlets.shp"
caFile = wd + "contributing area.dep"
outputFile = wd + "output.dep"
snapDist = "1200.0"
args = [outletsFile, caFile, outputFile, snapDist]
pluginHost.runPlugin("SnapPourPoints", args, False)

This is a Groovy script also using this tool:

def wd = pluginHost.getWorkingDirectory()
def outletsFile = wd + "outlets.dep"
def caFile = wd + "contributing area.dep"
def outputFile = wd + "output.dep"
def snapDist = "1200.0"
String[] args = [outletsFile, caFile, outputFile, snapDist]
pluginHost.runPlugin("SnapPourPoints", args, false)