我使用NCO的ncrename将经度、纬度和valid_time重命名为long、lat和time。这样我就可以通过一个不同的包运行数据,除了提到的名称之外。
原版是这样的:
维度:(valid_time:371,纬度:212,经度:409)坐标:number int64 8B ...
valid_time (valid_time) datetime64[ns] 3kB 1994-01-01 ... 2024-11-01
latitude (latitude) float64 2kB 55.4 55.3 55.2 55.1 ... 34.5 34.4 34.3
longitude (longitude) float64 3kB 46.5 46.6 46.7 46.8 ... 87.1 87.2 87.3 expver (valid_time) <U4 6kB ... Data variables: tp (valid_time, latitude, longitude) float32 129MB ...
我使用 ncrename -d latitude,lat -d longitude,lon -d valid_time,time 后,数据如下所示:
Dimensions: (time: 371, lat: 212, lon: 409) Coordinates: number int64 8B ...
latitude (lat) float64 2kB ...
longitude (lon) float64 3kB ... expver (time) <U4 6kB ...
Dimensions without coordinates: time, lat, lon Data variables: valid_time (time) datetime64[ns] 3kB ... tp (time, lat, lon) float32 129MB ...
我做错了什么或者它应该是这样的吗?为什么坐标不见了?
在 netCDF 文件中,尺寸必须与关联的坐标变量具有相同的名称。这是因为维度本身只存储它的id、名称、长度以及是否无限。沿维度的值存储在坐标变量中。重命名尺寸时,
ncrename
不会自动重命名坐标变量。因此你应该这样做:
# Note that all of the below is one command
ncrename -d latitude,lat -d longitude,lon -d valid_time,time
-v latitude,lat -v longitude,lon -v valid_time,time
your_file.nc