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

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

x

!****************************************************************************

!

!  PROGRAM: T639格点资料插值成站点资料

!

!****************************************************************************

module pra_mod

implicit none

integer,parameter :: Nlon=90                               ! T639 E0-180  2

integer,parameter :: Nlat=45                               ! T639 N0-90   2

integer,parameter :: Nsta_max=5000                         ! 最多5000站

real,parameter :: yuezhi=0.1                               ! 有无降水的阈值  mm

character(len = *), parameter :: dir_T639='C:\Users\Tianle\Desktop\插值检验\t639-05\'        ! input original_data

character(len = *), parameter :: file1_t639_name='16112102.027'       ! input original_data 体现那一天

character(len = *), parameter :: file2_t639_name='16112202.027'       ! input original_data

character(len = *), parameter :: dir_station='C:\Users\Tianle\Desktop\插值检验\'             ! input original_data

character(len = *), parameter :: filename_station='STATIONS.DAT'      ! input original_data

character(len = *), parameter :: dir_obs='C:\Users\Tianle\Desktop\插值检验\sur-05-24\'       ! input original_data

character(len = *), parameter :: file1_obs_name='16112205.000'        ! input original_data 文件日期

character(len = *), parameter :: file2_obs_name='16112305.000'        ! input original_data

endmodule pra_mod

module data_mod

use pra_mod

implicit none

real lon_t639(0:Nlon)

real lat_t639(0:Nlat)

real Rain_t639(0:Nlon,0:Nlat)

integer Nsta_t639,Nsta_obs,Nsta_common

integer sta_number_t639(Nsta_max)

real sta_lat_t639(Nsta_max),sta_lon_t639(Nsta_max),Rain_t639_sta(Nsta_max)

character(len=10) sta_name_t639(Nsta_max)

real Rain_obs(Nsta_max)

integer sta_number_obs(Nsta_max)

integer sta_number_common(Nsta_max)

real Rain_t639_common(Nsta_max),Rain_obs_common(Nsta_max)

end module data_mod

program data_chazhi   ! main program

use pra_mod

use data_mod

implicit none

character(len=50)  cha

character(len=10)  cha10

integer station,stat,templat,templon,temp1,temp2

real lon,lat,gh,rain,ts

real  rf,lf,uf,df,lonP,latP

integer rn,ln,un,dn,i,j

do i=0,Nlon

lon_t639(i)=i*2

!write(*,*) "lon",i,lon_t639(i)

enddo

do j=0,Nlat

lat_t639(j)=j*2

!write(*,*) "lat",j,lat_t639(j)

enddo

write(*,*)'step1'

Rain_t639(:,:)=0.

