GrADS

O Grid Analysis and Display System (GrADS) é uma ferramenta interativa usada para facilitar o acesso, manipulação e visualização de dados de Ciências da Terra. Suporta dados no formato GRIB, NetCDF, HDF e BUFR. Ele considera um ambiente de cinco dimensões: longitude (lon), latitude (lat), nível vertical (lev), tempo (time) e uma variável meteorológica. Os conjuntos de dados estão relacionados com um arquivo de descrição. Possui uma linguagem de scripts acionada pelo comando run:

/path/gradsnc -blc run script.gs <argumentos>

A opção "-b" executa o grads no modo lote (ou seja, nenhuma janela de saída gráfica é aberta), "-l" executa o grads no modo landscape (paisagem) e "-c" executa o comando fornecido como o primeiro comando assim que o GrADS for iniciado. Para sair do GrADS, deve ser executado o comando "quit". Comentários são feitos com a linha iniciando com cerquilha (#) ou asterisco (*).

O ambiente dimensionado é controlado com o comando set. Quando todas as dimensões estão fixas, está se referindo a um único ponto de grade dos dados; quando uma dimensão está variante, é um conjunto unidimencional de dados, e assim por diante. O comando display (d) exibe os dados de uma determinada variável com respeito ao atual ambiente dimensionado. Antes de dimensioná-lo, é importante limpar a janela gráfica através do comando clean.

Exemplo de mapa feito no GrADScom rodada de previsão numérica de tempo utilizando modelo regional do Laboratório Master (IAG-USP)

Exemplo de mapa feito no GrADS com rodada de previsão numérica de tempo utilizando modelo regional do Laboratório Master (IAG-USP)

O arquivo descritor do GrADS contém informações do arquivo de dados que está sendo descrito, especificado internamente na variável DSET - se o nome do arquivo de dados começar com um acento circunflexo ^, então o conjunto de dados e o arquivo descritor estão no mesmo diretório. A entrada DTYPE especifica o tipo de dado: grib, hdfsds, netcdf, ou station -se não for informado assume-se que o tipo de dado é binário em ponto de grade. Veja mais sobre os formatos de arquivos de dados no post sobre dados de reanálise.

Ainda sobre o arquivo descritor, a entrada UNDEF especifica os valores de dados indefinidos ou ausentes. XDEF, YDEF, ZDEF e TDEF definem os valores dos pontos de grade para a dimensão X (longitude), Y (latitude), Z (altitude) e tempo (em número de passos). O primeiro argumento define o número de passos nessa dimensão e o segundo é o mapeamento, que define o método pelo qual as variáveis são designadas para os pontos de grade: linear (com os argumentos adicionais de início e incremento) ou níveis de pressão (com o argumento adicional que especifica a variável para cada ponto de grade). Por fim, segue uma listagem de n variáveis e suas características, finalizada com "endvars".

As variáveis "rc" e "result" de script estão pré-definidas e seus valores mudam a cada execução dos comandos GrADS do script (na mesma linha ou da linha anterior). Uma variável global tem seu nome começando com um underscore (_) e mantem seu valor em todo o arquivo de script.

O script a seguir recebe como argumentos a latitude, longitude, nome do local, data inicial e data final para extrair os dados de um arquivo binário dessa localidade e imprimir os valores de temperatura mínima, máxima e precipitação em um arquivo de texto. A data incluída está no formato "07SEP2015" (por exemplo), o que exige o uso de uma função para converter o texto do mês para um inteiro, que se encontra no fim do arquivo. Pode-se observar exemplos de como receber argumentos, funções, uso de while e if, como executar operações matemática (a temperatura é convertida de Kelvin para graus Celsius) e como recortar strings.

# Guarda valores de entrada em variaveis
# subwrd (cj de caracteres, n)
function main(args)
lat = subwrd(args,1)
lon = subwrd(args,2)
local = subwrd(args,3)
dati = subwrd(args,4)
datf = subwrd(args,5)

# Abre arquivo descritor de dados do GrADS
'open /path/descritor.ctl'
# Nomeia arquivo onde serao gravados os dados
fname = '/path/'local'.txt'
# Grava cabecalho
rc = write(fname,'data,tmin,tmax,prec')

# Alteracao de ambiente dimensionado
# Define coordenadas de onde serao pegos os dados
'set lat 'lat
'set lon 'lon
# Define datas inicial e final
'set time 'dati
'q dim'
ti = subwrd(result,41)
'set time 'datf
'q dim'
tf = subwrd(result,41)

while (ti <= tf)
'set t 'ti
'q dim'
tempo = subwrd(result,38)
dia = substr(tempo,4,2)
mes = substr(tempo,6,3)
mes = convmes(mes)
# substr (cj de caracteres, inicio, comprimento)
ano = substr(tempo,9,4)
'd tmin'
tmin = subwrd(result,4)
tmin = math_nint(tmin)
'd tmax'
tmax = subwrd(result,4)
tmax = math_nint(tmax)
'd prec'
prec = subwrd(result,4)
prec = math_nint(prec)
# Escreve variaveis em arquivo de saida; tambem converte temperatura
rc = write(fname,dia'/'mes'/'ano','tmin-273','tmax-273','prec,append)
ti=ti+1
endwhile
rc = close(fname)
'quit'

function convmes(i)
if ( i = JAN ) ; conv = 01 ; endif
if ( i = FEB ) ; conv = 02 ; endif
if ( i = MAR ) ; conv = 03 ; endif
if ( i = APR ) ; conv = 04 ; endif
if ( i = MAY ) ; conv = 05 ; endif
if ( i = JUN ) ; conv = 06 ; endif
if ( i = JUL ) ; conv = 07 ; endif
if ( i = AUG ) ; conv = 08 ; endif
if ( i = SEP ) ; conv = 09 ; endif
if ( i = OCT ) ; conv = 10 ; endif
if ( i = NOV ) ; conv = 11 ; endif
if ( i = DEC ) ; conv = 12 ; endif
return conv

O GrADS é muito usado para imprimir mapas e gráficos das variáveis. Podem ser apresentados usando o comando d (display) e 'printim /path/grafico.png x600 y600 white' para gravá-lo em um arquivo de imagem PNG - os parâmetros são o tamanho em pixel nos eixos x e y e fundo branco.

Um manual do GrADS pode ser visto em português nesse link do CPTEC/INPE. Este Reference Card também pode ajudar bastante.

Compartilhe o link desse texto, mas se for copiar algum trecho, cite a fonte. Valorize nosso trabalho.
Mais informações na licença de uso do site.

Um Pingback/Trackback