1、Rbf插值
import numpy as npimport cartopy.crs as ccrsimport cartopy.feature as cfeatfrom cartopy.mpl.gridliner import LONGITUDE_FORMATTER, LATITUDE_FORMATTERfrom cartopy.io.shapereader import Readerimport matplotlib.pyplot as pltimport matplotlib.ticker as mtickerfrom scipy.interpolate import Rbf#引入径向基函数import pandas as pdimport maskout2from cartopy.mpl.ticker import LongitudeFormatter,LatitudeFormatterfrom matplotlib import rcParamsconfig={"font.family":'Times New Roman',"font.size":16,"mathtext.fontset":'stix'}rcParams.update(config)plt.rcParams['figure.figsize']=(12,10)shp_path=r'F:/Rpython/lp17/data/xinjiang0819.shp'proj= ccrs.PlateCarree() # 简写投影filename=r'F:/Rpython/lp28/data/XJ1224.xlsx'df=pd.read_excel(filename)#读取文件lon=df['lon']#读取站点经度lat=df['lat']#读取站点纬度tem=df['h']#读取站点气温# 创建画布fig = plt.figure(figsize=(12,10),dpi=600) olon=np.linspace(70,100,90)olat=np.linspace(30,55,75)olon,olat=np.meshgrid(olon,olat)#网格化func=Rbf(lon,lat,tem,function='cubic')#定义径向基函数插值tem_new=func(olon,olat)#获得插值后的网格气温ax = fig.subplots(1, 1, subplot_kw={'projection': proj}) # 创建子图extent=[73,97,34,50]#限定绘图范围reader = Reader(shp_path)enshicity = cfeat.ShapelyFeature(reader.geometries(), proj, edgecolor='k', facecolor='none')ax.add_feature(enshicity, linewidth=0.7)#添加市界细节ax.set_extent(extent,crs=proj)ax.set_xticks(np.arange(extent[0],extent[1]+1,3),crs=proj)ax.set_yticks(np.arange(extent[-2],extent[-1]+1,2),crs=proj)ax.xaxis.set_major_formatter(LongitudeFormatter())ax.yaxis.set_major_formatter(LatitudeFormatter())cs1= ax.contourf(olon,olat,tem_new,levels=np.arange(0,2000,200),cmap='gist_rainbow',extend='both')#画图cmap='Spectral_r',cs2= ax.contour(olon,olat,tem_new,colors='red',linewidths=0.6)#画图b=plt.colorbar(cs1,shrink=0.65,orientation='vertical',extend='both',pad=0.035,aspect=20) #orientation='horizontal'clip1=maskout2.shp2clip(cs1,ax,r'F:/Rpython/lp17/data/xinjiang0819.shp') #白化1clip2=maskout2.shp2clip(cs2,ax,r'F:/Rpython/lp17/data/xinjiang0819.shp') #白化2font3={'family':'SimHei','size':8,'color':'k'}plt.scatter(df['lon'].values,df['lat'].values,marker='o',s=6,color ="k")for i, j, k in list(zip(df['lon'].values, df['lat'].values, df['name'].values)): plt.text(i-0.2,j-0.3,k,fontdict=font3)plt.savefig('F:/Rpython/lp28/plot7.2.png',dpi=600)plt.show()
2、IDW插值
注:代码请参考往期推文,本文不再重复。
往期经典推文回顾-超链接1:
《R语言、Matlab、MeteoInfo、Python及ArcGis可视化DEM地形图》
往期经典推文回顾-超链接2:
《R语言、MeteoInfo、Python和ArcGis的Kriging、IDW空间插值结果的对比分析》
往期经典推文回顾-超链接3:
《Python兰伯特投影中国区域等值线图(含南海小地图)with xarray and cartopy 0.18》
往期经典推文回顾-超链接4:
《Python基础地图构建(28)》
往期经典推文回顾-超链接5:
《基于Python的NCEP再分析数据的中国区域白化(含南海小地图)》往期经典推文回顾-超链接6:
1 《MeteoInfo中国区域地形图(含南海小地图)》
2 《MeteoInfo中国区域散点图(含南海小地图)》
3 《MeteoInfo中国区域CMIP5/6可视化(含南海小地图)》
往期经典推文回顾-超链接7:
《Matlab中国区域CMIP5/6可视化(含南海小地图)》
往期经典推文回顾-超链接8:
《Python中国区域CMIP5/6可视化(含南海小地图)》