topographic area calculations

Harini Nagendra harini at ces.iisc.ernet.in
Wed Apr 3 07:00:00 EST 1996


This is really useful - I have been looking for a way of doing this for 
quite some time. Just wanted one clarification however - why do you 
divide the area occupied by the boundary cells by half?

------------------------------------------------------------------------
| Harini Nagendra               E-MAIL : harini at ces.iisc.ernet.in      |
| Center for Ecological         PHONE  : 91 80 309 2639 (Hostel: LR-94)|
| Sciences                             : 91 80 309 2506 (Department)   |
| Indian Institute of Science   FAX    : 91 80 334 1683                |
| Bangalore 560 012 India       TELEX  : 845 8349 IISc IN              |
------------------------------------------------------------------------

On Tue, 2 Apr 1996, DON EBERT wrote:

> Jim, 
> 
> Here's a simplistic and rather laborious way of calculating the surface
> area of 3-dimensional polygons. If anyone knows of an easier way of doing
> this, I would appreciate hearing about it. First use your elevation map to
> calculate out a slope map using percent slope as the output. Then,
> assuming your elevation map cells are square instead of rectangular, the
> 3-d area of the cell will be run * sqrt(run^2 + rise^2), where run = the
> length of elevation cell and rise = the slope value * run. 
>      
>               /@\
>             /@@@@@\
>           /@@@@@@@@@\
>         /@@@@@@@@@@@@/|
>        \@@@@@@@@@@@/  |
>        r \@@@@@@@/    | rise
>         u  \@@@/      | (run * %_slope)
>           n  /________|
>                  run
>                
> 
> In r.mapcalc the formula would be:
> 
> area = x * sqrt(x^2 + (x * slope)^2); substituting cell length for x
> 
> Next, determine which cells lie in the interior of your polygon and those 
> that are on the periphery. There are a number of ways to do this. I 
> typically import my polygon boundaries as line features, run v.to.rast, 
> reclass the output map assigning 0 to the polygon boundary and 1 to 
> everything else, run r.clump, then reclass the output map assigning 1 to 
> 0, 2 to the interior clump, and 0 to everything else. This results in a 
> map where the periphery cells are coded 1 and the interior cells are 
> coded 2. 
> 
> The final area of your 3-d polygon will be approximately the sum of the
> areas of the interior cells plus 1/2 the total of the area of the
> periphery cells. Since this methodology works remarkably well on flat
> surfaces, I've made the assumption that it works equally well in the 3rd
> dimension. I usually output the cell area values to do the final summation
> in either a spreadsheet or database since the final area can be quite
> large. To do so I run 2 commands: 
> 
>       r.stats -1zg in=polygon out=polygon.tmp
>       r.what area < polygon.tmp > polygon.3d
> 
> This outputs an ascii file with one row for each cell consisting of its 
> easting, northing, polygon code, and area value.
> 
> Hope this helps.
> 
> Don Ebert
> Research Associate
> National Biological Service
> Cooperative Research Unit
> University of Nevada - Las Vegas 
> 
> On Mon, 1 Apr 1996, James Taulman wrote:
> 
> >     I have UTM x,y coordinate contour files representing probability 
> > boundaries for animal home range utilization distributions.  I can add 
> > elevation data from digitized USGS quads.  I need to be able to calculate 
> > accurate topographic areas within these contours in GRASS.  Any 
> > information helpful to this project would be most appreciated.
> >     Jim Taulman
> > 
> 





More information about the grass-user mailing list