measuring area

Joe Leone Joe.Leone at per.dwe.csiro.au
Mon Oct 16 08:00:00 EDT 1995


> From grass-lists-owner at moon.cecer.army.mil Fri Oct 13 17:42 WST 1995
> From: motte <motte at xs4all.nl>
> Message-Id: <199510130834.AA21944 at xs1.xs4all.nl>
> Subject: Re: measuring area
> Sender: grass-lists-owner at moon.cecer.army.mil
> To: grassu-list at max.cecer.army.mil
> Date: Fri, 13 Oct 1995 09:34:01 +0100 (MET)
> X-Mailer: ELM [version 2.4 PL21]
> Content-Type: text
> Status: RO
> 
> > 
> > Hi all,
> >     I have a situation in which I am trying to extend (grow) the area of a 
patch in a particular direction, depending on the ajacent cell. I want the patc
h to grow only untill it gets to a specified size ( say 20 Hectares). The troub
le I have is stopping t
 he>  growth.  
> > I have managed to get the patch to grow by identifying potential growth are
as and runing the script below
> > 
> > I would appreciate any suggestion.
> > 
> > Thanks Joe 
> > 
> > 
> > 
> > raster map test.g has three categories
> > 
> > 
> > cat value   cat label
> > 0           potenial growth
> > 5           non growth
> > 999         patch value
> > 
> > 
> > #!/bin/csh -f
> > # r.mapcalc script to grow remnant aeras in suitable soil types.
> >  
> > @ i=1
> > @ num=10
> > echo $i
> > echo "this will run through "$num, "loops   "
> > d.erase
> > g.copy rast=test.g,output
> > #echo " now using "output.$i--
> > while ($i <= $num)
> >  
> > r.mapcalc output.$i = 'if(output,output, eval(if(output[0,-1]==999|| output
[0,1]==999||output[-1,0]==999||output[1,0]==999,999)))'
> >  
> > g.copy rast=output.$i,output
> > @ i++
> > echo $i
> > end
> > 
> 
> Hi Joe,
>
> I'm not pretending to have the best answer, but I'll have a try. Area 
> measurements in raster maps can be made through r.stats, which will give 
> the numbers of pixels contained by each category. You want to have a 
> script that tells r.mapcalc not to grow patches that have exceeded a 
> certain size. You might try the following: give your patches unique 
> values (e.g. with r.clump) and have the mapcalc function assign the values 
> of the clumps to the cells that are to be 'stitched' to the patch. Run 
> r.stats to see which clumps are now exceeding the size of say 20 
> hectares and assign a new value (something like -1 or so) to these areas 
> with r.mapcalc. The next time you start the 'grow' function, exlude these 
> areas. It's not pretty, but I think it should work; I hope someone can 
> think of a quicker solution...
> 
> By the way, what on earth do you need a function like that for?
> 
> Philip Verhagen
> 
> -- 
> 
> 
>                       S t i c h t i n g  R A A P
> 
> 
>               Regionaal Archeologisch Archiverings Projekt
> 
> adress:       Plantage Muidergracht 14
>               1018 TV Amsterdam
>               THE NETHERLANDS
> phone:          (31) 20 525 5835
> fax:          (31) 20 525 5834
> e-mail:               motte at xs4all.nl
> 
Thanks to all thoses that responded.
I'll answer Philip's question to the list, in case somebody wants/can suggest a
 better prodedure :-)

I am working on a landscape reconstruction project and landuse allocation model
.
Part of the model is to allocate certain areas of the landscape to convservatio
n.  These areas would probably be ajacent to exsisting vegetation remnants.  

I have a soil map and a remnant vegetation map. The soil layer has 15 soil type
s.  The remnant layer has some 30 remnants scattered through out the region, an
d with in those remnants vegetation types (patches) have been mapped. The veget
ation type is associated with soil type.

The idea is to increase the patches of vegetation type to a minimum size by exp
anding to the ajacent area. The restriction is that the area can only grow on t
he assicated soil type.
What I have done is combined these two maps and for each soil type - vegetation
 type combination produced a map of protential growth area. I then run the abov
e script on that map


Thanks Joe







More information about the grass-user mailing list