使用rgeoboundaries获取马里、塞内加尔边界报错的解决方法
解决rgeoboundaries获取马里、塞内加尔边界的错误问题
错误原因
你遇到的文件找不到错误,本质是rgeoboundaries包的内部路径逻辑和geoBoundaries官方最新的文件命名规则不匹配——官方更新了压缩包内的SHP文件名,而当前安装的包版本还在查找旧的文件名,导致读取失败。
解决方案
方案1:强制更新rgeoboundaries到最新版本
先卸载旧版本,再重新安装GitHub上的最新代码,修复路径匹配问题:
# 卸载旧包 remove.packages("rgeoboundaries") # 强制安装最新版本 remotes::install_github("wmgeolab/rgeoboundaries", force = TRUE) # 重新加载包并尝试获取数据 library(rgeoboundaries) library(sf) mli_sen <- gb_adm0(c("Mali", "Senegal"), type = "sscgs")
方案2:手动下载并读取geoBoundaries数据
如果更新包后还是不行,直接调用geoBoundaries的官方数据链接手动处理:
library(sf) # 下载马里ADM0边界数据 mli_zip <- tempfile(fileext = ".zip") download.file("https://geoboundaries.org/data/geoBoundaries-4.0.0/MLI/ADM0/geoBoundaries-4.0.0-MLI-ADM0.zip", mli_zip) mli_sf <- st_read(mli_zip) # 下载塞内加尔ADM0边界数据 sen_zip <- tempfile(fileext = ".zip") download.file("https://geoboundaries.org/data/geoBoundaries-4.0.0/SEN/ADM0/geoBoundaries-4.0.0-SEN-ADM0.zip", sen_zip) sen_sf <- st_read(sen_zip) # 合并两个国家的边界数据 mli_sen <- rbind(mli_sf, sen_sf)
方案3:换用CRAN维护的替代包
如果不想折腾rgeoboundaries,推荐用rnaturalearth包(CRAN官方维护,稳定性更高)获取国家边界:
# 安装包(首次使用) install.packages("rnaturalearth") library(rnaturalearth) library(sf) # 获取马里和塞内加尔的边界数据 mli_sen <- ne_countries(country = c("Mali", "Senegal"), returnclass = "sf")
内容的提问来源于stack exchange,提问作者Saïd Maanan
相关产品推荐
相关产品推荐

