netCDF Operators (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 arquivo arquivo.nc é um nome fictício. É mostrado abaixo apenas um pequeno trecho da saída desse comando.

../../_images/nco_fig01.png

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] (latitudeparalatelongitudeparalon`).

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 atributo positve com o valor down 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 atributo axis = "Z".

../../_images/nco_fig02.png

  • Serão criados os atributos positive, units e long_name na variável lev que terão valores down,millibar e Level, respectivamente. Tudo isso é feito no arquivo ATM.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 atributo axis = "Z", agora possui 3 novos atributos (positive, units e long_name), e o responsável pela correta visualização dos níveis verticais é o atributo positive = "down". Os demais atributos servem para fornecer informações adicionais sobre a variável lev.

../../_images/nco_fig03.png

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

../../_images/nco_fig04.png

  • 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 e output.nc é o arquivo de saída. O output.nc é um nome qualquer definido pelo usuário.

  • O nome lon em defdim("lon",1), define o nome da dimensão a ser criada e o mesmo se aplica em defdim("lat",1). Com isso foram criados os nomes das dimensões lon e lat 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 em defdim("lat",1), isto é, um ponto de latitude uma vez que esse arquivo é uma série temporal, logo lon = 1 e lat = 1.

  • O valor -60 em lon[lon]=-60 e -10 em lat[lat]=-10 representam um valor qualquer de lon e lat, 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:

../../_images/nco_fig05.png

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.

../../_images/nco_fig06a.png

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.

../../_images/nco_fig06b.png

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