Из того, что я вижу, значения, которые вы получаете с помощью "R / raster", верны. Вы используете продукт MODIS "Температура поверхности земли" (LST), и для LST используется единица измерения K (Кельвин). Это делает значения, предоставленные raster
разумными (возможно, немного высокими для того времени года, но MODIS LST не очень надежен).
MODIS преобразует фактические значения, чтобы сохранить их как 2-байтовые целые числа и, таким образом, уменьшить размер файла. Я думаю, что вы ожидали этих преобразованных значений, потому что это то, что может дать вам другое программное обеспечение. Однако «растр» применяет scale
из 0.02
для возврата истинных значений. Как вы можете видеть здесь , допустимый диапазон равен
c(7500, 65535) * 0.02
#[1] 150.0 1310.7
Подтверждение того, что растр делает все правильно, и, я бы сказал, другое программное обеспечение этого не делает.
Я получаю аналогичные значения, используя пакеты luna (на github) и terra (на CRAN) (здесь руководство для данных MODIS )
library(luna)
aoi <- c(-4.41, -3.59, 43.88, 44.31)
# you need a username and password for downloads
mf <- luna::getModis(product, start, end, aoi=aoi, download=TRUE,
path=".", username=user, password=pwd)
mf
# "./MOD11A2.A2000049.h17v04.006.2015058135051.hdf"
r <- rast(mf)
lst <- r[["LST_Day_1km"]]
# Kelvin to C
lst <- lst - 273.15
lst
#class : SpatRaster
#dimensions : 1200, 1200, 1 (nrow, ncol, nlyr)
#resolution : 926.6254, 926.6254 (x, y)
#extent : -1111951, 0, 4447802, 5559753 (xmin, xmax, ymin, ymax)
#coord. ref. : +proj=sinu +lon_0=0 +x_0=0 +y_0=0 +a=6371007.181 +b=6371007.181 +units=m +no_defs
#data source : memory
#names : LST_Day_1km
#min values : -3.95
#max values : 29.79