Edge effects and core area analysis of landcover fragments. This module can compute static edge effects (defined edge depth) and dynamic edge effects (based on surrounding landscape). The impact of the surrounding landscape can be accounted for and the resulting core area is provided.


This module is generating core areas based on defined edge depths. The edge depths can be increased by the values of a costmap (e.g. urban areas could have a more severe impact than secondary forest on forest fragments). Moreover a friction map ( propmap within the fragments can lower the impact of surrounding landcover types and hence an increased edge depth (e.g. a river or escarpment which might lower the edge effects). Moreover a dist_weight can be assigned in order to increase the weight of closer pixel values.

Distance weight

The assigned distance weight is computed as:
w(d) = 1 - (d / d_max)^(tan(dist_weight * 0.5 * pi))
the dist_weight has a range between 0 and 1 and results in:


The propmap minimizes the effect of the edge depth and the surrounding matrix. This has an ecological application if certain landscape features inside a e.g. forest fragment hamper the human impact (edge effects).
two methods exist:
If 0 is chosen using the linear method, then propagated value=actual value which results in a buffering of the whole region. In order to minimize the impact the value must be larger than 1. For the exponential method a value of below 1 should not be chosen, otherwise it will be propagated infinitely.


An example for the North Carolina sample dataset using class 5 (forest): For the computation of variable edge effects a costmap is necessary which need to be defined by the user. Higher costs are resulting in higher edge depths:
# class - type - costs
#   1	- developed - 3
#   2	- agriculture - 2
#   3	- herbaceous - 1
#   4	- shrubland - 1
#   5	- forest - 0
#   6	- water - 0
#   7	- sediment - 0

r.mapcalc "costmap_for_corearea = if(landclass96==1,3,if(landclass96==2,2,if(landclass96==3,1,if(landclass96==4,1,if(landclass96==5,0,if(landclass96==6,0,if(landclass96==7,0)))))))"

now the edge depth and the resulting core area can be computed:
r.pi.corearea input=landclass96 costmap=costmap_for_corearea  output=landcover96_corearea keyval=5 buffer=5 distance=5 angle=90 stats=average propmethod=linear
the results consist of 2 files:
landclass96_corearea: the actual resulting core areas
landclass96_corearea_map: a map showing the edge depths


r.pi.grow, r.pi.import, r.pi.index, r.pi


Programming: Elshad Shirinov
Scientific concept: Dr. Martin Wegmann
Department of Remote Sensing
Remote Sensing and Biodiversity Unit
University of Wuerzburg, Germany

Port to GRASS GIS 7: Markus Metz

Last changed: $Date$