當從源座標A轉到目標座標B時,來自R gdistance的accCost()和costDistance()函數產生不同的值。不應該在B處的成本累積值等於給定一個等價的各向異性轉移矩陣,從A到B的costDistance值,並且這兩個函數都使用Dijkstra算法?R:gdistance accCost和costDistance的不同結果
如果不是,那麼計算之間的根本區別是什麼?如果是這樣,那麼從下面給出的代碼得出的不同值是什麼原因?在這個例子中,B點costDistance = 0.13小時,accCost = B點0.11小時。我的其他測試表明,accCost始終低於costDistance,並且遠遠超過了這個距離。該代碼基於accCost文檔中提供的示例。
require(gdistance)
r <- raster(system.file("external/maungawhau.grd", package="gdistance"))
altDiff <- function(x){x[2] - x[1]}
hd <- transition(r, altDiff, 8, symm=FALSE)
slope <- geoCorrection(hd)
adj <- adjacent(r, cells=1:ncell(r), pairs=TRUE, directions=8)
speed <- slope
speed[adj] <- 6 * 1000 * exp(-3.5 * abs(slope[adj] + 0.05))#1000 to convert to a common spatial unit of meters
Conductance <- geoCorrection(speed)
A <- matrix(c(2667670, 6479000),ncol=2)
B <- matrix(c(2667800, 6479400),ncol=2)
ca <- accCost(Conductance,fromCoords=A)
extract(ca,B)
costDistance(Conductance,fromCoords=A,toCoords=B)
請提供一個可重現的例子。 http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example –
我已經添加了「require(gdistance)」這一行,這應該使該示例具有完全可重現性。 – RandyHaas