Path Distance (Spatial Analyst)
Summary
Calculates, for each cell, the least accumulative cost distance to the nearest source, while accounting for surface distance and horizontal and vertical cost factors.
Usage
The Path Distance tools are comparable to the Cost Distance tools in that both determine the minimum accumulative travel cost from a source to each location on a raster surface. However, the Path Distance tools add more complexity to the analysis by being able to accommodate for the actual surface distance as well as other horizontal and vertical factors.
The input source data can be a feature class or raster.
When the input source data is a raster, the set of source cells consists of all cells in the source raster that have valid values. Cells that have NoData values are not included in the source set. The value 0 is considered a legitimate source. A source raster can be easily created using the extraction tools.
Cells with NoData act as barriers in the Path Distance tools. The cost distance for cells behind NoData values is calculated by the accumulative cost necessary to move around the NoData barrier. Any cell location that is assigned NoData on any one of the input rasters will receive NoData on all output rasters.
If the input source data and the cost raster are different extents, the default output extent is the intersection of the two. To get a cost distance surface for the entire extent, choose the Union of Inputs option on the output Extent environment settings.
If a Mask has been set in the environment, all masked cells will be treated as NoData values.
When a mask has been defined in the Raster Analysis window and the cells to be masked will mask a source, the calculations will occur on the remaining source cells. The source cells that are masked will not be considered in the computations. These cell locations will be assigned NoData on all outputs (distance, allocation, and back link) rasters.
The output of the Aspect tool can be used as input for the Input horizontal raster.
The Maximum distance is specified in the same cost units as those on the cost raster.

For the output distance raster, the leastcost distance (or minimum accumulative cost distance) of a cell to a set of source locations is the lower bound of the leastcost distances from the cell to all source locations.

The default values for the Horizontal factor modifiers are:
Keywords Zero factor Cut angle Slope Side value      Binary 1.0 45 ~ ~ Forward 0.5 45 (fixed) ~ 1.0 Linear 0.5 181 1/90 ~ Inverse linear 2.0 180 1/90 ~

The default values for the Vertical factor modifiers are:
Keyword Zero factor Low cut Height cut Slope Power Cos Sec angle angle power power         Binary 1.0 30 30 ~ ~ ~ ~ Linear 1.0 90 90 1/90 ~ ~ ~ Symmetric linear 1.0 90 90 1/90 ~ ~ ~ Inverse linear 1.0 45 45 1/45 ~ ~ ~ Symmetric inverse linear 1.0 45 45 1/45 ~ ~ ~ Cos ~ 90 90 ~ 1.0 ~ ~ Sec ~ 90 90 ~ 1.0 ~ ~ Cos_sec ~ 90 90 ~ ~ 1.0 1.0 Sec_cos ~ 90 90 ~ ~ 1.0 1.0
Syntax
Parameter  Explanation  Data Type  
in_source_data 
The input source locations. This is a raster or feature dataset that identifies the cells or locations to which the least accumulated cost distance for every output cell location is calculated. For rasters, the input type can be integer or floating point.  Raster Layer  Feature Layer  
in_cost_raster (Optional) 
A raster defining the impedance or cost to move planimetrically through each cell. The value at each cell location represents the cost per unit distance for moving through the cell. Each cell location value is multiplied by the cell resolution while also compensating for diagonal movement to obtain the total cost of passing through the cell. The values of the cost raster can be integer or floating point, but they cannot be negative or zero (you cannot have a negative or zero cost).  Raster Layer  
in_surface_raster (Optional) 
A raster defining the elevation values at each cell location. The values are used to calculate the actual surface distance covered when passing between cells.  Raster Layer  
in_horizontal_raster (Optional) 
A raster defining the horizontal direction at each cell. The values on the raster must be integers ranging from 0 to 360 with 0 degrees being north, or toward the top of the screen, and increasing clockwise. Flat areas should be given a value of 1. The values at each location will be used in conjunction with the {horizontal_factor} to determine the horizontal cost incurred when moving from a cell to its neighbors.  Raster Layer  
horizontal_factor (Optional) 
The Horizontal Factor object defines the relationship between the horizontal cost factor and the horizontal relative moving angle. There are several factors with modifiers from which to select that identify a defined horizontal factor graph. Additionally, a table can be used to create a custom graph. The graphs are used to identify the horizontal factor used in calculating the total cost of moving into a neighboring cell. In the explanations below, two acronyms are used: 'HF' stands for horizontal factor, which defines the horizontal difficulty encountered when moving from one cell to the next; and 'HRMA' stands for horizontal relative moving angle, which identifies the angle between the horizontal direction from a cell and the moving direction. The object comes in the following forms:
The definitions and parameters of these are:
The Modifiers to the horizontal keywords are:
 Horizontal factor  
