我有一个让我发疯的问题,我一生都无法解决。我正在处理大型 Sentinel-2 瓷砖并尝试使用 terra::mosaic() 将它们组合在一起。我从两个 SpatRaster 开始:
> sent1
class : SpatRaster
dimensions : 10980, 10980, 7 (nrow, ncol, nlyr)
resolution : 10, 10 (x, y)
extent : 399960, 509760, 6290220, 6400020 (xmin, xmax, ymin, ymax)
coord. ref. : WGS 84 / UTM zone 9N (EPSG:32609)
source : T09VVD_2022_mean.tif
names : B02, B03, B04, B05, B06, B07, ...
min values : 0, 0, 29, 379.8125, 523.3125, 385.875, ...
max values : 10456, 9464, 15768, 13930.6875, 15912.1250, 16714.938, ...
> sent2
class : SpatRaster
dimensions : 10980, 10980, 7 (nrow, ncol, nlyr)
resolution : 10, 10 (x, y)
extent : 399960, 509760, 6390240, 6500040 (xmin, xmax, ymin, ymax)
coord. ref. : WGS 84 / UTM zone 9N (EPSG:32609)
source : T09VVE_2022_mean.tif
names : B02, B03, B04, B05, B06, B07, ...
min values : 0, 211, 1, 379.125, 331.3125, 342.75, ...
max values : 9104, 8448, 10480, 12210.500, 16052.9375, 16814.38, ...
注意每个波段的最小-最大值有何不同。
sent3 <- mosaic(sent1, sent2)
> show(sent3)
class : SpatRaster
dimensions : 20982, 10980, 7 (nrow, ncol, nlyr)
resolution : 10, 10 (x, y)
extent : 399960, 509760, 6290220, 6500040 (xmin, xmax, ymin, ymax)
coord. ref. : WGS 84 / UTM zone 9N (EPSG:32609)
source : spat_fubTXtzTOH0dho5_70406.tif
names : B02, B03, B04, B05, B06, B07, ...
min values : 355.6161, 355.6161, 355.6161, 355.6161, 355.6161, 355.6161, ...
max values : 12130.0361, 12130.0361, 12130.0361, 12130.0361, 12130.0361, 12130.0361, ...
现在看看所有波段如何具有相同的值。当我尝试在 R 或 QGIS 中绘制它时,所有波段看起来都一样,这显然不是所需的输出。
总的来说,我正在处理几个非常大的文件,因此我在 HPC 上运行。我将其中两个文件传输到本地计算机上进行测试,这是同样的问题。我安装了 Terra 的当前开发版本,并且只加载了“terra”和“here”包。我尝试制作一个可重现的示例,但无法弄清楚如何为多波段栅格生成虚拟数据。如果您有任何建议,请让我知道!如果有帮助的话,我可以提供两个哨兵文件,但每个文件都 >3GB。
您尚未提供数据。所以,我无法测试我的代码。您可以尝试以下代码:
library(terra)
setwd("...") #Provide the directory containg the the tif files
files <- list.files(".\\", pattern='tif$',
full.names = TRUE)
x <- sprc(files)
m <- mosaic(x)