ECMWFのサイトからデータを取得する際のpythonスクリプトのメモ
(2013.4.23 追記) ECMWFのデータサーバが更新され、新しいサーバーに移行中とのこと。
ECMWFバッチアクセスについてのWiki
これらのパラメータはMARS言語に従ってかけばよいとのこと。まずは画面上でクリックしたのちバッチリクエストを作成するのが手軽。あとで細かい点を修正や変数にしていけばよい。
(2013.4.23 追記) ECMWFのデータサーバが更新され、新しいサーバーに移行中とのこと。
ECMWFバッチアクセスについてのWiki
モジュールをインストールする。
$ sudo pip install https://software.ecmwf.int/wiki/download/attachments/23694554/ecmwf-api-client-python.tgzECMWF データポータルにログインした状態で、https://api.ecmwf.int/v1/key/にアクセスして表示されたユーザー情報をコピーして、~/.ecmwfapircに保存する。
TIGGEデータのアクセスを例にとる。
など。
from ecmwfapi import ECMWFDataServer server = ECMWFDataServer() server.retrieve({ 'dataset' : "tigge", # データセット名 (tigge: TIGGE、 interim: ERA-interim、 yotc: Year of Tropical Convection など) 'step' : "24/to/120/by/24", # 予報データの場合に指定する。この場合、予報時刻24h〜120hまで24hごと。解析データの場合は0にする。 'step' : "24/40/120", # toとbyによる指定がなぜかrejectされるので全て区切って指定(2013,4,16) 'number' : "all", # アンサンブルメンバーを指定する。すべてのメンバーを取得する場合はall。 'levtype' : "sl", # データの種類。(pl: 等圧面データ、sfc: 地表面データ、ml:モデル面データなど) 'date' : "20071001/to/20071003", # 期間(予報データの場合は初期日)。toで開始・終了を指定するか、/で区切って並べる。 'time' : "00/12", # (初期)時刻。 'origin' : "all", # TIGGEの場合に指定。予報センターの略称。 'type' : "pf", # 予報データの場合。(cf: コントロールラン、pf: パータベーション) 'param' : "tp", # 取得したい要素のパラメータ。略称もしくは変数IDで指定。 'area' : "70/-130/30/-60", # 取得するデータの範囲。北sてい端/西端/南端/東端で指定し、gridに合わせて自動調整される。 'grid' : "2/2", # 格子間隔。この場合は、2度x2度グリッド。データによって取得可能な解像度は異なる。 'target' : "data.grib" # 出力ファイルパス。 })
- paramは、http://www.ecmwf.int/publications/manuals/d/gribap...のshortNameかパラメータ番号で指定する。代表的なものは、
u | 東西風 | v | 南北風 | gh | ジオポテンシャル高度 | t | 気温 | q | 比湿 |
---|---|---|---|---|---|---|---|---|---|
msl | 海面気圧 | tp | 積算降水量 | skt | 地表気温 | ||||
10u | 10m東西風 | 10v | 10m南北風 | 2t | 2m気温 |
- areaは指定した範囲が含まれるようにgridに応じて変更される。例えば、gridが1.5/1.5で、20/0/-20/360を指定すると、21/0/360/-21に変更される。
#!/usr/bin/python from ecmwf import ECMWFDataServer server = ECMWFDataServer( 'http://data-portal.ecmwf.int/data/d/dataserver/', 'ユーザー情報', 'ユーザー情報' ) server.retrieve({ 'dataset' : "interim_daily", 'date' : "20090101/to/20090110", 'time' : "12", 'step' : "0", 'levtype' : "pl", 'type' : "an", 'param' : "130.128", 'levelist' : "500/1000", 'area' : "60/-120/30/-60", 'target' : "data.grib" })MARS言語
dataset | データセット名 |
---|---|
date | データの初期時刻の日付 |
time | データの初期時刻の時刻 |
step | 予報期間 |
levtype | 鉛直座標 |
type | ?? |
param | 要素名 |
levelist | 取得する鉛直レベル |
area | 取得するデータの範囲 |
target | 出力ファイル |
dateとtimeで与える。
- 例:1979/1/1から1979/1/5までの00,12UTC
... 'dataset' : "interim_daily", 'date' : "19790101/to/19790105", 'time' : "00/12", 'step' : "0", ...
最新コメント