如何使用python访问ECMWF公共数据集

来源:互联网 发布:批量word转pdf windows 编辑:程序博客网 时间:2024/06/01 08:56
1.安装ECMWF KEY
  1. 如果您没有帐户,请通过https://apps.ecmwf.int/registration/  进行自我注册,然后转到以下步骤。
  2. 登录https://apps.ecmwf.int/auth/login/

  3. 通过https://api.ecmwf.int/v1/key/  获取密钥 

    请注意,该密钥在1年内到期。您将在到期日期前1个月收到注册电子邮件地址的电子邮件,并附上续订说明。要查看当前密钥登录的到期日期,请访问www.ecmwf.int

  4. 复制此页面中的信息,并将其粘贴到文件  $ HOME / .ecmwfapirc(Unix / Linux)或%USERPROFILE%\ .ecmwfapirc(Windows;

  5. 如何创建前导点文件?

    重命名

    • 创建 file.txt
    • 重命名.file.,最后一个点将被删除,你就得到.file
    • 这里我们需要 创建  .ecmwfapirc 文件 ,并将下面内容拷贝进去
    • 上面的文件放在 %USERPROFILE%下,这里这个路径可以在用户变量中找到,本人电脑用户名为Cronous 路径为 C:\Users\Cronous
    • 所以将 .ecmwfapirc 放在上面路径下面

$ HOME / .ecmwfapirc(Unix / Linux)或%USERPROFILE%\。ecmwfapirc(Windows)的内容
{
    "url"   : "https://api.ecmwf.int/v1",
    "key"   : "XXXXXXXXXXXXXXXXXX",
    "email" : "example@123.com"
}
2.安装客户端库

该版本的库提供对Python 2.7.x和Python 3的支持。

您可以ecmwfapi 通过在Unix / Linux上运行来安装  python库:

sudo pip install https://software.ecmwf.int/wiki/download/attachments/56664858/ecmwf-api-client-python.tgz

或在Windows上:

pip install https://software.ecmwf.int/wiki/download/attachments/56664858/ecmwf-api-client-python.tgz

如果您无法运行sudopip命令,只需下载  ecmwf-api-client-python.tgz提取其内容并将模块复制ecmwfapi到环境变量指向的目录中PYTHONPATH

3.检查数据可用性

要查看ECMWF Public Datasets的可用性,请访问Web界面:

http://apps.ecmwf.int/datasets/

使用此界面,您可以  发现我们存档中提供的所有ECMWF公用数据集我们强烈建议您浏览我们的公共数据集以熟悉其可用性。您可以选择一个公共数据集,并开始浏览其内容。 

请考虑有关内容的一些注意事项:

  • 不同的ECMWF公共数据集包括不同的“参数”,“时间”和“步骤”  
  • 在每个  ECMWF公共数据集中,并非所有“参数”都可以从所有“步骤” 
  • 在每个  ECMWF公共数据集中,并非所有“时间”都提供所有“步骤”

上面的Web界面将帮助您检查和了解可用性。对于任何类型的选择,系统将以动态方式更新属性以反映当前的可用性。(即如果您更改步骤,一些参数将被添加或删除)。

小费

选择完成后,我们鼓励用户使用页面底部“ 查看MARS请求 ”功能。使用这个MARS请求,你可以建立自己的Python脚本。
这里说一下查看MARS请求可以自动生成python脚本样例文件,我们可以对照着学习一下,如下面的我选择的数据源:

自动生成的python脚本如下:
For more information on how to retrieve data programmatically, in Python, please go to Access ECMWF Public Datasets.#!/usr/bin/env pythonfrom ecmwfapi import ECMWFDataServerserver = ECMWFDataServer()server.retrieve({    "class": "ti",    "dataset": "tigge",    "date": "2017-10-01/to/2017-10-20",    "expver": "prod",    "grid": "0.5/0.5",    "levtype": "sfc",    "origin": "ecmf",    "param": "134/167/228228",    "step": "0/6/12/18/24/30/36/42/48/54/60/66/72/78/84/90/96/102/108/114/120/126/132/138/144/150/156/162/168/174/180/186/192/198/204/210/216/222/228/234/240/246/252/258/264/270/276/282/288/294/300/306/312/318/324/330/336/342/348/354/360",    "time": "00:00:00/12:00:00",    "type": "cf",    "target": "output",})
我们可以对照着学习一下。

这里给出一个TIGGE数据源的示例


转至元数据结尾转至元数据起始

  • TIGGE压力水平控制预测
  • TIGGE表面扰动预测

TIGGE压力水平控制预测

10m风组件,10m v风组件,来自NCEP。所有压力水平。

ECMWF公共数据集Web界面

 #!/usr/bin/env python
from ecmwfapi import ECMWFDataServer
    
server = ECMWFDataServer()
    
server.retrieve({
    'origin'    "kwbc",
    'levelist'  "200/250/300/500/700/850/925/1000",
    'levtype'   "pl",
    'expver'    "prod",
    'dataset'   "tigge",
    'step'      "0/6/12/18/24/30",
    'grid'      "0.5/0.5",
    'param'     "131/132",
    'time'      "00/06/12/18",
    'date'      "2014-10-01",
    'type'      "cf",
    'class'     "ti",
    'target'    "tigge_2014-10-01_00061218.grib"
})

TIGGE表面扰动预测

2m温度。01 NOV 2014,来自ECMWF

ECMWF公共数据集Web界面

#!/usr/bin/env python
from ecmwfapi import ECMWFDataServer
    
server = ECMWFDataServer()
    
server.retrieve({
    'origin'    "ecmf",
    'levtype'   "sfc",
    'number'    "1/2/3/4/5/6/7/8/9/10/11/12/13/14/15/16/17/18/19/20/21/22/23/24/25/26/27/28/29/30/31/32/33/34/35/36/37/38/39/40/41/42/43/44/45/46/47/48/49/50",
    'expver'    "prod",
    'dataset'   "tigge",
    'step'      "0/6/12/18",
    'grid'      "0.5/0.5",
    'param'     "167",
    'time'      "00/12",
    'date'      "2014-11-01",
    'type'      "pf",
    'class'     "ti",
    'target'    "tigge_2014-11-01_0012.grib"
})

来自日本东京日本的rjtd

#!/usr/bin/env python
from ecmwfapi import ECMWFDataServer
    
server = ECMWFDataServer()
    
server.retrieve({
    'origin'    "rjtd",
    'levtype'   "sfc",
    'number'    "1/2/3/4/5/6/7/8/9/10/11/12/13/14/15/16/17/18/19/20/21/22/23/24/25/26",
    'expver'    "prod",
    'dataset'   "tigge",
    'step'      "0/6/12/18",
    'grid'      "0.5/0.5",
    'param'     "167",
    'time'      "00/12",
    'date'      "2014-11-01",
    'type'      "pf",
    'class'     "ti",
    'target'    "tigge_2014-11-01_0012.grib"
}) 

来自rksl,韩国:

#!/usr/bin/env python
from ecmwfapi import ECMWFDataServer
    
server = ECMWFDataServer()
    
server.retrieve({
    'origin'    "rksl",
    'levtype'   "sfc",
    'number'    "1/2/3/4/5/6/7/8/9/10/11/12/13/14/15/16/17/18/19/20/21/22/23",
    'expver'    "prod",
    'dataset'   "tigge",
    'step'      "0/6/12/18",
    'grid'      "0.5/0.5",
    'param'     "167",
    'time'      "00/12",
    'date'      "2014-11-01",
    'type'      "pf",
    'class'     "ti",
    'target'    "tigge_2014-11-01_0012.grib"
})
转至元数据起始

监控您的请求(python中我如何知道是否成功,如何取消请求)

我的要求完成需要多长时间?

根据一些因素和限制,请求可能需要一些时间(从几分钟到几个小时)才能完成。(例如,您提交的请求数,Nr当前正在运行的总活动请求数量,所涉及资源的可用性,最重要的是您的请求效率) 

如何追溯旧请求?

 您的工作列表可用于跟踪旅游请求。

您还可以使用Web-API活动MARS活动页面请参阅为什么MARS活动很重要

哪个是取消请求的最佳方式?

  •  如果您想取消请求,请访问  您的工作,并单击取消选项。
  • 一旦你已经取消了它,请求的状态将成为中止
  •  取消不是推荐的方法,因为它可能会影响其他提交的请求的性能。
  • 参见下一个常见问题。

我可以在本地环境中杀死我的请求(例如通过CTRL + C)

  • (警告)如果您只是本地环境中杀死一个Web API请求(例如通过CTRL + C),那么在web-API服务级别上的相应作业不会被取消,但仍在运行。 
  • 您的请求将您的工作列表中继续有效 
  • http://apps.ecmwf.int/webmars/joblist/ 这个是查看请求的列表的网站,执行完的请求数据以及请求状态都可以看到,请求完成的数据
  • 也可以在这里下载
  • 请参阅以前的常见问题,以查看如何正确取消您的请求。
  • 图为joblist

我的请求已经排队(或活动)了很长时间。我要杀了吗?

  • 根据许多因素和限制,请求可能需要一些时间才能完成。
  • 访问您的工作列表以查看请求的状态
  • 您可能需要访问我们的疑难解答页面了解更多信息。

进一步

我可以要求“netcdf”格式的数据吗?

  • 是的,(微笑) 你只需要添加你的请求“格式”:“netcdf” 

我可以要求有限区域吗?

  • 是 (微笑)
  • 如果您已经在请求中设置了“grid”关键字,可以添加“area”:“coordinates”关键字。您可以设置预定义的区域,例如欧洲,或者使用北/西/南/东的坐标设置区域。
  • 您还可以访问MARS区域关键字以获取更多信息:后处理关键字
  • 见下面的例子。
 "area""europe",
#area:  N/W/S/E
 
#europe
"area""75/-20/10/60",
 
#africa
"area""40/-20/-40/60",

转至元数据结尾
转至元数据起始

  • TIGGE压力水平控制预测
  • TIGGE表面扰动预测

请参阅简要请求语法来了解每个关键字。

TIGGE压力水平控制预测

10m风组件,10m v风组件,来自NCEP。所有压力水平。

ECMWF公共数据集Web界面

 #!/usr/bin/env python
from ecmwfapi import ECMWFDataServer
    
server = ECMWFDataServer()
    
server.retrieve({
    'origin'    "kwbc",
    'levelist'  "200/250/300/500/700/850/925/1000",
    'levtype'   "pl",
    'expver'    "prod",
    'dataset'   "tigge",
    'step'      "0/6/12/18/24/30",
    'grid'      "0.5/0.5",
    'param'     "131/132",
    'time'      "00/06/12/18",
    'date'      "2014-10-01",
    'type'      "cf",
    'class'     "ti",
    'target'    "tigge_2014-10-01_00061218.grib"
})

TIGGE表面扰动预测

2m温度。01 NOV 2014,来自ECMWF

ECMWF公共数据集Web界面

#!/usr/bin/env python
from ecmwfapi import ECMWFDataServer
    
server = ECMWFDataServer()
    
server.retrieve({
    'origin'    "ecmf",
    'levtype'   "sfc",
    'number'    "1/2/3/4/5/6/7/8/9/10/11/12/13/14/15/16/17/18/19/20/21/22/23/24/25/26/27/28/29/30/31/32/33/34/35/36/37/38/39/40/41/42/43/44/45/46/47/48/49/50",
    'expver'    "prod",
    'dataset'   "tigge",
    'step'      "0/6/12/18",
    'grid'      "0.5/0.5",
    'param'     "167",
    'time'      "00/12",
    'date'      "2014-11-01",
    'type'      "pf",
    'class'     "ti",
    'target'    "tigge_2014-11-01_0012.grib"
})

来自日本东京日本的rjtd

#!/usr/bin/env python
from ecmwfapi import ECMWFDataServer
    
server = ECMWFDataServer()
    
server.retrieve({
    'origin'    "rjtd",
    'levtype'   "sfc",
    'number'    "1/2/3/4/5/6/7/8/9/10/11/12/13/14/15/16/17/18/19/20/21/22/23/24/25/26",
    'expver'    "prod",
    'dataset'   "tigge",
    'step'      "0/6/12/18",
    'grid'      "0.5/0.5",
    'param'     "167",
    'time'      "00/12",
    'date'      "2014-11-01",
    'type'      "pf",
    'class'     "ti",
    'target'    "tigge_2014-11-01_0012.grib"
}) 

来自rksl,韩国:

#!/usr/bin/env python
from ecmwfapi import ECMWFDataServer
    
server = ECMWFDataServer()
    
server.retrieve({
    'origin'    "rksl",
    'levtype'   "sfc",
    'number'    "1/2/3/4/5/6/7/8/9/10/11/12/13/14/15/16/17/18/19/20/21/22/23",
    'expver'    "prod",
    'dataset'   "tigge",
    'step'      "0/6/12/18",
    'grid'      "0.5/0.5",
    'param'     "167",
    'time'      "00/12",
    'date'      "2014-11-01",
    'type'      "pf",
    'class'     "ti",
    'target'    "tigge_2014-11-01_0012.grib"
})
原创粉丝点击