Как извлечь исторические данные о погоде на основе определенных долгот и широт?

#r #weather

#r #Погода

Вопрос:

Мне нужно извлекать исторические данные о погоде ежемесячно, с 2001 по 2018 год, на основе конкретных местоположений в Европе (все местоположения находятся в море). У меня есть долгота и широта, сохраненные в отдельных столбцах:

 longitude    latitude

55.2000       6.8500
52.6450       1.7870
53.1350       1.1470
55.3430       10.95580
  

Я заглянул в пакет RNCEP в R, в котором хранятся данные о погоде. Но для их извлечения мне нужно вставить интервал для широты и долготы (например, от 0 до 60), который получает данные о погоде с шагом 2,5 для широты и долготы. Как я могу извлечь их для точной широты и долготы, которые мне нужны?

Это код, который извлекает данные о погоде с шагом 2,5.

 #Define limits for latitude and longitude
min_lat <- min(data$latitude, na.rm = TRUE)
max_lat <- max(data$latitude, na.rm = TRUE)

min_lon <- min(data$longitude, na.rm = TRUE)
max_lon <- max(data$longitude, na.rm = TRUE)

# define arguments for latitude and longitude
lat_range <- c(min_lat, max_lat)
lon_range <-c(min_lon, max_lon)

# get monthly air temperature between 2001 and 2018
weather <- NCEP.gather(variable = "air.sig995", level = "surface", months.minmax = c(1,12),
                       years.minmax = c(2001,2018), lat.southnorth =lat_range,
                       lon.westeast = lon_range)

# dimensions (obs. at time 00:00, 6:00, 12:00, 18:00 each day)
dim(weather) #creates 3 dimensions [lat, lon, time]

# extract date and time based on created weather dataset
date_time <- dimnames(weather)[[3]]
# format UTC date
date_time <- ymd_h(date_time)

# extract longitude amp; latitude based on created weather dataset
lat <- dimnames(weather)[[1]] # in increments of 2.5
lon <- dimnames(weather)[[2]] # in increments of 2.5

#Calculate the mean daily air temp. of the different times of day
w <- NCEP.aggregate(weather, YEARS = TRUE, MONTHS = TRUE, HOURS = FALSE, fxn='mean')

#Visualize temperature as heatmap for 1 day
NCEP.vis.area(w, layer = 1, show.pts = TRUE, draw.contours = TRUE, cols = heat.colors(64), transparency = 0.4)
  

Мой результат просто извлекает исторические данные о погоде для всего региона, устанавливая диапазон для долготы и широты. Но мне нужны погодные условия (например, средняя температура за месяц) для точных местоположений на основе моих столбцов долготы и широты за каждый месяц за все годы (с 2001 по 2018 год). Возможно ли это сделать с помощью пакета RNCEP? Или какие другие варианты я мог бы попробовать?

Конечные результаты должны быть похожи на это:

 longitude    latitude   month  year  temperature

55.2000       6.8500     1     2001    20
55.2000       6.8500     2     2001    20
55.2000       6.8500     3     2001    20

...

55.2000       6.8500     1     2018    20

...

52.6450       1.7870     2

...

  

Я открыт для любого предложения, которое могло бы приблизить be к решению, а не только к окончательному решению проблемы. Спасибо.

Ответ №1:

Невозможно получить более детальную информацию с RNCEP . Этот модуль запрашивает из набора данных NCEP / NCAR Reanalysis и reanalysis 2, и, копаясь в этих сайтах, похоже, что вы не можете получить более детализированные данные, чем 2.5 x 2.5, с данными уровня поверхности: повторный анализ 2 / Reanalysis.

Если вы отфильтруете наборы данных NOAA по температуре и выберете представление атрибутов, вы сможете использовать несколько других наборов данных. Некоторые имеют разную временную детализацию, а некоторые не поддерживаются в актуальном состоянии. Я собираюсь попробовать этот набор данных GHCNCAMS для своих нужд, потому что он имеет зернистость 0,5×0,5 градуса. Для прямого доступа к данным(вам необходимо получить доступ к NOAA через ftp, затем прочитайте о формате файла / инструментах NetCDF. На сайте NOAA также есть много ссылок / страниц

Также ознакомьтесь с этим ответом opendata.stackexchange о некоторых других местах, где вы могли бы найти эти данные.