Использование данных HDF в r

Я пытаюсь загрузить и отобразить данные о модисе здесь http://orca.science.oregonstate.edu/1080.by.2160.monthly.hdf.vgpm.s.chl.a.sst.php

Я регулярно использую файлы.nc с веб-сайта Ocean Color, но я не могу работать с файлами hdf таким же образом. Можно ли конвертировать hdf в растр?

gdalinfo("~vgpm.2008245.hdf")
gdal_translate(sds, dst_dataset = "~test.tiff")

sh: -c: строка 0: неожиданный EOF при поиске соответствия `` '
sh: -c: строка 1: синтаксическая ошибка: неожиданный конец файла
НОЛЬ

rast <- raster("~test.tiff")

Ошибка в.local(.Object, ...):

Ошибка в.rasterObjectFromFile(x, band = band, objecttype = "RasterLayer",:
Невозможно создать объект RasterLayer из этого файла. (файл не существует)

Я попробовал совет здесь Чтение файлов hdf в R и преобразование их в растры geoTIFF

и получил эту ошибку: sh: -c: строка 0: неожиданный EOF при поиске соответствия ``' sh: -c: строка 1: синтаксическая ошибка: неожиданный конец файла

Я также попробовал предложение здесь Преобразование HDF в файл с географической привязкой (geotiff, shapefile), и ошибка: Ошибка в.rasterObjectFromFile(x, band = band, objecttype = "RasterLayer",: Невозможно создать объект RasterLayer из этого файла.

Я просто хочу извлечь данные и построить данные производительности для данного местоположения с течением времени на линейном графике вместе с другими данными, которые у меня есть...
благодарю вас

1 ответ

В Windows (и Linux, если установлены драйверы hdf) вам не нужно конвертировать эти файлы. Вы можете использовать их напрямую

library(raster)
x <- raster("vgpm.2008245.hdf")
x
#class      : RasterLayer 
#dimensions : 1080, 2160, 2332800  (nrow, ncol, ncell)
#resolution : 1, 1  (x, y)
#extent     : 0, 2160, 0, 1080  (xmin, xmax, ymin, ymax)
#crs        : NA 
#source     : vgpm.2008245.hdf 
#names      : vgpm.2008245 

Как вы указали в комментариях, экстент не является правильным (и CRS не определен; флаг NA также не установлен). Вы можете исправить это так.

extent(x) <- extent(-180, 180, -90, 90)
crs(x) <- "+proj=longlat +datum=WGS84"
NAvalue(x) <- -9999

x
#class      : RasterLayer 
#dimensions : 1080, 2160, 2332800  (nrow, ncol, ncell)
#resolution : 0.1666667, 0.1666667  (x, y)
#extent     : -180, 180, -90, 90  (xmin, xmax, ymin, ymax)
#crs        : +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0 
#source     : vgpm.2008245.hdf 
#names      : vgpm.2008245 

И если вы хотели бы TIF вы могли бы тогда сделать

 r <- writeRaster(x, "vgpm.2008245.tif"

Это не работало на окнах в прошлом. И, видимо, он не работает на Mac из коробки --- в зависимости от того, как вы устанавливаете GDAL. Я думаю, что вам нужно использовать homebrew для установки gdal2, используя "--with complete"

Другие вопросы по тегам