18

我是 R 新手,并且正在按照此处找到的 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 的修复。

4

7 回答 7

16

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

于 2014-03-24T22:35:30.280 回答
6

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

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

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

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

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

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

于 2013-05-17T13:10:46.847 回答
2

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

于 2017-10-01T18:55:31.590 回答
2

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

file<- readShapePoly(file.choose())

然后只需找到您的 *.shp 文件并运行它。

于 2015-12-03T19:23:32.823 回答
1

如果这对任何人都有帮助:

我遇到了同样的问题,但没有一个解决方案有效。最糟糕的是,我 100% 确定之前正在运行的脚本也是如此。

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

于 2015-07-14T17:01:25.793 回答
0

我有同样的问题。我发现基本上你需要其中三个文件:.shp、.shx 和 .dbf

于 2017-12-28T11:04:40.450 回答
0

我只是设法通过键入以下内容尝试使用 shapefile 来解决此问题:

file<- readShapeSpatial("filename.shp")

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

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

于 2015-08-18T14:47:56.900 回答