ループCDOコマンド "remapnn"

ループCDOコマンド "remapnn"

CDO(Climate Data Operator)「remapnn」コマンドを適用して、「coords.txt」ファイルに保存されているポイントセットの時系列を抽出したいと思います。 coords.txt ファイルの構造は次のとおりです。

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

このため、私はループ内のすべてのステーションに対してremapnnコマンドを実行できる次のbashシェルを書いてみました。

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

具体的には、「lon」には観測所の経度を割り当て、「lat」には観測所の緯度を割り当てる必要があります。 「temp.nc」ファイルは時系列を抽出するNetCDFファイルで、「out.nc」は出力です。このコマンドは、次のような単一の場所に適しています。

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

しかし、残念ながらループでは機能しません。私が受け取ったエラーメッセージは次のとおりです。

cdo remapnn (Abort): Open failed on lon==!

答え1

cdoこのコマンドが何をしているのか、どのように機能するのかわからないので、これは推測です。

 #!/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

cdoがoutput.ncファイルに追加されたかどうかはわかりません。それ以外の場合は、最後のステーションの結果のみが得られます。

関連情報