我使用的数据为ERA5数据的2米气温【t2m】(附下载链接:https://cds.climate.copernicus.eu/cdsapp#!/dataset/reanalysis-era5-single-levels-monthly-means?tab=overview),使用Python语言进行处理。ERA5的2米气温数据经纬度分辨率为0.25度乘0.25度,按照工作要求,需要把分辨率降为0.5度乘0.5度,因为Python接触时间不长,我使用的方法为(如下面代码所示)
from netCDF4 import Dataset
from mpl_toolkits.basemap import Basemap
import numpy as np
import matplotlib.pyplot as plt
file = 'G:\\Data\\TP_and_2mT_1979-2019_Monthly.nc'
a = Dataset(file)
lon = a.variables["longitude"][:]
lon = lon[::2]
lat = a.variables["latitude"][:]
lat = lat[::2]
t2m = a.variables["t2m"][:]
t2m = t2m[-1]
num = 1
for i in range(720):
t2m = np.delete(t2m, num, axis=1)
num = num + 1
t2m = t2m - 273.15
t2m1 = np.zeros([361, 720])
lon0 = lon.mean()
lat0 = lat.mean()
m = Basemap(lat_0=lat0, lon_0=lon0)
m.drawparallels(np.arange(-90., 91., 10.), labels=[1, 0, 0, 0], fontsize=5)
m.drawmeridians(np.arange(-180., 181., 20.), labels=[0, 0, 0, 1], fontsize=5)
m.drawcoastlines()
lon1, lat1 = np.meshgrid(lon, lat)
xi, yi = m(lon1, lat1)
for i in range(361):
for j in range(720):
t2m1[i, j] = t2m[i, j]
m1 = m.contourf(xi, yi, t2m1, 300, cmap='jet')
Tu_li = m.colorbar(m1, location='bottom', pad="10%")
plt.savefig('G:\\Data_dispose\\Text10', dpi=300)
思路为,使用列表的操作方法,将经纬度隔行隔列取,这样就去掉了一半的经纬度数据,将0.25度分辨率变为0.5度,同时用处理数组的方法,也将气温数据隔行隔列取,但是操作的结果出现很大的差错(如生成图)
之后不知道该如何处理,想请教一下大家,我的编程思路有什么错误,或者大家有什么更好的方法处理这个问题,小白向大佬们求教。时间紧张,谢谢大家了。