[GRASSLIST:270] Fwd: Developing a forest fragmentation index

maning sambale emmanuel.sambale at gmail.com
Tue Mar 21 02:02:03 EST 2006


Dear list,

I hope somebody can help me on this.  I am a MS student studying
forest loss and fragmentation here in the Philippines. I am interested
in implementing Mr. Kurt Ritters forest fragmentation model
(http://www.ecologyandsociety.org/vol4/iss2/art3/) and James Hurd's
adaptation to watersehd units
(http://resac.uconn.edu/publications/tech_papers/pdf_paper/Forest_Fragmentation_ASPRS2002.pdf)
in my study area and relate the fragmentation to socio-economic
drivers.

Mr. Ritters gave me the C source code for his model, however, I am not
programmer so I don't know how to implement these.    Right now, I am
doing my image analysis (i.* modules) and classification using GRASS
and import the output to Arcview were EPA has an Attila extension
(http://www.epa.gov/esd/land-sci/attila/index.htm) for classifying
them into the forest fragmenation index.  What I want to do is create
a GRASS script for the forest fragmentation index.

I have been using GRASS for just a couple of months and I am not very
familiar with most of the commands.  I am willing to collaborate with
anybody from this list doing related research on forest fragmentation.
 As I have mentioned above, I am not a programmer thus my limitation
in understanding C code.  However, I am willing to do GRASS related
contributions related to my study.

The method is described below:

The basis for the forest fragmentation index was the fragmentation
model developed by Ritters et al. (2000) which was used and expanded
by Hurd et. al (2002) on Landsat TM data. The objective of the model
is to provide additional information beyond the commonly used measures
of forest proportions (i. e. percent of forest cover) by providing
information on the spatial configuration of fragmentation and
connectivity of forest within the study
region.

The amount of forest and its occurrence is measured as adjacent forest
pixels within a 5 x 5 windows surrounding each forest pixel. This
information will be used to classify the window by the type of
fragmentation. The result was stored at the location of the center
pixel. Thus, a pixel value in the derived map refers to
"between-pixel" fragmentation around the corresponding forest location
(Riitters et al. 2000). The model generates two values that
characterize a forest pixel located at the center of a sliding window
of fixed size, Pf and Pff:
Pf is the proportion of pixels in the window that are forested. Pff
(strictly) is the proportion of all adjacent (cardinal directions
only) pixel pairs that include at least one forest pixel, for which
both pixels are forested. Pff (roughly) estimates the conditional
probability that, given a pixel of forest, its neighbor is also
forest.

Pf = ( # of forest pixels) / (# of all non water pixels)
Pff = (# of pixel pairs with both pixel forest) / (# of pixel pairs
with at least one pixel forest)

The classification model identifies six fragmentation categories: (1)
interior, for which Pf = 1.0; (2) patch, Pf < 0.4; (3) transitional,
0.4 < Pf < 0.6; (4) edge, Pf > 0.6 and Pf - Pff > 0; (5) perforated,
Pf > 0.6 and Pf – Pff < 0, and (6) undetermined, Pf > 0.6 and Pf = Pff

Any tips in implementing the generation of forest fragmentation index
either as a GRASS script or a step-by-step GRASS commands would be
very helpful (r.mapcalc syntax?).

I have also attached Ritters's C code as well as my previous
correspondence to him.  Also attached are images from Hurd's study.

Thank you very and looking forward for any response.

Cheers,

Maning Sambale


---------- Forwarded message ----------
From: Kurt H Riitters <kriitters at fs.fed.us>
Date: Oct 23, 2004 2:46 AM
Subject: Re: Developing a forest fragmentation index
To: emmanuel sambale <emmanuel.sambale at gmail.com>
Cc: Kurt H Riitters <kriitters at fs.fed.us>


Emanuel,
  Attached is the main C program.  As I must say to everyone, I am not able
to provide technical support for using the program, and I do not guarantee
that it is bug-free.  You can share this with anyone you want to, but if
you share it, then you must answer any questions about it.

  Probably the interesting part will be the algorithm for the moving
window, and the definition of the functions (like Pf and Pff).  If it were
me, I'd think about adapting those parts to new programs of your design.

   The input / output format is assumed to be an old format that I adapted
from somewhere else...and it is not standard and is not used by anyone
else... so you will want to re-write the input / output routines to read
files in other formats.

   I do not have any written documentation, but there are a lot of comments
in the code that will help understand the program flow.

  Lastly, since this code is a research tool, there are many places
containing references to code or subroutines that are no longer included.

    Oh, I should say... this program uses a moving window to calculate the
X and Y values that are in the model that appears in that 2000 paper.  One
run of the program makes a map of Pf; a second run makes a map of Pff.
Once you have the output maps of the Pf and Pff values, it is necessary to
put them together to perform the classification into categories like
'perforated' 'edge' etc.  Arc or envi would be convenient for that.

  Best regards,

Kurt Riitters
RWU-4803
Forest Health Monitoring
US Forest Service
3041 Cornwallis Road
Research Triangle Park NC 27709
919-549-4015
kriitters at fs.fed.us

> > Emmanuel,
> >  Thank you for the message.
> >   Of course you may use the methods; they are public knowledge.
> >
> >   I wrote C programs to process the landcover maps.  I am happy to send
> > them to you, however, if you are not a programmer then it will be very
> > difficult to adapt the programs to your problems.  Even another
programmer
> > may find it difficult since I am not a very good programmer either.
> >
> >  I do not have any arc or envi scripts since I use the C programs...
But
> > it is a very simple moving window (arc: focal function) approach that
> > should be easy to implement in another language...  For example, arc
should
> > be able to do the "Pf" part of the model with the Grid: focalsum
function.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: spat3.c
Type: application/octet-stream
Size: 150479 bytes
Desc: not available
Url : http://lists.osgeo.org/pipermail/grass-user/attachments/20060321/83f123c6/spat3.obj
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Slide1.JPG
Type: image/jpeg
Size: 65623 bytes
Desc: not available
Url : http://lists.osgeo.org/pipermail/grass-user/attachments/20060321/83f123c6/Slide1.jpe
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Slide6.JPG
Type: image/jpeg
Size: 52213 bytes
Desc: not available
Url : http://lists.osgeo.org/pipermail/grass-user/attachments/20060321/83f123c6/Slide6.jpe


More information about the grass-user mailing list