[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