前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MeteoInfoLab中如何将格点插值到站点?(附完整代码)

MeteoInfoLab中如何将格点插值到站点?(附完整代码)

作者头像
郭好奇同学
发布2021-07-30 14:56:25
1.5K0
发布2021-07-30 14:56:25
举报
文章被收录于专栏:好奇心Log

用 我 所 能,精 彩 气 象。

在实际业务中经常需要对指定经纬度点进行一个相关气象数据的分析和研究,需要将格点数据插值到站点上面。本文介绍了三种在MeteoInfoLab中如何将格点数据插值到站点上面的方法。【本文参考了王老师的书和代码】

格点数据插值到站点主要有两种方法:双线性插值和最近距离,算法都很简单,MeteoInfoLab中插值到站点有几种方法:

(a)利用DimDataFile的tostation方法

(b)利用DimArray的tostation方法

(c)利用interp2d插值函数。推荐使用interp2d方法,该方法中的kind参数缺省为'linear'双线性插值,也可以设置为kind='neareast'最近距离插值(其实就是找离站点最近的格点将其值赋给站点)

总结:其实这几种方法插值出来的结果都差不多,王老师也推荐使用interp2d。

代码语言:javascript
复制
f = addfile('model.ctl')
ps = f['PS'][0,'10:60','60:140']

#Interpolate to a point
x = 123
y = 44.5
z = None
t = 0
d = f.tostation('PS', x, y, z, t)
d1 = ps.tostation(x, y)
d2 = interp2d(ps, x, y)
d3 = interp2d(ps, x, y, kind='neareast')
print d
print d1
print d2
print d3
#942.347668457
#942.347668457
#942.347668457
#980.492126465
#Plot
figure(figsize=[600,600], newfig=False,bgcolor=[255,255,255])
axesm()
geoshow('cn_province.shp',labelfield='NAME', fontname=u'黑体', fontsize=12, yoffset=15,avoidcoll=False)

scatterm(x, y, d, size=10, color='g')
text(x + 0.3, y+1, 'DimDataFile.tostation:%.4f' % d, color='r', fontsize=12)
text(x + 0.3, y-1, 'DimArray.tostation:%.4f' % d, color='r', fontsize=12)
text(x + 0.3, y-2, 'interp2d.linear:%.4f' % d, color='r', fontsize=12)
text(x + 0.3, y-3, 'interp2d.neareast:%.4f' % d, color='r', fontsize=12)
xlim(110, 132)
ylim(32, 54)
title('Grid to point interpolation')
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-07-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 好奇心Log 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档