ecmwf-opendata
-это пакет для упрощения загрузки ECMWF Open Data. Он реализует интерфейс, основанный на запросах, к набору данных с использованием языка MARS ECMWF для выбора метеорологических полей, аналогично существующему пакету Python ECMWF-API-Client.
Коллекция ноутбуков Jupyter, которые используют этот пакет, доступна здесь.
Пакет Pyphon ecmwf-opendata
может быть установлен из PYPI с:
$ pip install ecmwf-opendata
Приведенный ниже пример будет загружать последний доступный 10-дневный прогноз для среднего давления на уровне моря ( msl
) в локальный файл с именем data.grib2
:
from ecmwf . opendata import Client
client = Client ()
client . retrieve (
step = 240 ,
type = "fc" ,
param = "msl" ,
target = "data.grib2" ,
)
❗ Примечание: этот пакет предназначен для пользователей, которые хотят загрузить подмножество всего набора данных. Если вы планируете загрузить большой процент каждого файла данных, может быть более эффективным загружать целые файлы и отфильтровать данные, которые вы хотите локально. См. Документацию по Конвенции о именовании файла для получения дополнительной информации. В качестве альтернативы, вы можете использовать этот инструмент для загрузки целых файлов, только указав
date
,time
,step
,stream
иtype
. Имейте в виду, что все данные на целый день находятся в порядке 726 GIB.
Конструктор объекта клиента принимает следующие параметры:
client = Client (
source = "ecmwf" ,
model = "ifs" ,
resol = "0p25" ,
preserve_request_order = False ,
infer_stream_keyword = True ,
)
где:
source
- это либо имя сервера для контакта, либо полностью квалифицированный URL. Возможными значениями являются ecmwf
для доступа к серверам ECMWF или azure
для доступа к данным, размещенным на Microsoft Azure. По умолчанию ecmwf
.
model
- это название модели, которая создала данные. Используйте ifs
для физической модели и aifs
для модели, управляемой данными. Обратите внимание, что aifs
в настоящее время экспериментально и производит только небольшое подмножество полей. По умолчанию ifs
.
resol
Указывает разрешение данных. По умолчанию 0p25
для разрешения 0,25 градуса и является единственным разрешением, которое в настоящее время доступно.
preserve_request_order
. Если этот флаг установлен на True
, библиотека попытается записать полученные данные в целевой файл в порядке, указанном в запросе. Например, если запрос указывает param=[2t,msl]
библиотека обеспечит, чтобы поле 2t
было первым в целевом файле, в то время как с param=[msl,2t]
, поле msl
будет первым. Это также работает по разным ключевым словам: ...,levelist=[500,100],param=[z,t],...
будет создавать различные выводы для ...,param=[z,t],levelist=[500,100],...
если флаг установлен на False
, библиотека сортирует запрос, чтобы минимизировать количество HTTP -запросов, сделанных на сервер, что приведет к более высокой скорости загрузки. По умолчанию False
.
infer_stream_keyword
. Ключевое слово stream
представляет систему прогнозирования ECMWF, которая создает данные. Установка его правильно требует знания о том, как ECMWF выполняет свои операции. Если этот логический подставщик установлен на True
, библиотека попытается сделать вывод правильного значения для ключевого слова stream
на основе остальной части запроса. По умолчанию True
если модель ifs
.
️ ПРИМЕЧАНИЕ. Рекомендуется не устанавливать флагpreserve_request_order
наTrue
при загрузке большого количества полей, так как это добавит дополнительную нагрузку на серверы.
Client.retrieve()
Метод Client.retrieve()
принимает запрос в качестве ввода и будет извлекать соответствующие данные с сервера и записывать их в целевом файле пользователя.
Запрос - это список пар ключевых слов/значений, используемых для выбора нужных данных. Можно указать список значений для данного ключевого слова.
Запрос может быть указан как словарь:
from ecmwf . opendata import Client
client = Client ( source = "ecmwf" )
request = {
"time" : 0 ,
"type" : "fc" ,
"step" : 24 ,
"param" : [ "2t" , "msl" ],
}
client . retrieve ( request , "data.grib2" )
# or:
client . retrieve (
request = request ,
target = "data.grib2" ,
)
или непосредственно в качестве аргументов метода retrieve()
:
from ecmwf . opendata import Client
client = Client ( source = "ecmwf" )
client . retrieve (
time = 0 ,
type = "fc" ,
step = 24 ,
param = [ "2t" , "msl" ],
target = "data.grib2" ,
)
Ключевое слово date
и time
используется для выбора даты и времени запуска прогноза (см. Дату и время ниже). Если date
или date
и time
не указаны, библиотека запросит сервер для последних соответствующих данных. date
и time
загруженного прогноза возвращаются методом retrieve()
.
from ecmwf . opendata import Client
client = Client ( source = "ecmwf" )
result = client . retrieve (
type = "fc" ,
step = 24 ,
param = [ "2t" , "msl" ],
target = "data.grib2" ,
)
print ( result . datetime )
May Print 2022-01-23 00:00:00
.
Client.download()
Метод Client.download()
принимает те же параметры, что и метод Client.retrieve()
, но будет загружать все файлы данных с сервера, игнорируя ключевые слова, такие как param
, levelist
или number
.
Приведенный ниже пример будет загружать все поле с последнего временного шага 24, игнорируя ключевое слово param
:
from ecmwf . opendata import Client
client = Client ( source = "ecmwf" )
client . download (
param = "msl" ,
type = "fc" ,
step = 24 ,
target = "data.grib2" ,
)
Client.latest()
Метод Client.latest()
принимает те же параметры, что и метод Client.retrieve()
, и возвращает дату самого последнего соответствующего прогноза без загрузки данных:
from ecmwf . opendata import Client
client = Client ( source = "ecmwf" )
print ( client . latest (
type = "fc" ,
step = 24 ,
param = [ "2t" , "msl" ],
target = "data.grib2" ,
))
May Print 2022-01-23 00:00:00
.
⏰ Примечание : данные доступны через 7 и 9 часов после даты и времени начала прогноза, в зависимости от системы прогнозирования и указанного временного шага.
Поддерживаемые ключевые слова:
type
: тип данных (обязательный, по умолчанию в fc
).stream
: прогнозирующая система (необязательная, если однозначная, иначе, иначе). Смотрите infer_stream_keyword
выше.date
: дата, с которой начинается прогноз.time
: время, в которое начинается прогноз.step
: прогнозируемый шаг в часах, или fcmonth
, временный шаг за месяцы для сезонного прогноза (обязательный, по умолчанию до 0
и 1
соответственно).и (все необязательно, без по умолчанию):
param
: Метеорологические параметры, такие как ветер, давление или влажность.levtype
: выберите между одноуровневыми параметрами и параметрами на уровнях давления.levelist
: список уровней давления, когда это уместно.number
: список номеров участников ансамбля, когда это уместно.Ключевые слова в первом списке используются для определения того, к какому файлу доступ к доступу, в то время как второй список используется для определения того, какие части файлов должны быть фактически загружены. Некоторые HTTP -серверы могут вернуть несколько частей файла, в то время как другие могут вернуть только одну часть из файла. В последнем случае библиотека может выполнять много HTTP -запросов на сервер. Если вы хотите загрузить целые файлы, предоставьте только ключевые слова из первого списка.
Параметры даты и времени относятся к временю начала прогноза. Все даты и время выражаются в UTC.
Есть несколько способов указать дату и время в запросе.
Дата может быть указана с использованием строк, номеров и python datetime.datetime
или datetime.date
объекты:
...
date = '20220125' ,
time = 12 ,
...
date = '2022-01-25' ,
time = 12 ,
...
date = '2022-01-25 12:00:00' ,
...
date = 20220125 ,
time = 12 ,
...
date = datetime . datetime ( 2022 , 1 , 25 , 12 , 0 , 0 ),
...
date = datetime . date ( 2022 , 1 , 25 ),
time = 12 ,
...
Даты также могут быть даны в виде числа меньше или равны нулю. В этом случае это эквивалентно текущей дате UTC за вычетом заданного количества дней:
...
date = 0 , # today
date = - 1 , # yesterday
date = - 2 , # the day before yesterday
...
time
ключевого слова может быть указано в виде строки или целого числа, или объект Python datetime.time
. Все значения времени ниже эквивалентны:
...
time = 12 ,
...
time = 1200 ,
...
time = '12' ,
...
time = '1200' ,
...
time = datetime . time ( 12 ),
...
Список действительных значений для времени |
---|
0, 6, 12 и 18 |
Если time
не указано, время извлечено с даты.
...
date = '2022-01-25 12:00:00' ,
...
эквивалентно:
...
date = '2022-01-25' ,
time = 12 ,
...
Если указано ключевое слово time
, оно переопределяется в любое время, указанное в запросе.
...
date = '2022-01-25 12:00:00' ,
time = 18 ,
...
эквивалентно:
...
date = '2022-01-25' ,
time = 18 ,
...
Как указывалось ранее, если date
или date
и time
не указаны, библиотека запросит сервер для самых последних данных. date
и time
загруженного прогноза возвращаются методом retrieve()
:
Пример без ключевого слова date
:
from ecmwf . opendata import Client
client = Client ( source = "ecmwf" )
result = client . retrieve (
time = 12 ,
type = "fc" ,
param = "2t" ,
step = "24" ,
target = "data.grib2" ,
)
print ( result . datetime )
напечатает 2022-01-22 12:00:00
если пробежать утром 2022-01-23.
Пример без ключевых слов date
и time
:
from ecmwf . opendata import Client
client = Client ( source = "ecmwf" )
result = client . retrieve (
type = "fc" ,
param = "2t" ,
step = "24" ,
target = "data.grib2" ,
)
print ( result . datetime )
Печать 2022-01-23 00:00:00
если пробежать утром 2022-01-23.
ECMWF запускает несколько систем прогнозирования:
Каждый из этих прогнозов также производит несколько типов продуктов, которые упоминаются с использованием stream
ключевых слов и type
.
Допустимые значения для
type
:
HRES:
fc
: Прогноз.ENS:
cf
: Прогноз управления.pf
: Встречаемый прогноз.em
: Ансамбль означает.es
: Стандартное отклонение ансамбля.ep
: вероятности.Допустимые значения для
stream
:
oper
: Атмосферные поля от HRES - 00 UTC и 12 UTC.wave
: Поля океанских волн от HRES - 00 UTC и 12 UTC.enfo
: Атмосферные поля из ENS.waef
: Поля океанских волн от ENS.scda
: Атмосферные поля от HRES - 06 UTC и 18 UTC.scwv
: Поля океанских волн от HRES - 06 UTC и 18 UTC.? ПРИМЕЧАНИЕ . Если флаг клиента
infer_stream_keyword
установлен наTrue
, библиотека выведет поток изtype
иtime
. В этом случае вам просто нужно указатьstream=wave
для доступа к продуктам Ocean Wave и не предоставляйте значение дляstream
в других случаях.
Чтобы выбрать шаг времени, используйте ключевое слово step
:
...
step = 24 ,
...
step = [ 24 , 48 ],
...
Система прогнозирования | Время | Список временных шагов |
---|---|---|
HRES | 00 и 12 | От 0 до 144 на 3, 144 до 240 на 6 |
Эн | 00 и 12 | От 0 до 144 на 3, 144 до 360 на 6 |
HRES | 06 и 18 | От 0 до 90 на 3 |
Эн | 06 и 18 | От 0 до 144 на 3 |
Вероятности - мгновенные погодные явления | 00 и 12 | От 0 до 360 на 12 |
Вероятности - ежедневные погодные явления | 00 и 12 | От 0-24 до 336-360 на 12 |
? Примечание . Не указание
step
вернет все доступные временные шаги.
Чтобы выбрать параметр, используйте ключевое слово param
:
...
param = "msl" ,
...
param = [ "2t" , "msl" ]
...
Для параметров уровня давления используйте ключевое слово levelist
:
...
param = "t" ,
levelist = 850 ,
...
param = [ "u" , "v" ],
levelist = [ 1000 , 850 , 500 ],
...
? Примечание . Не указание
levelist
вернет все доступные уровни, и не указаниеparam
вернет все доступные параметры.
Список уровней давления (HPA) |
---|
1000, 925, 850, 700, 500, 300, 250, 200 и 50 |
Ниже приведен список всех параметров:
Атмосферные поля на уровнях давления
Параметр | Описание | Единицы |
---|---|---|
дюймовый | Дивергенция | S -1 |
GH | Геопотенциальная высота | GPM |
Q. | Конкретная влажность | кг кг -1 |
ведущий | Относительная влажность | % |
Т | Температура | K |
u | U компонент ветра | MS -1 |
V. | V Компонент ветра | MS -1 |
вооружен | Завихренность (родственница) | S -1 |
Атмосферные поля на одном уровне
Параметр | Описание | Единицы |
---|---|---|
10U | 10 -метровой компонент u ветра | MS -1 |
10 В | 10 -метровый компонент ветра | MS -1 |
2T | 2 -метровая температура | K |
MSL | Среднее давление на уровне моря | А |
рост | Сток | м |
накапливаться | Температура кожи | K |
шрифт | Поверхностное давление | А |
ул | Температура почвы | K |
STL1 | Уровень температуры почвы 1 | K |
TCWV | Общий столбец вертикально интегрированный водяной пары | кг м -2 |
тк | Общее количество осадков | м |
Океанские волны поля
Параметр | Описание | Единицы |
---|---|---|
MP2 | Средний период волны с нулевой пересечением | с |
MWD | Среднее направление волны | Степень правда |
MWP | Средний период волны | с |
PP1D | Пик волновой период | с |
SWH | Значительная высота комбинированных ветровых волн и набухания | м |
Среднее ансамбль и стандартное отклонение - уровни давления
Параметр | Описание | Единицы | Уровни |
---|---|---|---|
GH | Геопотенциальная высота | GPM | 300, 500, 1000 |
Т | Температура | K | 250, 500, 850 |
ws | Скорость ветра | MS -1 | 250, 850 |
Среднее ансамбль и стандартное отклонение - один уровень
Параметр | Описание | Единицы |
---|---|---|
MSL | Среднее давление на уровне моря | А |
Мгновенные погодные явления - атмосферные поля - 850 гПа
Параметр | Описание | Единицы |
---|---|---|
ptsa_gt_1p5stdev | Вероятность стандартизированной аномалии температуры превышает 1,5 стандартного отклонения | % |
ptsa_gt_1stdev | Вероятность стандартизированной аномалии температуры превышает 1 стандартное отклонение | % |
ptsa_gt_2stdev | Вероятность стандартизированной аномалии температуры превышает 2 стандартных отклонений | % |
ptsa_lt_1p5stdev | Вероятность стандартизированной аномалии температуры менее -1,5 стандартного отклонения | % |
ptsa_lt_1stdev | Вероятность стандартизированной аномалии температуры менее -1 стандартного отклонения | % |
ptsa_lt_2stdev | Вероятность стандартизированной аномалии температуры менее -2 стандартного отклонения | % |
Ежедневные погодные явления - атмосферные поля - одиночный уровень
Параметр | Описание | Единицы |
---|---|---|
10FGG10 | 10 -метровый порыв ветра не менее 10 м/с | % |
10FGG15 | 10 -метровый порыв ветра не менее 15 м/с | % |
10FGG25 | 10 -метровый порыв ветра не менее 25 м/с | % |
TPG1 | Общее количество осадков не менее 1 мм | % |
TPG10 | Общее количество осадков не менее 10 мм | % |
TPG100 | Общее количество осадков не менее 100 мм | % |
TPG20 | Общее количество осадков не менее 20 мм | % |
TPG25 | Общее количество осадков не менее 25 мм | % |
TPG5 | Общее количество осадков не менее 5 мм | % |
TPG50 | Общее количество осадков не менее 50 мм | % |
Мгновенные погодные явления - поля океанских волн
Параметр | Описание | Единицы |
---|---|---|
SWHG2 | Значительная высота волны не менее 2 м | % |
SWHG4 | Значительная высота волны не менее 4 м | % |
SWHG6 | Значительная высота волны не менее 6 м | % |
SWHG8 | Значительная высота волны не менее 8 м | % |
Вы можете выбрать отдельных членов ансамблевого прогноза, используя number
ключевого слова.
...
stream = "enfo" ,
step = 24 ,
param = "msl" ,
number = 1 ,
...
stream = "enfo" ,
step = 24 ,
param = "msl" ,
number = [ 1 , 10 , 20 ],
...
Список ансамблевых номеров |
---|
От 1 до 50 |
? Примечание . Не указание
number
вернет всех членов прогноза ансамбля.
from ecmwf . opendata import Client
client = Client ( source = "ecmwf" )
client . retrieve (
time = 0 ,
stream = "oper" ,
type = "fc" ,
step = 24 ,
param = "2t" ,
target = "data.grib2" ,
)
from ecmwf . opendata import Client
client = Client ( source = "ecmwf" )
client . retrieve (
time = 0 ,
stream = "oper" ,
type = "tf" ,
step = 240 ,
target = "data.bufr" ,
)
...
step = 90 ,
...
❗ Примечание. Продукты тропических циклонов. Продукты доступны только тогда, когда наблюдаются тропические циклоны или прогноз.
from ecmwf . opendata import Client
client = Client ( source = "ecmwf" )
client . retrieve (
time = 0 ,
stream = "enfo" ,
type = "pf" ,
param = "msl" ,
target = "data.grib2" ,
)
number
: number=1
.number=[num for num in range(1,51,2)]
.type="cf"
. Треки тропических циклонов идентифицируются по ключевым словам type="tf"
.
from ecmwf . opendata import Client
client = Client ( source = "ecmwf" )
client . retrieve (
time = 0 ,
stream = "enfo" ,
type = "tf" ,
step = 240 ,
target = "data.bufr" ,
)
step=240
на step=144
. Среднее ансамбль и стандартное отклонение идентифицируются по ключевым словам type="em"
:
from ecmwf . opendata import Client
client = Client ( source = "ecmwf" )
client . retrieve (
time = 0 ,
stream = "enfo" ,
type = "em" ,
step = 24 ,
target = "data.grib2" ,
)
и type="es"
, соответственно:
from ecmwf . opendata import Client
client = Client ( source = "ecmwf" )
client . retrieve (
time = 0 ,
stream = "enfo" ,
type = "es" ,
step = 24 ,
target = "data.grib2" ,
)
Продукты вероятности ансамбля идентифицируются по ключевым словам type="ep"
. Продукты вероятности доступны только для time=00
и time=12
.
Доступны два разных продукта.
Вероятность стандартизированных аномалий температуры при постоянном уровне давления 850HPA доступна на 12 почасовых прогнозных этапах.
from ecmwf . opendata import Client
client = Client ( source = "ecmwf" )
client . retrieve (
time = 0 ,
stream = "enfo" ,
type = "ep" ,
step = [ i for i in range ( 12 , 361 , 12 )],
levelist = 850 ,
param = [
"ptsa_gt_1stdev" ,
"ptsa_gt_1p5stdev" ,
"ptsa_gt_2stdev" ,
"ptsa_lt_1stdev" ,
"ptsa_lt_1p5stdev" ,
"ptsa_lt_2stdev" ,
],
target = "data.grib2" ,
)
Вероятности общего количества осадков и порывов ветра, превышающих указанные пороговые значения в течение 24-часового периода, доступны для диапазонов шагов от 0-24 до 336-360 на 12. Они указаны в запросе поиска с использованием, например: step=["0-24", "12-36", "24-48"]
.
from ecmwf . opendata import Client
client = Client ( source = "ecmwf" )
steps = [ f" { 12 * i } - { 12 * i + 24 } " for i in range ( 29 )]
client . retrieve (
time = 0 ,
stream = "enfo" ,
type = "ep" ,
step = steps ,
param = [ "tpg1" , "tpg5" , "10fgg10" ],
target = "data.grib2" ,
)
Загрузив данные из набора данных ECMWF Open Data, вы соглашаетесь с их условиями: Attribution 4.0 International (CC By 4.0). Если вы не согласны с такими условиями, не загружайте данные. Посетите эту страницу для получения дополнительной информации.
Apache License 2.0 При применении этой лицензии ECMWF не отказывается от привилегий и иммунитетов, предоставленных ей благодаря статусу в качестве межправительственной организации и не подчиняется какой -либо юрисдикции.