使用maptools readShapePoly在R中打开SHP文件时出错

时间:2013-05-17 11:09:08

标签: r shapefile maptools

我是R的新手,并且正在关注找到here的ggplot2包中的以下教程。但是,每当我尝试加载基本shapefile时,readShapePoly()函数都会抛出错误。我使用了以下代码:

library("ggplot2")
library("gpclib")
library("maptools")
setwd("~/Documents/R Projects/Intro to ggplot2") 
#Intro to ggplot 2 contains the .shp file and associated data
sport <- readShapePoly("london_sport.shp")

让我:

Error in getinfo.shape(filen) : Error opening SHP file

我试过省略文件扩展名。我也尝试下载其他.shp文件也会抛出相同的错误。我也尝试使用完整的文件路径调用readShapePoly,这也不起作用。我正在使用R studio(mac OSX),但是使用标准R窗口我得到了同样的错误。我已经尝试过关于之前关闭的威胁“在Rstudio中打开SHP文件时出错”的建议,但无济于事。

编辑:错误是缺少.dbf文件。感谢@Spacedman的修复。

7 个答案:

答案 0 :(得分:16)

我遇到了类似的问题,这是因为还有其他几个文件以及&#39; * .shp&#39;我下载的zip包中的shape文件。然后我只将形状文件移动到另一个文件夹,它没有工作。将所有文件包含在一起时,它很好,我可以readShapeSpatial()运行正常。

答案 1 :(得分:6)

忘记ggplotgpcclib。坚持实际提供读取shapefile工具的maptoolsrgdal

不要只是说你已经尝试过“这个和那个”,概述细节。例如,`file.exists(“london_sport.shp”)是否返回TRUE?

另外,是什么让你认为readShapePoly()是正确的功能?它只知道如何阅读多边形shapefile,同时尝试readShapePoints()readShapeLines()

如果可以的话,尽管有很多警告(包括几何类型),尝试readOGR可以读取shapefile。

library(rgdal)
readOGR("~/Documents/R Projects/Intro to ggplot2", "london_sport")

如果您可以报告所有这些事情,那么很可能有人会提供帮助。

答案 2 :(得分:2)

在同一文件夹中包含其中三个文件(扩展名:dbf,shp,shx)。

答案 3 :(得分:1)

如果这有助于任何人:

我遇到了同样的问题,但没有一个解决方案有效。最糟糕的是,我一直在使用一个我100%肯定以前工作的脚本。

事实证明,也可能是shapefile受损了。显然这可能发生在文件被操纵时(或者说我的地理学家朋友),所以下次你试图打开它时,没有明显的理由不会工作。下载它再次工作正常,但让我觉得有一个更珍贵的副本以防万一。

答案 4 :(得分:1)

还有一个,但没有多少自动解决方案帮助了我:

file<- readShapePoly(file.choose())

然后找到你的* .shp文件并运行它。

答案 5 :(得分:0)

我只是通过输入:

来设法通过我试图读取的shapefile来解决这个问题
file<- readShapeSpatial("filename.shp")

而不是输入完整的文件路径。

在此之前,我尝试了所有建议,包括确保.dbf.shx文件也存在。不知道为什么会这样。

答案 6 :(得分:0)

我遇到了同样的问题。我发现基本上你需要三个文件:.shp,.shx和.dbf