2013-06-26 54 views
4

我有一個包含所有法國管理限制的五個文件(可用here)。 所有這五個文件LIMITE_DEPARTEMENT.SHP/DBF/AVL/PRJ/SHX都位於文件夾/ home/jonathan/R中。在RStudio中打開SHP文件

我用這個代碼:

library(maptools) 
setwd('/home/jonathan/R') 
france<-readShapeSpatial("LIMITE_DEPARTEMENT", proj4string=CRS("+proj=longlat")) 

這讓我:

Error in read.dbf(filen1) : unable to open DBF file 

我在R(3.0.1)和Rstudio(0.97.551)嘗試。 我也讀過這post和這個one。但是,現在我不知道我能做什麼...

感謝您的任何幫助。

回答

4

錯誤與dbf文件的擴展名爲.DBF而不是.dbf有關,因此一種解決方法就是重新命名它。

而且最好使用rgdal::readOGR函數讀取shape文件的R.

我的形狀文件在我/tmp文件夾,以便將其更改爲您的實際路徑使其工作

require(rgdal) 
file.copy(from = "/tmp/LIMITE_DEPARTEMENT.DBF", 
      to = "/tmp/LIMITE_DEPARTEMENT.dbf") 
file.remove("/tmp/LIMITE_DEPARTEMENT.DBF") 
depart <- readOGR(dsn = "/tmp", layer = "LIMITE_DEPARTEMENT") 
str(depart, max.level = 2) 
## Formal class 'SpatialLinesDataFrame' [package "sp"] with 4 slots 
## [email protected] data  :'data.frame': 330 obs. of 2 variables: 
## [email protected] lines  :List of 330 
## .. .. [list output truncated] 
## [email protected] bbox  : num [1:2, 1:2] 99226 6049647 1242375 7110524 
## .. ..- attr(*, "dimnames")=List of 2 
## [email protected] proj4string:Formal class 'CRS' [package "sp"] with 1 slots 
+0

賓果!這是如此簡單...(並棘手)謝謝,謝謝,謝謝...... :) – jonathan

-1

也許你必須打開外部程序包才能讀取.dbf文件。

+0

外包現在變成了...並沒有什麼變化。我也嘗試過«法國<-read.dbf(「LIMITE_DEPARTEMENT」,package =「foreign」)» – jonathan

+0

我試着用形狀<-readShapeSpatial(「path_to_shape/shape.shp」),它工作。 – matteo

+0

grrr ...那麼這裏發生了什麼?如果我在「shape.shp」和「shape.dbf」中重命名文件,則錯誤成爲「打開SHP文件時出錯」。 //你是否使用其他軟件包? sp/gripd/lattice/gpclib? – jonathan

0

看看readOGR(dsn = "/path/to/data", layer = "LIMITE_DEPARTEMENT", ...)隨着rgdal。它通常與.dbf文件沒有問題。

1

我也以R開頭(法語...),我遇到了類似的問題,並收到相同的信息。我發現了一個解決方案:我只是將精確的方式插入到.shp文件中。例如,用我的Mac:/Applications/R/DEPARTEMENT/DEPARTEMENT.SHP。 從IGN網站(Institutgéographiquenational)下載2014年的劇目GEOFLAT(包含「DEPARTEMENT.SHP」文件)。在第一次,我改變了'SHP'的'SHP'(並且在R CONSOL中寫道:'DEPARTEMENT.shp'):沒有結果。第二次,我認爲是指文件的完整路徑:成功。

我用'地圖'和'maptools'的擴展(與'sp'等等)。

請嘗試一下,並回答我。