ecmwf-opendata
adalah paket untuk menyederhanakan pengunduhan data terbuka ECMWF. Ini mengimplementasikan antarmuka berbasis permintaan ke dataset menggunakan bahasa Mars ECMWF untuk memilih bidang meteorologi, mirip dengan paket Python ECMWF-API-CLient yang ada.
Koleksi buku catatan Jupyter yang memanfaatkan paket itu tersedia di sini.
Paket ecmwf-opendata
Python dapat diinstal dari PYPI dengan:
$ pip install ecmwf-opendata
Contoh di bawah ini akan mengunduh ramalan 10 hari terbaru yang tersedia untuk Mean Sea Level Pressure ( msl
) ke dalam file lokal yang disebut data.grib2
:
from ecmwf . opendata import Client
client = Client ()
client . retrieve (
step = 240 ,
type = "fc" ,
param = "msl" ,
target = "data.grib2" ,
)
❗ Catatan: Paket ini dirancang untuk pengguna yang ingin mengunduh subset dari seluruh dataset. Jika Anda berencana untuk mengunduh sebagian besar dari setiap file data, mungkin lebih efisien untuk mengunduh seluruh file dan memfilter data yang Anda inginkan secara lokal. Lihat dokumentasi pada konvensi penamaan file untuk informasi lebih lanjut. Atau, Anda dapat menggunakan alat ini untuk mengunduh seluruh file hanya dengan menentukan
date
,time
,step
,stream
, dantype
. Perlu diketahui bahwa semua data untuk sehari penuh adalah dalam urutan 726 GIB.
Konstruktor objek klien mengambil opsi berikut:
client = Client (
source = "ecmwf" ,
model = "ifs" ,
resol = "0p25" ,
preserve_request_order = False ,
infer_stream_keyword = True ,
)
Di mana:
source
adalah nama server untuk dihubungi atau URL yang memenuhi syarat. Nilai yang mungkin adalah ecmwf
untuk mengakses server ECMWF, atau azure
untuk mengakses data yang di -host di Microsoft's Azure. Default adalah ecmwf
.
model
adalah nama model yang menghasilkan data. Gunakan ifs
untuk model yang digerakkan oleh fisika dan aifs
untuk model berbasis data. Harap dicatat bahwa aifs
saat ini eksperimental dan hanya menghasilkan sebagian kecil bidang. Default adalah ifs
.
resol
menentukan resolusi data. Default adalah 0p25
untuk resolusi 0,25 derajat, dan merupakan satu -satunya resolusi yang saat ini tersedia.
preserve_request_order
. Jika bendera ini diatur ke True
, perpustakaan akan mencoba untuk menulis data yang diambil ke dalam file target dalam urutan yang ditentukan oleh permintaan. Misalnya, jika permintaan menentukan param=[2t,msl]
Perpustakaan akan memastikan bahwa bidang 2t
adalah yang pertama dalam file target, sedangkan dengan param=[msl,2t]
, bidang msl
akan menjadi yang pertama. Ini juga berfungsi di seluruh kata kunci yang berbeda: ...,levelist=[500,100],param=[z,t],...
akan menghasilkan output yang berbeda ke ...,param=[z,t],levelist=[500,100],...
jika bendera diatur ke False
, perpustakaan akan mengurutkan permintaan untuk meminimalkan jumlah permintaan HTTP yang dibuat ke server, yang mengarah ke kecepatan pengunduhan yang lebih cepat. Default False
.
infer_stream_keyword
. Kata kunci stream
mewakili sistem peramalan ECMWF yang membuat data. Menetapkannya dengan benar membutuhkan pengetahuan tentang bagaimana ECMWF menjalankan operasinya. Jika boolean ini diatur ke True
, perpustakaan akan mencoba menyimpulkan nilai yang benar untuk kata kunci stream
berdasarkan sisa permintaan. Default True
jika model adalah ifs
.
️ Catatan: Disarankan untuk tidak mengatur benderapreserve_request_order
keTrue
saat mengunduh sejumlah besar bidang karena ini akan menambah beban tambahan pada server.
Client.retrieve()
Metode Client.retrieve()
menerima permintaan sebagai input dan akan mengambil data yang sesuai dari server dan menulisnya di file target pengguna.
Permintaan adalah daftar pasangan kata kunci/nilai yang digunakan untuk memilih data yang diinginkan. Dimungkinkan untuk menentukan daftar nilai untuk kata kunci yang diberikan.
Permintaan dapat ditentukan sebagai kamus:
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" ,
)
atau secara langsung sebagai argumen ke metode retrieve()
:
from ecmwf . opendata import Client
client = Client ( source = "ecmwf" )
client . retrieve (
time = 0 ,
type = "fc" ,
step = 24 ,
param = [ "2t" , "msl" ],
target = "data.grib2" ,
)
Kata kunci date
dan time
digunakan untuk memilih tanggal dan waktu Run Forecast (lihat Tanggal dan Waktu di bawah). Jika date
atau date
dan time
tidak ditentukan, perpustakaan akan menanyakan server untuk data pencocokan terbaru. date
dan time
ramalan yang diunduh dikembalikan dengan metode 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 )
dapat mencetak 2022-01-23 00:00:00
.
Client.download()
Metode Client.download()
mengambil parameter yang sama dengan metode Client.retrieve()
, tetapi akan mengunduh seluruh file data dari server, mengabaikan kata kunci seperti param
, levelist
atau number
.
Contoh di bawah ini akan mengunduh semua bidang dari langkah waktu terbaru 24, mengabaikan param
kata kunci:
from ecmwf . opendata import Client
client = Client ( source = "ecmwf" )
client . download (
param = "msl" ,
type = "fc" ,
step = 24 ,
target = "data.grib2" ,
)
Client.latest()
Metode Client.latest()
mengambil parameter yang sama dengan metode Client.retrieve()
, dan mengembalikan tanggal ramalan pencocokan terbaru tanpa mengunduh data:
from ecmwf . opendata import Client
client = Client ( source = "ecmwf" )
print ( client . latest (
type = "fc" ,
step = 24 ,
param = [ "2t" , "msl" ],
target = "data.grib2" ,
))
dapat mencetak 2022-01-23 00:00:00
.
⏰ Catatan : Data tersedia antara 7 dan 9 jam setelah tanggal dan waktu mulai perkiraan, tergantung pada sistem peramalan dan langkah waktu yang ditentukan.
Kata kunci yang didukung adalah:
type
: Jenis data (wajib, default ke fc
).stream
: Sistem ramalan (opsional jika tidak ambigu, wajib jika tidak). Lihat infer_stream_keyword
di atas.date
: Tanggal di mana ramalan dimulai.time
: Waktu di mana ramalan dimulai.step
: Perkiraan waktu dalam jam dalam jam, atau fcmonth
, waktu dalam beberapa bulan untuk perkiraan musiman (wajib, default ke 0
dan 1
, masing -masing).dan (semua opsional, tanpa default):
param
: Parameter meteorologi, seperti angin, tekanan atau kelembaban.levtype
: Pilih antara parameter tingkat tunggal dan parameter pada level tekanan.levelist
: Daftar level tekanan bila relevan.number
: Daftar nomor anggota ensemble bila relevan.Kata kunci dalam daftar pertama digunakan untuk mengidentifikasi file mana yang akan diakses, sedangkan daftar kedua digunakan untuk mengidentifikasi bagian mana dari file yang perlu benar -benar diunduh. Beberapa server HTTP dapat mengembalikan beberapa bagian file, sementara yang lain hanya dapat mengembalikan satu bagian dari file. Dalam kasus terakhir, perpustakaan dapat melakukan banyak permintaan HTTP ke server. Jika Anda ingin mengunduh seluruh file, hanya berikan kata kunci dari daftar pertama.
Parameter tanggal dan waktu mengacu pada waktu mulai dari perkiraan. Semua tanggal dan waktu dinyatakan dalam UTC.
Ada beberapa cara untuk menentukan tanggal dan waktu dalam permintaan.
Tanggal dapat ditentukan menggunakan string, angka dan python datetime.datetime
atau datetime.date
objek:
...
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 ,
...
Tanggal juga dapat diberikan sebagai angka kurang dari atau sama dengan nol. Dalam hal ini, setara dengan tanggal UTC saat ini dikurangi jumlah hari yang diberikan:
...
date = 0 , # today
date = - 1 , # yesterday
date = - 2 , # the day before yesterday
...
time
kata kunci dapat diberikan sebagai string atau bilangan bulat, atau objek datetime.time
python. Semua nilai waktu di bawah ini setara:
...
time = 12 ,
...
time = 1200 ,
...
time = '12' ,
...
time = '1200' ,
...
time = datetime . time ( 12 ),
...
Daftar nilai yang valid untuk waktu |
---|
0, 6, 12 dan 18 |
Jika time
tidak ditentukan, waktu diekstraksi dari tanggal.
...
date = '2022-01-25 12:00:00' ,
...
setara dengan:
...
date = '2022-01-25' ,
time = 12 ,
...
Jika kata kunci time
ditentukan, itu mengesampingkan kapan saja yang diberikan dalam permintaan.
...
date = '2022-01-25 12:00:00' ,
time = 18 ,
...
setara dengan:
...
date = '2022-01-25' ,
time = 18 ,
...
Seperti yang dinyatakan sebelumnya, jika date
atau date
dan time
tidak ditentukan, perpustakaan akan meminta server untuk data pencocokan terbaru. date
dan time
ramalan yang diunduh dikembalikan dengan metode retrieve()
:
Contoh tanpa kata kunci 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 )
akan mencetak 2022-01-22 12:00:00
jika dijalankan di pagi hari 2022-01-23.
Contoh tanpa kata kunci date
dan 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 )
akan mencetak 2022-01-23 00:00:00
jika dijalankan di pagi hari 2022-01-23.
ECMWF menjalankan beberapa sistem peramalan:
Masing -masing ramalan ini juga menghasilkan beberapa jenis produk, yang dirujuk menggunakan stream
dan type
kata kunci.
Nilai yang valid untuk
type
adalah:
HRES:
fc
: Prakiraan.ENS:
cf
: Prakiraan kontrol.pf
: Prakiraan yang terganggu.em
: Mean ensemble.es
: Ensemble standar deviasi.ep
: Probabilitas.Nilai yang valid untuk
stream
adalah:
oper
: Bidang atmosfer dari HRES - 00 UTC dan 12 UTC.wave
: Ladang Gelombang Laut dari HRES - 00 UTC dan 12 UTC.enfo
: Bidang atmosfer dari ENS.waef
: Ladang Gelombang Laut dari ENS.scda
: Bidang atmosfer dari HRES - 06 UTC dan 18 UTC.scwv
: Lapangan Gelombang Ocean dari HRES - 06 UTC dan 18 UTC.? Catatan : Jika bendera klien
infer_stream_keyword
diatur keTrue
, perpustakaan akan menyimpulkan aliran daritype
dantime
. Dalam hal ini, Anda hanya perlu menentukanstream=wave
untuk mengakses produk Ocean Wave, dan tidak memberikan nilai untukstream
dalam kasus lain.
Untuk memilih langkah waktu, gunakan kata kunci step
:
...
step = 24 ,
...
step = [ 24 , 48 ],
...
Sistem peramalan | Waktu | Daftar Langkah Waktu |
---|---|---|
Hres | 00 dan 12 | 0 hingga 144 oleh 3, 144 hingga 240 oleh 6 |
Ens | 00 dan 12 | 0 hingga 144 oleh 3, 144 hingga 360 oleh 6 |
Hres | 06 dan 18 | 0 hingga 90 oleh 3 |
Ens | 06 dan 18 | 0 hingga 144 oleh 3 |
Probabilitas - peristiwa cuaca instan | 00 dan 12 | 0 hingga 360 dengan 12 |
Probabilitas - Acara cuaca harian | 00 dan 12 | 0-24 hingga 336-360 oleh 12 |
? Catatan : Tidak menentukan
step
akan mengembalikan semua langkah waktu yang tersedia.
Untuk memilih parameter, gunakan kata kunci param
:
...
param = "msl" ,
...
param = [ "2t" , "msl" ]
...
Untuk parameter level tekanan, gunakan kata kunci levelist
:
...
param = "t" ,
levelist = 850 ,
...
param = [ "u" , "v" ],
levelist = [ 1000 , 850 , 500 ],
...
? Catatan : Tidak menentukan
levelist
akan mengembalikan semua level yang tersedia, dan tidak menentukanparam
akan mengembalikan semua parameter yang tersedia.
Daftar Tingkat Tekanan (HPA) |
---|
1000, 925, 850, 700, 500, 300, 250, 200 dan 50 |
Di bawah ini adalah daftar semua parameter:
Bidang atmosfer pada tingkat tekanan
Parameter | Keterangan | Unit |
---|---|---|
D | Perbedaan | S -1 |
GH | Tinggi geopotensial | GPM |
Q | Kelembaban spesifik | kg kg -1 |
R | Kelembaban relatif | % |
T | Suhu | K |
u | U Komponen angin | MS -1 |
v | V Komponen angin | MS -1 |
vo | Vortisitas (relatif) | S -1 |
Bidang atmosfer pada satu tingkat
Parameter | Keterangan | Unit |
---|---|---|
10U | Komponen angin 10 meter u | MS -1 |
10v | Komponen angin 10 meter V | MS -1 |
2t | Suhu 2 meter | K |
MSL | Berarti tekanan permukaan laut | Pa |
ro | Limpasan | M |
Skt | Suhu kulit | K |
sp | Tekanan permukaan | Pa |
st | Suhu tanah | K |
STL1 | Tingkat Suhu Tanah 1 | K |
tcwv | Total kolom uap air yang terintegrasi secara vertikal | kg m -2 |
tp | Total presipitasi | M |
Lapangan Gelombang Laut
Parameter | Keterangan | Unit |
---|---|---|
MP2 | Berarti periode gelombang nol | S |
MWD | Arah gelombang berarti | Gelar benar |
MWP | Periode gelombang rata -rata | S |
pp1d | Periode gelombang puncak | S |
SWH | Tinggi signifikan gelombang angin kombinasi dan gelombang | M |
Ensemble Mean dan Standar Deviasi - Tingkat Tekanan
Parameter | Keterangan | Unit | Level |
---|---|---|---|
GH | Tinggi geopotensial | GPM | 300, 500, 1000 |
T | Suhu | K | 250, 500, 850 |
WS | Kecepatan angin | MS -1 | 250, 850 |
Ensemble Mean dan Standar Deviasi - Tingkat Tunggal
Parameter | Keterangan | Unit |
---|---|---|
MSL | Berarti tekanan permukaan laut | Pa |
Acara Cuaca Instan - Bidang Atmosfer - 850 HPA
Parameter | Keterangan | Unit |
---|---|---|
PTSA_GT_1P5STDEV | Probabilitas anomali standar suhu lebih besar dari 1,5 standar deviasi | % |
PTSA_GT_1STDEV | Probabilitas anomali standar suhu lebih besar dari 1 standar deviasi | % |
PTSA_GT_2STDEV | Probabilitas anomali standar suhu lebih besar dari 2 standar deviasi | % |
PTSA_LT_1P5STDEV | Probabilitas anomali standar suhu kurang dari -1.5 standar deviasi | % |
PTSA_LT_1STDEV | Probabilitas anomali standar suhu kurang dari -1 standar deviasi | % |
PTSA_LT_2STDEV | Probabilitas anomali standar suhu kurang dari -2 standar deviasi | % |
Acara Cuaca Harian - Bidang Atmosfer - Tingkat Tunggal
Parameter | Keterangan | Unit |
---|---|---|
10fgg10 | Lembab angin 10 meter setidaknya 10 m/s | % |
10fgg15 | Lembab angin 10 meter setidaknya 15 m/s | % |
10fgg25 | Lembab angin 10 meter setidaknya 25 m/s | % |
tpg1 | Total presipitasi minimal 1 mm | % |
TPG10 | Curah hujan total setidaknya 10 mm | % |
TPG100 | Total presipitasi setidaknya 100 mm | % |
TPG20 | Curah hujan total setidaknya 20 mm | % |
TPG25 | Curah hujan total setidaknya 25 mm | % |
tpg5 | Curah hujan total setidaknya 5 mm | % |
TPG50 | Total presipitasi setidaknya 50 mm | % |
Acara Cuaca Instan - Lapangan Gelombang Laut
Parameter | Keterangan | Unit |
---|---|---|
swhg2 | Tinggi gelombang signifikan minimal 2 m | % |
swhg4 | Tinggi gelombang yang signifikan setidaknya 4 m | % |
swhg6 | Tinggi gelombang signifikan setidaknya 6 m | % |
swhg8 | Tinggi gelombang signifikan minimal 8 m | % |
Anda dapat memilih anggota masing -masing dari ramalan ensemble Gunakan number
kata kunci.
...
stream = "enfo" ,
step = 24 ,
param = "msl" ,
number = 1 ,
...
stream = "enfo" ,
step = 24 ,
param = "msl" ,
number = [ 1 , 10 , 20 ],
...
Daftar Nomor Ensemble |
---|
1 hingga 50 |
? Catatan : Tidak menentukan
number
akan mengembalikan semua anggota prakiraan ensemble.
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 ,
...
❗ Catatan: Produk tropik tropis hanya tersedia ketika ada siklon tropis yang diamati atau ramalan.
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"
. Trek siklon tropis diidentifikasi oleh kata kunci 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
dengan step=144
. Rata -rata ensemble dan standar deviasi diidentifikasi oleh kata kunci type="em"
:
from ecmwf . opendata import Client
client = Client ( source = "ecmwf" )
client . retrieve (
time = 0 ,
stream = "enfo" ,
type = "em" ,
step = 24 ,
target = "data.grib2" ,
)
dan type="es"
, masing -masing:
from ecmwf . opendata import Client
client = Client ( source = "ecmwf" )
client . retrieve (
time = 0 ,
stream = "enfo" ,
type = "es" ,
step = 24 ,
target = "data.grib2" ,
)
Produk probabilitas ensemble diidentifikasi oleh kata kunci type="ep"
. Produk probabilitas hanya tersedia untuk time=00
dan time=12
.
Tersedia dua produk yang berbeda.
Probabilitas anomali standar suhu pada tingkat tekanan konstan 850hPa tersedia pada langkah perkiraan 12 jam.
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" ,
)
Probabilitas total curah hujan dan hembusan angin yang melebihi ambang batas yang ditentukan dalam periode 24 jam tersedia untuk rentang langkah 0-24 hingga 336-360 dengan 12. Ini ditentukan dalam permintaan pengambilan menggunakan, misalnya: 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" ,
)
Dengan mengunduh data dari ECMWF Open Data Dataset, Anda menyetujui persyaratan mereka: Atribution 4.0 International (CC sebesar 4.0). Jika Anda tidak setuju dengan ketentuan tersebut, jangan unduh data. Kunjungi halaman ini untuk informasi lebih lanjut.
Lisensi Apache 2.0 Dalam menerapkan lisensi ini, ECMWF tidak mengesampingkan hak istimewa dan kekebalan yang diberikan kepadanya berdasarkan statusnya sebagai organisasi antar pemerintah juga tidak tunduk pada yurisdiksi apa pun.