Como ler valor de ponto em NetCDF?

Aqui vão dois scripts (GrADS e Python) para leitura de valor em um ponto de um mapa em formato NetCDF, dada a latitude e longitude. Algumas personalizações, como nome da variável e nome/localização do arquivo também são necessárias. Os scripts e o arquivo de exemplo estão disponíveis no Github (viniroger/nc_value).

O GrADS pode ser instalado pelo repositório do Linux ou baixando e compilando o programa – veja mais informações sobre instalação e sintaxe no post do link. Agradeço ao Marcos Lourenço por ceder o código. Para executar o script em GrADS do repositório (get_value.gs), execute o seguinte comando:

grads -bpc "run get_value.gs -23.54 -46.63"

Os valores informados são exemplos de latitude e longitude, respectivamente. O script recebe esses valores como parâmetros, lê o arquivo informado através do comando “sdfopen” (“open” abre ctl e “sdfopen” abre netcdf) e define latitude e longitude recebidas. Esse arquivo só tem um tempo (“time”), mas pode ser informado algum específico. Também é definido o nome da variável a ser lida. Por fim, o valor do pixel que contém as coordenadas informadas é lido e impresso na tela – no caso, deve ser 37.3144.

O script em python (get_value.py) também recebe os valores de latitude e longitude como argumentos de entrada, sendo executado da seguinte forma:

python get_value.py -23.54 -46.63

Deve-se informar o nome do arquivo a ser lido na variável “”, cujo conteúdo será referenciado na variável “dataset”. Também informe o nome da variável (“varname”) e o tempo (“time”). O script depende da instalação dos pacotes “netCDF4”, “numpy” e “sys” e funciona basicamente com duas funções:

  • latlon_finder – encontra o pixel (coordenadas “i,j”) que contém o valor de latitude e longitude informados, retornando as coordenadas “i,j”;
  • get_pixel_value – recebe as coordenadas do pixel, assim como o dataset, o nome da variável e o tempo (“-1” para o caso de não haver variável “time”, que é o caso do exemplo).

Em ambos os scripts, atente para o nome que a latitude e a longitude são referenciadas. Por exemplo, latitude pode ser ‘latitude’ ou ‘lat’.

Compartilhe :)

Leave a Reply

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.