Gostaria de ajudar?

segunda-feira, 11 de novembro de 2013

Script Download Dados ECMWF/ERA-Interin - Parte 1


Quando eu atualizei o link do "novo" servidor de download de dados da Reanalise do Era-Interim o Helber comentou de um script que possibilitava o download. Segue como fazer:

PS. Para entender os parâmetros e como modificá-los não esqueça de lê o segundo artigo (Script Download Dados ECMWF/ERA-Interim - Parte 2), link no final deste post.

O ECMWF está disponibilizando uma API (Aplication Programming Interface) nas linguagens (Python, Perl e Java) para acesso/download dos seus dados via script/terminal. É uma ferramenta extremamente útil para quem esta familiarizado com este tipo de sistema e não quer baixar os dados via site. Eu recomendo!

Eu irei tentar ensinar como usar a API desenvolvida em Python, escolha a linguagem que você melhor trabalha. Todas estas informações estão disponíveis no site da API no ECMWF.

Para instalar a biblioteca (ecmwfapi) você precisará primeiro instalar o programa pip.

O programa pip é uma excelente alternativa para instalar bibliotecas desenvolvidas em python de maneira fácil, através do terminal. Para instalar o pip no Ubuntu execute no terminal os seguintes comandos:

> sudo apt-get install python-pip python-dev build-essential 
> sudo pip install --upgrade pip 

Agora com o pip instalado execute no terminal: (tudo junto separado por espaço)

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

Este comando irá instalar a biblioteca, você pode verificar ela instalada no diretório:

/usr/local/lib/python2.7/dist-packages/

Feito isso, agora você irá precisar criar a sua chave de acesso. Quando precisávamos baixar os dados da reanálise do ECMWF assim que escolhíamos os dados o site solicitava os dados pessoais (Nome a Instituição e o email), agora com essa API você gera uma chave, insere no script, e não precisará fazer esta autorização sempre que for baixar, agora ela feita automaticamente via API.

Para criar a chave você precisa se cadastrar no site:

http://apps.ecmwf.int/registration/

Um email de conformação será enviado com seu login e senha, confirme clicando no link. Ao fazer login na pagina abaixo será disponibilizado sua chave de acesso:

https://apps.ecmwf.int/auth/login/

Agora que sua chave já esta disponível é preciso criar um arquivo com o nome (.ecmwfapirc) no seu /home/usuario para o acesso ser automático, Obs: o nome do arquivo é .ecmwfapirc com (.) para ficar oculto e sem extensão.

Neste arquivo você irá inserir:

{
    "url"   : "https://api.ecmwf.int/v1",
    "key"   : "XXXXXXXXXXXXXXXXXXXXXX",
    "email" : "john.smith@example.com"
}

,onde vocé irá substituir XXXXXXXXXXXXXXXXXXXXXX pela sua chave e john.smith@example.com pelo email que você utilizou para efetuar o cadastro.

Feito isso você já pode baixar os dados. O ecmwf disponibiliza um script exemplo para teste. Portanto, crie um script em PYTHON e dentro dele insira as linhas: eu chamei o meu script de exemplo.py


#!/usr/bin/env python
from ecmwfapi import ECMWFDataServer

server = ECMWFDataServer()

server.retrieve({
    'dataset' : "tigge",
    'step'    : "24/to/120/by/24",
    'number'  : "all",
    'levtype' : "sl",
    'date'    : "20071001/to/20071003",
    'time'    : "00/12",
    'origin'  : "all",
    'type'    : "pf",
    'param'   : "tp",
    'area'    : "70/-130/30/-60",
    'grid'    : "2/2",
    'target'  : "data.grib"
    })

Salve e dê permissão de execução:

> chmod +x exemplo.py 

Ao executar este script:

>./exemplo.py

Aparecerá uma série de informações no terminal sobre o sistema, dado e o andamento do Download.

Script Download Dados ECMWF/ERA-Interim - Parte 2

Boa Sorte e Bom Trabalho a Todos.

2 comentários :

  1. Para saídas em netcdf, use:

    'format' : "netcdf"

    ResponderExcluir
  2. Só para constar o que aconteceu comigo...
    no lugar de XXXXXXXXXXXXXXX eu inseri meu password
    e o seguinte erro apareceu:
    2014-12-03 16:02:16 ECMWF API python library 1.3
    2014-12-03 16:02:16 ECMWF API at https://api.ecmwf.int/v1
    HTTP Error 403: FORBIDDEN
    Traceback (most recent call last):
    File "./exemplo.py", line 19, in
    'target' : "data.grib"
    File "/usr/local/lib/python2.7/dist-packages/ecmwfapi/api.py", line 413, in retrieve
    c = Request(self.url, "datasets/%s" % (dataset,), self.email, self.key, self.trace, verbose = self.verbose)
    File "/usr/local/lib/python2.7/dist-packages/ecmwfapi/api.py", line 298, in __init__
    user = self.connection.call("%s/%s" % (self.url, "who-am-i"))
    File "/usr/local/lib/python2.7/dist-packages/ecmwfapi/api.py", line 76, in wrapped
    return func(*args,**kwargs)
    File "/usr/local/lib/python2.7/dist-packages/ecmwfapi/api.py", line 248, in call
    raise APIException("ecmwf.API error 1: %s" % (self.last["error"],) )
    ecmwfapi.api.APIException: u'ecmwf.API error 1: Invalid or missing key or token'

    Para saber qual é seu "api key" acesse o link: https://api.ecmwf.int/v1/key/

    Pelo que percebi... "password" não é "api key"

    ResponderExcluir