Использование данных 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"