爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 14920|回复: 34

[源代码] 双线性插值用于Micaps

[复制链接]

新浪微博达人勋

发表于 2014-1-19 14:43:55 | 显示全部楼层 |阅读模式

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

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

x
上次拜读了mofangbao双线性插值程序后http://bbs.06climate.com/forum.php?mod=viewthread&tid=6025[url=http://bbs.06climate.com/forum.php?mod=viewthread&tid=6025http://bbs.06climate.com/forum.php?mod=viewthread&tid=6025]http[/url]:,我就考虑改进了下,把它运用于Micaps的预报插值中,具体思路是这样的。已知A,B,C,D的经纬度及要求要素值Q点的经纬度,同时,知道了A,B,C,D点的预报值,那么我就可以大致用双线性插值法,计算出Q点的值。然后,他的Fortran程序在CVF6.0和fortran power4.0下可以运行。运行时,需要在终端界面输入数值,顺序是C,A,D,B。然后,在X1是A,B点的经度,Y1是A,C点的纬度。我在程序里面写的X1,Y1是A,B,C,D点的实际值,记得哟!X1的值是按照从西向东排列,Y1值是从南向北排列的哟!如需插值其他,可以自己去改。X,Y是需要插值的那个点的经纬度,哈哈哈,以前都是用大家的,现在我也有自己的东西了,虽说,仿制了下,不过,我要收贡献的哟。还有,如果大家再看这个程序有什么需要改进的,记得速度回帖哟,我会努力的!

插值例子

插值例子

双线性插值高级版.txt (566 Bytes, 下载次数: 23, 售价: 1 贡献)

评分

参与人数 2金钱 +27 贡献 +8 收起 理由
lqouc + 12 + 3 多谢分享
mofangbao + 15 + 5

查看全部评分

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

新浪微博达人勋

 楼主| 发表于 2014-1-19 14:45:15 | 显示全部楼层
哈哈哈,如果大家觉得有点贵的话,我直接把程序给粘贴出来
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-1-19 16:42:27 | 显示全部楼层
感谢分享      
密码修改失败请联系微信:mofangbao

新浪微博达人勋

0
早起挑战累计收入
发表于 2014-1-19 19:58:16 | 显示全部楼层
谢谢分享,两个重复了  我删掉了一个
看了一下  程序很短 不过达到效果就好  具体在micaps的使用说的不是很详细哈
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-1-19 21:34:30 | 显示全部楼层
嗯嗯,谢谢分区版主和管理员的厚爱,我想大家可能没有那么多的贡献,我想把源程序直接粘贴出来,因为我觉得程序就是要大家一起改进和共享的。然后我再分别解释一下。不知可否呢?@mofangbao,@kongfeng0824
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-1-19 21:41:26 | 显示全部楼层
program main
implicit none
integer::i,j
real::x=待插值点的精度,y=待插值点的维度,x1(2),y1(2)
real::w(2,2),Vq(2,2),Vr(2),Vp,g,p
DATA(x1(i),i=1,2)/99.98,102.49/
DATA(y1(j),j=1,2)/25.02,27.52/
write(*,*)"Please enter the Valuae('注意数据从列开始读')"
do i=1,2
do j=1,2
        read(*,*) Vq(i,j)
        end do
        end do
g=((x-x1(1))**2)+((x-x1(2))**2)
p=((y-y1(1))**2)+((y-y1(2))**2)
do i=1,2
w(1,i)=1-(((x-x1(i))**2)/g)
end do
do j=1,2
w(2,j)=1-(((y-y1(j))**2)/p)
end do

do i=1,2
Vr(i)=Vq(1,i)*w(1,1)+Vq(2,i)*w(1,2)
end do
Vp=Vr(1)*w(2,1)+Vr(2)*w(2,2)
write(*,*)  vp
end
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-1-19 21:47:49 | 显示全部楼层
这个程序我用的是距离权重法来算的,也就是W值,然后x,y为实际的待插点即图例上的Q点的经纬度,X1,y1分别为两个已知点经度起止和纬度起止。Vp即为实际的插值出来的值。但是,在这里面,我想如果能把海拔的权重考虑出来就更完美了。哈哈哈,欢迎大家来吐槽,我们一起把这个插值做到更加精确。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-1-20 13:54:23 | 显示全部楼层
谢谢楼主~~~~~~~~~
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-1-20 15:34:04 | 显示全部楼层
楼主可否修改成已知任意的四个点的经纬度和相应的数据,而不是四个格点插值到中间某个地方的方法呢?也就是说楼主的意思是从已经的四个格点插值到1个站点。现在能否改成已经四个站点,插值到1个站点呢?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-1-20 16:44:18 | 显示全部楼层

嗯嗯,谢谢您提的建议。我在上面给出的X1,Y1是一个例子,它可以是任意四个经纬圈中的点,但是,这四个点必须能组成如例图那样的范围。并且,我现在这个程序,只能插值出范围内的点。哈哈哈,这也是他的局限性吧!不过我正在改进,欢迎您再提宝贵意见!谢谢。
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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