My problem makes use of ArcGIS tools generally and Spatial Analyst in particular, but I am hoping that ArcHydro users have more experience in hydrological modelling than I do. My goal is to obtain flow distance rasters for a large number of sites based on national DEM and sub-catchment datasets, but in my calculations many of the flow distance rasters contain cells with low distances along the boundary or edge of the site catchment.
I have developed a workflow for obtaining flow distance rasters for hundreds of sites based on three datasets:
- Point feature class of sampling sites located along streams (~1,200 and expected to grow)
- DEM (2m resolution, but re-sampled at 10m or 25m for reasonable computation times)
- Polygon feature class of sub-catchments (obtained from government source)
To prepare the DEM for flow distance calculations, I first run the Fill and Flow Direction tool. Based on the location of the sites, I query and select the sub-catchments to extract the flow direction raster based on the selected sub-catchments. I then use the Flow Length tool to calculate the flow distance from each cell to the catchment outlet. To correct for the distance between the site and the outlet, I subtract the flow distance at the site from every cell in the catchment, and set any negative values to Null to obtain a raster representing the site catchment and the flow distances to the site. Due to the large number of sites and my research needs for the flow distance data, I have re-sampled the DEM to 25m to obtain reasonable computation times.
The problem with computing flow distances en-masse is that some of the flow distance rasters have cells at the catchment edge/boundary with distances that are far too small; I suspect that re-sampling the DEM to a coarser resolution causes the flow paths to move outward from the intended catchment outlet (i.e., the site). My first attempt to resolve this issue has been to calculate the Euclidean distances for the extracted site catchments to the site and to use SetNull any flow distance cells that are less than the Euclidean distance at the same cell. However, this doesn't really resolve the problem of why such low flow distances occur, nor does it always remove these low-value cells properly.
I have attached a script that performs the workflow I just described for all the sites just to show the exact steps I've taken to create this problem, and a screenshot illustrating an example of a catchment with low flow distance values along the edge and elsewhere. I hope to hear your suggestions on any flaws or how I might improve the workflow to avoid low distance values along the catchment boundary.