У меня есть файл netcdf с тремя измерениями (время, долгота, широта):
3 измерения: время Размер: 14610 *** не ограничено *** time_origin: 31-DEC-1979: 18: 00: 00 long_name: t calendar: стандартные единицы: часы с 1979-01-01 00:00:00 lat Размер : 201 интервал между точками: четные единицы: северные градусы стандартное_имя: широта long_name: широта долгота Размер: 641 интервал между точками: четные единицы: градусы_ восток стандартное_имя: долгота long_name: долгота
Странно то, что долгота хранится от -80 до +80:
lon <- ncvar_get(nc_data,"lon")#[LonIdx]
head(lon)
-80.00 -79.75 -79.50 -79.25 -79.00 -78.75
tail(lon)
78.75 79.00 79.25 79.50 79.75 80.00
dim(lon)
641
Я хочу применить индекс долготы / широты для средней Европы, используя:
LonIdx <- c(which( nc_data$dim$lon$vals < -77.5) , which( nc_data$dim$lon$vals > 77.5) )
LatIdx <- which( nc_data$dim$lat$vals > 35 & nc_data$dim$lat$vals < 50)
lon <- ncvar_get(nc_data,"lon")[LonIdx]
nlon <- dim(lon)
head(lon)
-80.00 -79.75 -79.50 -79.25 -79.00 -78.75
tail(lon)
78.75 79.00 79.25 79.50 79.75 80.00
dim(lon)
[1] 20
пока все хорошо, но когда я хочу построить его с помощью графика уровня, результат испорчен, я предполагаю, потому что долгота сохраняется таким образом, а не от 0-360 (градусы восточной долготы)
grid <- expand.grid(lon=lon2, lat=lat2)
# Plots
# December, January, February
cutpts <- seq(
min(dec_jan_feb_mat),round(max(dec_jan_feb_mat),1),length.out = 9)
plt1 <- levelplot(dec_jan_feb_mat ~ lon * lat, data=grid, at=cutpts, cuts=5, pretty=T,
col.regions= c(brewer.pal(8,"YlGnBu")), margin=F,
main="1980-2019 (December, January, February) - Precipitation mean", xlab = "longitude",
ylab = "latitude")
DJF_plot_precip <- plt1 + latticeExtra::layer(sp.lines(countries, col="black",
lwd=1.0))
DJF_plot_precip
Как мне соответствующим образом преобразовать долготу, чтобы я мог построить свои результаты?
С уважением