与“未来”并行的 GIS
Parallel GIS with `future`
我注意到在 raster
之后加载 furrr
时,我被警告说 values
被屏蔽了:
The following object is masked from ‘package:raster’:
values
我不是 100% 确信这是问题所在,但我正在努力 运行 raster::extract
sf
个对象
library(raster)
library(sf)
p <- shapefile(system.file("external/lux.shp", package="raster"))
s <- as(p, "sf")
r <- raster(p, ncol=100, nrow=100)
values(r) <- 1:ncell(r)
我可以很好地提取
raster::extract(r, s)
但是当我并行化(版本 1)时出现错误:
library(furrr)
plan(strategy = "multiprocess", workers =2)
future_map(1:2, function(extr){
raster::extract(r,s)
})
一件奇怪的事情是它似乎可以与 sp
类型的对象(版本 2)
一起工作
u<-as(s, "Spatial")
future_map(1:2, function(extr){
raster::extract(r,u)
})
除了在 sf
和 SpatialPointsDataFrame
之间切换之外,我怎样才能让“版本 1”代码正常工作?
工作人员没有加载 sf
包裹。使用 .options = furrr_options(packages = "sf")
.
重现问题:
future_map(1:2, function(x){
raster::extract(r,s)
})
#> Error in as(from, "Spatial"): no method or default for coercing "sf" to "Spatial"
解决方案:
future_map(1:2, .options = furrr_options(packages = "sf"), function(x){
raster::extract(r,s)
})
我注意到在 raster
之后加载 furrr
时,我被警告说 values
被屏蔽了:
The following object is masked from ‘package:raster’:
values
我不是 100% 确信这是问题所在,但我正在努力 运行 raster::extract
sf
个对象
library(raster)
library(sf)
p <- shapefile(system.file("external/lux.shp", package="raster"))
s <- as(p, "sf")
r <- raster(p, ncol=100, nrow=100)
values(r) <- 1:ncell(r)
我可以很好地提取
raster::extract(r, s)
但是当我并行化(版本 1)时出现错误:
library(furrr)
plan(strategy = "multiprocess", workers =2)
future_map(1:2, function(extr){
raster::extract(r,s)
})
一件奇怪的事情是它似乎可以与 sp
类型的对象(版本 2)
u<-as(s, "Spatial")
future_map(1:2, function(extr){
raster::extract(r,u)
})
除了在 sf
和 SpatialPointsDataFrame
之间切换之外,我怎样才能让“版本 1”代码正常工作?
工作人员没有加载 sf
包裹。使用 .options = furrr_options(packages = "sf")
.
重现问题:
future_map(1:2, function(x){
raster::extract(r,s)
})
#> Error in as(from, "Spatial"): no method or default for coercing "sf" to "Spatial"
解决方案:
future_map(1:2, .options = furrr_options(packages = "sf"), function(x){
raster::extract(r,s)
})