我正在尝试使用函数costDistance计算点之间的矩阵距离是R包gdistance,考虑到具有转换矩阵的高度,其代码如下:
read.csv("subset.csv",h=T)->dat
llCRS <- CRS("+proj=longlat +ellps=WGS84")
dat_mat<- cbind(dat$Long, dat$Lat)
dat_sp <- SpatialPointsDataFrame(dat_mat, dat, proj4string = llCRS)
raster("subset.grd")->alt
alt[is.na(alt)] <- 0
heightDiff <- function(x){x[2] - x[1]}
tr <- transition(alt,heightDiff,8,symm=FALSE)
pC <- as.matrix(dat[c("Longitud", "Latitud")])
cosDist <- costDistance(tr, pC)
我收到此错误消息
Error in .Call("R_igraph_shortest_paths", graph, v - 1, to - 1, as.numeric(mode), :
At structural_properties.c:5200 : cannot run Bellman-Ford algorithm, Negative loop detected while calculating shortest paths
如果有人知道原因,那将会非常有帮助。
答案 0 :(得分:1)
在您的示例中,转换函数应抛出负值的警告。
这是如何避免它:
heightDiff <- function(x){abs(x[2] - x[1])}
通常你需要使用geoCorrection函数,这是你在上面省略的。