R中带有PBSmapping包的importShapefile出错

R中带有PBSmapping包的importShapefile出错,r,gis,shapefile,polygons,R,Gis,Shapefile,Polygons,我在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

我在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次。但是,一旦在会话中发生错误,它就会重复发生,并且在我完全关闭R并重新打开它之前,不会成功地执行该命令。有一次,我不得不重新启动计算机使其工作,因为连续重新打开R并没有任何帮助

我认为这可能是内存问题,但有时当工作区中没有对象时,会出现错误。通常,即使加载了大型对象,代码也可以正常运行。作为对该错误的响应,我从工作区中删除了所有对象,甚至使用了gc(),但没有效果


这是我收到错误的唯一一个形状文件,但由于它是我唯一经常使用的形状文件,并且由于我无法预测错误何时会发生,因此我对其他形状文件的努力没有结果。不确定是否将shapefile上载到堆栈溢出。压缩文件的大小约为9MB。

请查看shapefile所在的文件夹。实际上是否有
.dbf
文件?如果有,它听起来像是空的或损坏的,或命名错误。您是否希望您的形状文件具有具有属性的多边形。能否尝试导入图形文件(…readDBF=FALSE)?也许你可以通过dropbox链接或其他方式提供我们的数据

或者您尝试过
rgdal:::readOGR
或者我个人最喜欢的
maptools:::readShapePoly()
。我个人认为
readShapePoly()
非常健壮,有一些方法可以将
spatialpolysagonsdataframe
sp
强制到PBS的
PolySet

如果你真的必须使用PBS,你有没有试过

require( maptools )
require( sp )
myshp <- readShapePoly("Data/pvi_stat_2002_utm")
myshpPBS <- SpatialPolygons2PolySet( myshp )
require(映射工具)
需要(sp)

myshp查看shapefile所在的文件夹。实际上是否有
.dbf
文件?如果有,它听起来像是空的或损坏的,或命名错误。您是否希望您的形状文件具有具有属性的多边形。能否尝试导入图形文件(…readDBF=FALSE)
?也许你可以通过dropbox链接或其他方式提供我们的数据

或者您尝试过
rgdal:::readOGR
或者我个人最喜欢的
maptools:::readShapePoly()
。我个人认为
readShapePoly()
非常健壮,有一些方法可以将
spatialpolysagonsdataframe
sp
强制到PBS的
PolySet

如果你真的必须使用PBS,你有没有试过

require( maptools )
require( sp )
myshp <- readShapePoly("Data/pvi_stat_2002_utm")
myshpPBS <- SpatialPolygons2PolySet( myshp )
require(映射工具)
需要(sp)

myshp我正在使用R-3.0.1和PBS映射2.66.53以及来自的NAVO Divisions shapefile。在Windows 7 x86_64和OS X Snow Leopard(使用为x86_64构建的macports R)上,.dbf被正确读取,但是 有时使用RHEL 5.9失败:

> library("PBSmapping", lib.loc="/home/gwhite/R/x86_64-unknown-linux-gnu-library/3.0")

-----------------------------------------------------------
PBS Mapping 2.66.53 -- Copyright (C) 2003-2013 Fisheries and Oceans Canada

[...]
-----------------------------------------------------------

> library("rgeos", lib.loc="/home/gwhite/R/x86_64-unknown-linux-gnu-library/3.0")
 rgeos version: 0.2-19, (SVN revision 394)
 GEOS runtime version: 3.3.8-CAPI-1.7.8 
 Polygon checking: TRUE 

> layer='Divisions'
> divs = importShapefile(layer, projection='LL')
Error in 1:nrow(dbf) : argument of length 0
使用
readDBF=F
允许读取shapefile数据:

> divs = importShapefile(layer, projection='LL', readDBF=F)

到目前为止,
importShapefile()
一直在一个新启动的R会话中工作。

我正在使用R-3.0.1和PBS Mapping 2.66.53以及来自的NAVO分区shapefile。在Windows 7 x86_64和OS X Snow Leopard(使用为x86_64构建的macports R)上,.dbf被正确读取,但是 有时使用RHEL 5.9失败:

> library("PBSmapping", lib.loc="/home/gwhite/R/x86_64-unknown-linux-gnu-library/3.0")

-----------------------------------------------------------
PBS Mapping 2.66.53 -- Copyright (C) 2003-2013 Fisheries and Oceans Canada

[...]
-----------------------------------------------------------

> library("rgeos", lib.loc="/home/gwhite/R/x86_64-unknown-linux-gnu-library/3.0")
 rgeos version: 0.2-19, (SVN revision 394)
 GEOS runtime version: 3.3.8-CAPI-1.7.8 
 Polygon checking: TRUE 

> layer='Divisions'
> divs = importShapefile(layer, projection='LL')
Error in 1:nrow(dbf) : argument of length 0
使用
readDBF=F
允许读取shapefile数据:

> divs = importShapefile(layer, projection='LL', readDBF=F)

到目前为止,
importShapefile()
已经在一个新启动的R会话中工作。

这是一个经典案例,您应该使用seq_len(nrow(dbf))而不是1:nrow(dbf)尝试importShapefile(“…shp”,projection=“UTM”,readDBF=FALSE),这样可以避免直接错误并获得几何图形。rgdal还可以读取形状文件和maptools,rgdal提供投影元数据(如果有),而maptools不能(因为它不能从.prj中的WKT转换为PROJ.4)。这是一个典型的情况,您应该使用seq_len(nrow(dbf))而不是1:nrow(dbf)Try importShapefile(…shp),projection=“UTM”,readDBF=FALSE)这样可以避免立即出现的错误,并获得几何图形。rgdal还读取ShapeFile和maptools,rgdal提供投影元数据(如果有),而maptools不能(因为它不能从.prj中的WKT转换为项目4)。@Jordan Where?我没看见!谢谢dropbox链接:。如果可能的话,我更喜欢粘贴w/PBS映射后续处理的b/c。我可以从头开始,但由于importShapefile在10次中有9次有效,我有点犹豫。我尝试了read.DBF=F,但这并没有消除错误。此外,我还需要DBF数据(尽管我可以稍后读入DBF数据并重新连接到PolyData)进行处理。我可以使用SpatialPolygons2PolySet路径,尽管这似乎忽略了我的其他数据字段(之后我可以重新加入)。奇怪的是,它通常工作正常@SimonO101抱歉@SimonO101-这是我的第一篇帖子,我没有意识到回车键会提交我的评论。@Simon0101-你对解决方案的建议非常好。谢谢我还认为我会跟进任何一个遇到同样问题的人。随着PBSmapping包和几个依赖项的更新,错误似乎已经消失了……因此,如果您有相同的问题,版本2.65.49 PBSmapping应该可以缓解它。@Jordan Where?我没看见!谢谢dropbox链接:。如果可能的话,我更喜欢粘贴w/PBS映射后续处理的b/c。我可以从头开始,但由于importShapefile在10次中有9次有效,我有点犹豫。我尝试了read.DBF=F,但这并没有消除错误。此外,我还需要DBF数据(尽管我可以稍后读入DBF数据并重新连接到PolyData)进行处理。我可以使用SpatialPolygons2PolySet路线,尽管看起来