I need you help trying to calculate Topographic Exposure (TOPEX) on a DEM in ArcGIS. I am trying to figure out wind exposure on a DEM with 25m cells. There is a great blog post where someone explains how to do it but he uses GRASS. Jamie Popkin's GIS Blog I thought I would be able to put the same equation into ArcGIS Raster Calculator but it says the equation is invalid. I've tried playing with it as much as I can but I can't seem to make it work.

His first equation is:

r.mapcalc incl4north = "atan(((dem - dem[4,0])) / ((25 * 4)))"

And then he goes on to string a bunch of them together

enter image description here

Does anyone know how the equation should appear in Raster Calculator in ArcGIS Desktop?

  • ArcGIS raster calculator uses a Python syntax, and it looks like your example does not. So that will need to be changed. Also I think the ArcTan function is written as ATan not atan. I think its case sensitive. Finally I am not sure how to get cells a set number of distance way, but I don't think dem[up,right] is the correct syntax. Could be wrong about that though. Why not just use GRASS?
    – Taylor H.
    Mar 14, 2014 at 14:43
  • 2
    The purpose of this calculation is "to take the maximum inclination for all distances from 100m to 2000m." There are far more efficient ways to do it! Even with the relatively limited raster calculator methods, you can compute annular focal maxima at all cell distances out to 2000m, divide the differences between those and the original DEM value by the distances, and pick the largest of the bunch. Only then do you need to apply the arctangent. Closely related calculations are "available sky" or "topographic openness".
    – whuber
    Mar 17, 2014 at 20:43
  • @Mary Lynn, I don't know about GRASS, but Whitebox GAT has a toolbox for calculating exposure (Wind Related Terrain Attributes) which include tools for Directional Relief, Exposure Towards a Wind Flux, Fetch Analysis, Horizon Angle, and Relative Aspect. These might simplify your measures. Also, whuber is correct in stating that topographic openness is an excellent attribute for measuring exposure. There's a good description of each attribute here: link.springer.com/chapter/10.1007%2F978-3-540-77800-4_21 Aug 11, 2014 at 13:26

1 Answer 1


From what I know, it is not possible to use relative pixel index in ArcGIS raster calculator like you can do in GRASS. The best way to use such indexing method would be to use arcpy.rastertonumpyarray then loop on all pixel values to compute your angles. Something like

for i in range(height):
    for j in range(width):
        newarray[i,j] = max( math.atan((oldarray[i, j+4] - array[i,j])/4), atan((oldarray[i, j+8] - array[i,j])/8)) etc... )

Of course, this code will not work as it is because it some indices will be out of range. Also, you should be careful because numpy indexing start at the top left.

Another workaround is to use a stack of shifted raster that you could use in raster calculator, but this would give you a lot of useless rasters.

Your Answer

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

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