[R-sig-Geo] Cost allocation from cost distance

Jacob van Etten jacobvanetten at yahoo.com
Tue Jul 12 17:19:35 CEST 2011


I am not aware of a function that does this in R.

But this is not difficult to program with existing raster and gdistance functions.

This toy example works:

library(gdistance)

costAll <- function(fromCoords, cost)
{
  aC <- stack(cost,cost)
  cT <- transition(cost, mean, 8)
  cT <- geoCorrection(cT, scl=FALSE)
  for(i in 1:dim(fromCoords)[1]) {aC <- stack(aC, accCost(cT, fromCoords[i,]))}
  func <- function(x) which(x == min(x))
  aC <- dropLayer(aC,1:2)
  alC <- calc(aC, func)
  return(alC)
}

fromCoords <- cbind(c(-80,50),c(50,-80))
cost <- raster(ncol=36,nrow=18)
cost <- setValues(cost,rep(1,times=ncell(cost)))
cA <- costAll(fromCoords, cost)

plot(cA)
points(fromCoords)



Jacob.

--- On Tue, 12/7/11, Etienne B. Racine <etiennebr at gmail.com> wrote:

> From: Etienne B. Racine <etiennebr at gmail.com>
> Subject: [R-sig-Geo] Cost allocation from cost distance
> To: "r-sig-geo" <R-sig-Geo at stat.math.ethz.ch>
> Date: Tuesday, 12 July, 2011, 15:40
> Hi all,
> 
> I'm looking for a function which would allow to compute on
> a matrix the id
> of the closest point according to a matrix of cost. I've
> used
> gdistance::accCost() to get the cost, but I need to relate
> that cost to
> points. A good description of the function I'm looking for
> would be from
> ESRI Cost Allocation tool [1]. I couldn't find an
> equivalent function in R.
> 
> [1]
> http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#/Cost_Allocation/009z00000016000000/
> 
> Etienne
> 
>     [[alternative HTML version deleted]]
> 
> _______________________________________________
> R-sig-Geo mailing list
> R-sig-Geo at r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>



More information about the R-sig-Geo mailing list