Перепроецируйте данные MODIS с помощью R (результаты в NA или без пространственного экстента)

Я использую данные GLASS об альбедо, хранящиеся здесь до 2000 г. ( AVHRR) и здесь для данных после 2000 г. (МОДИС). Моя конечная цель — создать растровый стек каждого месяца, содержащий данные альбедо белого неба за 1982–2015 годы. Проблема, с которой я столкнулся, заключается в том, что данные MODIS и AVHRR находятся в разных системах пространственной привязки, и я не могу перепроецировать их так, чтобы они находились в одной и той же системе.

Я конвертирую из hdf в tif с помощью R следующим образом:

fileavhrr <- ".../GLASS02B05.V04.A1990161.2018062.hdf"
filemodis<-".../GLASS02B06.V04.A2013169.2017128.hdf"
gdal_translate(get_subdatasets(filemodis)[10], dst_dataset =
        ".../modis.tif") 
gdal_translate(get_subdatasets(fileavhrr)[8], projwin = c(-180,90,180,50), dst_dataset = ".../avhrr.tif") #ideally I'd only like data north of 50 degrees

avhrr<- raster(".../avhrr.tif")

#class       : RasterLayer 
#dimensions  : 800, 7200, 5760000  (nrow, ncol, ncell)
#resolution  : 0.05, 0.05  (x, y)
#extent      : -180, 180, 50, 90  (xmin, xmax, ymin, ymax)
#coord. ref. : +proj=longlat +ellps=clrk66 +no_defs 
#values      : -32768, 32767  (min, max)

modis<- raster(".../modis.tif")

#class       : RasterLayer   
#dimensions  : 3600, 7200, 25920000  (nrow, ncol, ncell) 
#resolution  : 154.4376, 308.8751  (x, y)  
#extent   : -20015109, -18903159, 8895604, 10007555  (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   
#values      : -32768, 32767  (min, max)

Вот что я пробовал:

1.) Используйте Инструмент репроецирования MODIS. По какой-то причине этот инструмент считает, что поднаборы файлов MODIS .hdf представляют собой только одну плитку (самая верхняя левая плитка, плитка 0,0), а не глобальный набор данных. Насколько я понимаю, данные MODIS являются глобальными (не тайлами?), поэтому я не знаю, почему MRT это делает.

2.) Используйте растровый пакет в R.

projectedMODIS <- projectRaster(modis,avhrr,method="bilinear")

Это возвращает растр со значениями, которые все являются NA:

class       : RasterLayer  
dimensions  : 800, 7200, 5760000  (nrow,> ncol, ncell) 
resolution  : 0.05, 0.05  (x, y) 
extent      : -180, 180,> 50, 90  (xmin, xmax, ymin, ymax) 
coord. ref. : +proj=longlat +ellps=clrk66 +no_defs  
values      : NA, NA  (min, max)

3.) Используйте пакет gdalUtils в R:

gdalwarp(srcfile=get_subdatasets(filemodis)[10], dstfile= ".../gdalMODIS_avhrr.tif", s_srs = crs(modis), t_srs =crs(avhrr) )

Это возвращает растр практически без пространственного экстента.

gdalMODISavhrr<-raster(".../gdalMODIS_avhrr.tif")
#class       : RasterLayer 
#dimensions  : 357, 12850, 4587450  (nrow, ncol, ncell)
#resolution  : 0.02801551, 0.02801573  (x, y)
#extent      : -180, 179.9993, 79.99838, 90  (xmin, xmax, ymin, ymax)
#coord. ref. : +proj=longlat +ellps=clrk66 +no_defs 
#values      : -32768, 32767  (min, max)

Любые идеи о том, почему перепроецировать эти данные MODIS так сложно?


person webbe    schedule 28.11.2018    source источник


Ответы (1)


Я не пробовал это, но, глядя на пакет gdalUtils, функция gdalwarp() может делать то, что вам нужно?

person Geraldine    schedule 29.11.2018
comment
Это то, что я пробовал в № 3. Он возвращает растр практически без пространственной протяженности. - person webbe; 29.11.2018
comment
Извините, я пропустил это - однако мне кажется, что это сработало: вы хотели назначить ему проекцию AVHRR, верно? Согласно вашему первому блоку кода, CRS для файла AVHRR равен +proj=longlat +ellps=clrk66 +no_defs (это проекция NAD27, см. стр. 2 nceas.ucsb.edu/~frazier/RSpatialGuides/). И это также проекция, которую показывает ваш последний блок кода. - person Geraldine; 03.12.2018
comment
Если вы хотите использовать пакет raster, как в #3, вам, вероятно, придется заранее захватить нужный слой. Здесь есть некоторое объяснение: khufkens.com/2016 /04/20/modis-hdf-data-extraction-in-r - person Geraldine; 03.12.2018
comment
Код get_subdatasets(filemodis)[10] дает слой. Оказывается, метаданные для наборов данных AVHRR и MODIS неверны. Они должны быть в Geographic CRS. Подробнее об обсуждении здесь: gis.stackexchange.com/questions/304304/ - person webbe; 04.12.2018