R - построить данные netcdf4 в пространстве с координатной сеткой широты и долготы

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

Я хотел бы построить максимальные температуры по Европе в данный n день.

Доступ к данным можно получить здесь http://www.ecad.eu/download/ensembles/data/Grid_0.44deg_rot/tx_0.44deg_rot_v16.0.nc.gz (258 МБ.. извините).

Это файл netcdf с 3 измерениями и 4 переменными.

Вот что я сделал:

library(ncdf4)
max_tmp_0_44_deg = "tx_0.44deg_rot_v16.0.nc"
max_tmp_0_44_deg = nc_open(max_tmp_0_44_deg)

# create variables
temp = ncvar_get(max_tmp_0_44_deg, 'tx')
lon = ncvar_get(max_tmp_0_44_deg, 'Actual_longitude')
lat = ncvar_get(max_tmp_0_44_deg, 'Actual_latitude')
time = ncvar_get(max_tmp_0_44_deg, 'time')

Как я могу построить сетку (широта и долгота) максимальных температур в данный день?

max_day = temp[,,30]   #subset max temp on the 30th day

Тогда как я могу построить max_day?

Это должно быть довольно просто, но я пока не нашел решения.

спасибо


person aaaaa    schedule 19.11.2017    source источник


Ответы (1)


Вы можете использовать функцию image:

temp_use <- temp[,,30]
temp_use <- round(temp_use)

n_colors <- length(table(temp_use))
image(temp_use,
    col = heat.colors(n_colors),
    xaxt = "n",
    yaxt = "n")
temp_max <- temp_use == max(temp_use, na.rm = T) & !is.na(temp_use)
temp_max[temp_max == F] <- NA
image(temp_max,
    add = T,
    col = "blue",
    xaxt = "n",
    yaxt = "n")

введите здесь описание изображения

person tobiasegli_te    schedule 19.11.2017
comment
большое спасибо. однако кажется, что цветовой градиент инвертирован, то есть горячий = желтый, а красный = холодный. как я могу снова инвертировать? Благодарю. - person aaaaa; 19.11.2017
comment
Используйте col = rev(heat.colors(n_colors)) вместо col = heat.colors(n_colors) - person tobiasegli_te; 19.11.2017
comment
Кстати, вы можете легко определить свою собственную цветовую палитру (например, от синего до серого и красного), используя что-то вроде col = colorRampPalette(c("blue","grey","red"))(n_colors) - person tobiasegli_te; 19.11.2017
comment
есть ли простой способ перекрыть контуры карт Европы? - person aaaaa; 19.11.2017
comment
Я предлагаю вам открыть новый вопрос для этого - person tobiasegli_te; 19.11.2017
comment
новый вопрос здесь stackoverflow.com/ вопросы/47453516/ - person aaaaa; 23.11.2017