R中使用writeOGR导出SPDF时触发NA NULL未知数据类型报错
报错根因
报错由两个问题共同触发:
- 当前
polygon空间对象的属性表完全为空,属性变量数为0,writeOGR解析全为NULL/NA的空属性结构时,无法识别合法字段类型,因此抛出类型识别错误。 - 原writeOGR的参数写法不符合ESRI Shapefile驱动的规则,存在参数传值错误。
分步解决操作
- 验证属性表为空的状态,执行代码查看属性结构:
head(polygon@data)
正常返回结果为0列的空data.frame,无任何可写入字段。 - 补全合法的最小属性结构,为每个空间要素添加基础标识字段,保证属性表存在非空、类型可识别的字段:
# 为每个多边形添加顺序编号的id字段 polygon$id <- seq_along(polygon) - 修正writeOGR的参数写法:ESRI Shapefile驱动不支持直接把输出文件路径作为dsn(数据源)传值,dsn参数需指定存储文件的文件夹路径,layer参数指定不带后缀的输出文件名,补充覆盖写入参数避免文件锁冲突,正确导出代码如下:
# 将./替换为实际存储shapefile的文件夹路径 writeOGR(polygon, dsn = "./", layer = "polygon", driver = "ESRI Shapefile", overwrite = TRUE) - 导出完成后到目标文件夹检查,确认生成完整的.shp、.shx、.dbf等配套文件即为导出成功。
内容的提问来源于stack exchange,提问作者SMar3552
相关产品推荐
相关产品推荐

