R语言导出sf对象至SHP文件报错的解决方法求助
解决sf对象投影设置与SHP导出的错误
错误根源
你用了sp包的proj4string<-和writeOGR函数操作sf类对象,这两个包的空间数据模型不兼容:
proj4string<-是sp包专属方法,对sf对象无效writeOGR仅支持sp包的Spatial类对象,不识别sf对象
修正方案
全部改用sf包的原生函数处理:
1. 设置/转换投影
- 如果对象还未定义投影,直接绑定EPSG代码:
result <- st_set_crs(result, 32748) - 如果需要从其他投影转换到EPSG:32748:
result <- st_transform(result, 32748)
2. 导出为ESRI Shapefile
用st_write()替代writeOGR,写法更简洁:
# 基础写法 st_write(result, dsn = "result.shp", layer = "result", driver = "ESRI Shapefile") # 简化版(自动匹配参数) st_write(result, "result.shp") # 若需覆盖已有文件,添加overwrite参数 st_write(result, "result.shp", overwrite = TRUE)
完整修正代码片段
# 假设已完成植被指数计算、树顶点筛选,得到sf对象result # 设置投影 result <- st_set_crs(result, 32748) # 导出SHP st_write(result, "result.shp", overwrite = TRUE)
内容的提问来源于stack exchange,提问作者Muhamad Dzikri Fadhilah
相关产品推荐
相关产品推荐

