Только положительные широта и долгота при импорте netcdf в R из paleoView, вероятно, неправильная проекция

Я использовал программное обеспечение 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 проекции


person Derek Corcoran    schedule 20.08.2018    source источник
comment
Вы тоже можете опубликовать вывод print(nc)?   -  person Tung    schedule 20.08.2018
comment
Эти ссылки могут помочь stackoverflow.com/q/31549880/786542 | gis.stackexchange.com/q/284224/1269   -  person Tung    schedule 20.08.2018
comment
cran.r-project.org/web/packages/futureheatwaves/ виньетки /   -  person Tung    schedule 20.08.2018


Ответы (1)


Чтобы исправить это, вы можете установить экстент:

library(raster)
r <- raster("mean_temperature-15000BP-10000BP.nc",  varname = "14000BP-13000BP/13300BP")
extent(r) <- c(-180,180,-90,90)

Но обратите внимание, что иногда долгота в климатических данных идет от 0 до 360 (я думаю, не здесь):

extent(r) <- c(0,360,-90,90)
r <- rotate(r)

Чтобы узнать больше о том, что находится в ncdf, вы можете сделать

print(r)

Конечно, вы хотите сделать это только в том случае, если действительно уверены в масштабах, и вы можете связаться с поставщиком данных, чтобы сообщить об этой проблеме.

person Robert Hijmans    schedule 21.08.2018