2011-06-02 106 views
6

我在一個腳本中得到一個錯誤,該腳本遍歷目錄中的一些文本文件,執行一些數據操作並使用來自R中rgdal包的writeOGR寫入ESRI shapefile。在寫入一定數量的文件(看起來大約是43-44個單獨的文件,或者~14個完整的shape文件,因爲每個shape文件創建許多文件)之後會一直出現錯誤。用writeOGR編寫shapefile的問題R

錯誤通常是這樣的

GDAL Error 4: Unable to open ./test_8.shp or ./test_8.SHP 

此外,腳本已經崩潰我得到這樣

cannot open file 'file_test.R': Too many open files 

一個錯誤,當我嘗試讀取或與另一個文件做任何事情。

showConnections 

不顯示在這一點上任何打開的文件。

下面是一些代碼能重現問題:

library(gstat) 
library(rgdal) 
data(meuse) 

coordinates(meuse) = ~x + y 

for (i in 1:50){ 
    writeOGR(meuse,'.',paste('test',i,sep="_"),driver="ESRI Shapefile") 
} 

我,使用R 2.12.2在OSX。在64位和32位版本上都會發生錯誤。

+0

可能更好地打開和關閉每個迴路的連接。 for(x in 1:50){opencon ... closecon} – 2011-06-03 01:04:17

+0

shapefile具有(至少).shp,.dbf和.shx。我需要打開和關閉所有這些嗎?此外,在1.8.0之前的rgdal版本中,我認爲我不能覆蓋現有文件(並且在沒有管理員權限的服務器上,我需要在rgdal 1.7.1上運行此腳本),所以如果文件已經存在,我可能無法寫入shape文件。 – blindjesse 2011-06-03 02:46:25

回答

5

你的代碼在Ubuntu 11.04和R 2.13上爲我工作,也許值得從maptools包中嘗試writeSpatialShape

+0

我結束了相同的錯誤(R版本2.13.0,Mac OSX)。我想在寫入ESRI shape文件時,GDAL可以打開的最大連接數。您使用'writeSpatialShape'的解決方案克服了這個限制。 – 2011-06-02 21:24:47

+0

代碼也適用於Windows 7。聽起來像一個OSX相關的錯誤。 – blindjesse 2011-06-03 02:52:09

+0

我有一個'writeOGR()'類似的問題:我會嘗試在同一個會話中重寫一個文件,它會被阻止。 'writeSpatialShape()'可以做到這一點。 – metasequoia 2012-12-11 05:08:53