我想要实现的目标:我正在尝试使用摩擦栅格计算形状文件中多边形的摩擦加权连接值。 shape 文件象征蝴蝶 Euphyyas aurinia 的栖息地,摩擦栅格代表这些栖息地之间的扩散矩阵。我一直在尝试使用 gdistance 包来完成此任务。
形状文件中包含 81 个多边形的形状文件。
摩擦栅格,其中每个像素代表蝴蝶在特定栖息地分散的难度
问题是,到目前为止,我尝试过的所有不同方法都一遍又一遍地返回相同的错误消息,无论我尝试做什么,即:
library(sf)
library(raster)
library(gdistance)
Ihopslagen_path <- "censored"
IhopslagenSfReadF <- st_read(Ihopslagen_path)
IhopslagenSfReadZm <- st_zm(IhopslagenSfRead)
print(IhopslagenSfRead)
FrictionRasterPath <- "censored"
FrictionRaster <- raster(FrictionRasterPath)
print(FrictionRaster)
FricPoly_raster <- rasterize(IhopslagenSfReadZm, FrictionRaster)
num_polygonsF <- nrow(IhopslagenSfReadZm) FricDistMatrix <- matrix(0, nrow = num_polygonsF, ncol = num_polygonsF)
transition <- transition(FricPoly_raster, function(x) 1, directions = 8)
for (i in 1:num_polygonsF) {
for (j in 1:num_polygonsF) {
FricDistMatrix[i, j] <- costDistance(FricPoly_raster[i], FricPoly_raster[j], transition)
}
}
Error in (function (classes, fdef, mtable) : unable to find an inherited method for function ‘costDistance’ for signature ‘"numeric", "numeric", "TransitionLayer
library(sf)
library(raster)
library(gdistance)
Ihopslagen_path <- "censored"
IhopslagenSfReadF <- st_read(Ihopslagen_path)
IhopslagenSfReadZm <- st_zm(IhopslagenSfReadF)
print(IhopslagenSfReadZm)
FrictionRasterPath <- "censored"
FrictionRaster <- raster(FrictionRasterPath)
print(FrictionRaster)
FricPoly_raster <- rasterize(IhopslagenSfReadZm, FrictionRaster)
num_polygonsF <- nrow(IhopslagenSfReadZm)
FricDistMatrix <- matrix(0, nrow = num_polygonsF, ncol = num_polygonsF)
ransition <- transition(FricPoly_raster, function(x) 1, directions = 8)
for (i in 1:num_polygonsF) { for (j in 1:num_polygonsF) { FricDistMatrix[i, j] <- costDistance(FricPoly_raster[[i]], FricPoly_raster[[j]], transition) } }
Error in (function (classes, fdef, mtable) : unable to find an inherited method for function ‘costDistance’ for signature ‘"RasterLayer", "RasterLayer", "TransitionLayer"
library(sf)
library(raster)
library(gdistance)
Ihopslagen_path <- "censored"
IhopslagenSfReadF <- st_read(Ihopslagen_path)
IhopslagenSfReadZm <- st_zm(IhopslagenSfReadF)
FrictionRasterPath <- "censored"
FrictionRaster <- raster(FrictionRasterPath)
FricPoly_raster <- rasterize(IhopslagenSfReadZm, FrictionRaster)
transition <- transition(FricPoly_raster, function(x) 1, directions = 8)
FricDistMatrix <- costDistance(FricPoly_raster, transition)
Error in (function (classes, fdef, mtable) : unable to find an inherited method for function ‘costDistance’ for signature ‘"RasterLayer", "TransitionLayer", "missing
library(sf)
library(raster)
library(gdistance)
Ihopslagen_path <- "censored"
IhopslagenSfReadF <- st_read(Ihopslagen_path)
IhopslagenSfReadZm <- st_zm(IhopslagenSfReadF)
FrictionRasterPath <- "censored"
FrictionRaster <- raster(FrictionRasterPath)
FricPoly_raster <- rasterize(IhopslagenSfReadZm, FrictionRaster)
transition <- transition(FricPoly_raster, function(x) 1, directions = 8)
FricDistMatrix <- costDistance(FricPoly_raster, FricPoly_raster, transition)
Error in (function (classes, fdef, mtable) : unable to find an inherited method for function ‘costDistance’ for signature ‘"RasterLayer", "RasterLayer", "TransitionLayer"’
# Which function from the gDistance package do I need to use in this code where the ??? is? library(sf) library(raster) library(terra) library(gdistance)
Ihopslagen_path <- "censored" IhopslagenSfRead <- st_read(Ihopslagen_path) IhopslagenSfReadZm <- st_zm(IhopslagenSfRead)
print(IhopslagenSfRead) FrictionRasterPath <- "censored" FrictionRaster <- raster(FrictionRasterPath) print(FrictionRaster)
FricPoly <- st_geometry(IhopslagenSfRead) num_polygonsF <- nrow(IhopslagenSfRead) FricDistMatrix <- matrix(0, nrow = num_polygonsF, ncol = num_polygonsF)
for (i in 1:num_polygonsF) { for (j in 1:num_polygonsF) { FricDistMatrix <- ???(FricPoly[i], FricPoly[j], FricPoly) } }
gdistance::costDistance
的第二个和第三个参数是
点位置集(空间点、矩阵或数字类)
您正在提供其他数据类型,因此它不起作用。
参见
?gdistance::costDistance