2013-03-13 58 views
2

我收到rshaudio(0.97.318)中的PBSmapping(版本2.63.37)中運行importShapefile的零星錯誤消息,運行R版本2.15.2,平臺:i386-w64-mingw32/i386(32位)。在運行以前版本的R和RStudio時,我也收到了錯誤。ImportShapefile與PBSmapping包R中的錯誤

> 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次運行一次代碼。但是,一旦會話中發生錯誤,它會重複發生,直到完全關閉R並重新打開它纔會成功執行命令。有一次,我不得不重新啓動計算機以使其工作,因爲R的連續重新啓動沒有幫助。

我認爲這可能是一個內存問題,但有時我會得到錯誤,當工作區中沒有對象。即使我加載了大對象,通常代碼仍可以正常運行。爲了響應這個錯誤,我從工作空間中刪除了所有對象,甚至使用gc(),但無濟於事。

這是我收到錯誤的唯一形狀文件,但是由於它是唯一一個我常規使用的形狀文件,並且由於我無法預測何時會發生錯誤,所以我在其他形狀文件方面的努力尚無定論。不知道將shapefile上傳到堆棧溢出。壓縮文件大約9MB。

+0

一個經典案例,您應該使用seq_len(nrow(dbf))而不是1:nrow(dbf) – mdsumner 2013-03-13 19:41:25

+0

嘗試importShapefile(「.. shp」,projection =「UTM」,readDBF = FALSE)錯誤,並讓你的幾何。 rgdal也讀取shapefile和maptools,如果它存在,rgdal會爲您提供投影元數據,而maptools不能(因爲它無法從.prj中的WKT轉換爲PROJ.4)。 – mdsumner 2013-03-13 19:45:10

回答

3

看看shapefile所在的文件夾。實際上是否有.dbf文件?如果有,它聽起來像是空的或損壞的,或者是錯誤的。你是否期望你的shapefile具有帶屬性的多邊形。你可以試試importShapefile(... readDBF = FALSE)?也許你可以通過Dropbox鏈接或其他方式使我們的數據可用?

或者你試過rgdal:::readOGR或者我個人最喜歡的maptools:::readShapePoly()。我個人發現readShapePoly()是非常強大的,並且存在將來自spSpatialPolygonsDataFrame強制爲來自PBS的PolySet的方法。

如果你真的必須使用PBS你嘗試過...

require(maptools) 
require(sp) 
myshp <- readShapePoly("Data/pvi_stat_2002_utm") 
myshpPBS <- SpatialPolygons2PolySet(myshp) 

我假設有一個.prj文件與Shape文件,描述了投影信息?

+0

@Jordan哪裏?我看不到它! – 2013-03-14 17:45:50

+0

謝謝!保管箱鏈接:https://www.dropbox.com/sh/ckgtyvtjh6z27km/6HaDADQ0J8。如果可能的話,我寧願貼上w/PBSmapping b/c後續處理。我可以重新開始,但由於importShapefile的工作原理大約有9次,所以我有點猶豫。我試過read.DBF = F但沒有刪除錯誤。另外,我需要DBF數據(儘管我以後可以讀取dbf數據並重新加入PolyData)進行處理。我可以使用SpatialPolygons2PolySet路由,儘管這似乎省略了我的其他數據字段(我可以再次加入)。奇怪它通常工作正常。 @ SimonO101 – Jordan 2013-03-14 18:05:22

+0

對不起@ SimonO101 - 這是我的第一篇文章,我沒有意識到輸入鍵會提交我的意見。 – Jordan 2013-03-14 18:06:42

1

我使用R-3.0.1和PBS Mapping 2.66.53與NAVO Divisions shapefile從http://www.nafo.int/about/overview/gis/Divisions.zip。在Windows 7 64位x86和OS X雪豹(使用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確實允許shape文件數據閱讀:

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

到目前爲止,importShapefile()已經在剛開始R對話工作。