爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 13267|回复: 18

MeteoInfoLab脚本示例:格点插值到站点

[复制链接]

新浪微博达人勋

发表于 2017-6-28 15:37:48 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
本帖最后由 MeteoInfo 于 2018-1-14 22:27 编辑

格点数据插值到站点主要有两种方法:双线性插值和最近距离,算法都很简单,MeteoInfoLab中插值到站点有几种方法:(a)利用DimDataFile的tostation方法,(b)利用DimArray的tostation方法,(c)利用interp2d插值函数。推荐使用interp2d方法,该方法中的kind参数缺省为'linear'双线性插值,也可以设置为kind='neareast'最近距离插值(其实就是找离站点最近的格点将其值赋给站点)。

示例脚本:
  1. f = addfile('D:/Temp/GrADS/model.ctl')
  2. ps = f['PS'][0,'10:60','60:140']

  3. #Interpolate to a point
  4. x = 123
  5. y = 44.5
  6. z = None
  7. t = 0
  8. d = f.tostation('PS', x, y, z, t)
  9. d1 = ps.tostation(x, y)
  10. d2 = interp2d(ps, x, y)
  11. d3 = interp2d(ps, x, y, kind='neareast')
  12. print d
  13. print d1
  14. print d2
  15. print d3

  16. #Plot
  17. axesm()
  18. geoshow('country', edgecolor=(0,0,255))
  19. layer = scatterm(ps, fill=False, edgecolor='r')
  20. layer.addlabels('data', yoffset=15, decimals=2)
  21. scatterm(x, y, d, size=10, color='g')
  22. text(x + 0.3, y, '%.2f' % d)
  23. xlim(x - 6, x + 6)
  24. ylim(y - 5, y + 5)
  25. title('Grid to point interpolation')


interp_point.png
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-6-28 18:04:37 | 显示全部楼层
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

发表于 2017-6-28 18:29:06 | 显示全部楼层
{:eb502:}{:eb502:}{:eb502:}{:eb502:}

头两天才见到有人提如何使用最邻近法,王老师怎么这么快就附上啦!!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-6-30 15:46:29 | 显示全部楼层
本帖最后由 lovechang1314 于 2017-6-30 15:51 编辑

想知道这个是否考虑了投影的问题?
给的站点经纬度需要转换到ctl的投影下再插值,不知道函数tostation内部是怎么考虑的。
此外interp2d显然是不会考虑投影的,直接将站点经纬度当成了ctl里的经纬度
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2017-6-30 16:05:42 | 显示全部楼层
lovechang1314 发表于 2017-6-30 15:46
想知道这个是否考虑了投影的问题?
给的站点经纬度需要转换到ctl的投影下再插值,不知道函数tostation内部 ...

如果格点数据不是经纬度投影,需要将站点经纬度投影为和格点一样的投影坐标系,MeteoInfoLab有投影函数可以用:http://www.meteothinker.com/docs ... ctions/project.html
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-6-30 20:46:40 | 显示全部楼层
MeteoInfo 发表于 2017-6-30 16:05
如果格点数据不是经纬度投影,需要将站点经纬度投影为和格点一样的投影坐标系,MeteoInfoLab有投影函数可 ...

谢谢王老师!
可以在示例中加以说明,我走过了这个坑,没注意,后来看不太对,想起来问一下
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2018-7-21 14:39:11 | 显示全部楼层
感谢分享,非常有用
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2018-11-29 09:45:46 | 显示全部楼层
王老师,咨询下,假如我指定一个站点的经纬度,能直接获得他周围四个网格点的数据么?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2018-11-29 13:19:45 | 显示全部楼层
孤蓝et 发表于 2018-11-29 09:45
王老师,咨询下,假如我指定一个站点的经纬度,能直接获得他周围四个网格点的数据么?

知道格点坐标当然就可以
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2018-11-29 14:13:36 来自手机 | 显示全部楼层
嗯嗯,理解了,大致思路之前用meteoinfo类库实现,就是先找到站点周围的四个网格点经纬度信息,然后循环找到这四个点,就是在读取三年的数据效率有点低,比较耗时。
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表