爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 7454|回复: 9

[其他] 分享:用NCL处理站点资料

[复制链接]
发表于 2017-5-29 19:54:57 | 显示全部楼层 |阅读模式

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

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

x
;脚本仅供参考,数据处理时间有点长。本人编程不太好,还请编程牛人优化下程序。
;下面有测试数据
begin
sta   = asciiread("/mnt/d/WRFModel/NCL/data0.txt",(/17166,12/),"float")
  baoyu = sta(:,5)
   year = sta(:,0)
   mon = sta(:,1)
   tem = sta(:,4)

dataa = new((/564,4/),float)
m=0
n=0
do nt = 1961,2007,1
sumtemp0=sta(0,11)
sumrain0=sta(0,11)
sumtemp1=sta(1,11)
sumrain1=sta(1,11)
sumtemp2=sta(2,11)
sumrain2=sta(2,11)
sumtemp3=sta(3,11)
sumrain3=sta(3,11)
sumtemp4=sta(4,11)
sumrain4=sta(4,11)
sumtemp5=sta(5,11)
sumrain5=sta(5,11)
sumtemp6=sta(6,11)
sumrain6=sta(6,11)
sumtemp7=sta(7,11)
sumrain7=sta(7,11)
sumtemp8=sta(8,11)
sumrain8=sta(8,11)
sumtemp9=sta(9,11)
sumrain9=sta(9,11)
sumtemp10=sta(10,11)
sumrain10=sta(10,11)
sumtemp11=sta(11,11)
sumrain11=sta(11,11)              ;设置初始值为0      
        do n=0,17165,1
               
                if ( sta(n,0) .eq. nt ) then
                                if (sta(n,1) .eq. 1) then
                                        dataa(m,0)=nt
                                        dataa(m,1)=1
                                        sumtemp0=sumtemp0+sta(n,4)
                                        sumrain0=sta(n,5)+sumrain0
                                        dataa(m,2)=sumtemp0*0.1/31
                                        dataa(m,3)=sumrain0/31
                                opt=True
                                opt@fout="/mnt/d/WRFModel/NCL/zuoye.txt"
                                write_matrix (dataa, "f6.0,1x,f8.2,1x,f10.2,1x,2f7.2", opt)                                       
                                end if
                                if (sta(n,1) .eq. 2) then
                               
                                        dataa(m+1,0)=nt
                                        dataa(m+1,1)=2
                                        sumtemp1=sumtemp1+sta(n,4)
                                        sumrain1=sta(n,5)+sumrain1
                                        dataa(m+1,2)=sumtemp1*0.1/28
                                        dataa(m+1,3)=sumrain1/28       
opt=True
                                opt@fout="/mnt/d/WRFModel/NCL/zuoye.txt"
                                write_matrix (dataa, "f6.0,1x,f8.2,1x,f10.2,1x,2f7.2", opt)                       
                                end if
                                if (sta(n,1) .eq. 3) then
                               
                                        dataa(m+2,0)=nt
                                        dataa(m+2,1)=3
                                        sumtemp2=sumtemp2+sta(n,4)
                                        sumrain2=sta(n,5)+sumrain2
                                        dataa(m+2,2)=sumtemp2*0.1/31
                                        dataa(m+2,3)=sumrain2/31
opt=True
                                opt@fout="/mnt/d/WRFModel/NCL/zuoye.txt"
                                write_matrix (dataa, "f6.0,1x,f8.2,1x,f10.2,1x,2f7.2", opt)                       
                                end if
                                if (sta(n,1) .eq. 4) then

                                        dataa(m+3,0)=nt
                                        dataa(m+3,1)=4
                                        sumtemp3=sumtemp3+sta(n,4)
                                        sumrain3=sta(n,5)+sumrain3
                                        dataa(m+3,2)=sumtemp3*0.1/30
                                        dataa(m+3,3)=sumrain3/30
opt=True
                                opt@fout="/mnt/d/WRFModel/NCL/zuoye.txt"
                                write_matrix (dataa, "f6.0,1x,f8.2,1x,f10.2,1x,2f7.2", opt)                       
                                end if
                                if (sta(n,1) .eq. 5) then
                               
                                        dataa(m+4,0)=nt
                                        dataa(m+4,1)=5
                                        sumtemp4=sumtemp4+sta(n,4)
                                        sumrain4=sta(n,5)+sumrain4
                                        dataa(m+4,2)=sumtemp4*0.1/31
                                        dataa(m+4,3)=sumrain4/31
opt=True
                                opt@fout="/mnt/d/WRFModel/NCL/zuoye.txt"
                                write_matrix (dataa, "f6.0,1x,f8.2,1x,f10.2,1x,2f7.2", opt)                       
                                end if

                                if (sta(n,1) .eq. 6) then
                               
                                        dataa(m+5,0)=nt
                                        dataa(m+5,1)=6
                                        sumtemp5=sumtemp5+sta(n,4)
                                        sumrain5=sta(n,5)+sumrain5
                                        dataa(m+5,2)=sumtemp5*0.1/30
                                        dataa(m+5,3)=sumrain5/30
opt=True
                                opt@fout="/mnt/d/WRFModel/NCL/zuoye.txt"
                                write_matrix (dataa, "f6.0,1x,f8.2,1x,f10.2,1x,2f7.2", opt)                       
                                end if
               
                                if (sta(n,1) .eq. 7) then
                               
                                        dataa(m+6,0)=nt
                                        dataa(m+6,1)=7
                                        sumtemp6=sumtemp6+sta(n,4)
                                        sumrain6=sta(n,5)+sumrain6
                                        dataa(m+6,2)=sumtemp6*0.1/31
                                        dataa(m+6,3)=sumrain6/31
