我在 RStudio (0.97.318) 的 PBSmapping(版本 2.63.37)中收到一条关于 importShapefile 的偶发错误消息,运行 R 版本 2.15.2,平台:i386-w64-mingw32/i386(32 位)。我在运行以前版本的 R 和 RStudio 时也收到了错误。
> ST6 = importShapefile("Data/pvi_stat_2002_utm.shp", projection="UTM", readDBF = TRUE)
Error in 1:nrow(dbf) : argument of length 0
> traceback()
2: cbind(1:nrow(dbf), dbf)
1: importShapefile("Data/pvi_stat_2002_utm.shp", projection = "UTM",readDBF = TRUE)
我只是偶尔收到此错误 - 也许每 10 次运行代码就有 1 次。但是一旦在 session 中发生错误,它就会重复发生,并且直到我完全关闭R并重新打开它之后才会成功执行命令。有一次,我不得不重新启动计算机才能使其工作,因为连续重新打开 R 没有帮助。
我认为这可能是内存问题,但有时当工作区中没有对象时我会收到错误消息。通常,即使我加载了大型对象,代码也可以正常运行。为了响应该错误,我已从工作区中删除了所有对象,甚至随后使用了 gc(),但无济于事。
这是我收到错误的唯一 shapefile,但由于它是我定期使用的唯一 shapefile,并且由于我无法预测错误何时会发生,因此我对其他 shapefile 的努力尚无定论。不确定是否将 shapefile 上传到 Stack Overflow。压缩文件约为 9MB。
最佳答案
查看 shape 文件所在的文件夹。实际上有 .dbf
文件吗?如果有,听起来像是空的、损坏的或命名错误的。您是否希望您的形状文件具有带有属性的多边形。您可以尝试 importShapefile(... readDBF = FALSE ) 吗?也许您可以通过保管箱链接或其他方式提供我们的数据?
或者您是否尝试过rgdal:::readOGR
或者我个人最喜欢的maptools:::readShapePoly()
。我个人认为 readShapePoly() 非常强大,并且有一些方法可以将 SpatialPolygonsDataFrame 从 sp 强制转换为 PolySet > 来自 PBS。
如果你真的必须使用 PBS,你尝试过吗...
require( maptools )
require( sp )
myshp <- readShapePoly("Data/pvi_stat_2002_utm")
myshpPBS <- SpatialPolygons2PolySet( myshp )
我假设您的 shapefile 中有一个 .prj
文件,用于描述投影信息?
关于r - R 中使用 PBSmapping 包的 importShapefile 出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15392469/