Как запросить NOAA для исторических среднесуточных температур, используя rnoaa? - PullRequest
0 голосов
/ 02 февраля 2019

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

Я использую пакет rnoaa и столкнулся с проблемой.Для долгосрочных средних я успешно использовал следующий синтаксис:

library('rnoaa')

start_date = "2010-01-15"
end_date = "2010-11-14"
station_id = "USW00093738"

weather_data <- ncdc(datasetid='NORMAL_DLY', stationid=paste0('GHCND:',station_id),
                     datatypeid='dly-tavg-normal',
                     startdate = start_date, enddate = end_date,limit=365)

Это позволяет мне анализировать weather_data$data долгосрочных средних температур для данной станции в период с 15 января по 14 ноября.

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

Я попробовал следующее:

weather_data <- ncdc(datasetid='GHCND', stationid=paste0('GHCND:',station_id),
                     startdate = start_date, enddate = end_date,limit=365)

uniq_d_types = unique(weather_data$data$datatype)
View(uniq_d_types)

Это позволило мне увидеть уникальные типы данных в наборе данных GHCND.но ни один из типов данных, казалось, не был среднесуточной температурой.Есть мысли?

Ответы [ 2 ]

0 голосов
/ 11 марта 2019

Ответ заключается в получении исторических (то есть фактических, в указанный день - не долгосрочных средних) данных о погоде из базы данных ISA NOAA.Значения USAF и WBAN можно найти, просмотрев файл isd-history.csv, найденный здесь:

ftp: //ftp.ncdc.noaa.gov/pub/data/noaa

Вот пример запроса.

out <- isd(usaf='724030', wban = '93738', year=2018)

Это позволит получить почасовые данные о погоде из карт ISD за многие годы.Затем вы можете проанализировать / обработать эти данные так, как считаете нужным (например, для среднесуточных температур, как я).

0 голосов
/ 03 февраля 2019

Чтобы получить среднесуточные фактические температуры из данных NOAA с использованием пакета rnoaa, необходимо использовать почасовые данные и агрегировать их по дням.Почасовые данные NOAA находятся в наборе данных NORMAL_HLY, а требуемый тип данных - HLY-TEMP-NORMAL.

library('rnoaa')
library(lubridate)
options(noaakey = "obtain key from NOAA website")

start_date = "2010-01-15"
end_date = "2010-01-31"
station_id = "USW00093738"

weather_data <- ncdc(datasetid='NORMAL_HLY', stationid=paste0('GHCND:',station_id),
                     datatypeid = "HLY-TEMP-NORMAL",
                     startdate = start_date, enddate = end_date,limit=500)
data <- weather_data$data 

data$year <- year(data$date)
data$month <- month(data$date)
data$day <- day(data$date)
# summarize to average daily temps
aggregate(value ~ year + month + day,mean,data = data)

... и вывод:

> aggregate(value ~ year + month + day,mean,data = data)
   year month day    value
1  2010     1  15 323.5417
2  2010     1  16 322.8750
3  2010     1  17 323.4167
4  2010     1  18 323.7500
5  2010     1  19 323.2083
6  2010     1  20 321.0833
7  2010     1  21 318.4167
8  2010     1  22 317.6667
9  2010     1  23 319.0000
10 2010     1  24 321.0833
11 2010     1  25 323.5417
12 2010     1  26 326.0833
13 2010     1  27 328.4167
14 2010     1  28 330.9583
15 2010     1  29 333.2917
16 2010     1  30 335.7917
17 2010     1  31 308.0000
> 

Обратите внимание, что температурыхранятся в десятых долях градуса в этом наборе данных, поэтому за период с 15 по 31 января 2010 года среднесуточные температуры на метеостанции международного аэропорта имени Даллеса составляли от 30,8 до 33,5 градусов.

Также обратите внимание, что для вычисления среднего значения по stationId и работы с несколькими метеостанциями просто добавьте station к функции aggregate().

> # summarize to average daily temps by station
> aggregate(value ~ station + year + month + day,mean,data = data)
             station year month day    value
1  GHCND:USW00093738 2010     1  15 323.5417
2  GHCND:USW00093738 2010     1  16 322.8750
3  GHCND:USW00093738 2010     1  17 323.4167
4  GHCND:USW00093738 2010     1  18 323.7500
5  GHCND:USW00093738 2010     1  19 323.2083
6  GHCND:USW00093738 2010     1  20 321.0833
7  GHCND:USW00093738 2010     1  21 318.4167
8  GHCND:USW00093738 2010     1  22 317.6667
9  GHCND:USW00093738 2010     1  23 319.0000
10 GHCND:USW00093738 2010     1  24 321.0833
11 GHCND:USW00093738 2010     1  25 323.5417
12 GHCND:USW00093738 2010     1  26 326.0833
13 GHCND:USW00093738 2010     1  27 328.4167
14 GHCND:USW00093738 2010     1  28 330.9583
15 GHCND:USW00093738 2010     1  29 333.2917
16 GHCND:USW00093738 2010     1  30 335.7917
17 GHCND:USW00093738 2010     1  31 308.0000
> 
...