A pedido de Luana Pampuch segue um exemplo para salvar no GrADS figuras em .pdf ou .eps e etc.
No OpenGrADS existe um comando chamado GxYAT que você pode criar figuras em PDF, PNG, Postscript e SVG.
Para quem escreve textos em Latex (meu caso) é excelente pois as figuras ficam com excelente resolução e durante a impressão as figuras não perdem qualidade.
Portanto, para quem esta escrevendo TCC, Dissertação ou Tese fica a dica, aprendam Latex salvem suas figuras em PDF e se livrem de serem cobrados pela má qualidade das figuras durante as defesas :).
como usar no GrADS:
'enable print nome_da_figura.gmf'
.
.
.
'print'
'disable print'
'quit'
No Terminal Linux digite:
> gxyat -o nome_da_figura.pdf nome_da_figura.gmf
É isso!!
Boa Sorte e Bom Trabalho a Todos
quinta-feira, 6 de fevereiro de 2014
terça-feira, 4 de fevereiro de 2014
Script GrADS Barra em formato de Diamante
Olha o GrADS surpreendendo novamente. Recentemente encontrei um script que plota uma barra de cores em formato de diamante e irei compartilhar com vocês. Acredito que fazer figuras para apresentações com este tipo de barra pode ser interessante, vamos lá:
Para usar as opções são as seguintes:
'run diamondbar.gs -r -marg 0.1 -font 0.09 -fs 2'
Este comando serve para plotar a figura acima seguindo o exemplo disponibilizado abaixo.
Opções:
-help = Ajuda;
-loc = Escolhe um local para a colorbar (r=direita-vertical, l=esquerda-vertical,
b=base-horizontal, t=topo-horizontal),
você também pode chamar o comando através de (-l, -r, -b, -t);
-size/s = Escolha o tamanho dos diamantes;
-marg = Escolha a margem para o eixo;
-fs/int = Escolha o intervalo para cada número plotado ao longo da colorbar;
-font/fontsize = Escolha o tamanho da fonte dos números;
-scol = Escolha a cor dos números;
-line = Desenha o contorno de cada diamante caso deseje.
Scripts utilizados:
barradiamante.gs
Exemplo.gs
Simples assim, espero que funcione.
Boa Sorte e Bom Trabalho a Todos!!
sexta-feira, 22 de novembro de 2013
Instalação PyFerret com Python 2.6
Mais uma contribuição do Paulo Henrique e Marcelo Rodrigues, encaminhada pelo Dr. Antonio Carlos Santana dos Santos - Prof. Adjunto Vice-Coordenador do Curso de Física da Universidade Estadual do Ceará.
Um Tutorial da instalação do PyFerret para Debian 7 com o Python 2.6.
PS. Segundo os autores esta instalação funcionará para qualquer distribuição Linux desde que tenha o Python 2.6 instalado.
Clique aqui.
Mai uma vez obrigado ao Paulo Henrique e Marcelo Rodrigues pelo desenvolvimento e ao Dr. Antonio Carlos Santana dos Santos pela divulgação e contribuição.
Boa Sorte e Bom Trabalho a Todos!!
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.
Script Download Dados ECMWF/ERA-Interin - Parte 2
Agora que já sabemos como instalar a API do ECMWF e já fizemos o teste do download vamos explicar o que cada parâmetro do script (exemplo.py) significa e principalmente se eu precisar baixar um dado onde devo modificar, o que modificar?
No script (exemplo.py) do post anterior:
#!/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"
})
#!/usr/bin/env python
from ecmwfapi import ECMWFDataServer
server = ECMWFDataServer()
server.retrieve({
'dataset' : "interim", (modificado)
'step' : "0", (modificado)
'levelist' : "850", (inserido)
'date' : "2013-01-01/to/2013-02-28", (modificado)
'time' : "00/06/12/18", (modificado)
'origin' : "all", (removi)
'type' : "an", (modificado)
'class' : "ei", (inserido)
'param' : "131.128", (modificado)
'area' : "70/-130/30/-60", (removi)
'grid' : "0.75/0.75", (modificado)
'target' : "uwnd.01012013.01022013.grib" (modificado)
})
No script (exemplo.py) do post anterior:
#!/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"
})
dataset = servidor de dado. O ERA-interim se chama interim (independente se for superfície ou níveis de pressão);
step = time step. Neste exemplo tigge são dados de modelo;
number = número de arquivos;
levtype = nível: sl = surface level e pl = pressure level;
date = intevalo dos dados que você irá baixar;
date = intevalo dos dados que você irá baixar;
time = pode ser 00, 06, 12, 18 horas;
origin = este parâmetro se refere ao tigge (qual modelo você irá baixar);
type = dado: an = análise e pf = previsão;
param = variável;
area = para os dados do tigge você pode escolher a área para os dados do ERA-Interim você baixa para o globo todo;
grid = espaçamento de grade;
target = nome do arquivo que será salvo. (Sempre com a extensão .grib o sistema ainda não possibilita baixar em outra extensão, mas esta em fase de construção baixar em Netcdf por exemplo);
Quando eu cheguei neste ponto eu decidi testar este script para baixar os dados de vento zonal para um determinado período e não consegui encontrar o nome exato para o param(variável) foi ai que encontrei esta informação diretamente no site do ECMWF.
Quando você for no site para download do ERA-Interim (aqui) escolha o período, nível (se for o caso), variável e etc exatamente como fazia anteriormente. No entanto, quando você for clicar para fazer o download (Retrieve Grib ou Retrieve Netcdf) você deverá clicar em Views the MARS request e as informações dos seus dados necessárias para você modificar o seu script aparecerão ai é só modificar e sair para o abraço.
Quando você for no site para download do ERA-Interim (aqui) escolha o período, nível (se for o caso), variável e etc exatamente como fazia anteriormente. No entanto, quando você for clicar para fazer o download (Retrieve Grib ou Retrieve Netcdf) você deverá clicar em Views the MARS request e as informações dos seus dados necessárias para você modificar o seu script aparecerão ai é só modificar e sair para o abraço.
Eu fiz um teste para os seguintes dados:
Eu primeiro escolhi no site Pressure Level;
Escolhi janeiro e fevereiro de 2013;
No Select time escolhi (00:00:00, 06:00:00, 12:00:00, 18:00:00)
No Select Level e parameter escolhi U component of wind e level 850
Depois cliquei em Views the MARS request e apareceu o seguinte:
request (desconsidere)
Estimated number of fields: 472 (desconsidere)
retrieve, (desconsidere)
levelist=850,
stream=oper,
levtype=pl,
param=131.128,
dataset=interim,
step=0,
grid=0.75/0.75,
time=00/06/12/18,
date=2013-01-01/to/2013-02-28,
type=an,
class=ei
E o meu script atualizado ficou assim:
#!/usr/bin/env python
from ecmwfapi import ECMWFDataServer
server = ECMWFDataServer()
server.retrieve({
'dataset' : "interim", (modificado)
'step' : "0", (modificado)
'levelist' : "850", (inserido)
'stream' : "oper", (inserido)
'number' : "all", (removi)
'levtype' : "pl", (modificado)'date' : "2013-01-01/to/2013-02-28", (modificado)
'time' : "00/06/12/18", (modificado)
'origin' : "all", (removi)
'type' : "an", (modificado)
'class' : "ei", (inserido)
'param' : "131.128", (modificado)
'area' : "70/-130/30/-60", (removi)
'grid' : "0.75/0.75", (modificado)
'target' : "uwnd.01012013.01022013.grib" (modificado)
})
No levelist você pode inserir os níveis que precisar. Espero que tenham entendido e principalmente que funcione.
Boa Sorte e Bom Trabalho a Todos.
quinta-feira, 7 de novembro de 2013
Instalando o Climate Data Operator (CDO) com NetCDF, GRIB2 e HDF5
Para instalar o Climate Data Operator (CDO) com suporte para NetCDF, GRIB2 e HDF5. Você pode seguir os seguintes passos:
PS_1. Copie o comando existente dentro das caixas e cole em seu terminal. Isto evita problema de configurações de fonte.
PS_2. Os links de downloads (wget) podem estar desatualizados.
PS_3. Para aqueles que desejam instalar o CDO somente com suporte para Netcdf é necessário instalar a ZLIB, HDF5 e o Netcdf.
Baixe o CDO no site https://code.zmaw.de/projects/cdo/files
Para baixar no Linux use:
PS_4. Você pode baixar a última versão do CDO
wget -c http://ftp.nsysu.edu.tw/FreeBSD/ports/local-distfiles/sunpoet/cdo-1.5.9.tar.gz
Baixe o NetCDF no site http://www.unidata.ucar.edu/downloads/netcdf/index.jsp
ou,
wget -c http://pkgs.fedoraproject.org/repo/pkgs/netcdf/netcdf-4.2.1.1.tar.gz/5eebcf19e6ac78a61c73464713cbfafc/netcdf-4.2.1.1.tar.gz
Baixe o Grib API no site https://software.ecmwf.int/wiki/display/GRIB/Releases
ou,
wget -c https://software.ecmwf.int/wiki/download/attachments/3473437/grib_api-1.9.18.tar.gz
Baixe o Jasper no site http://www.ece.uvic.ca/~frodo/jasper/#download
ou,
wget -c http://www.ece.uvic.ca/~frodo/jasper/software/jasper-1.900.1.zip
Baixe o HDF5 e zlib no site ftp://ftp.unidata.ucar.edu/pub/netcdf/netcdf-4
Agora iremos começar a instalação.
Primeiro passo:
Em que diretório irá fazer a instalação do CDO? Sugestão /usr/local/cdo (crie a pasta que deseja instalar)
Segundo Passo:
Descompacte os arquivos baixados. Cada arquivo irá gerar uma pasta.
Ex: /home/usuario/Download/netcdf-4
Terceiro Passo: Começo da instalação.
ZLIB
Dentro da pasta da biblioteca execute o comando:
(/usr/local/cdo esta é a sugestão modifique a seu critério)
./configure -prefix=/usr/local/cdo
make
make check
make install
HDF5
Dentro da pasta da biblioteca execute o comando:
./configure -with-zlib=/usr/local/cdo -prefix=/usr/local/cdo CFLAGS=-fPIC
make
make check
make install
NetCDF
Dentro da pasta da biblioteca execute o comando:
CPPFLAGS=-I/usr/local/cdo/include LDFLAGS=-L/usr/local/cdo/lib ./configure -prefix=/usr/local/cdo CFLAGS=-fPIC
make
make check
make install
Jasper
Dentro da pasta da biblioteca execute o comando:
./configure -prefix=/usr/local/cdo CFLAGS=-fPIC
make
make check
make install
Grib
Dentro da pasta da biblioteca execute o comando:
./configure -prefix=/usr/local/cdo CFLAGS=-fPIC -with-netcdf=/usr/local/cdo -with-jasper=/usr/local/cdo
make
make check
make install
Instalando o CDO
Dentro da pasta da biblioteca execute o comando:
./configure -prefix=/usr/local/cdo CFLAGS=-fPIC -with-netcdf=/usr/local/cdo -with-jasper=/usr/local/cdo -with-hdf5=/usr/local/cdo -with-grib_api=/usr/local/cdo
make
make check
make install
Desta forma você conseguirá instalar o CDO com suporte para netcdf, HDF5 e Grib.
PS_5. Instalando desta forma os binários de todas as bibliotecas estarão dentro do diretório /usr/local/cdo/bin e se você quiser pode adicionar este PATH no seu .bashrc. Você pode compilar as bibliotecas em pastas separadas a única alteração é indicar os diretórios corretos no momento de compilar o CDO.
PS_6. Excelente apostila para uso do CDO em Português você encontra no site do Guilherme Martins é só clicar aqui e baixar.
Boa Sorte e Bom Trabalho a Todos!!
quarta-feira, 30 de outubro de 2013
Salvando arquivo texto no GrADS
A pedidos de Camila Carpenedo, segue uma dica de como salvar uma ou mais variável em um arquivo texto (.txt, ascii e etc) no GrADS.
A solução para isso é utilizar o comando 'set gxout print' e 'set prnopts ' format ' ' numl ' ' numb ' ' u ' '. No entanto, para que não tenhamos grandes dificuldades irei disponibilizar para vocês o script/função desenvolvida no OpenGrADS Cookbooks.
A função é a seguinte:
function fprintf(args)
* Command line argumets
* ---------------------
expr = subwrd(args,1)
file = subwrd(args,2)
format = subwrd(args,3)
numl = subwrd(args,4)
numb = subwrd(args,5)
u = subwrd(args,6)
if ( file='' )
say ''
say 'NAME'
say ' fprintf - print GrADS variables to a text file'
say ''
say 'SYNOPSIS'
say ' fprintf expr txtFile [format numl numb [u]]'
say ''
say 'DESCRIPTION'
say ' Evaluates the contents of the GrADS expression *expr* writing'
say ' its values to a formatted text file *txtFile*. On output, the'
say ' number of values and the undef values are returned; a negative'
say ' number of values signals an error condition.'
say ''
say ' Unlike the output of *set gxout print*, the resulting ASCII'
say ' file has only the data values and *no header*.'
say ''
say 'OPTIONS'
say ' The optional parameters are the same as the ones required by'
say ' the GrADS command *set prnopts*, namely'
say ' format a C language template for formatting ASCII output.'
say ' Default is %g.'
say ' numl number of values to print per record. Default is 8.'
say ' numb number of blanks to insert between values. Default is 1.'
say ' u print "Undef" instead of the numerical value for'
say ' missing data.'
say 'BUGS'
say ' The GrADS expression cannot have spaces in it.'
say ''
say 'COPYRIGHT'
say ' This script has been placed in the public domain'
say ''
return
endif
* Set the display environment and produce buffered ASCII output
* -------------------------------------------------------------
'set gxout print'
if ( format != '' )
'set prnopts ' format ' ' numl ' ' numb ' ' u ' '
endif
'display ' expr
if ( rc!=0 ); return -1; endif
* Get rid of header line: Printing Grid -- 3358 Values -- Undef = 1e+20
* but record number of values and undef values for later reference
* ---------------------------------------------------------------------
buffer = result
i = 1; line = sublin(buffer,i)
n = subwrd(line,4)
undef = subwrd(line,9)
* Now write the data values to text file: first line...
* -----------------------------------------------------
i = 2; line = sublin(buffer,i)
if ( write_(file,line) > 0 ); return -2; endif
* Append subsequent lines
* -----------------------
i = i + 1; line = sublin(buffer,i)
while ( line != '' )
if ( write_(file,line,append) != 0 ); return -3; endif
i = i + 1; line = sublin(buffer,i)
endwhile
if ( close(file) != 0 ); return -4; endif
* All done
* --------
say 'wrote ' n ' values to file "' file '"'
return n ' ' undef ' '
function write_(file,line)
rc = write(file,line)
return subwrd(rc,1)
Para utilizar a função é simples:
Você deve criar um arquivo .gs contendo a função descrita acima chamada de fprintf.gs. Você pode salvar a função no diretório script do GrADS e desta forma você poderá "chamar" a função da mesma forma que você chamas as funções de barra (cbar, cbarn e etc) somente pelo nome.
Após criar a variável que pode ser uma média, anomalia, serie temporal e etc, basta executar o seguinte comando:
ga -> fprintf variável arquivo.txt
No Cookbooks existe umas outras funcionalidade interessantes que vocês podem aproveitar.
Boa Sorte e Bom Trabalho a Todos!!
Para utilizar a função é simples:
Você deve criar um arquivo .gs contendo a função descrita acima chamada de fprintf.gs. Você pode salvar a função no diretório script do GrADS e desta forma você poderá "chamar" a função da mesma forma que você chamas as funções de barra (cbar, cbarn e etc) somente pelo nome.
Após criar a variável que pode ser uma média, anomalia, serie temporal e etc, basta executar o seguinte comando:
ga -> fprintf variável arquivo.txt
No Cookbooks existe umas outras funcionalidade interessantes que vocês podem aproveitar.
Boa Sorte e Bom Trabalho a Todos!!
Assinar:
Postagens
(
Atom
)