循环 CDO 命令“remapnn”

循环 CDO 命令“remapnn”

我想应用 CDO(气候数据运算符)“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

出于这个原因,我尝试编写以下 bash shell,它允许我对循环中的所有站运行 remapnn 命令:

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

更具体地,其中“lon”应当被分配站的经度,并且其中“lat”应当被分配站的纬度。 “温度.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 文件,否则您只能得到最后一个站的结果。

相关内容