您好,登錄后才能下訂單哦!
這篇文章給大家介紹怎么使用Python對站點數據執行徑向基函數插值可視化,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
import numpy as np
import pandas as pd
from scipy.interpolate import Rbf
import cartopy.crs as ccrs
import cartopy.feature as cfeat
from cartopy.io.shapereader import Reader
from cartopy.mpl.gridliner import LONGITUDE_FORMATTER,LATITUDE_FORMATTER
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']#正常顯示中文
plt.rcParams['axes.unicode_minus']=False#正常顯示負號
climate = pd.read_excel('yunnanclimate.xlsx',header=None,sep='\s+',names=['站號','lon','lat','降水','氣溫'])#print(climate)
#讀取climate里面的具體數據
lon = climate['lon']
lat = climate['lat']
rain_data = climate['降水']
#設置經緯度范圍
slon = np.linspace(97.85,105.21,36)
slat = np.linspace(21.45,28.50,36)
slon,slat = np.meshgrid(slon,slat)
#開始插值,使用徑向基函數Rbf
func = Rbf(lon,lat,rain_data,function='cubic')
rainX = func(slon,slat)
shp_path = r'D:\GeoCAS\Python\yunnan.shp'#設置絕對路徑
proj = ccrs.PlateCarree()#設置投影
fig = plt.figure(figsize=(5,5),dpi=300)
ax = fig.subplots(1, 1, subplot_kw={'projection': proj})
extent = [97.85,105.21,21.45,28.50]#限定經緯度范圍
reader = Reader(shp_path)#讀取shp矢量
yunnan = cfeat.ShapelyFeature(reader.geometries(),proj,edgecolor='k',facecolor='none')#設定shp特征
ax.add_feature(yunnan,linewidth=0.5)
ax.set_extent(extent,crs=proj)
gl = ax.gridlines(crs=ccrs.PlateCarree(),draw_labels=True,linestyle='-')
gl.xlabels_top=False
gl.ylabels_right=False
gl.xformatter = LONGITUDE_FORMATTER#以經緯度格式顯示xy軸
gl.yformatter = LATITUDE_FORMATTER
gl.xlabel_style={'size':6}#設置xy字體大小
gl.ylabel_style={'size':6}
h = ax.contourf(slon,slat,rainX,cmap='viridis',extend='both')
plt.colorbar(h,orientation='vertical')
plt.show()
關于怎么使用Python對站點數據執行徑向基函數插值可視化就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。