使用rmapshaper::ms_simplify时出现ogrInfo错误求助
解决rmapshaper::ms_simplify报"Cannot open data source"错误的方案
我之前也碰到过这个一模一样的错误!大概率是rmapshaper依赖的外部工具mapshaper的配置问题,或者是空间数据的格式兼容性问题,给你几个实用的排查和解决方向:
检查mapshaper是否正确安装
rmapshaper本质是调用Node.js环境下的mapshaper工具来处理空间数据,所以首先得确保你已经安装了Node.js和mapshaper:- 先确认终端里能运行
node -v和npm -v,如果不行先安装Node.js; - 执行
npm install -g mapshaper全局安装mapshaper; - 安装完成后在终端敲
mapshaper -v,如果能输出版本号,说明工具本身没问题。
- 先确认终端里能运行
手动指定mapshaper的路径给R
有时候R找不到已经安装的mapshaper,这时候可以手动配置路径:- 在终端里执行
which mapshaper,得到工具的绝对路径(比如/usr/local/bin/mapshaper); - 在R里运行以下代码配置:
options(rmapshaper.path = "/usr/local/bin/mapshaper") # 替换成你得到的实际路径
之后再尝试运行
ms_simplify。- 在终端里执行
转换空间数据为sf格式后再处理
旧版本的空间数据对象(比如sp类)可能和rmapshaper的兼容性不好,转换成sf对象试试:library(sf) # 处理rworldmap的countriesLow countries_sf <- st_as_sf(rworldmap::countriesLow) foo <- rmapshaper::ms_simplify(countries_sf) # 处理本地shp文件 local_sf <- st_read("你的本地shp文件路径.shp") simplified_local <- rmapshaper::ms_simplify(local_sf)升级R和相关包版本
你的R版本是3.4.3,属于比较旧的版本,很多新包的功能和兼容性在旧版本R上会出问题:- 升级R到4.x系列的稳定版本;
- 更新相关依赖包:
update.packages(c("rmapshaper", "rworldmap", "sf"), ask = FALSE)
如果以上方法都没解决,可以先在终端里直接用mapshaper处理你的shp文件,验证工具本身是否正常工作:
mapshaper 你的本地shp文件路径.shp -simplify 30% -o 输出文件路径.shp
如果这个命令能成功生成简化后的shp,那问题肯定出在R和mapshaper的衔接上,再回头检查路径配置即可。
内容的提问来源于stack exchange,提问作者James Grecian
相关产品推荐
相关产品推荐

