使用 Terra R 包对多波段 Sentinel-2 栅格进行马赛克会导致所有波段具有相同的值

问题描述 投票:0回答:1

我有一个让我发疯的问题,我一生都无法解决。我正在处理大型 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。

r gis terra sentinel2
1个回答
0
投票

您尚未提供数据。所以,我无法测试我的代码。您可以尝试以下代码:

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)
© www.soinside.com 2019 - 2024. All rights reserved.