我显然是netCDF和python中一些库的新手。我一直在努力的是,我想更改netCDF文件中的经度网格。它就像(-180180(,但我必须把它改成(0360(。
在这种情况下,我会使用"shiftgrid",它可以与"from mpl_toolkits.basemap import shiftgrid"一起使用。
但是这个mpl_toolkits.basemap对我来说很麻烦。不可能用这个。。所以我想用复印或其他东西来解决这个问题,你们可以在底部看到我通常使用的库。
如何更改网格?
from netCDF4 import Dataset
import matplotlib.pylot as plt
from mpl_toolkits.basemap import shiftgrid
from sys import exit
import numpy as np
import pickle
file1= '/home/HadISST_sst.nc'
DATA1 = Dataset(file1, 'r')
hd_lat = DATA1.variables['latitude'][:] #89.5 -89.5
hd_lon0 = DATA1.variables['longitude'][:] #-179.5 179.5
hd_sst0 = DATA1.variables['sst'][1320:,:,:] #time, y, x
DATA1.close()
# shift grid from (-180,180) to (0,360)
hd_sst, hd_lon = shiftgrid(0, hd_sst0, hd_lon0, start=True)
hd_lon2, hd_lat2 = np.meshgrid(hd_lon, hd_lat) # to 2d data
Basemap和netCDF是不应该再使用的库。Xarray和Cartopy在处理气候数据方面要好得多。(例如:https://xarray.pydata.org/en/stable/examples/visualization_gallery.html)
你可以这样更改网格:
import xarray as xr
your_data = xr.open_dataset('path/to/file.nc')
your_data['lon'] = your_data.lon + 180