爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 5012|回复: 12

MeteoinfoLab网格到网格插值

[复制链接]

新浪微博达人勋

发表于 2022-3-27 01:04:59 | 显示全部楼层 |阅读模式

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

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

x
王老师好,最近使用EC预报数据做网格插值,但总是出错,得到的结果全部都是NAN。。

无论我尝试一个小的范围还是就直接插值到数据本身的网格都是输出nan,我原以为是版本问题,但试过[linint2](http://meteothink.org/docs/meteo ... ctions/linint2.html)之后,发现运行正常,实在找不到问题,请王老师帮看看...

下面是我的代码
```
fn = addfile(r'D:\ECMWF\20211226\00\W_NAFP_C_ECMF_20211226064448_P_C1D12260000010300001.bz2')
gh = fn['Geopotential_Height_isobaric'][:]
ghdata =gh[0]
gx = ghdata.dimvalue(1)
gy = ghdata.dimvalue(0)
ngy = interpolate.linint2(ghdata, gx, gy)
print(ngy)

```
图片为上面代码输出结果,真的尝试各种验证,缺失找不到问题了。。。
关于数据,我想王老师那边应该也能拿到EC的C1D数据,我就不上传了
Snipaste_2022-03-27_01-11-59.png
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2022-3-27 09:11:38 来自手机 | 显示全部楼层
又看了一下linint2的网页,感觉和示例代码不太一样,文档中params的形参顺序是x/y/z,但是示例中是z/x/y,不知道是这个原因不,晚点再试试
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2022-3-27 09:56:37 | 显示全部楼层
你代码获取的 gx, gy 并非数据X, Y 坐标的值。
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2022-3-27 10:50:44 来自手机 | 显示全部楼层
不是应该这么获取吗?
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2022-3-27 10:52:56 来自手机 | 显示全部楼层
王老师是这样的,我按照linint2里的lon和lat生成了X/Y,依然是nan
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2022-3-27 10:57:58 来自手机 | 显示全部楼层
我再试试王老师,看了一些别的示例,XY似乎应该从文件获取,而不是变量。谢谢您,有结果我及时在贴下回复,如果还有问题也请您指导
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2022-3-27 11:20:04 来自手机 | 显示全部楼层
看了些别的代码示例,似乎应该直接从文件对象获取X/Y,而不是变量对象,但这个var.dimvalue获取的是什么呢?回头我再尝试一下,有问题还请您指导
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2022-3-27 14:06:15 | 显示全部楼层
王老师,还是不行额。。。

我感觉dimvalue获取的方式是可以的,因为我在其他地方也看到dimvalue获取X和Y。
即便是我自己设定X和Y也不可以,例如下代码:
```
lon = arange(70,140,1.5)
lat = arange(50,5,-1.5)
ngy = interpolate.linint2(ghdata, gx, gy)
```
这样获取的插值网格仍然是nan,求指导。。。
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2022-3-28 09:00:25 | 显示全部楼层
lovechang1314 发表于 2022-3-27 14:06
王老师,还是不行额。。。

我感觉dimvalue获取的方式是可以的,因为我在其他地方也看到dimvalue获取X和Y ...

一个变量可能有多维,比如一个四维变量 v(时间、高度、纬度、经度),那么 v.dimvalue(0) 获取第一个维的数据,也就是时间,v.dimvalue(2) 和 v.dimvalue(3) 分别是纬度和经度值。

还有一个问题需要注意,就是数据的投影。
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2022-3-28 09:30:01 | 显示全部楼层
MeteoInfo 发表于 2022-3-28 09:00
一个变量可能有多维,比如一个四维变量 v(时间、高度、纬度、经度),那么 v.dimvalue(0) 获取第一个维 ...

王老师,如您所说和顺序有关,我检查了一下,获取的gx和gy没有问题,是这个顺序。

投影的话EC的预报数据都是等经纬度投影,应该不涉及这个转换的问题,很奇怪。

如果是带投影的网格到网格应该如何做呢?
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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