Nos estudos de meteorologia é comum a geração de mapas com campos atmosféricos, que permitem-nos analisar o tempo ou o clima para uma determinada região. Dependendo, é claro, do tipo do campo plotado.
Atualmente, tenho usado o NCAR Command Language (NCL, www.ncl.ucar.edu) para o processamento e plotagem de variáveis e parâmetros meteorológicos. O NCL é uma linguagem interpretada (e gratuita) baseada no NCAR Graphics, um pacote de bibliotecas gráficas para C e Fortran. É uma excelente opção para processar dados atmosféricos, visto a grande oferta de funções e procedimentos, além de possibilitar a criação de gráficos de alta qualidade.
Neste "post", gostaria de compartilhar um script simples, que exemplifica a plotagem de um campo atmosférico sobre a América do Sul. Além do mapa da América do Sul, mostro como plotar o mapa do Brasil e destacar alguns Estados. No exemplo, os Estados da Região Sul do Brasil são destacados.
Chega de blá-blá-blá e vamos ao script:
Atualmente, tenho usado o NCAR Command Language (NCL, www.ncl.ucar.edu) para o processamento e plotagem de variáveis e parâmetros meteorológicos. O NCL é uma linguagem interpretada (e gratuita) baseada no NCAR Graphics, um pacote de bibliotecas gráficas para C e Fortran. É uma excelente opção para processar dados atmosféricos, visto a grande oferta de funções e procedimentos, além de possibilitar a criação de gráficos de alta qualidade.
Neste "post", gostaria de compartilhar um script simples, que exemplifica a plotagem de um campo atmosférico sobre a América do Sul. Além do mapa da América do Sul, mostro como plotar o mapa do Brasil e destacar alguns Estados. No exemplo, os Estados da Região Sul do Brasil são destacados.
Chega de blá-blá-blá e vamos ao script:
---------------- INÍCIO DO SCRIPT ----------------------------
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl"
begin
; abrindo arquivo com dados diários da Reanálise II
dados = addfile( "mslp.2008.nc", "r" )
pnmm = short2flt( dados->mslp )
pnmm = pnmm/100. ; convertendo para hPa
time = dados->time
; escolhendo dia e mes
dia = 23
mes = 07
; obtendo a data no formato UT referenciado
dataUT = ut_inv_calendar( 2008, mes, dia, 0, 0, 0, time@units, 0 )
; area da América do Sul
minLat = -60.
maxLat = 10.
minLon = 270.
maxLon = 330.
;\\\\\\\\\\\\\\\\\ PARTE GRÁFICA DO SCRIPT \\\\\\\\\\\\\\\\\\
; recursos gráficos para o mapa
mapa = True ; habilita recursos gráficos
mapa@gsnMaximize = True ; maximiza gráfico
mapa@gsnAddCyclic = False ; para dados não globais
mapa@mpFillOn = True ; preenchimento de cores do mapa
mapa@mpMonoFillColor = True ; preenchimento com uma cor apenas
mapa@mpFillColor = -1 ; transparente, sem preenchimento de cor
mapa@mpDataSetName = "Earth..4" ; para desenhar
mapa@mpDataBaseVersion = "MediumRes" ; divisao
mapa@mpOutlineOn = True ; politica
mapa@mpOutlineSpecifiers = (/"Brazil:states"/) ; brasileira
; escolhendo estados para sombrear
mapa@mpFillAreaSpecifiers = (/"Brazil:Rio Grande do Sul", \
"Brazil:Santa Catarina", \
"Brazil:Parana" /)
mapa@mpSpecifiedFillColors = new( dimsizes(mapa@mpFillAreaSpecifiers),\
string )
mapa@mpSpecifiedFillColors(:) = "grey" ; cor da sombra no mapa
mapa@mpMaxLonF = maxLon ;
mapa@mpMinLonF = minLon ; area
mapa@mpMaxLatF = maxLat ; de
mapa@mpMinLatF = minLat ; plotagem
; controlando informação dos contornos
mapa@cnInfoLabelString = "Contorno de $CMN$ a $CMX$; intervalo = $CIU$"
; aumentando a espessura dos contornos
mapa@cnLineThicknessF = 3.
; criando ambiente gráfico e definindo a sua saída em PostScript
wks = gsn_open_wks( "ps", "pnmm" )
; nome do campo e unidade física
mapa@gsnLeftString = "PNMM para "+sprinti("%0.2i",dia)+ \
"/"+sprinti("%0.2i",mes)+"/2008"
mapa@gsnRightString = "[hPa]"
; plotando campo de PNMM com os estados da Região Sul do Brasil destacados
plotaMapa = gsn_csm_contour_map_ce( wks, pnmm( {dataUT}, \
{minLat:maxLat}, {minLon:maxLon} ), mapa )
; convertendo gráfico de PS para PNG com ferramenta externa (ImageMagick)
system("convert -geometry 1000x1000 -density 300 -trim pnmm.ps pnmm.png")
system("rm -f pnmm.ps") ; apaga arquivo PS end
--------------------------- FIM DO SCRIPT -------------------------------
Os dados de PNMM usados foram obtidos da Renálise II do NCEP-DOE (www.cdc.noaa.gov) e são médias diárias para o ano de 2008. A execução deste script resulta no gráfico abaixo (clique na imagem para vẽ-la em tamanho maior).
Os dados de PNMM usados foram obtidos da Renálise II do NCEP-DOE (www.cdc.noaa.gov) e são médias diárias para o ano de 2008. A execução deste script resulta no gráfico abaixo (clique na imagem para vẽ-la em tamanho maior).

