爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
楼主: jolincai

[求助] 清风的双线性插值方法,为什么得到的TXT全是-999.00的缺测值呢?

[复制链接]

新浪微博达人勋

发表于 2016-7-29 11:39:25 | 显示全部楼层
本帖最后由 lqouc 于 2016-7-29 11:41 编辑
jolincai 发表于 2016-7-28 22:07
啊.大神..我都不好意思啦 但是又得学会...不知道怎么上传附件可以不用金钱就下载...楼下两个附件就要10金 ...

我大概看了下,是子程序写的有点问题,计算过程没错。具体程序的问题出在哪里我就不解释了,告诉你解决办法好了。
在主程序里面找到下面这个call,然后再上下分别加入我给的这两句计算,再运行就好了。
  1. oldVal=oldVal+100
  2. !!调用插值程序,这里只有一个时次,因此没有循环
  3. call getNewVal(oldVal,newVal,oldLon_start,oldLat_start,oldInterpx,oldInterpy,newPoint,isFirst)
  4. newVal=newVal-100
复制代码
程序出错的原因在于你的网格数据存在负值,清风的这个程序只能对正值进行差值,负值会被认为是缺省(我理解的他的程序是这样)。所以以后用到这个程序的时候就先在原来数值的基础上加一个足够大的数,让你的数据全部变成正值,插值之后再减去还原为原来的数值进行输出。
ps:在Fortran板块我下载东西是不需要金钱的,如果以后要让其他会员下载你的程序帮忙修改,直接给人家评分补偿就好了。当然也可以去免积分提问板块,那里下载附件貌似不需要金钱。
密码修改失败请联系微信:mofangbao
回复 支持 1 反对 0

使用道具 举报

新浪微博达人勋

发表于 2016-7-29 16:58:17 | 显示全部楼层
lqouc 发表于 2016-7-29 11:39
我大概看了下,是子程序写的有点问题,计算过程没错。具体程序的问题出在哪里我就不解释了,告诉你解决办 ...

遇到同样的问题,我是把<0那几行去掉了。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-7-29 17:26:09 | 显示全部楼层
realy 发表于 2016-7-29 16:58
遇到同样的问题,我是把<0那几行去掉了。

直接去掉也行,我懒得解释为啥那段判断有问题了
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2016-7-29 21:08:33 | 显示全部楼层
lqouc 发表于 2016-7-29 11:39
我大概看了下,是子程序写的有点问题,计算过程没错。具体程序的问题出在哪里我就不解释了,告诉你解决办 ...

太感谢!有些问题我们新手真的绞尽脑汁.谢谢大神 不是太难的问题 反而刺激我们以后遇到问题该怎么考虑
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2016-7-30 13:07:29 | 显示全部楼层
realy 发表于 2016-7-29 16:58
遇到同样的问题,我是把<0那几行去掉了。

是!开始插值
do i=1,newxy
  if(pos(i,1)<0 .or.pos(i,3)<0)then
    newval(i)=-999.0
  else
    !先做纬向插值
        if(pos(i,1)==undef .or. pos(i,2)==undef .or. pos(i,3)==undef .or. pos(i,4)==undef)then
          newVal(i)=-9999.0
第一个IF判断小于0的语句去了吗?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-10-12 17:33:10 | 显示全部楼层
楼主问题的解决了吗?我也遇到同样的问题,出来都是-999.000!我也按照大神的解决方法,在call上下加了两行语句,但是运行出错,显示浮点溢出,我该怎么办?求帮忙
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-10-12 17:38:07 | 显示全部楼层
lqouc 发表于 2016-7-29 11:39
我大概看了下,是子程序写的有点问题,计算过程没错。具体程序的问题出在哪里我就不解释了,告诉你解决办 ...

大神,我也遇到了同样的问题,输出来都是-999.000.我加了您提供的语句,但是fortran运行出来显示
run-time error M6101:MATH
-floating-point error:invalid
这要怎么办,求大神指导
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2016-10-12 18:16:36 | 显示全部楼层
雪纤儿 发表于 2016-10-12 17:33
楼主问题的解决了吗?我也遇到同样的问题,出来都是-999.000!我也按照大神的解决方法,在call上下加了两行 ...

我的就是22楼方法
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-10-12 18:16:47 | 显示全部楼层
雪纤儿 发表于 2016-10-12 17:38
大神,我也遇到了同样的问题,输出来都是-999.000.我加了您提供的语句,但是fortran运行出来显示
run-ti ...

先看这个帖子
http://bbs.06climate.com/forum.php?mod=viewthread&tid=4571
100改成100.0试试。
或者按照23楼的方法来。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-10-12 18:44:37 | 显示全部楼层
.........................
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

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

本版积分规则

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

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

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