Repita o comando do CDO “remapnn”

1

Eu quero aplicar o comando "remapnn" do CDO (Climate Data Operator) para extrair as séries temporais de um conjunto de pontos que estão armazenados no arquivo "coords.txt". A estrutura do arquivo coords.txt é a seguinte:

station , lat , lon 
ABTR2100 ,39.13,34.52
GRMR0100 ,20.18,49.00
DDDD0100 ,23.22,46.81
SLPT0100 ,26.91,32.23
NDRT0100 ,29.55,48.97

Por esta razão, eu tentei escrever o seguinte bash shell que me permitirá executar o comando remapnn para todas as estações em um loop:

#!/bin/bash
while read p; do
  echo $p
   cdo remapnn,lon=$lon_lat=$lat, temperature.nc $output.nc
done <coords.txt

Mais especificamente, onde "lon" é suposto a longitude da estação e onde "lat" a latitude da estação deve ser atribuída. O arquivo "temperature.nc" é o meu arquivo NetCDF do qual eu quero extrair a série temporal, "out.nc" é a saída. O comando funciona perfeitamente para um único local, por exemplo:

cdo remapnn,lon=34.52_lat=39.13, temperature.nc output.nc

mas infelizmente não funciona em um loop. Esta é a mensagem de erro que recebo:

cdo remapnn (Abort): Open failed on lon==!
    
por Maria Karypidou 02.12.2016 / 23:40

1 resposta

2

Isso é um palpite, já que não tenho ideia do que esse comando cdo faz ou de como funciona.

 #!/bin/bash
 # arrange the input to come from a fixed place
 exec < coords.txt
 # Copy the header line, which looks like "station , lat, lon"
 read -r header
 echo -- "$header"
 while IFS=", " read -r st la lo
 do
    cdo "remapnn,lon=${lo}_lat=${la}," temperature.nc "${st}_out.nc"
 done

Não sei se o cdo anexa ao arquivo output.nc ou você só obterá os resultados da última estação.

    
por 03.12.2016 / 02:45