如何在python中将netcdf文件中的网格从(-180180)转换为(0360)



我显然是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

相关内容

  • 没有找到相关文章

最新更新