Я использовал программное обеспечение paleoview, чтобы загрузить некоторые переменные из прошлого климата, в том числе средняя температура от 15000BP-10000BP (я мог бы загрузить файл по запросу, но не менее ГБ).
Основная проблема в том, что когда я читаю растр, он содержит только положительную широту и положительную долготу. Я знаю из статьи, что это разрешение 2,5 * 2,5.
Использование растра
Я загрузил и растровые библиотеки, и библиотеки ncdf4, чтобы читать их с помощью растра.
library(raster)
library(ncdf4)
Когда я прочитал его, используя следующий код
r <- raster("mean_temperature-15000BP-10000BP.nc", varname = "14000BP-13000BP/13300BP")
Я получаю следующую информацию
r
class : RasterLayer
band : 1 (of 12 bands)
dimensions : 72, 144, 10368 (nrow, ncol, ncell)
resolution : 1, 1 (x, y)
extent : 0.5, 144.5, 0.5, 72.5 (xmin, xmax, ymin, ymax)
coord. ref. : +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0
names : Mean.Temperature
z-value : 1
zvar : 14000BP-13000BP/13300BP
Как вы видите, степень только положительная, но я знаю, что в ней есть данные для всего мира, когда я рисую карту, я получаю следующее изображение:
plot(r)
который ясно показывает закономерности, ожидаемые с полярными кругами, имеющими чрезвычайно низкие температуры, а Антарктида больше, чем Арктика.
очевидно, что + proj = longlat + datum = WGS84 + ellps = WGS84 + towgs84 = 0,0,0 здесь неверен, и я думаю, что если я выясню, каковы фактические координаты . ref. Я мог бы перепроецировать его и получить растр в правильном формате
Использование ncdf4
Я пробовал работать с пакетом ncdf4, чтобы получить дополнительную информацию из слоя, и вот что я сделал:
nc <- nc_open("mean_temperature-15000BP-10000BP.nc")
После прочтения слоя с помощью функции nc_open я вижу имена переменных, чтобы попытаться понять больше слоев, здесь я показываю первые 10
names(nc$var)[1:10]
[1] "window" "width" "decimals" "months" "latitudes" "longitudes" "15100BP-15000BP/15100BP" "15100BP-15000BP/15099BP"
[9] "15100BP-15000BP/15098BP" "15100BP-15000BP/15097BP"
Итак, если я продолжу искать и перейду к названиям широты и долготы, я получу:
ncatt_get(nc, attributes(nc$var)$names[5])
$units
[1] "degrees north"
а также
ncatt_get(nc, attributes(nc$var)$names[6])
$units
[1] "degrees east"
Любая идея о том, как перепроецировать эти растры, чтобы получить широту от -90, 90 и долготу от -180 до 180, которую вы ожидаете в + proj = longlat + ellps = WGS84 + datum = WGS84 + no_defs + towgs84 = 0 , 0,0 проекции

print(nc)? - person Tung   schedule 20.08.2018