Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用maptools readShapePoly在R中打开SHP文件时出错_R_Shapefile_Maptools - Fatal编程技术网

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

使用maptools readShapePoly在R中打开SHP文件时出错,r,shapefile,maptools,R,Shapefile,Maptools,我是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

我是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")
我试着省略文件扩展名。我还尝试下载其他.shp文件,这些文件也会抛出相同的错误。我还尝试使用完整的文件路径调用readShapePoly,但也不起作用。我使用的是R studio(MacOSX),但使用标准的R窗口也会出现同样的错误。我尝试了上一个关闭威胁“在Rstudio中打开SHP文件时出错”的建议,但没有效果


编辑:错误是缺少.dbf文件。感谢@Spacedman的修复。忘记
ggplot
gpcclib
。坚持使用
maptools
rgdal
,它们实际上提供了读取shapefile的工具

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

另外,是什么让您认为
readShapePoly()
是正确的函数?它只知道如何读取多边形形状文件,也可以尝试
readShapePoints()
readShapeLines()

如果可以,请尝试
readOGR
,尽管有许多警告(包括几何体类型),它仍可以读取形状文件


如果你能报告所有这些事情,很可能有人能帮你

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

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

我也有同样的问题,但没有一个解决办法有效。最糟糕的是,我也在用一个我100%肯定以前能用的脚本


结果也可能是形状文件损坏了。显然,这可能发生在文件被操纵时(或者说我的地理学家朋友们),所以下次你试图打开它时,它将毫无理由地无法工作。再次下载效果很好,但让我想到,为了以防万一,我需要一份更珍贵的

我刚刚用一个shapefile解决了这个问题,我试图通过键入:

file<- readShapeSpatial("filename.shp")

file还有一个自动解决方案可以帮助我:

file<- readShapePoly(file.choose())

file在同一文件夹中包含其中三个文件(扩展名:dbf、shp、shx)。我也遇到了同样的问题。我发现基本上您需要其中的三个文件:.shp、.shx和.dbf

您确定形状文件有效吗?您是否尝试过
readOGR
?尝试
list.files()
并查看返回的内容。你的形状文件在那里吗,这么命名?使用
readShapePoly
读取时,绝对不要添加扩展名。您是否在同一文件夹中也有
london_sport.shx
london_sport.dbf
文件?您需要这三个文件来创建一个“Shapefile”。@Spacedman-好提示,缺少.dbf文件。我们已经找到了,问题已经解决了。对不起,基本错误。现在有点尴尬。对我来说,这个简单的解决方案来自link:谢谢你的建议,问题是缺少一个.dbf文件。将把rgdal添加到我的(长长的)学习清单中。是的,太糟糕了。这个领域的混蛋,有这么多糟糕的文件。哼……我正在研究一个很酷的问题。我尝试从头开始,这解决了我遇到的类似问题。您需要的不仅仅是.shp文件,如文档所述:
shapefile层名称,在编写时省略了函数中添加的扩展名*.shp、*.shx和*.dbf
file<- readShapeSpatial("filename.shp")
file<- readShapePoly(file.choose())