我想应用 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 文件,否则您只能得到最后一个站的结果。