M1芯片Mac上stars包st_extract设bilinear=TRUE致R崩溃求解决方案
M1芯片Mac使用stars包
st_extract双线性提取时R崩溃的问题及解决办法 在搭载M1芯片的Mac设备上,调用stars包的st_extract函数并设置bilinear = TRUE进行双线性提取时,会导致R直接崩溃;但将该参数设为FALSE时,函数能正常运行。想了解是否有其他用户遇到过相同问题,以及可行的解决办法。
环境信息
> library(stars) Loading required package: abind Loading required package: sf Linking to GEOS 3.10.2, GDAL 3.4.2, PROJ 8.2.1; sf_use_s2() is TRUE > sessionInfo() R version 4.2.2 (2022-10-31) Platform: aarch64-apple-darwin20 (64-bit) Running under: macOS Monterey 12.6 Matrix products: default LAPACK: /Library/Frameworks/R.framework/Versions/4.2-arm64/Resources/lib/libRlapack.dylib locale: [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8 attached base packages: [1] stats graphics grDevices utils datasets methods base other attached packages: [1] stars_0.5-6 sf_1.0-8 abind_1.4-5
崩溃重现代码
library(stars) rast <- st_as_stars(volcano) pts <- st_point(c(50, 50)) %>% st_sfc() # 执行此代码会导致R崩溃 st_extract(rast, pts, bilinear = TRUE)
可行的解决办法
- 升级相关包:将stars、sf、abind等依赖包更新到最新版本,架构相关的bug常被后续版本修复。执行以下命令更新:
update.packages(c("stars", "sf", "abind")) - 更新底层依赖库:GDAL、GEOS、PROJ的版本兼容性可能引发问题,通过Homebrew更新这些库后重新安装stars和sf:
brew install gdal geos proj install.packages(c("sf", "stars"), type = "source") - 使用替代包实现双线性提取:如果必须使用双线性插值,可以用terra包的
extract函数替代,之后按需转换回stars对象:library(terra) library(stars) # 转换为terra格式 rast_terra <- rast(rast) pts_terra <- vect(pts) # 双线性提取 result <- extract(rast_terra, pts_terra, method = "bilinear") # 转换回stars对象(可选) result_stars <- st_as_stars(result) - 提交bug报告:若以上方法无效,可在stars包的代码仓库提交issue,附上环境信息、重现代码,帮助开发者定位修复问题。
内容的提问来源于stack exchange,提问作者SimeonL
相关产品推荐
相关产品推荐

