GRASS logo


r.forestfrag - Computes the forest fragmentation index (Riitters et al. 2000)


raster, landscape structure analysis, forest, fragmentation index, Riitters


r.forestfrag --help
r.forestfrag [-rtsa] input=name output=name [size=number] [pf=name] [pff=name] [window=integer] [--overwrite] [--help] [--verbose] [--quiet] [--ui]


Set computational region to input raster map
Keep Pf and Pff maps
Run on output map
Trim the output map to avoid border effects
Allow output files to overwrite existing files
Print usage summary
Verbose module output
Quiet module output
Force launching GUI dialog


input=name [required]
Name of forest raster map (where forest=1, non-forest=0)
output=name [required]
Name for output raster map
Moving window size (odd number)
Options: 3-
Default: 3
Name for output Pf (forest area density) raster map
Proportion of area which is forested (amount of forest)
Name for output Pff (forest connectivity) raster map
Conditional probability that neighboring cell is forest
This option is deprecated, use the option size instead
Options: 3-

Table of contents


r.forestfrag Computes the forest fragmentation following the methodology proposed by Riitters et al. (2000). See this article for a detailed explanation.

It follows a "sliding window" algorithm with overlapping windows. The amount of forest and its occurrence as adjacent forest pixels within fixed-area "moving-windows" surrounding each forest pixel is measured. The window size is user-defined. The result is 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.

As input it requires a binary map with (1) forest and (0) non-forest. Obviously, one can replace forest any other land cover type. If one wants to exclude the influence of a specific land cover type, e.g., water bodies, it should be classified as no-data (NA) in the input map. See e.g., blog post.

Let Pf be the proportion of pixels in the window that are forested. Define Pff (strictly) as the proportion of all adjacent (cardinal directions only) pixel pairs that include at least one forest pixel, for which both pixels are forested. Pff thus (roughly) estimates the conditional probability that, given a pixel of forest, its neighbor is also forest. The classification model then identifies six fragmentation categories as:

interior:       Pf = 1.0
patch:          Pf < 0.4
transitional:   0.4 ≤ Pf < 0.6
edge:           Pf ≥ 0.6 and Pf - Pff < 0
perforated:     Pf ≥ 0.6 and Pf - Pff > 0
undetermined:   Pf ≥ 0.6 and Pf = Pff



In the North Carolina sample Location, set the computational region to match the land classification raster map:
g.region raster=landclass96
Then mark all cells which are forest as 1 and everything else as zero:
r.mapcalc "forest = if(landclass96 == 5, 1, 0)"
Use the new forest presence raster map to compute the forest fragmentation index with window size 7:
r.forestfrag input=forest output=fragmentation window=7
r.forestfrag output with window size 7 r.forestfrag output with window size 11

Two forest fragmentation indices with window size 7 (left) and 11 (right) show how increasing window size increases the amount of edges.



The addon is based on the script, with as extra options user-defined moving window size, option to trim the region (by default it respects the region) and a better handling of no-data cells.


Riitters, K., J. Wickham, R. O'Neill, B. Jones, and E. Smith. 2000. Global-scale patterns of forest fragmentation. Conservation Ecology 4(2): 3. [online] URL:


Emmanuel Sambale (original shell version)
Stefan Sylla (original shell version)
Paulo van Breugel (Python version, user-defined moving window size)
Vaclav Petras (major code clean up)


Available at: r.forestfrag source code (history)

Latest change: Thursday Feb 03 09:32:35 2022 in commit: f17c792f5de56c64ecfbe63ec315307872cf9d5c

Main index | Raster index | Topics index | Keywords index | Graphical index | Full index

© 2003-2024 GRASS Development Team, GRASS GIS 8.3.3dev Reference Manual