Algumas observações:
(1) como o Blogger não permite linhas longas, várias linhas do script estão cortadas e continuadas na linha seguinte. Por isso, ao copiar o script e colá-lo num arquivo ASCII, observa as linhas atentamente para que o mesmo possa funcionar corretamente.
(2) é possível escolher o dia e o mês para a plotagem, mas note que a data é convertida para outro formato. Este formato é o Tempo Universal Referenciado ou UT-referenced date, que usa um referencial para a contagem do tempo. Mais informações, veja
Modified Julian Date, em http://tycho.usno.navy.mil/mjd.html
Função ut_inv_calendar do NCL, em http://www.ncl.ucar.edu/Document/Functions/Built-in/ut_inv_calendar.shtml
(3) os dados da Reanálise I e II são armazenados em arquivos netCDF em variáveis do tipo short, que permitem salvar algum espaço em disco, pois ocupa menos espaço que variáveis ponto-flutuante (float). Entretanto, para usá-los deve-se convertê-los para o tipo float (equivalente ao REAL, do Fortran). A função short2flt (disponibilizada pela biblioteca contributed.ncl, carregada no início do script) faz este trabalho, pois usa informações importantes disponibilizadas pelo arquivo netCDF para esta conversão. Maiores detalhes, veja http://www.ncl.ucar.edu/Document/Functions/Contributed/short2flt.shtml.
Note como é simples a escolha do(s) Estado(s) brasileiro(s) a ser(em) enfatizado(s), basta usar o seu nome, sem abreviações, sem complicações. Consulte os exemplos no site no NCL para vislumbrar todas as suas possibilidades.
É isso aí, espero que este exemplo possa ser útil.
Abraços,
(1) como o Blogger não permite linhas longas, várias linhas do script estão cortadas e continuadas na linha seguinte. Por isso, ao copiar o script e colá-lo num arquivo ASCII, observa as linhas atentamente para que o mesmo possa funcionar corretamente.
(2) é possível escolher o dia e o mês para a plotagem, mas note que a data é convertida para outro formato. Este formato é o Tempo Universal Referenciado ou UT-referenced date, que usa um referencial para a contagem do tempo. Mais informações, veja
Modified Julian Date, em http://tycho.usno.navy.mil/mjd.html
Função ut_inv_calendar do NCL, em http://www.ncl.ucar.edu/Document/Functions/Built-in/ut_inv_calendar.shtml
(3) os dados da Reanálise I e II são armazenados em arquivos netCDF em variáveis do tipo short, que permitem salvar algum espaço em disco, pois ocupa menos espaço que variáveis ponto-flutuante (float). Entretanto, para usá-los deve-se convertê-los para o tipo float (equivalente ao REAL, do Fortran). A função short2flt (disponibilizada pela biblioteca contributed.ncl, carregada no início do script) faz este trabalho, pois usa informações importantes disponibilizadas pelo arquivo netCDF para esta conversão. Maiores detalhes, veja http://www.ncl.ucar.edu/Document/Functions/Contributed/short2flt.shtml.
Note como é simples a escolha do(s) Estado(s) brasileiro(s) a ser(em) enfatizado(s), basta usar o seu nome, sem abreviações, sem complicações. Consulte os exemplos no site no NCL para vislumbrar todas as suas possibilidades.
É isso aí, espero que este exemplo possa ser útil.
Abraços,
ola estou tentando criar um arquivo netcdf!!
ResponderExcluirmas está uma missao quase impossivel poderia me ajudar??
me e-mail
tomkotarski@hotmail.com