루프 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 파일에 추가되었는지는 알 수 없습니다. 그렇지 않으면 마지막 스테이션의 결과만 얻게 됩니다.

관련 정보