R绘制伦敦地图时已存在的shape文件无法用read_sf读取如何解决
问题原因
here()包根目录定位偏差:here()函数默认以R项目(.Rproj)文件所在路径为根目录拼接路径,若未在对应R项目环境下运行代码,即使手动设置了工作目录,也会出现路径拼接错误,导致读取不到目标文件。- shapefile配套文件缺失:.shp格式文件无法单独读取,同目录下必须同时存在.shx、.dbf、.prj等同名配套文件,任意一个文件缺失都会触发文件不存在的报错。
- 文件名匹配错误:若系统开启了已知文件扩展名隐藏功能,可能存在实际文件名为
London_Ward.shp.shp的情况,与代码中写入的文件名不匹配。
解决方法
- 首先验证拼接后的实际路径:运行代码
here("london-wards-2018_ESRI","London_Ward.shp"),打印输出拼接完成的完整路径,核对该路径与文件实际存储路径是否一致。 - 路径不匹配时的修正方案:
- 打开
london-wards-2018_ESRI所在文件夹中的.Rproj文件,在R项目环境下运行原有代码 - 直接使用文件绝对路径读取,替换原有路径参数,示例如下:
# 替换引号内内容为你本地文件的实际绝对路径 london_wards_sf<-read_sf("C:/Users/xxx/Documents/london-wards-2018_ESRI/London_Ward.shp") - 打开
- 检查配套文件完整性:确认
london-wards-2018_ESRI文件夹内存在London_Ward.shx、London_Ward.dbf、London_Ward.prj等同名配套文件,下载的原始压缩包需完整解压到当前目录,不可仅单独复制.shp文件。 - 核对真实文件名:在系统文件管理器的“查看”设置中开启“文件扩展名”显示,确认文件名不存在重复后缀问题。
额外提示:你现有代码中
st_transform(4362)写法有误,未传入待转换的sf对象,正确写法为london_wgs84 <- st_transform(london_wards_sf, 4326),其中4326为常用的WGS84坐标系EPSG编码,可根据你实际需要的坐标系调整参数。
内容的提问来源于stack exchange,提问作者kris
相关产品推荐
相关产品推荐

