ecmwf-opendata
ECMWFオープンデータのダウンロードを簡素化するパッケージです。 ECMWFのMARS言語を使用して、既存のECMWF-API-Client Pythonパッケージと同様に、気象フィールドを選択して、データセットにリクエストベースのインターフェイスを実装します。
そのパッケージを使用するJupyterノートブックのコレクションは、こちらから入手できます。
ecmwf-opendata
pythonパッケージは、pypiから以下をインストールできます。
$ pip install ecmwf-opendata
以下の例では、平均海面圧力( msl
)の最新の利用可能な10日間の予測を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
のみを指定することでファイル全体をダウンロードできます。丸1日のすべてのデータは726 GIBの順にあることに注意してください。
クライアントオブジェクトのコンストラクターは、次のオプションを取得します。
client = Client (
source = "ecmwf" ,
model = "ifs" ,
resol = "0p25" ,
preserve_request_order = False ,
infer_stream_keyword = True ,
)
どこ:
source
、連絡先のサーバーの名前または完全資格のあるURLです。可能な値は、ECMWFのサーバーにアクセスするためのecmwf
、またはMicrosoftのAzureでホストされているデータにアクセスするazure
です。デフォルトはecmwf
です。
model
データを生成したモデルの名前です。物理駆動型モデルにはifs
使用し、データ駆動型モデルにはaifs
使用します。 aifs
現在実験的であり、フィールドの小さなサブセットのみを生成していることに注意してください。デフォルトはifs
です。
resol
データの解決を指定します。デフォルトは0.25度の解像度で0p25
であり、現在利用可能な唯一の解像度です。
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
キーワードの正しい値を推測しようとします。モデルがifs
の場合、デフォルトはTrue
です。
ショ和 注:サーバーに追加の負荷が追加されるため、多数のフィールドをダウンロードするときは、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 )
2022-01-23 00:00:00
を印刷することができます。
Client.download()
Client.download()
メソッドは、 Client.retrieve()
メソッドと同じパラメーターを取得しますが、 param
、 levelist
、 number
などのキーワードを無視して、サーバーからデータファイル全体をダウンロードします。
以下の例では、キーワードparam
を無視して、最新の時間ステップ24からすべてのフィールドをダウンロードします。
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" ,
))
2022-01-23 00:00:00
を印刷することができます。
bymote :データは、予測システムと指定された時間ステップに応じて、予測日時と時刻の予測から7時間から9時間後に使用できます。
サポートされているキーワードは次のとおりです。
type
:データの種類(義務、デフォルトはfc
にデフォルト)。stream
:予測システム(明確ではない場合はオプション、それ以外の場合は強制的)。上記のinfer_stream_keyword
を参照してください。date
:予測が開始される日付。time
:予測が始まる時間。step
:数時間の予測時間ステップ、またはfcmonth
、季節予測の数ヶ月の時間ステップ(それぞれ義務、デフォルト0
と1
)。および(すべてオプション、デフォルトはありません):
param
:風、圧力、湿度などの気象パラメーター。levtype
:圧力レベルで単一レベルのパラメーターとパラメーターを選択します。levelist
:関連する場合の圧力レベルのリスト。number
:関連する場合のアンサンブルメンバー番号のリスト。最初のリストのキーワードは、アクセスするファイルを識別するために使用されますが、2番目のリストはファイルのどの部分を実際にダウンロードする必要があるかを識別するために使用されます。一部のHTTPサーバーでは、ファイルの複数の部分を返すことができますが、他のHTTPサーバーはファイルから1つの部分のみを返すことができます。後者の場合、ライブラリはサーバーに多くの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
からストリームを推測します。その場合、Ocean Wave製品にアクセスするためにstream=wave
指定するだけで、他のケースではstream
に値を提供しないでください。
タイムステップを選択するには、 step
キーワードを使用します。
...
step = 24 ,
...
step = [ 24 , 48 ],
...
予測システム | 時間 | タイムステップのリスト |
---|---|---|
hres | 00および12 | 0から144 x 3、144〜240 x 6 |
ens | 00および12 | 0から144 x 3、144〜60 x 6 |
hres | 06と18 | 0〜90 x 3 |
ens | 06と18 | 0から144 x 3 |
確率 - 瞬間的な気象現象 | 00および12 | 0〜360 x 12 |
確率 - 毎日の気象現象 | 00および12 | 0-24〜336-360 x 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 |
以下はすべてのパラメーターのリストです。
圧力レベルの大気フィールド
パラメーター | 説明 | ユニット |
---|---|---|
d | 発散 | S -1 |
gh | ジオポテンシャルの高さ | GPM |
Q | 特定の湿度 | kg kg -1 |
r | 相対湿度 | % |
t | 温度 | k |
u | 風のu成分 | MS -1 |
v | 風のvコンポーネント | MS -1 |
vo | 渦度(相対) | S -1 |
単一レベルの大気フィールド
パラメーター | 説明 | ユニット |
---|---|---|
10U | 10メートルU風力コンポーネント | MS -1 |
10V | 10メートルv風力成分 | MS -1 |
2t | 2メートル温度 | k |
MSL | 平均海面圧力 | PA |
ro | 流出 | m |
SKT | 肌の温度 | k |
sp | 表面圧力 | PA |
st | 土壌温度 | k |
STL1 | 土壌温度レベル1 | k |
TCWV | 総カラム垂直統合水蒸気 | kg m -2 |
TP | 総降水 | m |
海洋波フィールド
パラメーター | 説明 | ユニット |
---|---|---|
MP2 | 平均ゼロ回転波周期 | s |
MWD | 平均波方向 | 学位真 |
MWP | 平均波周期 | s |
pp1d | ピーク波周期 | s |
swh | 風の波と腫れの大幅な高さ | m |
アンサンブルの平均と標準偏差 - 圧力レベル
パラメーター | 説明 | ユニット | レベル |
---|---|---|---|
gh | ジオポテンシャルの高さ | GPM | 300、500、1000 |
t | 温度 | k | 250、500、850 |
WS | 風速 | MS -1 | 250、850 |
アンサンブルの平均と標準偏差 - 単一レベル
パラメーター | 説明 | ユニット |
---|---|---|
MSL | 平均海面圧力 | PA |
瞬間的な気象現象 - 大気畑-850 HPA
パラメーター | 説明 | ユニット |
---|---|---|
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 m/sの10メートルの突風 | % |
10FGG15 | 少なくとも15 m/sの10メートルの突風 | % |
10FGG25 | 少なくとも25 m/sの10メートルの突風 | % |
TPG1 | 少なくとも1 mmの総降水 | % |
TPG10 | 少なくとも10 mmの総降水 | % |
TPG100 | 少なくとも100 mmの総降水 | % |
TPG20 | 少なくとも20 mmの総降水 | % |
TPG25 | 少なくとも25 mmの総降水 | % |
TPG5 | 少なくとも5 mmの総降水 | % |
TPG50 | 少なくとも50 mmの総降水 | % |
瞬間的な気象現象 - 海の波の畑
パラメーター | 説明 | ユニット |
---|---|---|
SWHG2 | 少なくとも2 mの有意な波の高さ | % |
SWHG4 | 少なくとも4 mの有意な波の高さ | % |
SWHG6 | 少なくとも6 mの有意な波の高さ | % |
SWHG8 | 少なくとも8 mの有意な波の高さ | % |
アンサンブル予測の個々のメンバーを選択できます。キーワード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
でのみ利用可能です。
2つの異なる製品が利用可能です。
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 x 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 Datasetからデータをダウンロードすることにより、お客様の用語に同意します:Attribution 4.0 International(CC by 4.0)。そのような条件に同意しない場合は、データをダウンロードしないでください。詳細については、このページをご覧ください。
Apacheライセンス2.0このライセンスを適用する際、ECMWFは、政府間組織としてのステータスにより、それに付与された特権と免責を放棄しません。また、管轄権に提出しません。