计算矩阵距离时R包gdistance出错

时间:2015-04-14 11:11:16

标签: r matrix gis distance

我正在尝试使用函数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

如果有人知道原因,那将会非常有帮助。

1 个答案:

答案 0 :(得分:1)

在您的示例中,转换函数应抛出负值的警告。

这是如何避免它:

heightDiff <- function(x){abs(x[2] - x[1])}

通常你需要使用geoCorrection函数,这是你在上面省略的。