lcmw {SDMTools} | R Documentation |
This is a moving window that for each cell returns the minimum 'cost' based on surrounding data cells and some dispersal distance cost.
lcmw(mat, mw, mnc)
mat |
a matrix of values that can be based on a raster dataset. Lower values should represent lower cost. |
mw |
a distance-cost matrix to be applied to each cell of 'mat'. This matrix can be dispersal costs. Lower values should represent lower cost. |
mnc |
an integer value representing the maximun number radius for 'mw' |
This method moves over the matrix of values, summing the moving window cost ('mw') and the matrix ('mat'), returning the minimum cost value. This was created to estimate the least cost path through time for all cells in a matrix (see example).
a matrix of values of the same dimensions and class as input 'mat'
Jeremy VanDerWal jjvanderwal@gmail.com
#create a simple object of class 'asc' tasc = as.asc(matrix(1:100,nr=10,nc=10)); print(tasc) #show the input matrix print(tasc[1:10,1:10]) #vary the moving windows ###no cost window of 2 cell radius tcost = matrix(0,nr=5,nc=5); print(tcost) out = lcmw(tasc, tcost, 2); print(out[1:10,1:10]) ###no cost with a circular radius of 2 tcost = matrix(NA,nr=5,nc=5) #populate the distances for (y in 1:5){ for (x in 1:5){ tcost[y,x] = sqrt((3-y)^2 + (3-x)^2) } } #remove distance values > max.num.cells tcost[which(tcost>2)]=NA #no cost matrix tcost1 = tcost; tcost1[is.finite(tcost1)]=1; print(tcost1) out = lcmw(tasc, tcost1, 2); print(out[1:10,1:10]) #linear cost tcost = tcost/2; print(tcost) out = lcmw(tasc, tcost, 2); print(out[1:10,1:10])