list.files 保存文件,但我不能在循环中使用它们

问题描述

我有不同的 shapefile 和光栅文件,我想创建一个嵌套循环来提取光栅文件的 RGB 值。 因此,我将 shapefile 和光栅文件保存在一个列表中,然后我想在循环中读取它们。

使用 shapefile,它是正确的,但不知何故光栅文件保存在我的列表中,但我无法在循环中读取它们。 数据路径应该是正确的,因为如果我在循环外使用相同的命令,它运行良好。

我的代码是:

  library(rgdal)
  library(rgeos)
  library(exactextractr)
  library(sp)
  library(sf)
  library(raster)


  sites <- list.files("C:/Users/KaI/OneDrive - UT Cloud/Documents/Praktikum Mitacs/Data Files/ManualTreetops_2019_RGB/ManualTreetops_Finished",pattern = "*.shp")

  sites <- sub(".shp","",sites)

  orths <-  list.files("C:/Users/KaI/OneDrive - UT Cloud/Documents/2019_ortho",pattern="*.tif")

  orths <-  sub(".tif",orths)

  output <- list()

  for (i.site in sites) {

    setwd("C:/Users/KaI/OneDrive - UT Cloud/Documents/Praktikum Mitacs/Data Files/ManualTreetops_2019_RGB/ManualTreetops_Finished")

    tt <- st_read(getwd(),i.site)

    crowns <- st_buffer(tt,1)


    for(i.orth in orths) {

      setwd("C:/Users/KaI/OneDrive - UT Cloud/Documents/2019_ortho")

      oo <-  brick(getwd(),i.orth)

    crown.rgb <- exact_extract(orth,crowns,"mean")

    output[[i.site]] <- crown.rgb

    }


  } #end of for loop

我还可以在 R-studio 中看到该程序正在将我的光栅文件正确导入到“orths”列表中,但是当我使用砖命令时,它给了我错误消息:“.local(.Object,...): 无法从此文件创建 RasterLayer 对象。” 有人知道这种问题的任何原因吗?

提前致谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)