in_vertical_raster (Optional) 
A raster defining the zvalues for each cell location. The values are used for calculating the slope used to identify the vertical factor incurred when moving from one cell to another.  Raster Layer  
vertical_factor (Optional) 
The Vertical factor object defines the relationship between the vertical cost factor and the vertical relative moving angle (VRMA). There are several factors with modifiers from which to select that identify a defined vertical factor graph. Additionally, a table can be used to create a custom graph. The graphs are used to identify the vertical factor used in calculating the total cost for moving into a neighboring cell. In the explanations below, two acronyms are used: 'VF' stands for vertical factor, which defines the vertical difficulty encountered in moving from one cell to the next; and 'VRMA' stands for vertical relative moving angle, which identifies the slope angle between the FROM or processing cell and the TO cell. The object comes in the following forms:
The definitions and parameters of these are:
The Modifiers to the vertical parameters are:
 Vertical factor  
maximum_distance (Optional)  Defines the threshold that the accumulative cost values cannot exceed. If an accumulative cost distance value exceeds this value, the output value for the cell location will be NoData. The maximum distance defines the extent for which the accumulative cost distances are calculated. The default distance is to the edge of the output raster.  Double  
out_backlink_raster (Optional) 
The output cost backlink raster. The backlink raster contains values of 0 through 8, which define the direction or identify the next neighboring cell (the succeeding cell) along the least accumulative cost path from a cell to reach its least cost source, while accounting for surface distance as well as horizontal and vertical surface factors. If the path is to pass into the right neighbor, the cell will be assigned the value 1, 2 for the lower right diagonal cell, and continuing clockwise. The value 0 is reserved for source cells.  Raster Dataset 
Return Value
Name  Explanation  Data Type 
out_distance_raster 
The output path distance raster. The output path distance raster identifies, for each cell, the least accumulative cost distance, over a cost surface to the identified source locations, while accounting for surface distance as well as horizontal and vertical surface factors. A source can be a cell, a set of cells, or one or more feature locations. The output raster is of floating point type.  Raster 
Code Sample
The following Python Window script demonstrates how to use the PathDistance tool.
import arcpy from arcpy import env from arcpy.sa import * env.workspace = "C:/sapyexamples/data" outPathDist = PathDistance("observers", "costraster", "elevation", "backlink2", 2, "focalcost.tif", 1, 50000, "c:/sapyexamples/output/backlinkpath") outPathDist.save("c:/sapyexamples/output/pathdistout")
Calculates, for each cell, the least accumulative cost distance to the nearest source, while accounting for surface distance and horizontal and vertical cost factors.
# Name: PathDistance_Ex_02.py # Description: Calculates, for each cell, the least accumulative # cost distance to the nearest source, while accounting # for surface distance and horizontal and vertical # cost factors. # Requirements: Spatial Analyst Extension # Author: ESRI # Import system modules import arcpy from arcpy import env from arcpy.sa import * # Set environment settings env.workspace = "C:/sapyexamples/data" # Set local variables inSource = "observers.shp" inCostRast = "costraster" inElev = "elevation" inHoriz = "backlink2" inHorizFact = 2 inVertical = "focalcost.tif" inVertFact = 1 maxDist = 50000 optBacklinkOut = "c:/sapyexamples/output/pathbacklink" # Check out the ArcGIS Spatial Analyst extension license arcpy.CheckOutExtension("Spatial") # Execute PathDistance outPathDist = PathDistance(inSource, inCostRast, inElev, inHoriz, inHorizFact, inVertical, inVertFact, maxDist, optBacklinkOut) # Save the output outPathDist.save("c:/sapyexamples/output/pathdistout02")