【问题标题】:How to efficiently bring in all raster files into R?如何有效地将所有光栅文件引入 R?
【发布时间】:2019-11-29 02:16:01
【问题描述】:

我将 10 多个光栅文件(单波段文件,不是很大)从我的工作目录之外的文件夹中引入 R。单独调用文件有效,但它变得乏味。我见过有人使用类似这样的代码:

require(raster) 
current.list <- list.files(path="Y:/Spatial/RasterData/current", 
     pattern =".tif", full.names=TRUE)
c.stack<- stack(current.list)

但是,它给我带来了各种错误。其中,“.rasterObjectFromFile(x, band = band, objecttype = "RasterLayer", : 无法从该文件创建 RasterLayer 对象。(文件不存在)

注意,我尝试了几种不同的格式(.grd、.img),并且在运行命令之前通常还需要(rgdal)。提前感谢您的想法!

【问题讨论】:

  • 嗨 Lorena - 请显示 current.list 返回的内容。也许这是文件名的问题。另外,你可能想看看:stackoverflow.com/questions/6464235/…
  • 谢谢,@John(这次我更仔细地阅读了你的问题) current.list 返回我的文件列表,包括我的 .tifs 和辅助文件,例如 [10] ...t_curr.tif " [11] "...t_curr.tif.aux.xml" [12] "...t_curr.tif.xml" 所以,我想我应该问,如何覆盖/消除这些文件弧GIS?

标签: r r-raster


【解决方案1】:

我还没有测试过,但我认为如果你在你的 pattern = ".tif" 部分的末尾添加一个 "$" 符号,即:

current.list <- list.files(path="Y:/Spatial/RasterData/current", 
     pattern =".tif$", full.names=TRUE)

...事情应该会奏效。 “$”符号本质上表示字符串的结尾,因此您只会列出以“.tif”结尾的文件,除此之外什么都没有(例如“tif.aux.xml”)。

祝你好运,如果不适合你,请告诉我。

【讨论】:

    【解决方案2】:

    我遇到了这个问题。我只需要将我的工作目录设置为与要导入的栅格所在的位置相同,然后它就可以正常工作了。

    【讨论】:

    • 但有时更改 wd 可能并不谨慎/不可能(即当您访问常用的数据源并且不想将其重新导入到您使用的每个 WD 时)。那你会怎么做?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-22
    • 1970-01-01
    • 2022-06-29
    • 2020-12-04
    • 1970-01-01
    • 1970-01-01
    • 2016-08-03
    相关资源
    最近更新 更多