코드는이 대답은 작동합니까 Add a new dimension하지만 내가하고 싶은 일을하지 않습니다.netCDF의 기존 변수에 새 치수를 추가하는 방법은 무엇입니까?
내 문제를 자세히 설명하기 위해 - 다음 정의가 있습니다 시간 (무제한), 위도, 경도, 4 차원 및 1 개의 가변 지오 전위가 있습니다. 내가 원하는 것은 기존의 가변 지오 전위 높이에 dimz_Z 차원을 추가하는 것입니다. netCDF의 파일이 ncdump
float hgt(time, level, lat, lon)
그러나 ncks의 출력에서 아래와 같이 dimz_Z 치수가 누락과 같은 모양을
은 지금 여기에 위의 코드에서 답이다.
hgt dimension 0: time, size = 1 NC_DOUBLE, chunksize = 1 (Record coordinate is time)
hgt dimension 1: level, size = 1 NC_FLOAT, chunksize = 1 (Coordinate is level)
hgt dimension 2: lat, size = 23 NC_FLOAT, chunksize = 23 (Coordinate is lat)
hgt dimension 3: lon, size = 21 NC_FLOAT, chunksize = 21 (Coordinate is lon)
그것은 정의에 표시 않고 독립형 차원과 HGT의 차원의 하지 일환으로
dimz_Z: type NC_FLOAT, 1 dimension, 0 attributes, compressed? no, chunked? no, packed? no
dimz_Z size (RAM) = 483*sizeof(NC_FLOAT) = 483*4 = 1932 bytes
dimz_Z dimension 0: dimz_Z, size = 483 NC_FLOAT (Coordinate is dimz_Z)
이 파일의 출력
time[0]=1879032 level[0]=1000 lat[0]=60 lon[0]=50 hgt[0]=53 m
time[0]=1879032 level[0]=1000 lat[0]=60 lon[1]=52.5 hgt[1]=55 m
내가 원하는 것은 다음과 같습니다.
time[0]=1879032 level[0]=1000 lat[0]=60 lon[0]=50 dimz_Z[0]=0 hgt[0]=53 m
time[0]=1879032 level[0]=1000 lat[0]=60 lon[1]=52.5 dimz_Z[0]=0 hgt[1]=55 m
내가 친구에게 들었던 말은 기존 변수에이 측정 기준을 추가 할 수 없다는 것입니다. 대신 fortran에서 hgt 변수를 다시 5 차원 변수로 정의하고 다시 값을 넣어야합니다. 그게 맞습니까? 아니면 대안이 있습니까? Fortran 77 netcdf API를 사용하고 있습니다.
친구가 맞습니다. – cmaster
dimz_Z 단지 풀린 lon/lat 격자 (21 * 23 = 483)가 아닌가요? 왜 파일에있는 데이터의 양을 정사각형으로 만들고 싶습니까? 나는 당신이 다른 것을하고 싶다는 것을 확신합니다. 실제 높이가있는 변수를 추가하지 않으시겠습니까? 이것은 포트란 질문이 아닙니다. – RussF
@RussF - 내 시스템의 수직 좌표입니다. 나는 위도와 경도와 η을 가지고있다. 그것을 입체로 만들기 – gansub