opt=True
                                opt@fout="/mnt/d/WRFModel/NCL/zuoye.txt"
                                write_matrix (dataa, "f6.0,1x,f8.2,1x,f10.2,1x,2f7.2", opt)                       
                                end if

                                if (sta(n,1) .eq. 8) then
                               
                                        dataa(m+7,0)=nt
                                        dataa(m+7,1)=8
                                        sumtemp7=sumtemp7+sta(n,4)
                                        sumrain7=sta(n,5)+sumrain7
                                        dataa(m+7,2)=sumtemp7*0.1/31
                                        dataa(m+7,3)=sumrain7/31
opt=True
                                opt@fout="/mnt/d/WRFModel/NCL/zuoye.txt"
                                write_matrix (dataa, "f6.0,1x,f8.2,1x,f10.2,1x,2f7.2", opt)                       
                                end if
                                if (sta(n,1) .eq. 9) then
                               
                                        dataa(m+8,0)=nt
                                        dataa(m+8,1)=9
                                        sumtemp8=sumtemp8+sta(n,4)
                                        sumrain8=sta(n,5)+sumrain8
                                        dataa(m+8,2)=sumtemp8*0.1/30
                                        dataa(m+8,3)=sumrain8/30
opt=True
                                opt@fout="/mnt/d/WRFModel/NCL/zuoye.txt"
                                write_matrix (dataa, "f6.0,1x,f8.2,1x,f10.2,1x,2f7.2", opt)                       
                                end if
                                if (sta(n,1) .eq. 10) then
                               
                                        dataa(m+9,0)=nt
                                        dataa(m+9,1)=10
                                        sumtemp9=sumtemp9+sta(n,4)
                                        sumrain9=sta(n,5)+sumrain9
                                        dataa(m+9,2)=sumtemp9*0.1/31
                                        dataa(m+9,3)=sumrain9/31
opt=True
                                opt@fout="/mnt/d/WRFModel/NCL/zuoye.txt"
                                write_matrix (dataa, "f6.0,1x,f8.2,1x,f10.2,1x,2f7.2", opt)                       

                                end if
                                if (sta(n,1) .eq. 11) then
                               
                                        dataa(m+10,0)=nt
                                        dataa(m+10,1)=11
                                        sumtemp10=sumtemp10+sta(n,4)
                                        sumrain10=sta(n,5)+sumrain10
                                        dataa(m+10,2)=sumtemp10*0.1/30
                                        dataa(m+10,3)=sumrain10/30
opt=True
                                opt@fout="/mnt/d/WRFModel/NCL/zuoye.txt"
                                write_matrix (dataa, "f6.0,1x,f8.2,1x,f10.2,1x,2f7.2", opt)                       
                                end if
                                if (sta(n,1) .eq. 12) then
                               
                                        dataa(m+11,0)=nt
                                        dataa(m+11,1)=12
                                        sumtemp11=sumtemp11+sta(n,4)
                                        sumrain11=sta(n,5)+sumrain11
                                        dataa(m+11,2)=sumtemp11*0.1/31
                                        dataa(m+11,3)=sumrain11/31
opt=True
                                opt@fout="/mnt/d/WRFModel/NCL/zuoye.txt"
                                write_matrix (dataa, "f6.0,1x,f8.2,1x,f10.2,1x,2f7.2", opt)                       
                                end if
                        end if
                end do
m=m+12
        if (m .gt. 564) then
                exit
        end if
end do
end


data0.txt

814.58 KB, 下载次数: 7, 下载积分: 金钱 -5

密码修改失败请联系微信:mofangbao
发表于 2017-5-29 22:35:45 | 显示全部楼层

不同月份的判断写了一长串,确实有点儿丑诶……

不用ncl,就是来灌个水,请无视
密码修改失败请联系微信:mofangbao
发表于 2017-5-30 08:23:47 | 显示全部楼层
密码修改失败请联系微信:mofangbao
发表于 2017-5-30 16:16:12 | 显示全部楼层
哥呀。可以的话可不可以加一点点注释。。。
小白的我看着脑仁疼23333
密码修改失败请联系微信:mofangbao
发表于 2017-5-30 17:25:29 | 显示全部楼层
没办法,建议换语言,本身I/O的速度就不可能快了,当然还有把你的硬盘换成固态,就看你愿不愿意了
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2017-5-30 19:08:20 | 显示全部楼层
weinihou 发表于 2017-5-29 22:35
不同月份的判断写了一长串,确实有点儿丑诶……

不用ncl,就是来灌个水,请无视

写不来
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2017-5-30 19:10:13 | 显示全部楼层
Soaring 发表于 2017-5-30 08:23
http://blog.sina.com.cn/s/blog_44f7c0840100on44.html

这个是用差值法画站点资料图,ncl也支持中文http://bbs.06climate.com/forum.p ... p;extra=&page=1。只是有些麻烦
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2017-5-30 19:11:41 | 显示全部楼层
astiny 发表于 2017-5-30 16:16
哥呀。可以的话可不可以加一点点注释。。。
小白的我看着脑仁疼23333

这个是求月平均的脚本,就是把求得的数据放在zuoye.txt里面。
密码修改失败请联系微信:mofangbao
发表于 2017-6-4 10:17:42 | 显示全部楼层
楼主棒呆~~~~~~
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

发表于 2017-6-5 11:14:17 | 显示全部楼层
好全面,留下备用,谢谢分享
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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