I would like to have guidance on how to generate a cost surface for the data I have. In essence, I got a 1x1 DEM for the territory under study (namely, an island) and I have also digitized the spring-line using poly-lines. My aim would be to calculate for any give cell across the whole island the distance from the poly-lines but also taking the terrain elevation into account. I am familiar with Euclidean Distance, but the latter would not be useful since it does not take into account the elevation variable. I have tried to consult ArcGIS's help but I had no luck in finding something that could fit my situation. May be that the solution could possibly boil down to weighting the Euclidean Distance by some value (elevation?), but I do not manage to get my head around the issue.

3 Answers 3


What you probably want to try is Path Distance, using a constant-value raster (e.g., all zeros) as the cost surface and the DEM (elevation) as a vertical factor. This will add the cost of going up (or down) to the basic distance.

  • thank you. So, the vertical factor would the the dem. As for the cost surface, what is a constant-value raster? I mean, I have to created it, or leave the filed blanck (in the ArcGIS tool's menu)?
    – NewAtGis
    Jul 21, 2014 at 12:23
  • I am not actually sure if Path Distance will run without a cost surface or not, but if it does require one, you can use the Create Constant Raster tool. It just makes a raster where all cells are the same value (set extent to equal your DEM).
    – Erica
    Jul 21, 2014 at 12:27
  • Does it make any sense to you (in the context of my issue) to use as cost surface a 'friction' raster based on the slope (friction=log(slope+1)=0.5) which I find in literature?
    – NewAtGis
    Jul 21, 2014 at 12:42
  • 1
    Personally, I would try both and see what the effects are. The challenge with using slope as the cost surface (rather than a horizontal factor, perhaps) is that it becomes difficult to differentiate between traveling "up" and "down" slope. Also, using elevation as a vertical factor already sort incorporates the slope, and so there is a risk of overrepresenting slope. All that said, though, it isn't a bad idea and may be a more realistic model.
    – Erica
    Jul 21, 2014 at 12:55
  • I am going to try both. My new concern is that the sub-menu for 'vertical factor' comprises other settings (optional), among which 'binary', 'linear', 'inverse linear' and others. And I am not sure which should be used. Thanks for any hint.
    – NewAtGis
    Jul 21, 2014 at 14:03
  1. In Environment settings define spatial extent = DEM extent, raster analysis cell size = DEM's
  2. Create constant raster (COST) value using Raster Calculator. Type 1 in expression box, output raster name = COST
  3. Create field, type short, in your springs table, populate with same integer, i.e. 1
  4. Convert springs (features to raster) using this field, output = DESTINATION
  5. Run Path Distance Backlink. Input raster = DESTINATION, output backlink = DIRECTION
  6. Run Path Distance. Input = DESTINATION, Input cost = COST, input surface = DEM. Call output DISTANCE

DISTANCE is result you are after. Calculate Euclidean Distance to DESTINATION, output = OLDGREEK. Use raster calculator "DISTANCE" - "OLDGREEK", to check if your topographic distance is actually => crow fly distance. Output must be non-negative, see picture if I'll manage to attach it .... enter image description here

I am puzzled though. What is the physics, i.e. who or what is going to travel along those straight lines? All what I've said above in my comments re vector vs raster remains the same, i.e. your result is exagerration of actual distances. More accurate solution can be achieved using vectors, but requires to much efforts

  • @FelixlP: thank you for your detailed reply. I will look into it right-away. Unfortunately, you do share with me your concerns. One of my bosses want me to devise a coast surface of the distance from the springline. He is not happy with Euclidean distance, since springlines are rather high in elevations (and do not have constant elevation). So, in his opinion, a cost surface that takes into account both horizontal distance and vertical distance would be desirable. Does this clarify the underlying motivation of my questions? Thanks. Your help very appreciated.
    – NewAtGis
    Jul 24, 2014 at 18:21

I think what you need is Hydrology toolbox in Spatial Analyst, it does exactly what youa are after. The only tricky bit is modifying your DEM, so that it has NO DATA value, where the streams are. Thus the steps are:

  1. Convert streams to raster, using any numeric field. Extent & cellsize set to DEM. Output = "streams" raster
  2. assign NO DATA to cells under streams using raster calculator


  3. Use Fill tool on DEM. It creates sinks free output = "Filled"

  4. Use Flow Direction on "Filled". Output = "Flowdir"
  5. Use "Flow Length" on "Flowdir" with option "DOWNSTREAM"

You might want to replace cells under the streams by 0 in FlowLength raster. Can be done using raster calculator

Con( ~IsNull("streams"),"FlowLength", 0)
  • Forgot to mention that Hydrology tools is just a variation of Distance tools, e.g. FlowDir raster can be used as CostBackLink in distance tools
    – FelixIP
    Jul 21, 2014 at 21:36
  • @FelixlP: Thank you. But, the main issue is that I am dealing with spring line, not stream line. May be you overlooked that. The spring line is a line (at the junction of the geological banks) where water can potentially spill out. Do you still think your solution would work? Thanks again.
    – NewAtGis
    Jul 22, 2014 at 4:59
  • Yes my method won't work unless spring lines = streams. You can try Erica's suggestion: Create costSurface, constant 1, because cell size is 1 m. Calculate Path_DistanceBacklink using rasterSprings. Calculate ParthDistance using rasterSprings, costSurface and DEM (in meters!) as Input surface raster. Input surface raster is used to calculate the actual surface distance covered when passing between cells. However I wouldn't bother with taking slopes into account by using Raster surface (unless terrain is extremely steep) because raster representation of the line make paths longer anyway.
    – FelixIP
    Jul 23, 2014 at 1:53
  • @FelixlP: thank you. Please, could you break down a little more your suggested workflow, or provide a link to the relevant steps. It was rather clear how to use 'Path Distance', but you added some other info (e.g., Path Dist Backlink) that are no clear to me. Sorry. For instance, I do not grasp how Erica's suggestion as to Path Distance relates to your 'Distance Backlink' suggestion. Thank you for helping me to get more familiar with these ArcGIS's functions.
    – NewAtGis
    Jul 23, 2014 at 8:20

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.