【问题标题】:Error when opening shapefile打开 shapefile 时出错
【发布时间】:2014-03-04 01:54:27
【问题描述】:

我正在尝试在 R 中打开 shapefile,但收到以下错误消息:

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

我已经检查了其他响应,并且大多数问题似乎已经通过确保 .dbf 和 .shx 文件位于同一个文件夹中得到解决。我将它们全部放在同一个文件夹中(以及其他一些扩展名),但我仍然收到错误消息。我在 Mac 上工作。 这是我的代码:

getinfo.shape("/Users/Suz/Desktop/DWH satellite maps/20100517_Composite.shp")

我已经尝试过不使用.shp 扩展名和其他命令,例如readShapePoints 等。到目前为止没有任何效果。请帮忙,我是 R 和制作地图的新手,经过广泛的谷歌搜索和论坛阅读后,我仍然卡住了。

【问题讨论】:

  • readOGR("/Users/Suz/Desktop/DWH satellite maps", "20100517_Composite") 有效吗? (readOGRrgdal 包中)。
  • 另外,您能否在您的帖子中包含list.files('/Users/Suz/Desktop/DWH satellite maps') 的输出?其次,您能否尝试使用受信任的 shapefile,例如here。最后,您是否知道 getinfo.shape 仅读取 shapefile 的标头,而实际上并未读取数据 - 这是您的意图吗?
  • 我尝试了您建议的 shapefile:getinfo.shape("/Users/Suz/Desktop/ne_110m_admin_1_states_provinces.shp") 并仍然收到相同的错误消息。我开始认为我的问题很愚蠢,而且我没有打开所有必要的库或其他东西..?我有 sp、地图工具、rgdal 和 rgeos。
  • list.files 命令给出了目录中的所有文件(共有 174 个),因此整个输出非常庞大。但是我的文件在那里。
  • 很高兴听到。如果您能找出自己做错了什么,请将您的解决方案添加为答案,并为后代的利益而接受它。

标签: r import shapefile


【解决方案1】:

我也遇到了同样的问题。您的 SHP 文件通常会附带其他文件。如果它们丢失,则无法加载文件。

所以搜索是否有任何其他文件分机。在您获得文件的来源处使用“20100517_Composite”。

还不能发表评论,但如果这是问题所在,我希望人们节省时间。

【讨论】:

    【解决方案2】:

    您可以尝试getinfo.shape(file.choose()) 通过弹出窗口选择文件。如果这可行,则可能是您的输入字符串有问题。

    注意:我使用的是 linux,但我认为 file.choose() 应该适用于 mac。

    【讨论】:

      【解决方案3】:

      在遇到同样的问题后,我做了一些挖掘并找到了一个不错的线程 [这里]。1 事实证明,在检查 list.files() 命令后发现我的文件不存在,并且 即使我在原始代码中包含了文件路径,它仍然会产生问题中显示的错误。然后我将所有文件移到工作目录中,然后下面的命令起作用了。

      readShapeSpatial()
      

      也可以简单地更改 wd。

      setwd("directory_path")
      

      我想我会按照@jbaums 的建议把它放在这里,因为这样可以节省我一些时间来解决这个问题。

      【讨论】:

        【解决方案4】:

        在删除 .shp 扩展之前,我遇到了同样的问题。

        所以不是

        readShapeSpatial("/Users/Suz/Desktop/DWH satellite maps/20100517_Composite.shp")
        

        一起去

        readShapeSpatial("/Users/Suz/Desktop/DWH satellite maps/20100517_Composite")
        

        如果您在工作目录中拥有所有文件,它应该可以像魅力一样工作。

        【讨论】:

          【解决方案5】:

          在 R 中读取 shapefile 的简单方法是

          任一(获取 Spatial*)对象

          library(raster)
          x <- shapefile("/Users/Suz/Desktop/DWH satellite maps/20100517_Composite.shp")
          

          或(获取 sf 对象)

          library(sf)
          st_read("/Users/Suz/Desktop/DWH satellite maps/20100517_Composite.shp")
          

          (但不要使用已弃用的(不完整和过时的)函数readShapeSpatial

          在行动:

          library(raster)
          library(sf)
          
          f <- system.file("external/lux.shp", package="raster")
          s1 <- shapefile(f) 
          s2 <- st_read(f)
          

          如果这不起作用,您需要检查您的文件是否存在:

          file.exists(f)
          

          要获取目录中的 shapefile 列表,您可以这样做

          path <- "c:/temp"  # change with your directory name
          ff <- list.files(path, pattern='\\.shp$', full.names=TRUE)
          

          【讨论】:

            【解决方案6】:

            这仍然是一个问题。我使用file.choose() 更直接地调用shapefile 并手动选择文件来解决它。希望这对任何人都有帮助。

            library (rgdal)
            a = readOGR (file.choose()) #then selecting the shape file manually 
            

            【讨论】:

              猜你喜欢
              • 2014-08-09
              • 2021-01-31
              • 1970-01-01
              • 2020-05-17
              • 2014-09-12
              • 2016-09-04
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多