我遇到了一個與R中的覆蓋函數不同尋常的問題。我們試圖用另一個圖層中的值填充陰影像素。我可以讓它工作得很好用棧如下 -r柵格覆蓋函數 - 與landsat堆棧錯誤
library(raster)
r1 <- raster(ncols=36, nrows=18)
r1[] <- 1:ncell(r1)
r1b <- r1a <- r1
r1_stack <- stack(r1, r1a, r1b)
r2 <- setValues(r1, runif(ncell(r1)))
r2b <- r2a <- r2
r_stack <- stack(r2, r2a, r2b)
r_stack[r_stack < 0.5] <- NA
r3 <- cover(r_stack, r1_stack)
但後來我嘗試做同樣的事情光柵堆棧和我得到的錯誤:
Error in as.character(x) :
cannot coerce type 'closure' to vector of type 'character'
代碼:
# get all tifs
LS5_032_032_2008_09_21 <- list.files("LT050340302008090301T1-SC20170526100900/",
pattern = glob2rx("*band*.tif$"), full.names = T)
# stack bands
cloudy_scene <- stack(LS5_032_032_2008_09_21)
# import cloud mask
cloud_mask <- raster('LT050340302008090301T1-SC20170526100900/LT05_L1TP_034030_20080903_20160905_01_T1_sr_cloud_qa.tif')
# mask data
masked_data <- mask(cloudy_scene, mask = cloud_mask, maskvalue=0, inverse=TRUE)
####### get cloud free data
# get files
LS5_2008_09_19 <- list.files("LT050340302008091901T1-SC20170526101124/",
pattern = glob2rx("*band*.tif$"), full.names = T)
# subset and stack cloud free bands
cloud_free_data <- stack(LS5_2008_09_19)
# use cover function to assign NA pixels to corresponding pixels in other scene
cover <- cover(masked_data, cloud_free_data)
回溯()輸出:
9: toupper(format)
8: .defaultExtension(format)
7: .getExtension(filename, filetype)
6: .local(x, filename, ...)
5: writeStart(outRaster, filename = filename, format = format, datatype = datatype,
overwrite = overwrite)
4: writeStart(outRaster, filename = filename, format = format, datatype = datatype,
overwrite = overwrite)
3: .local(x, y, ...)
2: cover(masked_data, cloud_free_data)
1: cover(masked_data, cloud_free_data)
更新:我試圖重新採樣數據 - 仍然不起作用
cloud_free_resam <- resample(cloud_free_data, masked_data)
cover <- cover(masked_data, cloud_free_resam)
錯誤:
Error in as.character(x) :
cannot coerce type 'closure' to vector of type 'character'
我也試圖裁剪兩層 - 同樣的錯誤
# find intersection boundary
crop_extent <- intersect(extent(cloud_free_data), extent(masked_data))
cloud_free_data <- crop(cloud_free_data, crop_extent)
masked_data <- crop(masked_data, crop_extent)
# use cover function to assign NA pixels to corresponding pixels in other scene
cover <- cover(masked_data, cloud_free_data)
獲取數據:(警告:317mb下載 - 解包到〜1GB) https://ndownloader.figshare.com/files/8561230
任何想法可能會導致此特定數據集的此錯誤? 我確定我們錯過了一些非常基本的東西,但是......什麼? 預先感謝您。
利亞
Works爲我固定這一點,如果我裁剪一切由'E =程度限定在很小程度上(可見(例如:450000,470000,4750000,4780000)',例如:'cloud_free_data < - 裁剪(堆棧(LS5_2008_09_19 [5:10]),e)',我的個人電腦在完整的數據上糟糕透頂,我沒有讓它跑到完成/錯誤。 – Spacedman
在您的錯誤後,traceback()會說什麼?你可以編輯這個問題嗎? – Spacedman
@Spacedman我有一種感覺,它與沒有數據的區域中的重疊像素有關,但我不確定。我會嘗試作物和追蹤 –