温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

怎么使用Python对站点数据执行径向基函数插值可视化

发布时间:2021-11-10 09:49:17 阅读:473 作者:柒染 栏目:大数据
Python开发者专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

这篇文章给大家介绍怎么使用Python对站点数据执行径向基函数插值可视化,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

以云南省2015年6月的29个气象站点数据为例进行径向基函数(Rbf)插值。数据格式如下:  
怎么使用Python对站点数据执行径向基函数插值可视化
今天需要使用到cartopy库来绘图,因此需要先安装好,据说安装很烦人,可以去uci下载.whl文件来安装,安装好后先测试一下是否可以运行,如下简单测试:

怎么使用Python对站点数据执行径向基函数插值可视化


首先,这是一个不成功的尝试,因为没能成功加载shp图层导致最后的插值没有落在特定的地理范围内。如果有伙伴知道这个问题的解决方法,希望不吝赐教。我相信只要是问题就一定存在解决方案。  
 那么现在就开始今天的测试,首先还是老套路导入所需要的库或模块,如下:  
import numpy as npimport pandas as pdfrom scipy.interpolate import Rbfimport cartopy.crs as ccrsimport cartopy.feature as cfeatfrom cartopy.io.shapereader import Readerfrom cartopy.mpl.gridliner import LONGITUDE_FORMATTER,LATITUDE_FORMATTERimport matplotlib.pyplot as plt

怎么使用Python对站点数据执行径向基函数插值可视化

然后设置能够正常显示中文和负号  
plt.rcParams['font.sans-serif']=['SimHei']#正常显示中文plt.rcParams['axes.unicode_minus']=False#正常显示负号

怎么使用Python对站点数据执行径向基函数插值可视化

接下来用pandas读取整理好的数据,使用的数据是云南省2015年6月的降水数据和气温数据,文中只测试了降水的Rbf插值。  
climate = pd.read_excel('yunnanclimate.xlsx',header=None,sep='\s+',names=['站号','lon','lat','降水','气温'])#print(climate)
然后提取加载的xlsx数据里面的特定要素,比如经纬度,降水啥的  
#读取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)
接下来开始插值,function,我这里测试了3种,linear+cubic+gaussian,对于他们有啥区别哈哈,在最后我将分别展示这三种函数的模样  
#开始插值,使用径向基函数Rbffunc = Rbf(lon,lat,rain_data,function='cubic')rainX = func(slon,slat)
接下来加载云南省的shp图层以及修改经纬度啥的信息,就是这个位置我出错了,如果有知道解决方案的还请不吝赐教。  
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=Falsegl.ylabels_right=Falsegl.xformatter = LONGITUDE_FORMATTER#以经纬度格式显示xy轴gl.yformatter = LATITUDE_FORMATTERgl.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对站点数据执行径向基函数插值可视化

怎么使用Python对站点数据执行径向基函数插值可视化

最后得到的结果就是这样的,下面这是linear结果:  

怎么使用Python对站点数据执行径向基函数插值可视化

接下来是cubic结果:  

怎么使用Python对站点数据执行径向基函数插值可视化

最后就是Gaussian的结果,如下:  

怎么使用Python对站点数据执行径向基函数插值可视化

关于怎么使用Python对站点数据执行径向基函数插值可视化就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

原文链接:https://my.oschina.net/u/4579644/blog/4539758

AI

开发者交流群×