surface angle in each cardinal direction

6169
14
01-22-2013 07:41 AM
toddsams
New Contributor III
Hello,

For a DEM, I would like to calculate the surface angle (i.e. slope) for each grid cell in the 4 cardinal directions (N, S, E and W). In other words, for a given cell, what is the angle between a flat plane and the DEM surface in each direction.

For example, a grid cell located on a 45 degree slope facing due west (270 degrees aspect) would have angles relative to a flat plane of 0, 0, 45 and -45 (or 225) degrees for N, S, E and W respectively.

Does anyone know how this can be generated using Arc? I imagine it would require generating 4 separate grids, one for each direction.
0 Kudos
14 Replies
MarkBoucher
Occasional Contributor III
There is a the slope command in Spatial Analyst and you get the vertical angle with the horizontal plain using that. The aspect command gives you the 360 deg horizontal direction of the slope. The default symbology is the N, NE, E, SE, S, SW, W, NW directions, but the raster values are down to the sub degree precision. Maybe a combination of these two would work.

In Spatial Analyst hydrology the flow direction command gives you a number representing one of the 8 directions (N, NE, E, SE, S, SW, W, NW) that is unique to the four corners. This is slope is towards the lowest of the of the surrounding cells and may not be the same as aspect.

Hillshade produces a value based on horizontal direction, but I'm sure if it can be correlated to cardinal directions.

Just some ideas...
0 Kudos
toddsams
New Contributor III
I thought of combining slope and aspect somehow, but could not determine how this would work to achieve my goal.

The slope command uses all of the surrounding cells, whereas, I need to determine the slope/angle in only one direction at a time.

Any other thoughts?
0 Kudos
MarkBoucher
Occasional Contributor III
The slope would be downhill in the direction of the aspect, I'd think. So, how about trying sin(aspect)*slope for one direction and cos(aspect)*slope for the other?

I'm not sure what to do if the cell is perfectly flat like the top of the hill of bottom of a sink. Should be a rare occurrence.
0 Kudos
toddsams
New Contributor III
I am not sure what you mean by:

"trying sin(aspect)*slope for one direction and cos(aspect)*slope for the other"

Which directions are you referring to?
0 Kudos
MarkBoucher
Occasional Contributor III
It could be I don't quite understand what you're trying to achieve.

I think what you are wanting is the slope of each grid in the E/W direction and the N/S direction.

When you create the aspect from the dem, you get at grid of the direction of the slope. The value in that grid is the aspect in degrees (North being 0 and 360 I believe). The slope tool creates a grid with the slope for each cell. I assume the down slope is in the same direction as the aspect direction. Using the sin(aspect)*slope I think will give you component in the East/West direction. The cos(aspect)*slope should give you the component int he N/S direction.

Steps I'd try:
Run Spatial Analyst Tools.tbx\Surface\Aspect tool: Output = "aspect" grid
Run Spatial Analyst Tools.tbx\Surface\Slope tool: Output = "slope" grid (choose degrees or % slope options for output).

Using either Spatial Analyst Tools.tbx\Math tools and Spatial Analyst Tools.tbx\Math\Trigonometric tools to perform the trig and math functions:

EWslope grid = sin(aspect)*slope 

and then separately

NSslope grid = cos(aspect)*slope

You would end up with two grids. Simply using the tools you would have several steps. These could be set up in Model Builder to run. In the Raster Calculator, you  you could get by with two runs.

Maybe I'm misunderstanding your goal and someone else can better explain.

Cheers.
0 Kudos
toddsams
New Contributor III
Although I have not tried this, it seems that this method assumes that the angles to the North and South (and East-West) are equivalent. However, a grid cell could have a much different angle to the North as it does to the south.

For example, a grid cell just on the edge of the North Rim of the Grand Canyon would have an angle of essentially 0 degrees to the North and something like -45 degrees (or 225 degrees) to the South. This same grid cell would also have essentially 0 degree angles to both the East and West. However, if it happened to occur at the base of a small hill with an aspect facing due west. The land surface angle (with respect to a flat plane) to the East of the grid cell would be a whatever the slope of the hill is and the angle to the West would be zero.

Not sure if this is making any sense. Essentially, I am looking for 4 distinct angles as defined by 1) the position of the grid cell and 2) the slope of neighboring grid cells in either the N, S, E or W direction.
0 Kudos
MarkBoucher
Occasional Contributor III
Sounds like you want to treat the center of each grid like a point and compare it to the surrounding grids. I looked around and found the Data Management Tools.tbx\Projections and Transformations\Raster\Shift tool.

With this you can shift your dem over in the x and y directions to get four shifted dems. For example, you create a dem that is shifted one grid size "down" (south 10 feet in my case). Then you can do "minus" raster math between each of them. The resulting raster is the vertical elevation between the dem cell and one cell north. Repeat this logic for the other directions to make a total of four difference rasters. Then perform "divide" using raster math to get the slope in each direction. Some trig raster math will give you the angle of the slope (inverse tangent?).

Does that make sense?

I threw together a model that calculates the four slopes based on my logic.

[ATTACH=CONFIG]20978[/ATTACH]
0 Kudos
toddsams
New Contributor III
This sounds like it is on the right track. I will have to play around with this a bit...
0 Kudos
Luke_Pinner
MVP Regular Contributor
Slope in a certain direction is calculated as:
SD = S * cos((D - A) * pi /180)
Where:
[INDENT]S=Slope[/INDENT]
[INDENT]D=Direction in degrees to calculate slope for, i.e. 0=North, 90=East, 180=South, 270=East[/INDENT]
[INDENT]A=Aspect[/INDENT]


I.e. in the Raster Calculator for West (270):
[ATTACH=CONFIG]22239[/ATTACH]

See the hypothetical surface below with a 30° slope and 180° aspect. Directions to calculate slopes for are indicated by solid arrows: (A) 0°, (B) 180°, (C) 225°, and (D) 90°. Slope in these
directions calculated by above equation: (A) -30°, (B) 30°, (C) 21.2°,
and (D) 0°.
[ATTACH=CONFIG]22240[/ATTACH]
0 Kudos