Usar máscaras em GrADS é algo que enrola muita gente. Já vi muita gente boa não saber usar, ou pior: nem entender como funciona.
O problema não é bem da função MASKOUT do GrADS, mas da fusão (quase sempre necessária) entre as funções MASKOUT e CONST. O ideal é ler os exemplos abaixo com o manual de cada uma das duas funções (manual do MASKOUT e manual do CONST).
Só para lembrar: maskout(#1,#2) plota #1 quando #2 é positivo e undef quando #2 é negativo
Mask simples
d maskout(maskout(var,var-50),-var+60)
(mostra a var entre 50 e 60)
Mask confuso com MASKOUT e CONST
d maskout(maskout(maskout(1, ( const(maskout(maskout(var1*10,var1*10-3.9),-var1*10+5.1),6)-6 ) ), ( const(maskout(maskout(var2,var2-50),-var2+70),9)-9 ) ), ( const(maskout(maskout(var2,var2-50),-var2+70),9)-9 ) )
(mostra o valor 1 onde var1 esta entre 4 e 5 e var2entre 50 e 70. o restante mostra undef)
Confuso, né? Mas bem útil!
Blog que trata sobre novas tendências em meteorologia, bem como uma visão humorada do cotidiano carioca.
Mostrando postagens com marcador GrADS. Mostrar todas as postagens
Mostrando postagens com marcador GrADS. Mostrar todas as postagens
Dicas rápidas para GrADS
POST EM CONSTANTE ATUALIZAÇÃO
PARA VER MAIS DICAS, ASSUNTOS E COMANDOS
BUSQUE NA BARRA ACIMA, À ESQUERDA
PARA VER MAIS DICAS, ASSUNTOS E COMANDOS
BUSQUE NA BARRA ACIMA, À ESQUERDA
Apesar de mexer em meteorologia quase 100% do tempo do meu trabalho, mexo em tantas linguagens de programação que é sempre bom manter um lembrete de algumas estruturas e pedaços de código.
Usa um LS para pegar parâmetros e usar em variáveis (versão DUMB)
'!ls -l u_niveis1000_*dat | tail -1 | awk "{print substr(\$9,14,12)}" > prefixo.txt'
prefixo=read('./prefixo.txt')
prefixo=sublin(prefixo,2)
say prefixo
Pega argumentos direto da linha de comando (versão SMART)
no começo do script
function main(args)
dentro do script
cidade=subwrd(args,1)
say cidade
uso
gradsc -lc "script.gs Rio_de_Janeiro"
POST EM CONSTANTE ATUALIZAÇÃO
PARA VER MAIS DICAS, ASSUNTOS E COMANDOS
BUSQUE NA BARRA ACIMA, À ESQUERDA
PARA VER MAIS DICAS, ASSUNTOS E COMANDOS
BUSQUE NA BARRA ACIMA, À ESQUERDA
Transformações de variáveis meteorológicas
POST EM CONSTANTE ATUALIZAÇÃO
PARA VER MAIS DICAS, ASSUNTOS E COMANDOS
BUSQUE NA BARRA ACIMA, À ESQUERDA
PARA VER MAIS DICAS, ASSUNTOS E COMANDOS
BUSQUE NA BARRA ACIMA, À ESQUERDA
Uma das coisas sempre presentes em Meteorologia é a transformação de variáveis meteorológicas. Às vezes temos umidade específica mas queríamos umidade relativa, outras vezes temos a variável certa, mas na unidade errada...
Vou colar aqui alguns códigos de programação em PHP e GrADS com as transformações que eu mais uso.
* UMIDADE ESPECÍFICA (q) PARA UMIDADE RELATIVA (UR) E TEMPERATURA DO PONTO DE ORVALHO (Td) - PHP
*dados originais:
vetores de 169 posições (7 dias horários)
* código:
for ( $tempo = 0; $tempo <= 168; $tempo += 1) {
$e1=( $q1[$tempo]*$pressao[$tempo])/($q1[$tempo]+0.622);
$es1=6.112*exp(17.67*($temp[$tempo])/($temp[$tempo]+243.5));
$e2=log($q1[$tempo]/0.622*$pressao[$tempo]/(1.0+$q1[$tempo]/0.622));
$tempd[$tempo]=(243.5*( $e2 )-440.8)/(19.48-( $e2 ) );
$ur[$tempo]=($e1/$es1)*100;
}POST EM CONSTANTE ATUALIZAÇÃO
PARA VER MAIS DICAS, ASSUNTOS E COMANDOS
BUSQUE NA BARRA ACIMA, À ESQUERDA
PARA VER MAIS DICAS, ASSUNTOS E COMANDOS
BUSQUE NA BARRA ACIMA, À ESQUERDA
Plotando vento como no meteograma
Muita gente não sabe dar display do vento para ficar como nos meteogramas (como nos meteogramas do ETA20 do CPTEC).
Vou colar aqui embaixo um código comentado para isso:
Atenção, pois sem o set lev variando, o GrADS entende o problema como unidimensional e não plota o vetor.
Vou colar aqui embaixo um código comentado para isso:
* abre o arquivo, prepara a tela e da as coordenadas do ponto
'open arquivo.ctl'
'set display color white'
'clear'
lat=-22
lon=-42
'set lat 'lat
'set lon 'lon
* prepara o ambiente do GrADS
'set z 1'
'set dfile 1'
'set t 1 169'
'set parea .4 8.25 .2 1.9'
* busca o maximo e o intervalo dos dados
* (o minimo e o maximo de sinal trocado)
'set gxout stat'
'd mag(u,v)'
rec=sublin(result,9)
say "rec "rec
maximo=subwrd(rec,6)
say "maximo "maximo
intervalo=subwrd(rec,7)
say "intervalo "intervalo
intervalo=intervalo*2
*configuracoes da magnitude do vento
'set gxout line'
'set vrange 0 ' maximo
'set cmark 0'
'set cthick 10'
'set cstyle 1'
'set ccolor 1'
'set ylint 'intervalo
*da display da magnitude do vento
'set grads off'
'd mag(u,v)'
* aqui que eh importante! detalhe no set lev abaixo.
* com este set lev variando em torno de 1, o GrADS
* acha que existem 3 pontos: o lev .99, 1 e 1.01. com
* esses tres pontos ja e possivel plotar vetores para
* cima e para baixo na tela.
'set lev .99 1.01'
* o exemplo acima esta em coordenadas de massa (WRF,
* por exemplo). se fosse em coordenada de pressão,
* ficaria algo como 'set lev 950 1050',
* deixando 1000hPa no centro
*configuracoes do vetor
'set cthick 10'
'set ylab off'
'set xlab off'
'set frame off'
'set gxout vector'
'set ccolor 12'
'set arrlab off'
*display do vetor
'set grads off'
'd u;v'
*processos finais e geracao de um arquivo PNG
'set ylab on'
'set xlab on'
'set frame on'
'printim meteo.png'
'quit'
Atenção, pois sem o set lev variando, o GrADS entende o problema como unidimensional e não plota o vetor.
Assinar:
Postagens (Atom)