[GRASS-user] Landscape connectivity

Markus Metz markus.metz.giswork at googlemail.com
Wed Dec 2 13:01:40 EST 2009


Hi all,

for a raster map with habitat patches separated by gaps in between, I 
want to know for each habitat patch 1) how far away is the nearest other 
habitat patch, 2) what's the id of the nearest habitat patch (each 
contiguous patch must have a unique ID), 3) how do I get to the nearest 
habitat patch, i.e. what is the shortest path connecting one patch and 
its nearest other patch.

Then I need to get clusters of patches, each cluster consisting of 
patches connected by paths not longer than max_distance, i.e. I can 
visit all patches within a cluster by traversing gaps not broader than 
max_distance (hop from one patch to the next, but I can hop only so far...)

That would be interesting for meta-populations, dispersal etc, habitats 
could be islands, forest fragments, trees of a particular species, any 
habitat type with a patchy spatial distribution and one or more species 
dependent on that habitat.

Any idea how to do that in grass or some other (fragment 
analysis-specific) application?

Using the habitat map twice as input to r.distance would be a start with 
r.distance maps=habitat_map,habitat_map, but r.distance is too slow for 
my taste (running for 2 hours by now), and I still have to get the 
nearest patches, shortest paths and clusters connected with 
max_distance. Running r.cost or r.walk for each patch as starting points 
and all other patches as stop points is not an option because I have 
~200,000 patches in a 300 million cell raster. Converting the raster 
habitat map to a vector with areas and using v.net.* modules doesn't 
work because AFAIK these modules work with points as graph nodes, and 
some of the areas are quite large, using centroids would give wrong 
distances.

The theory of what I want to do is described in Urban and Keitt (2001) [1]

Thanks,

Markus M

[1] link to pdf: http://www.keittlab.org/~tkeitt/papers/urban-keitt-2001.pdf

PS: The grass module I would like to have for this kind of analysis 
would use a habitat map as input, have as optional output raster paths 
with distances as cell values, vector paths with costs and ids of the 
two patches connected by each path, one cluster map for each 
maxdistance=max1,max2,max3,..., and an ascii file in the same format 
like r.distance for all paths connecting habitat patches. X-mas is 
getting close ;-)



More information about the grass-user mailing list