netCDF Operators (NCO)
Link para o site do NCO
Instalando o nco
sudo apt-get install nco
As informações abaixo ou atributos foram obtidas com o comando
ncdump -h arquivo.nc
. O arquivoarquivo.nc
é um nome fictício. É mostrado abaixo apenas um pequeno trecho da saída desse comando.
Exemplos de uso com o nco
1 Apagar o atributo long_name
da variável precip
. São utilizadas aspas duplas duas vezes.
ncatted -a long_name,precip,d,c,"" input.nc output.nc
2 Alterar o nome da variável precip
para prec
.
ncrename -v precip,prec input.nc output.nc
3 Alterar o nome de uma dimensão (nome que está entre os parênteses na figura acima). Exemplo: alterar o nome da dimensão lat
para latitude
.
ncrename -d lat,latitude input.nc output.nc
4 Alterar o nome da variável [-v]
(latitude
para lat
e longitude para
lon) e sua dimensão
[-d] (
latitudepara
late
longitudepara
lon`).
ncrename -v latitude,lat -v longitude,lon -d latitude,lat -d longitude,lon input.nc output.nc
5 Alterar o nome do atributo units
da variável precip
de mm/day
para mm dia-1
.
ncatted -a units,precip,o,c,"mm dia-1" input.nc output.nc
6 Alterar o calendário da variável time
para standard
.
ncatted -a calendar,time,m,c,"standard" input.nc output.nc
7 Criar o atributo missing_value
ou _FillValue
para a variável precip
. Caso não adicione a váriável precip
no comando abaixo, serão criados os valores missing_value
e _FillValue
para todas as variáveis do arquivo. O valor -999
fica a critério de cada um.
ncatted -O -a _FillValue,precip,o,f,-999 -a missing_value,precip,o,f,-999 input.nc output.nc
8 Reordenar as dimensões da variável precip
que se encotram na seguinte ordem precip(time,lat,lon)
para precip(lat,lon,time)
.
ncpdq -a lat,lon,time input.nc output.n
9 Criar vários atributos (standard_name
, missing_value
, _FillValue
,precip
e units
) de uma só vez para a variável precip
.
ncatted -O -a standard_name,precip,c,c,"Precipitacao" -O -a missing_value,precip,c,f,-999 -O -a _FillValue,precip,c,f,-999 -O -a units,precip,c,c,"mm/day" input.nc output.nc
10 Apagar a variável e a dimensão time
do arquivo.
ncks -C -O -x -v time input.nc output1.nc
ncwa -a time output1.nc output2.nc
11 Criar atributos para a dimensão nível vertical.
Ao tentar visualizar o arquivo ATM.perfil.nc, a distribuição vertical dos níveis é: 100 200 300 400 500 600 700 800 850 900 950 1000. Porém, deseja-se que o primeiro nível vertical seja 1000 hPa e não 100 hPa. Isso ocorre porque está faltando um atributo na variável
lev
que define qual o sentido que o nível vertical deve aumentar ou diminuir. Sabe-se que o nível vertical aumenta em direção a superfície terrestre, portanto, deve-se criar o atributopositve
com o valordown
para visualizar de forma correta os níveis verticais.A imagem abaixo é o resultado do comando ncdump -h ATM.perfil.nc que é o arquivo original
Nota-se que a variável
lev
tem apenas o atributoaxis = "Z"
.
Serão criados os atributos
positive
,units
elong_name
na variávellev
que terão valoresdown
,millibar
eLevel
, respectivamente. Tudo isso é feito no arquivoATM.perfil.nc
, ele não será apagado. O novo arquivo (tmp.nc) terá todas as novas modificações desejadas.Para consertar o arquivo, basta fazer:
ncatted -O -a positive,lev,c,c,"down" -a units,lev,c,c,"millibar" -a long_name,lev,c,c,"Level" ATM.perfil.nc tmp.nc
O resultado é mostrado na figura abaixo:
A variável
lev
que antes só tinha o atributoaxis = "Z"
, agora possui 3 novos atributos (positive
,units
elong_name
), e o responsável pela correta visualização dos níveis verticais é o atributopositive = "down"
. Os demais atributos servem para fornecer informações adicionais sobre a variávellev
.
12 Criar a dimensão lat e lon no arquivo para plotar no GrADS.
Ao tentar abrir o arquivo maosodarS1.b1.20140301.000000.cdf no GrADS, a mensagem abaixo aparecerá. Esse arquivo é uma série temporal, logo possui apenas um ponto de latitude e um ponto de longitude.
Esse arquivo está disponível clicando aqui
Para resolver isso, basta usar o comando abaixo. O
ncap2
faz parte do nco.
ncap2 -s 'defdim("lon",1);lon[lon]=-60;lon@units="degrees_east";lon@axis="X";lon@long_name="longitude";defdim("lat",1);lat[lat]=-10;lat@units="degrees_north";lat@axis="Y";lat@long_name="latitude"' maosodarS1.b1.20140301.000000.cdf output.nc
maosodarS1.b1.20140301.000000.cdf
é o arquivo de entrada eoutput.
nc é o arquivo de saída. Ooutput.nc
é um nome qualquer definido pelo usuário.O nome
lon
emdefdim("lon",1)
, define o nome da dimensão a ser criada e o mesmo se aplica emdefdim("lat",1)
. Com isso foram criados os nomes das dimensõeslon
elat
no arquivo output.nc.Os nomes que têm
"@"
são os atributos criados para essas dimensões.O valor 1 em
defdim("lon",1)
representa um ponto de longitude, e o mesmo se aplica emdefdim("lat",1)
, isto é, um ponto de latitude uma vez que esse arquivo é uma série temporal, logolon = 1
elat = 1
.O valor
-60
emlon[lon]=-60
e-10
emlat[lat]=-10
representam um valor qualquer delon
elat
, respectivamente. Escolha um valor de sua preferência.
13 Remover os atributos globais.
ncatted -h -a history,global,d,, input.nc output.nc
14 Remover dimensões indesejadas
Ao tentar manipular dados do ERA5 com o CDO em alguns casos surgirão alguns erros. Isso ocorre porque no NetCDF tem uma dimensão chamada expver
que precisa ser removida. Isso é feito utilizando o nco conforme demonstrado na figura abaixo:
Para remover esta dimensão basta utilizar o comando abaixo:
ncwa -O -a expver input.nc output.nc
15 Adicionando atributos as coordenadas latitude e longitude de um arquivo
Quando os atributos degrees north
e degrees east
não estão no arquivo e ao tentar realizar alguma manipulação no mesmo, será retornado erro. Um exemplo pode ser visto na figura abaixo.
As informações do conteúdo do arquivo foram visualizadas com o comando ncdump -h teste_file.nc
. Nota-se que não há esses atributos, e para resolver isso, basta utilizar o comando abaixo.
Comando para resolver esse problema:
ncatted -O -a units,lat,o,c,"degrees north" -a units,lon,o,c,"degrees east" test_file.nc output.nc
Nota-se que o output.nc
possui os atributos mencionados anteriormente conforme a figura abaixo. Com isso, é possível manipular adequadamente o seu arquivo.
Importante: O nome das coordenadas são lat
e lon
por isso foi utilizado esse nome no comando acima. Caso no seu arquivo o nome seja latitude
e longitude
, altere para o nome correto. O comando ficaria da seguinte forma:
ncatted -O -a units,latitude,o,c,"degrees north" -a units,longitude,o,c,"degrees east" test_file.nc output.nc
16 Apagar a dimensão time_bnds
ncks -C -x -v time_bnds input.nc output.nc
17 Adicionando informações ao atributo glogbal do arquivo NetCDF
Será criado “Informações” no atributo “global”, e os valores associados a eles são: “Autor:Guilherme Martins” e “E-mail:teste@gmail.com”. O “\n” quer dizer, a próxima linha (quebra de linha). O “-O” sobrescreve o arquivo caso ele exista.
ncatted -a Informações,global,a,c,"Autor:Guilherme Martins\n E-mail:jgmsantos@gmail.com" input.nc
Há outra forma de fazer a mesma atividade. Serão inseridas as informações: “Autor”, “E-mail” e “Site”. Sempre que alguma informação a ser inserida tiver espaço, coloque toda a expressão entre aspas.
ncatted -a Autor,global,a,c,"Guilherme Martins" -a "E-mail para contato",global,a,c,"jgmsantos@gmail.com" -a Site,global,a,c,"www.teste.com.br" input.nc
18 Deletar atributos globais
Deseja-se deletar a variável “history” e “CDI” do atributo global.
ncatted -a history,global,d,, -a CDI,global,d,, input.nc