R 和 QGIS 之间栅格值的差异

Difference in raster values between R and QGIS

我想问一下关于 R 和 QGIS 导入栅格文件的方式的基本问题。

我有一个波段光栅。当我将它导入 R 时,使用光栅包的 "raster" 函数,我得到了这个像素值范围:

class       : RasterLayer 
dimensions  : 10980, 10980, 120560400  (nrow, ncol, ncell)
resolution  : 10, 10  (x, y)
extent      : 6e+05, 709800, 5590200, 5700000  (xmin, xmax, ymin, ymax)
coord. ref. : +proj=utm +zone=31 +datum=WGS84 +units=m +no_defs +ellps=WGS84 +towgs84=0,0,0 
data source : /data/MTDA/CGS_S2_RADIOMETRY/2017/10/15/S2B_20171015T104525Z_31UFS_TOC_V100/S2B_20171015T104525Z_31UFS_TOC-B02_10M_V100.tif 
names       : S2B_20171015T104525Z_31UFS_TOC.B02_10M_V100 
values      : -32768, 32767  (min, max)

当我在光栅砖中堆叠这一层时,我得到了这些最​​小-最大值:

class       : RasterLayer 
band        : 2  (of  11  bands)
dimensions  : 10980, 10980, 120560400  (nrow, ncol, ncell)
resolution  : 10, 10  (x, y)
extent      : 6e+05, 709800, 5590200, 5700000  (xmin, xmax, ymin, ymax)
coord. ref. : +proj=utm +zone=31 +datum=WGS84 +units=m +no_defs +ellps=WGS84 +towgs84=0,0,0 
data source : /tmp/Rtmp882dZS/raster/r_tmp_2017-11-10_172819_11532_86514.grd 

names       : S2B_20171015T104525Z_31UFS_TOC.B02_10M_V100 
values      : -1129, 9994  (min, max)

但是,如果我在 QGIS 中加载相同的栅格,则最小值为 228,最大值为 907(我使用 "Extent: Full" 和 "Accuracy: Actual (slower)" 选项计算这些值。

那么,这些差异从何而来?我不明白 R 和 QGIS 在做什么...

对于第一个对象,最小值和最大值未知,因为文件未提供(或不正确)。使用 RasterLayer r 你可以

 r <- setMinMax(r)

看看他们是什么。如果它们与您显示的第二层不一样,那么您可能混淆了一些东西。弄清楚这些东西后,与QGIS比较可能会有用。为此,您可能需要提供示例文件。

最后,我发现有什么不同! 当询问 R 时,我得到了真实的 min/max 值。相反,QGIS 使用累积计数计算 min/max 值。当我将 "Load min/max values"(在栅格属性 window 中)设置为 "Min/Max" 时,我得到了 R 显示的相同值。