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

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/264187.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RichTextBox 右键显示 ContextMenuTrip

说明&#xff1a; (1)命名&#xff1a; RichTextBox -> rtxt1 ContextMenuTrip -> cms1 (2)截图&#xff1a; (3)完整代码&#xff1a; <span style"font-size:14px;">using System; using System.Collections.Generic; using System.ComponentModel; u…

设计模式学习笔记--Mediator 中介者模式

我们知道面向对象应用程序是由一组为了提供某种服务而彼此交互的对象组成。当彼此引用的对象数量比较少时&#xff0c;此时对象之间就为直接交互&#xff08;点对点)。而当对象的数量增加时&#xff0c;这种直接交互会导致对象之间复杂的、混乱的引用,最后形成一张巨大的网&…

Vue.js + Nuxt.js 项目中使用 Vee-validate 表单校验

vee-validate 是为 Vue.js 量身打造的表单校验框架&#xff0c;允许您校验输入的内容并显示对应的错误提示信息。它内置了很多常见的校验规则&#xff0c;可以组合使用多种校验规则&#xff0c;大部分场景只需要配置就能实现开箱即用&#xff0c;还支持自定义正则表达式。而且支…

python微博自动评论转发_python3 调用新浪微博api实现自动发布评论

新浪微博开放平台提供了丰富的API接口&#xff0c;利用这些接口&#xff0c;开发者能够开发出独具特色的微博应用。但是&#xff0c;大部分接口都需要用户授权给应用&#xff0c;应用利用授权得到的Access Token来调用相应的接口来获取内容。新浪微博的授权机制目前主要有3种应…

Linux中fork()函数详解

参考地址 1.对fork函数的认识&#xff1a; 一个进程&#xff0c;包括代码、数据和分配给进程的资源。fork&#xff08;&#xff09;函数通过系统调用创建一个与原来进程几乎完全相同的进程&#xff0c; 也就是两个进程可以做完全相同的事&#xff0c;但如果初始参数或者传入的变…

类似pyinstaller_Python 打包工具对比,Nuitka vs Pyinstaller

py2exe&#xff0c;Pyinstaller&#xff0c;Cx_freeze&#xff0c;Nuitka都可以完成python打包的任务。Pyinstaller和Nuitka都号称跨平台&#xff0c;但其实顶多只能算是工具本身跨平台&#xff0c;实际体验中不仅打包产生的文件不能跨平台&#xff0c;能否成功打包本身也不确定…

Android学习之PopupWindow

Android的对话框有两种&#xff1a;PopupWindow和AlertDialog。 详细说明如下&#xff1a; AlertDialog是非阻塞式对话框&#xff1a;AlertDialog弹出时&#xff0c;后台还可以做事情&#xff1b; AlertDialog的位置固定&#xff0c;而PopupWindow的位置可以随意&#xff1b; A…

spring整合mybatis接口无法注入问题

在学习Spring完之后简单的了解了MyBatis。然后进行简单的整合&#xff0c;遇到MyBatista接口映射的Bean无法自动注入的问题&#xff1b; 代码异常&#xff1a; 线程“main”org.springframe .bean .factory中的异常。创建名为“UserController”的bean时出错:通过字段“userdao…

LR重新安装的问题

LR的安装&#xff0c;说难不难&#xff0c;说易也不易。在此就把我安装时碰到的问题记录下来&#xff0c;以供大家参考。 第一次安装时&#xff0c;我是成功了的。&#xff08;注意&#xff1a;安装程序的目录不能有中文&#xff0c;当然同时你得有lincense&#xff09; 后来因…

matlab柱状斜线_Matlab小练习:按斜线方向依次赋值矩阵

来自知乎问题&#xff0c;觉得挺有意思&#xff0c;留给学生解答之余&#xff0c;我也做了一番思考&#xff0c;得到三种解法。题目如下&#xff1a;以n80为例&#xff0c;————————————————————一、先要根据确定矩阵的阶数 如果先生成足够大矩阵&#xff0…

Programming C#.Classes and Objects.只读字段

只读字段 当字段声明中含有 readonly 修饰符时&#xff0c;该声明所引入的字段为只读字段。给只读字段的直接赋值只能作为声明的组成部分出现&#xff0c;或在同一类中的实例构造函数或静态构造函数中出现。&#xff08;在这些上下文中&#xff0c;只读字段可以被多次赋值。&am…

会计知识

毛利 等于收入纯利 等于利润 按照&#xff1a;利润&#xff1d;收入-成本-费用 收入&#xff1a;收到的现金、支票、签单金额成本&#xff1a;买材料、酒水、电、工资、等费用&#xff1a;日租金、桌椅、碗、盘子等摊销、税金等等 ------------------------------------------…

2020-12-21

蜂鸣器&#xff08;向导辅助&#xff09; /******************************************************* This program was created by the CodeWizardAVR V3.12 Advanced Automatic Program Generator ?Copyright 1998-2014 Pavel Haiduc, HP InfoTech s.r.l. http://www.hpin…

xgboost 一般多少棵树_大白话人工智能算法-第32节集成学习之通俗理解XGBoost原理和过程...

本节讲解XGBoost的原理~目录1、回顾&#xff1a;1.1 有监督学习中的相关概念1.2 回归树概念1.3 树的优点2、怎么训练模型&#xff1a;2.1 案例引入2.2 XGBoost目标函数求解3、XGBoost中正则项的显式表达4、如何生长一棵新的树&#xff1f;5、xgboost相比原始GBDT的优化&#xf…

C++函数中返回引用和返回值的区别

https://www.cnblogs.com/JMLiu/p/7928425.html转载于:https://www.cnblogs.com/liuw-flexi/p/10745246.html

scala编程第16章学习笔记(1)

List列表的基本操作 head方法获得列表的第一个元素 tail方法获得列表除第一个元素之外的其它元素 isEmpty&#xff1a;判断列表是否为空&#xff0c;空的话返回真 last&#xff1a;获得列表最后一个元素 init&#xff1a;获得除最后一个元素之外的元素 reverse&#xff1a;反转…

struts

Struts是一个基于Sun J2EE平台的MVC框架&#xff0c;主要是采用Servlet和JSP技术来实现的。Struts把Servlet、JSP、自定义标签和信息资源(message resources)整合到一个统一的框架中&#xff0c;开发人员利用其进行开发时不用再自己编码实现全套MVC模式&#xff0c;极大的节省了…

css实现元素在div底部显示

#CSS .1 {position:relative;} .2 {position:absolute;left;0;bottom:0;} #HTML <div class"1"> <div class"2"></div> </div> 不影响其他元素的情况下定位最好...如果 DIV1 里 只有 DIV2 的话 在DIV2 CSS样式里 加一个 margin-to…

css文件修改后没变化 static_Go Web编程使用Go语言创建静态文件服务器

上篇关于Go模板库应用实践的文章最后我们留下一个问题&#xff0c;页面模板是通过 CDN引用的 BootStrap的 css&#xff0c; js文件。到目前位置我们的服务器还无法伺服客户端的静态文件请求把服务器磁盘上的文件响应给客户端。使用和配置过 Nginx服务器的一定知道 Nginx天然支持…

【linux】学习2

鸟哥那本书的第6章 文件权限&#xff1a; ^ ^ ^ ^ ^ ^ ^ 1 2 3 4 5 6 7 文件有 文件所有者、文件所属用户组 的概念如上图. 1. 十个字母表示文件…