open(22,file=dir_T639//file1_t639_name,form="formatted")

read(22,*) cha

!write(*,*) cha

read(22,*) cha

!write(*,*) cha

do while(1)

read(22,'(i6,f8.3,f8.3,f8.1,x,f8.1)',iostat=stat)   station,lon,lat,gh,rain

if (stat.lt.0)  exit  ! stat.lt.0  文件结束

i=lon/2

j=lat/2

!write(*,*) i,j,rain

Rain_t639(i,j)=rain

enddo

close(22)

i=90

j=45

write(*,'(f8.1,f8.1,4x,f8.1)')   i*2.0,j*2.0,Rain_t639(i,j)

Nsta_t639=0

open(22,file=dir_station//filename_station,form="formatted")

do while(1)

read(22,*,iostat=stat)   station,templat,templon,gh,temp1,temp2,cha10

if (stat.lt.0)  exit  ! stat.lt.0  文件结束

Nsta_t639=Nsta_t639+1

!write(*,*) Nsta_t639,station,templat,templon,cha10

sta_number_t639(Nsta_t639)=station

sta_lat_t639(Nsta_t639)=templat/100.

sta_lon_t639(Nsta_t639)=templon/100.

sta_name_t639(Nsta_t639)=cha10

enddo

close(22)

write(*,'(a20,i6)')   "stations number",Nsta_t639

! test integrate_point

!lonP=115.7

!latP=36.2

!call integrate_point(lon_t639,Nlon,lat_t639,Nlat,lonP,latP, &

!                         rf,lf,uf,df,rn,ln,un,dn)

open(22,file=dir_station//"Rain_t639_station.txt",form="formatted")

do i=1,Nsta_t639

lonP=sta_lon_t639(i)

latP=sta_lat_t639(i)

call integrate_point(lon_t639,Nlon,lat_t639,Nlat,lonP,latP, &

rf,lf,uf,df,rn,ln,un,dn)

Rain_t639_sta(i)= Rain_t639(rn,un)*rf*uf &

+Rain_t639(rn,dn)*rf*df &

+Rain_t639(ln,dn)*lf*df &

+Rain_t639(ln,un)*lf*uf

if (((rn+ln).eq.0).or.((un+dn).eq.0)) then

write(*,'(a10,i5,2x,2f5.1)')  "bianjie:",i,sta_lon_t639(i),sta_lat_t639(i)   ! 超出边界

sta_number_t639(i)=0

endif

write(22,'(i5,2x,2f5.1,2x,4f6.1,x,4f7.2,2x,i6,f7.2)')  i,sta_lon_t639(i),sta_lat_t639(i), &

lon_t639(ln),lon_t639(rn),lat_t639(un),lat_t639(dn), &

Rain_t639(rn,un),Rain_t639(rn,dn),Rain_t639(ln,un),Rain_t639(ln,dn),sta_number_t639(i),Rain_t639_sta(i)

enddo

close(22)

Rain_obs(:)=0

open(22,file=dir_obs//file1_obs_name,form="formatted")!jianyandiertianjiangshui

do i=1,14

read(22,*) cha

!write(*,*) cha

enddo

Nsta_obs=0

do while(1)

read(22,'(i6,f8.3,f8.3,f6.0,f6.1)',iostat=stat)   station,lon,lat,gh,rain

if (stat.lt.0)  exit  ! stat.lt.0  文件结束

Nsta_obs=Nsta_obs+1

sta_number_obs(Nsta_obs)=station

Rain_obs(Nsta_obs)=rain

!write(*,*)  Nsta_obs,sta_number_obs(Nsta_obs), Rain_obs(Nsta_obs)

enddo

close(22)

write(*,'(a20,i6)')   "stations_obs number",Nsta_obs

open(22,file=dir_station//"Rain_t639_obs_common.txt",form="formatted")

Nsta_common=0

do i=1,Nsta_t639

stat=0

do j=1,Nsta_obs

if (sta_number_t639(i).eq.sta_number_obs(j)) then

stat=1

exit

endif

enddo

Nsta_common = i

if (stat.eq.0)  then

!                     sta_number_t639(i)=0

write(22,'(i5,2i6,2x,2f7.1)')i,sta_number_t639(i),sta_number_t639(i),Rain_t639_sta(i),0

Rain_t639_common(Nsta_common)=Rain_t639_sta(i)

Rain_obs_common(Nsta_common)=0

else

Rain_t639_common(Nsta_common)=Rain_t639_sta(i)

Rain_obs_common(Nsta_common)=Rain_obs(j)

write(22,'(i5,2i6,2x,2f7.1)') i,sta_number_t639(i),sta_number_obs(j),Rain_t639_sta(i),Rain_obs(j)

endif

enddo

write(*,'(a20,i6)')   "Nsta_common number",Nsta_common

call QETS(Nsta_common,Rain_t639_common(1:Nsta_common),Rain_obs_common(1:Nsta_common),ts)

open(33,file='C:\Users\Tianle\Desktop\插值检验\ts\ts1.txt')

write(33,*) "ts:",ts

endprogram data_chazhi

subroutine QETS(N,forc,obse,ts)

use pra_mod,only:yuezhi

implicit none

integer :: N                ! 用于评分的站点数目

real :: forc(N),obse(N)     ! 预报和观测的降水序列

real :: ts                  ! ts得分

integer :: A,B,C            ! 命中,空报,漏报

integer :: i

A=0

B=0

C=0

write(*,*)'yuezhi',yuezhi

do i=1,N

if(forc(i)>=yuezhi.and.obse(i)>=yuezhi) A=A+1

if(forc(i)>=yuezhi.and.obse(i)

if(forc(i)=yuezhi)  C=C+1

enddo

ts=A*1.0/(A+B+C)

write(*,*) A,B,C

end subroutine QETS

subroutine integrate_point(lonMap,Ncols,latMap,Nrows,lonP,latP, &

rf,lf,uf,df,rn,ln,un,dn)

implicit none

integer,intent(in) :: Ncols,Nrows

real,intent(in) :: lonMap(0:Ncols),latMap(0:Nrows)

real,intent(in) :: lonP,latP

real,intent(out) :: rf,lf,uf,df

integer,intent(out) :: rn,ln,un,dn

integer i,j

if ((lonP.le.lonMap(0)).or.(lonP.ge.lonMap(Ncols))) then   ! 超出边界 rn=ln=0

rn=0

ln=0

rf=0.

lf=0.

write(*,*) " (lonP.le.lonMap(0)).or.(lonP.ge.lonMap(Ncols))",lonP

return

endif

if ((latP.le.latMap(0)).or.(latP.ge.latMap(Nrows))) then   ! 超出边界  un=dn=0

un=0

dn=0

uf=0.

df=0.

write(*,*) "(latP.le.latMap(0)).or.(latP.ge.latMap(Nrows))",latP

return

endif

rn=1

ln=1

rf=1.

lf=0.

do i=1,Ncols

if (lonP.le.lonMap(i)) exit

enddo

rn=i

ln=i-1

rf=(lonP-lonMap(i-1))/(lonMap(i)-lonMap(i-1))

lf=(lonMap(i)-lonP)/(lonMap(i)-lonMap(i-1))

!write(*,'(2i5,6f8.3)') ln,rn,lf,rf,lonP,lonMap(ln),lonMap(rn),lf+rf

un=1

dn=1

uf=1.

df=0.

do j=1,Nrows

if (latP.le.latMap(j)) exit

enddo

un=j

dn=j-1

uf=(latP-latMap(j-1))/(latMap(j)-latMap(j-1))

df=(latMap(j)-latP)/(latMap(j)-latMap(j-1))

!write(*,'(2i5,6f8.3)') dn,un,df,uf,latP,latMap(dn),latMap(un),df+uf

end subroutine integrate_point

气象ts评分_给大家分享一个格点插值到站点然后TS评分的程序相关推荐

  1. cdt规约报文用程序解析_用 Python 撸一个 Web 服务器第3章:使用 MVC 构建程序

    Todo List 程序介绍 我们将要编写的 Todo List 程序包含四个页面,分别是注册页面.登录页面.首页.编辑页面.以下分别为四个页面的截图. 注册页面: 登录页面: 首页: 编辑页面: 程 ...

  2. 乐高机器人java程序代码_用JAVA编写一个乐高机器人躲避障碍物运动到目标点的程序....

    写出一个可以控制机器人的小程序,使机器人从一边到一个相对面,并至少跨越一个障碍物.规则如下:1,障碍物必须设置在机器人行走的路线上.2,空间的基本配置如插图3,不能用轨道之类的东西... 写出一个可以 ...

  3. 分享一个香橙派PC2的C语言点亮LED程序

    首先要编写字符设备驱动,代码大同小异,随便复制粘贴就行了. 但是要注意了,一定要保护好寄存器,不要乱搞,要不然系统崩了,就等着你妈妈喊你回家吃饭吧. led.c #include <linux/ ...

  4. linux qt程序崩溃_【工程师分享】在MPSoC上运行基于eglfs_kms的QT应用程序

    作者:付汉杰,hankf@xilinx.com 文章转载自:赛灵思中文社区论坛 1Xilinx backend Xilinx为MPSoC支持4种libMali的backend: X11, Waylan ...

  5. python垃圾语言-分享一个用python写的window清理缓存垃圾小程序

    [Python] 纯文本查看 复制代码# coding: utf-8 import os import shutil del_extension = [".tmp", " ...

  6. java 给qq邮箱发邮件_用java写一个给自己QQ邮箱发一封电子邮件的程序

    首先,需要各位去java官网下载JavaMail mail.jar 和JAF activaton.jar,本程序使用的分别是1.4.5和1.1.1版本,在这里也给大家贴上链接,点击打开链接 接下来大家 ...

  7. 发现一个非常好的ftp站点,有大量的程序

    http://bbs.downsurf.com 主论坛 ftp://list:list@soft.downsurf.com 软件站24小时开放高速下载 已经更新超过300G的软件 水晶报表9.2中文版 ...

  8. 气象ts评分_天气预报评分方法评述.doc

    天气预报评分方法评述 天气预报评分方法评述 氕孑定拉圩方>多暇 第l8卷第1期 1995年3月 南京气象学院 JournalofNanjingInstituteofMeteorology VoI ...

  9. 编写一个弹出式菜单的shell程序_分享一个有趣的shell脚本--实现抓阄程序

    概述 今天主要分享一个有趣的shell脚本,用来实现抓阄,平时就不用剪刀石头布了. 需求 使用shell编写一个抓阄的程序: 1.执行脚本后,输入英文名字全拼,产生随机数01-99之间的数字,数字越大 ...

最新文章

  1. ubuntu deepin等debian系Linux发行版安装docker-ce命令
  2. pb - unable to initialize client library context
  3. 面试官:DDD如何指导微服务拆分?90%的程序员都答不上来!
  4. Hibernate3 r的SLF4J问题
  5. E. Almost Sorted(构造,递归)
  6. Struts2中我所遇到的内存溢出(java.lang.OutOfMemoryError)异常错误介绍
  7. opencv中Mat与IplImage,CVMat类型之间转换
  8. linux下转移mysql目录
  9. java 线程 interrupted_Java:当被另一个线程中断时,如何在线程上捕获InterruptedException?...
  10. 在某个文件夹中打开 cmd黑窗口
  11. 向日葵服务器怎么修改密码,向日葵远程服务器ip
  12. Python GUI | 利用Tkinter制作签名设计软件!
  13. 免费的Bootstrap管理后台模板集合
  14. 【公司邮箱怎么注册】Foxmail帐户邮箱数据保存在什么地方?如何备份一个帐户?
  15. Python中使用多个分隔符分隔字符串re.split
  16. web网页设计期末课程大作业:基于HTML+CSS+JavaScript个人书画作品展示HTML模板(6页)
  17. Mysql-五种join类型
  18. 00 SQL课程简介
  19. 【帝国CMS】灵动标签调用标题图片没有图片时显示默认图片
  20. 2020-01-16

热门文章

  1. 如何从零开始,成为element-plus的contributor
  2. Java语言中的-----访问修饰符
  3. Blog-LOGO原型
  4. Fread 和fwrite的参数不同,返回值不同
  5. MATLAB图像增强程序举例
  6. halcon联合C#测量十字Mark中心
  7. java基础实例代码_Java基础实例
  8. hbase hmaster一会就没了_浅析HBase
  9. 二元隐函数求二阶偏导_在线计算专题(03):具体、抽象函数的导数、微分与方向导数的计算...
  10. 为什么torch.nn.Linear的表达形式为y=xA^T+b而不是常见的y=Ax+b?