Dear Ben,

Take a look at how you create your TransitionLayer.


The means of pairwise elevation values don´t make sense to me as conductance values.


Perhaps you have negative elevation/conductance values in your matrix?

Without the actual values or a reproducible example it is difficult to see where it goes wrong.


I don't understand your last question about least-cost paths/distances.


Best,

Jacob.



________________________________
 From: Ben Weinstein <benweinstein2010@gmail.com>
To: r-sig-geo@r-project.org 
Sent: Friday, 9 December 2011, 1:30
Subject: [R-sig-Geo] gdistance resistanceDistance error

Hello all,
Has anyone come across this error "CHOLMOD factorization was
unsuccessful" when using the resistance distance function in the new
package gdistance? I appreciate the help, this forum is really allowing me
to get past these issues.

#Read in the coordinates
> head(cord)
  coords.x1 coords.x2
0 -73.36111  6.810003
1 -73.45474  6.464962
2 -76.28194  1.137222
3 -76.40000  1.113333
4 -76.53278  1.233056
5 -76.27610  1.600061
> class(cord)
[1] "matrix"

#Read in the elevation raster
elevr<-raster("D:/Ben/GIS/Data/DimDiv/StudyArea_1km")

>Elevr
class       : RasterLayer
dimensions  : 2047, 1648, 3373456  (nrow, ncol, ncell)
resolution  : 0.007821463, 0.007821462  (x, y)
extent      : -80.82072, -67.93095, -4.788296, 11.22224  (xmin, xmax, ymin,
ymax)
coord. ref. : +proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs
+towgs84=0,0,0
values      : D:\Ben\GIS\Data\DimDiv\StudyArea_1km
min value   : 1
max value   : 6169

#create a friction surface, i've also tried directions = 4
tmean<-transition(elevr, transitionFunction = mean, directions=8)

> tmean
class       : TransitionLayer
dimensions  : 2047, 1648, 3373456  (nrow, ncol, ncell)
resolution  : 0.007821463, 0.007821462  (x, y)
extent      : -80.82072, -67.93095, -4.788296, 11.22224  (xmin, xmax, ymin,
ymax)
coord. ref. : +proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs
+towgs84=0,0,0
values      : conductance
matrix class: dsCMatrix

#perform the geocorrection (i've also tried skipping this step)
resistancesurface <- geoCorrection(tmean, type = "r", multpl = FALSE)


> resistancesurface
class       : TransitionLayer
dimensions  : 2047, 1648, 3373456  (nrow, ncol, ncell)
resolution  : 0.007821463, 0.007821462  (x, y)
extent      : -80.82072, -67.93095, -4.788296, 11.22224  (xmin, xmax, ymin,
ymax)
coord. ref. : +proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs
+towgs84=0,0,0
values      : conductance
matrix class: dsCMatrix

#Get matrix of resistance distances.
> randomwalk<-resistanceDistance(resistancesurface,cord)
Error in Cholesky(Lr) : CHOLMOD factorization was unsuccessful
In addition: Warning message:
In Cholesky(Lr) :
  Cholmod warning 'not positive definite' at
file:../Cholesky/t_cholmod_rowfac.c, line 432
>

It's a bit difficult to parse. This process works perfectly for the
costDistance function, which is much prettier than the one i wrote in
python.

And while i'm at it, has anyone had a chance to create a matrix of pairwise
shortest paths? That is the distance of the least cost path from every
combination of sites. My first thought is:

pathloop<- function(coord,origin) sapply(coord, function(x)
shortestPath(meansurface, coord[origin], coord[x,], output="SpatialLines")

and then loop that through a 2nd apply loop for each origin point.

As always, i appreciate the help.

Ben Weinstein

-- 
Ben Weinstein
Graduate Student
Ecology and Evolution
Stony Brook University

http://life.bio.sunysb.edu/~bweinste/index.html

    [[alternative HTML version deleted]]

_______________________________________________
R-sig-Geo mailing list
R-sig-Geo@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-sig-geo
	[[alternative HTML version deleted]]

