水文预报课设vb代码
用Excel—VBA编制水文频率适线程序
![用Excel—VBA编制水文频率适线程序](https://img.taocdn.com/s3/m/0fa3ab3831126edb6f1a10b0.png)
这样即可通过公 式直接计算任 意 C 、 的 值 , sP值 而
不必通过查 值表再 内插的方法 , 大大提高了计算精度 。
3 绘制频 率 曲线
通常绘制频率曲线 图用 的是海森几 率格 纸 , 即正态概 率格纸 , 以横座标代表 概率 , 坐标 代表变数 。由于 x轴 纵 上 的刻度为对数刻度 , E cl 而 xe 缺省 的图表 不具 备以上功
准伽玛 函数计算( ) 。 7式 () 7 式中 : t Bx 一 P (p =J
() 3
由 = 4
,
J= 2 B
,
a 庐
( 代 (式 1 C )入8 得 一v 2 )
(() 4
卡 t
l p 一 +
n 3s 一 )
式 中 : 实测 系列项数 , ; n为 x 为实测值 , 为均值 , v c
文频率适 线程序 实现 了多组数 据连 续计算 、 自动化适线、 图象保存、 成果打印等功能。
【 关键词 】B 水文频率 程 序 P Ⅲ型 曲线 VA 一
自 20 1 2年开始 , 国开展 了第二次水资源规划 , 3 全 在工 作 中要进行大量的水文频率适线计算 ,以淮河流域为例 , 总共需完成 2 2 9 个频率适线计算 ,再加上数据 的修改 、 频 率计算要重新适线 , 因此工作量很大。 目前普遍使用的水 文频率适线程序大多是用 V B编写 的, 值多通过查表而
能, 必须要进行一些转换 。
31 座标 ( ) 实现 .横 的
4 优化 适线
优化适 线是配 出的频率 曲线 与实测经验频率点在纵 坐 标 之间 的差值按一定的法则 ( 目标函数 ) 使之最小。
matlab水文预报课程设计
![matlab水文预报课程设计](https://img.taocdn.com/s3/m/10ea30dfb8d528ea81c758f5f61fb7360b4c2bac.png)
matlab水文预报课程设计一、课程目标知识目标:1. 学生能理解水文预报的基本概念,掌握利用Matlab进行水文预报的基本原理;2. 学生能掌握Matlab编程基础,运用相关函数和工具箱进行水文数据的处理和分析;3. 学生能掌握建立和优化水文预报模型的方法,并运用模型进行洪水预测。
技能目标:1. 学生能运用Matlab软件收集和整理水文数据,进行数据预处理;2. 学生能编写简单的Matlab程序,实现对水文数据的可视化分析;3. 学生能运用Matlab建立水文预报模型,对实际案例进行模拟和预测。
情感态度价值观目标:1. 学生培养对水文预报的兴趣,增强环保意识和水资源管理观念;2. 学生通过团队协作解决问题,培养合作精神和沟通能力;3. 学生在解决实际问题的过程中,培养勇于探索、积极创新的精神。
课程性质:本课程为应用性实践课程,以Matlab软件为工具,结合水文预报理论,培养学生实际操作和解决问题的能力。
学生特点:学生已具备一定的水文预报知识和Matlab基础,具有较强的学习兴趣和动手能力。
教学要求:教师需引导学生将理论知识与实际应用相结合,注重培养学生的实际操作能力和创新思维,提高学生的水文预报技能。
在教学过程中,关注学生的学习进度和反馈,及时调整教学方法和内容。
通过课程学习,使学生能够独立完成水文预报模型的建立和优化,为实际工作打下坚实基础。
二、教学内容1. 水文预报基本概念:介绍水文预报的定义、意义、方法及在水资源管理中的应用。
教材章节:第一章 水文预报概述2. Matlab软件入门:讲解Matlab软件的基本操作、数据类型、矩阵运算和编程基础。
教材章节:第二章 Matlab基础3. 水文数据处理:学习利用Matlab进行水文数据的收集、预处理、可视化分析等操作。
教材章节:第三章 水文数据处理4. 水文预报模型:介绍常见的水文预报模型及其原理,如ARIMA模型、SVM 模型等。
教材章节:第四章 水文预报模型5. Matlab在水文预报中的应用:讲解如何利用Matlab软件建立和优化水文预报模型。
水文预报课程设计
![水文预报课程设计](https://img.taocdn.com/s3/m/12acafc4710abb68a98271fe910ef12d2af9a9b6.png)
水文预报课程设计一、课程背景水文预报是对水文变量(如水位、流量、降雨等)在时间与空间上进行推算和预测的一项技术。
在防洪、水资源管理、水利工程设计等方面有着重要的应用。
水文预报需要掌握一定的水文规律和计算方法,因此这门课程在水文、水利、环境等相关专业中具有重要意义。
二、课程目标本课程旨在帮助学生掌握水文预报的基本概念、计算方法和技术路线,了解水文预报在防洪、水资源管理、水利工程设计等方面的应用,培养学生的水文预报分析与决策能力。
三、教学内容本课程主要包括以下内容:1.水文变量的描述和统计分析2.水文预报的基本概念和方法3.实时水文预报的数据获取和处理4.模型选择和参数确定5.模型应用和结果解释6.水文预报在防洪、水资源管理、水利工程设计等方面的应用四、教学方法本课程采用理论授课、实践演示和案例分析相结合的方式进行。
课程进度分为两个部分,第一部分以理论知识为主,应用案例为辅。
第二部分以应用案例为主,理论知识为辅。
并通过集体讨论、群体演示等形式,培养学生的团队合作和解决问题的能力,增强学生的实践操作能力。
五、教材与参考书目1.《水文预报实用技术》(陈风生著)2.《水文预报方法与实践》(杨晓蕾著)3.《水文预报与防洪抗旱应急管理》(韩志国著)4.《水文预报技术与工程应用》(林云、赵小敏著)六、作业与考核1.课堂笔记:按照要求记录下课堂重点知识点,积极参与课堂讨论与互动。
2.论文撰写:选择水文预报的一个应用场景,进行实证分析,并撰写一篇不少于2000字的论文。
3.设计作业:结合实际案例,对水文预报的数据分析和模型运用进行设计,提交报告和代码。
七、实验设备与环境本课程需要学生掌握相关的计算机技术和编程语言,例如MATLAB、Python等。
学生需要在实验室环境下利用计算机对数据进行处理分析和模型训练。
实验室具备支持数据处理和编程的计算机设备,并安装了相关软件和工具。
八、教学团队本课程由教授和助教共同组成教学团队。
水文预报课程设计(matlab程序)
![水文预报课程设计(matlab程序)](https://img.taocdn.com/s3/m/964a1cc9dc88d0d233d4b14e852458fb770b38af.png)
水文预报课程设计(matlab程序)一、教学目标本课程的教学目标是使学生掌握水文预报的基本原理和方法,能够运用MATLAB程序进行水文预报的计算和分析。
具体目标如下:1.知识目标:学生能够理解水文预报的基本概念、原理和方法,掌握MATLAB程序的基本语法和操作。
2.技能目标:学生能够运用MATLAB程序进行水文预报的计算和分析,能够解释和分析预测结果。
3.情感态度价值观目标:学生能够认识到水文预报对于水资源管理和防灾减灾的重要性,培养学生的责任感和使命感。
二、教学内容根据课程目标,本课程的教学内容主要包括以下几个部分:1.水文预报的基本概念和原理:包括水文过程、水文周期、水文预报方法等。
2.MATLAB程序的基本语法和操作:包括变量定义、数据处理、函数调用、程序控制等。
3.水文预报MATLAB程序的设计和实现:包括数据输入输出、模型建立、预测计算、结果分析等。
三、教学方法为了达到课程目标,本课程将采用多种教学方法相结合的方式进行教学:1.讲授法:用于讲解水文预报的基本概念和原理,MATLAB程序的基本语法和操作。
2.案例分析法:通过分析实际案例,使学生更好地理解和应用水文预报的原理和方法。
3.实验法:通过上机实验,使学生掌握MATLAB程序的设计和实现,提高学生的实践能力。
四、教学资源为了支持教学内容和教学方法的实施,本课程将准备以下教学资源:1.教材:《水文预报(matlab程序)》教材,用于学生自学和教师讲解。
2.参考书:提供相关的参考书籍,供学生深入了解水文预报的原理和方法。
3.多媒体资料:制作PPT课件,通过图文并茂的形式,使学生更好地理解水文预报的原理和方法。
4.实验设备:提供计算机实验室,供学生上机实验和练习。
五、教学评估本课程的评估方式包括平时表现、作业和考试三个部分,以全面、客观、公正地评价学生的学习成果。
1.平时表现:通过学生在课堂上的参与度、提问回答、小组讨论等表现进行评估,占总评的20%。
水文预报水文与水资源工程第四版课程设计
![水文预报水文与水资源工程第四版课程设计](https://img.taocdn.com/s3/m/2e7e35eb85254b35eefdc8d376eeaeaad1f316fb.png)
水文预报水文与水资源工程第四版课程设计
1. 简介
水文预报是指通过对雨量、水位、径流等水文数据进行分析、计算和推算,预测未来一段时期内水文变化趋势和水资源可用量。
水文与水资源工程作为一门交叉学科,是研究水文学和水利工程学在工程实践中的应用。
本文将为大家介绍水文预报水文与水资源工程第四版课程设计。
2. 课程设计内容
该课程设计主要包括以下几个小节:
2.1 实验设计
该实验主要以水文数据采集与分析为主线,通过设置不同实验条件以及对分析结果进行对比,让学生在实践中探讨水文学的基本理论,并且加深对水文数据分析方法的理解。
2.2 课题研究
通过提供不同的水文预报课题,让学生自行整理和分析水文数据,并结合实际工程应用场景,提出合适的水文预报方案。
在这个过程中,学生需要全方位的了解水文与水资源工程学在工程实践中的应用,提高应用能力。
2.3 报告撰写
通过深入分析和研究水文数据以及制定合适的水文预报方案,学生需要将分析与验证的过程结合在一起,完成相应的实验报告,让学生切身体验学术论文写作的过程,并且加强了对自己理解的确认。
3. 设计目标
本课程设计以在更为现实场景下的水文预报应用实践环节为主线,帮助学生掌握水文学基本理论以及相关数据处理方法,完成团队协作的课题研究和报告撰写能力的提升,为未来水文与水资源工程的学习与研究奠定良好基础。
4. 总结
水文预报水文与水资源工程第四版课程设计充分结合理论与实践,旨在提高学生的水文预报研究思路和实践能力,让学生将理论知识与实际应用相结合,开阔思路,拓展视野。
同时,本课程也涵盖了多样性、交互性和独立思考性等多个教育特性。
用excelvba自定义函数解决水文资料中的问题
![用excelvba自定义函数解决水文资料中的问题](https://img.taocdn.com/s3/m/f37c8b72284ac850ac02428b.png)
利用EXCEL自定义函数功能实现水文数据的“四舍六入”云南水文水资源局大理分局解开创在水文工作中,我们需要用EXCEL来处理大量的水文数据,需要处理的水文数据通常要进行“四舍六入”,而EXCEL的内置函数又没有这方面的功能,这给我们水文工作带来了极大的不便。
不过,我们可以通过EXCEL VBA编程来实现自定义函数,也就是我们自己编一个具有“四舍六入”功能的函数来解决这一问题。
下面我们将详细介绍如何实现这一功能及其的应用。
一、什么是“四舍六入”按照相应水文规范的要求,水文及水质资料使用的“四舍六入五单双”,执行《数值修约规范》(GB8170-87)。
1.拟舍弃数字的最左一位数字小于5时,则舍去,即保留的各位数字不变。
2.拟舍弃数字的最左一位数字大于或等于5时,而其后跟有并非全部为0的数字时,则进1,即保留的末位数字加1。
3. 拟舍弃数字的最左一位数字为5,而后面无数字或皆为0时,若所保留的末位数字为奇数(1,3,5,7,9)则进一,为偶数(2,4,6,8)则舍弃。
0视为偶数。
二、代码的实现下面是我们自定义“四舍六入”函数的完整代码,“ ' ”后的汉字内容为代码注释内容。
此程序是在“取绝对值(Abs)”、“取整(Int)”、“四舍五入(Round)”等系统内置函数的基础上完成的。
函数的型式及其每个参数需要用户在属性设置中定义和声明,故叫做自定义函数。
此定义“四舍六入五单双”的函数名为Round5。
'“四舍六入”自定义函数' 函数形式 Round5(x,mm),返回值Round5为 Double 型' X为操作数值,mm为保留小数位数' mm为 Integer 型,mm = 0 表示取整数' 此算法是通过对要处理的数值进行倍数扩大,来获得需要比较数来实现“四舍六入”Private Function round5(X As Double, mm As Integer) As DoubleDim Temp1, Temp2 As StringTemp1 = 1If mm < 0 ThenTemp1 = 10 ^ Abs(mm)X = X / Temp1mm = 0End IfIf ((Int((Abs(X) - Int(Abs(X))) * 10 ^ mm) Mod 2) = 0 And (Abs(X) * 10 ^ mm - Int(Abs(X) * 10 ^ mm)) <= 0.5) And X <> Val(Round(Abs(X), mm) * Sgn(X)) Thenround5 = Val((Round(Abs(X) - 10 ^ (-mm) / 5, mm)))Elseround5 = Val(Round(Abs(X), mm))End Ifround5 = Val( round5 * Sgn(X) * Temp1)End Function三、具体的应用下面以EXCEL 2007为例,介绍该自定义函数的使用。
VBA在水文整编合理性检查中的应用-投省局
![VBA在水文整编合理性检查中的应用-投省局](https://img.taocdn.com/s3/m/a547456c25c52cc58bd6be45.png)
VBA在水文整编合理性检查中的应用马富明黄诗晓林元润(福建泉州水文水资源勘测分局,362000,泉州)摘要:程序利用微软公司的OFFICE2000平台自带的VBA功能,调用福建省通用的水文整编程序过程文件THQS.txt,针对在水文(水流沙)整编过程中存在的比较常见的一些问题如整米数摘录错误、反比降等问题编制的一个可视化程度较强的简易软件。
结果表明,该程序在实际应用过程中的实用性较强,能够水文整编工作人员及时发现数据上存在的问题提供较为可靠和直接的帮助。
本文介绍的是关于水位整编的站点。
关键词:水文整编;VBA;THQS.txt;落差法推流1 问题的提出长期以来,水文作为一门基础学科,为城市防洪、排涝、规划、建设等社会活动提供可靠的信息支持,水文数据的收集是一个极其严谨、规范的行为,通过测验、收集、摘录、整编之后方能入库、编制成册,在这个过程中,每一个数据都必须经过至少三道手的校对和复核。
近来来,随着测验的自动化水平、水文整编的计算机应用水平不断提高,水文数据整编的过程也在不断简化。
在依旧使用人工观测的站点,目前主要是水位站点尤其是采用落差法推流、带有辅助观测水位站的站点,其辅助观测水位站大多还使用人工观测,在其测验、收集、摘录的过程中,水文整编过程中存在的一些固有问题诸如数据摘录错误尤其是整米数摘录错误、反比降等依然有存在的可能。
因此,本文主要是针对这个问题提出了一个简单实用的有助于排除此类差错的方法。
2 程序应用的基础2.1 基础程序本程序是在EXCEL2000的平台上,针对采用福建通用水文整编程序编写的一个应用性程序,通过EXCEL2000自带的VBA功能,调用水文整编程序的过程文件THQS.txt。
应用本文介绍的程序必须安装有EXCEL2000。
适用于WIN98以上的环境。
本文介绍的程序只适用于严格按照整编规范规定格式的数据文件。
2.2 应用原理本文介绍的应用程序的主要原理是:采用EXCEL2000自带的图表功能,调用过程文件THQS.txt 中的数据,根据数据的连续性,建立以日为分界点的、较为直观的、可视化程度较高的图表界面。
vb课程设计报告代码
![vb课程设计报告代码](https://img.taocdn.com/s3/m/8d042f4d6d175f0e7cd184254b35eefdc8d315b4.png)
vb课程设计报告代码一、教学目标本节课的教学目标是让学生掌握VB编程基础,包括变量声明、数据类型、运算符和控制结构。
知识目标要求学生能够理解VB编程的基本概念,并能够运用这些知识编写简单的程序。
技能目标要求学生能够熟练使用VB集成开发环境,编写、调试和运行程序。
情感态度价值观目标要求学生培养对编程的兴趣和好奇心,培养解决问题的能力和团队合作精神。
二、教学内容本节课的教学内容主要包括VB编程基础、变量声明、数据类型、运算符和控制结构。
首先,将介绍VB编程的基本概念和集成开发环境的使用。
然后,将讲解变量声明、数据类型和运算符的使用方法,并通过示例程序让学生掌握这些概念的应用。
接下来,将介绍控制结构,如条件语句和循环语句,并让学生通过实践编写相应的程序。
三、教学方法为了激发学生的学习兴趣和主动性,将采用多种教学方法。
首先,将采用讲授法,讲解VB编程的基本概念和语法。
然后,将通过讨论法,让学生互相交流和解决问题。
接着,将采用案例分析法,分析实际编程问题并给出解决方案。
最后,将进行实验法,让学生动手编写和调试程序,巩固所学的知识。
四、教学资源为了支持教学内容和教学方法的实施,将选择和准备适当的教学资源。
教材方面,将使用《VB编程入门》一书,该书内容全面,适合初学者。
参考书方面,将推荐《VB编程实战》一书,该书提供了大量的实例程序,有助于学生加深对编程的理解。
多媒体资料方面,将制作PPT课件和视频教程,以便学生更好地理解和掌握知识。
实验设备方面,将准备计算机和VB集成开发环境,以便学生进行编程实践。
五、教学评估本节课的教学评估将采用多种方式,以全面反映学生的学习成果。
平时表现方面,将观察学生在课堂上的参与程度、提问和回答问题的积极性以及团队合作的表现。
作业方面,将布置相关的编程练习,要求学生按时完成并提交,以评估学生对课堂知识的掌握程度。
考试方面,将安排一次课程结束后的考试,包括选择题、填空题和编程题,以评估学生对VB编程基础的掌握情况。
基于VBA编程技术实现水文整编成果向基础水文数据库的转换与导入
![基于VBA编程技术实现水文整编成果向基础水文数据库的转换与导入](https://img.taocdn.com/s3/m/c0521f46852458fb770b568a.png)
2 1 第 6期 0 1年
表1 水 文 整 编 表 表 名 逐 日平 均 水 位 表 Z I A 逐 潮 高 低 潮 位 表 T L/ Z A TL 潮 位 月 年统 计 表 TL N 实 测 流 量成 果 表 Q L C 实 测 大 断 面 成果 表 Q L D 堰闸流量率定成果表 Q UL 水 文 整 编 表 与 基 础 水 文 数 据 库 对 应 关 系 扩展 名 基 础 水 文 数 据 库 表 名
决 的一 个 课 题 。在 这 个 过 程 中 , 重 最 要 的一 个 环 节 就 是 如 何 转 换 二 者 的 格 式 , 个是 表 格 , 个 是 数 据 库 , 一 一 如 果 人 工 进 行 转 换 将 耗 费 不 必 要 的 重
使用者在 使用 E cl ,以 set xe时 h e 表
名; 还有各时相 应 的更 改 ,在 表 1
据 库都是 各 自按照不 同 的逻 辑依 据 编排 的, 因此会出现多张水文整 编表 对应一张水文要素表 , 或一 张水 文整 编表包 含 多张水文 要素 表所需 信息
等 情 况 。 些 都 需 要 在 数 据 转换 前进 这
行 研究。
中都有体现。
22 V A编 程 技 术 . B V A语 言 是 Mi oot x e工 具 B c sfE c1 r 中为 使 用 者 开 发 的 使 用 工 具 , 允 许 它
水文资料分析效率 。
如何将 水 文整 编 成果 表转 换成 符合 数据库结 构 的标准 格式 ,并 录 入到标 准数据 库 中 ,是 我们亟 待解
实 际情况 , 水文整 编表需要入库 的共 有 l 4类 ,对应 了基础水 文数据库 的 2 张数据库表。 3 它们的对 应关 系如表
水文预报课程设计VB报告
![水文预报课程设计VB报告](https://img.taocdn.com/s3/m/1b30068a250c844769eae009581b6bd97f19bcfe.png)
水文预报课程设计VB报告一、课程目标水文预报课程设计VB报告旨在达成以下课程目标:1. 知识目标:(1)使学生掌握水文预报的基本概念、原理和方法;(2)培养学生运用VB编程语言解决水文预报问题的能力;(3)让学生了解我国水文预报的现状和发展趋势。
2. 技能目标:(1)培养学生收集、整理和分析水文数据的能力;(2)提高学生运用VB编程语言编写水文预报程序的能力;(3)锻炼学生通过实际案例,解决实际水文预报问题的能力。
3. 情感态度价值观目标:(1)激发学生对水文预报学科的兴趣,培养其科学探索精神;(2)引导学生关注水文预报在国民经济和社会发展中的作用,增强社会责任感;(3)培养学生团结协作、积极进取的精神风貌。
本课程针对高中年级学生,充分考虑了学生的认知特点、学习兴趣和实际需求。
在教学过程中,注重理论与实践相结合,以实际案例为引导,让学生在掌握基本知识的同时,提高解决实际问题的能力。
通过本课程的学习,使学生能够独立完成水文预报相关任务,为未来进一步学习和从事相关工作奠定坚实基础。
课程目标的设定,旨在为教学设计和评估提供明确的方向,确保教学效果的达成。
二、教学内容水文预报课程设计VB报告的教学内容如下:1. 水文预报基本概念与原理- 水文预报的定义与分类- 水文预报的基本原理- 水文预报的主要方法2. VB编程基础- VB编程环境与基本操作- 数据类型、变量与常量- 控制结构(顺序、选择、循环)- 过程与函数3. 水文数据处理与分析- 水文数据收集与整理- 水文数据分析方法- VB编程实现水文数据分析4. 水文预报模型- 水文预报模型概述- 常见水文预报模型介绍- VB编程实现水文预报模型5. 案例分析与实际应用- 案例分析:某地区洪水预报- VB编程解决实际水文预报问题- 水文预报结果评价与分析教学内容依据课程目标,结合教材章节进行组织。
在教学过程中,按照以下进度安排教学内容:1. 第1-2周:水文预报基本概念与原理2. 第3-4周:VB编程基础3. 第5-6周:水文数据处理与分析4. 第7-8周:水文预报模型5. 第9-10周:案例分析与实际应用三、教学方法水文预报课程设计VB报告的教学方法如下:1. 讲授法:教师通过生动的语言、形象的表达,为学生讲解水文预报的基本概念、原理和VB编程基础等理论知识。
水文预报课程设计vba程序
![水文预报课程设计vba程序](https://img.taocdn.com/s3/m/0c573fb3988fcc22bcd126fff705cc1755275f9f.png)
水文预报课程设计vba程序一、课程目标知识目标:1. 掌握水文预报的基本原理,理解VBA程序在水文预报中的应用;2. 学会使用VBA程序进行水文数据的处理和分析,能运用相关函数和算法进行水文预报;3. 了解水文预报的不确定性和风险评估,能运用VBA程序对预报结果进行评估。
技能目标:1. 培养学生运用VBA程序解决实际水文问题的能力;2. 提高学生在数据处理和分析方面的实际操作技能;3. 培养学生独立思考和团队协作的能力,能在项目中进行有效沟通和分工。
情感态度价值观目标:1. 激发学生对水文预报和VBA编程的兴趣,培养其探究精神和创新意识;2. 培养学生关注我国水文灾害问题,增强其社会责任感和使命感;3. 引导学生树立正确的价值观,认识到科技在解决实际问题中的重要作用。
课程性质分析:本课程为高中年级的水文预报实践课程,结合VBA程序设计,以提高学生的实际操作能力和解决实际问题的能力为目标。
学生特点分析:高中年级学生对计算机操作和编程有一定的了解,具备一定的数据处理和分析能力,但对水文预报的原理和VBA程序应用尚不熟悉。
教学要求:结合学科知识,注重实践操作,提高学生在水文预报和VBA编程方面的综合运用能力。
在教学过程中,关注学生的个体差异,激发学生的学习兴趣,培养其团队协作和沟通能力。
通过本课程的学习,使学生能够达到上述课程目标,为后续相关课程的学习打下坚实基础。
二、教学内容1. 水文预报基本原理:介绍水文循环过程、降水-径流过程、流域特征等基本概念,分析水文预报的主要方法及其适用范围。
教材章节:第二章 水文预报原理2. VBA编程基础:讲解VBA编程环境、语法、数据类型、控制结构等基本知识,使学生掌握VBA编程的基本技巧。
教材章节:第三章 VBA编程基础3. 水文数据处理与分析:学习利用VBA程序进行水文数据的读取、整理、分析和可视化,包括使用Excel内置函数和自定义函数。
教材章节:第四章 水文数据处理与分析4. 水文预报模型建立与验证:通过案例教学,让学生学会构建水文预报模型,运用VBA程序进行参数率定、模型验证和预报。
用Visual Basic语言实现水文水情自动译报
![用Visual Basic语言实现水文水情自动译报](https://img.taocdn.com/s3/m/200b5725b4daa58da0114a37.png)
1前言水文情报是防汛指挥系统进行决策的主要依据.主要基于保密的需要,一直采用按统一的编码规则进行编码的密码传送方法.计算机网络技术引入水文情报传输以后,传统的邮电电报方式和专用电台收发方式成了辅助手段和后备手段,但仍统一采用传统的编码方式传输,并将此类密码仍按习惯称之为“水情电报”.由于编码规则的繁杂,人工翻译不但费时费力,也难于保证准确性.利用Visua l Basic 语言实现水文水情自动译报,是水文情报预报工作办公自动化的重要组成部分,在减轻工作人员的劳动强度、提高工作效率、杜绝译报差错,以及为防汛指挥调度提供及时准确、方便快捷的水情信息等方面,能够发挥重要作用.2水文水情译报系统的用户需求2.1总体功能需求将以密码方式编码的、传送到网络计算机中的水文水情信息进行解码,还原成汉语言描述的信息.2.2具体系统需求描述水情信息依照来源的不同(因而编码规则也不同),分为以下四类:⑴来源于雨量站的信息.⑵来源于江河水文站的信息.⑶来源于水库管理部门的水文信息.⑷来源于堰闸管理部门水文的信息.依照特殊性的不同,又可分为两类:⑴特殊水情电报.⑵普通水情电报.水利部颁发的《水情信息编码标准》中,对全国水文情报系统规定了统一的编码规则.根据《内蒙古自治区报汛站拍报任务》的要求,我地区只涉及如下几种不同编码规则编码的水情电报普通电报⑴降水量电报⑵江河水情电报.⑶闸坝水情电报.⑷水库湖泊水情电报.特殊电报:⑴更正电报.⑵暴雨加报.⑶雹情电报.综上所述,水文水情译报系统要具体解决以上7种电报编码的解码问题.解码后的报文存储为文本文件,屏幕直接查看,提供打印报表.3系统的具体实现3.1窗体设计通过前述分析可以看出,模型中除解码操作部分外,使用V B 现有的资源实现设计思想,相对来说是较简单的.由于发生的事件不多,甚至不必使用菜单技术.为了美观,设一个起始页窗体,此窗体设二个命令按钮用于退出系统和激活主窗体.再设一主窗体,主窗体设一个文本框、一个打开文件对话框、一个打印设置对话框.文本框用于显示译文.打开文件对话框用于与用户对话,由用户指定要翻译的报文文件.打印对话框用于打印设置.另设三个命令按钮,一个用于启动,一个用于打印报表,一个用于返回起始页窗体.3.2解码问题的实现真正的难点在于如何实现解码的问题.3.2.1解码操作分类根据数据流图,解码操作可分解为如下的一些操作:⑴判别报类功能:分辨是特殊电报,还是普通电报.特殊电报有:暴雨加报电报、雹情电报、更正电报等.其余为普通电报.⑵判别报种功能确定本份电报属于降水量电报、江河水情电报、闸坝水情电报、水库湖泊水情电报中的哪一种⑶取组码功能从报文中按顺序取出组电码用Visual Basic 语言实现水文水情自动译报宝顺1,王金英2(1.通辽市水文勘测局,内蒙古通辽028006; 2.通辽市总办水利枢纽管理处,内蒙古通辽028000)摘要:水文水情译报系统是水文水情信息自动翻译的系统.其主要功能是替代已沿用50余年的人工译报工作,实现雨水情信息计算机自动翻译,为防汛指挥决策提供更及时、准确的水情信息.本系统采用Visua l Bas ic 语言作为开发工具.关键词:水文水情;译报系统;Visua l Bas ic 语言中图分类号:TP312VI S :P332文献标识码:A文章编号:1673-260X (2008)04B-0001-02Vol.24No.4Aug.2008第24卷第4期2008年8月赤峰学院学报(自然科学版)Journa l of Chife ng Univer sity (N a tural Sc ie nce Edition).:.:.:.1⑷判别组码的类别功能:确定此组组码是19种组码中的哪一种.选择译码器的操作可归并入此操作中,因为每类组码和该类译码器是一一对应的.⑸译码功能:将电报组码转换成汉字.3.2.2具体实现的设计思想⑴判别报类由于特殊电报种类不多,使用排除法判别即可,即不属于三类特殊电报者,均属于普通电报.⑵判别报种由于这四种报是根据发报单位的不同性质分的,且一个发报单位固定只发一种电报,因此只要判明站类,报种就确定了.在发报站一览表中添加一个“站类”字段,并将检索操作与检索站名的操作合并,在检索站名的同时也得到了站类.拍报站一览表作为一个辅助的外部文件,由于其很少需要修改,为简化程序设计,确定为普通文本文件,而不做成数据库.⑶判别组码类别这是最困难的部分.详见5节“解决的技术难点”中的叙述.⑷译码组码种类较多,但结构、性质差别很大,难于归类译码,只能与组码类一一对应.实际就是将每种组码的编码规则体现出来的子块.3.3标准模块设计解决译码操作的所有过程都在一个标准模块中.本标准模块包括24个子过程和1个函数过程.通过主控模块调用,分别翻译雨量站、水文站、水库站、堰闸站和三类特殊电报的各子模块,完成各类电文翻译.3.4辅助文件设计3.4.1程序检索文件此文件是翻译站名的依据,同时也是取得站类等其他信息的来源.该文件设计为顺序文件,存放水情标志、站号、站名、站类等字符,供程序检索.3.4.2译文文件当水文水情译报系统将报文电码文件翻译后,按照指定路径,分类存放到硬盘上.每次译报共产生3个文本文件,分别是:水文站译报.txt、水库堰闸译报.txt、雨量站译报.txt.均为普通文本文件.根据国家水利部水情情报保密规定,本文不对水情情报文件进行具体示例.4解决的技术难点在系统的具体实现上,难点都集中在如何实现解码操作上.这是由于编码规则———《水情信息编码标准》中的各种规定,是一套极其复杂的系统.其规则因电报的种类不同而不同(共有21种不同性质的电报,这21种中又分为特殊电报和普通电报两类.为简化问题,本系统仅包含了本地区实际业务目前涉及到的7种,即特殊电报3种,普通电报4种.当实际业务增加时再逐步增加).同一类电报中,大多数组码因代表的项目不同,编码规则也不同.这7类电报中,归类后共有19种不同的组码编码规则.而有些组码的编码规则中,又分若干种情况而有不同的规定.更困难的是,很多类组码本身并没有标明此组码是哪种组码的标志,而是要靠此组码在电文中出现的顺序来判别.由于很多组码按规定是可以省略的,如某些水文量是“0”值,某些站没有此项拍报任务等等.造成了某一特定含义的组码在电文中出现位置的序号是可变的,这就决定了要判别一组组码的种类,不但取决于电报种类、组码在电文中出现的位置,而且可能还要知道前后码文的含义才能最终确定.解决的思路:⑴关于组码种类的判别:按每类电报的最全的(即没有省略的组码)排列顺序,由前向后逐组判别.判别为真时,启动相应的解码操作;判别为假时,转向下一个可能种类的组码判别,直至电文中已没有电码.⑵判别的方法:当能够从组码的特征中可唯一判明的,则提取组码特征进行判别,没有此种特征的,如时间组,可根据前后文含义在若干种组合中进行排除判别.另一个核心的难点是:实际收到的报文,好多并未严格按《编码标准》拟报.人工译报时,凡不产生岐义,尚能判断出其含义者,也未通知拟报方改正,因此相沿成习,造成了同一项目有不同的拟报方法.这就要求本系统要具有较高的容错能力.解决的办法是具体分析每个具体问题,找出不同的解决方法,没有统一的规则.5结语水文水情译报系统初步解决了水情报文自动翻译的问题.在设计过程中,重点解决了解码操作如何实现的问题.由于编码规则繁锁复杂,程序设计有一定难度.经过认真分析,寻找规律,较成功地实现了设计思想.———————————————————参考文献:〔1〕软件工程.邮电出版社,2004.〔2〕VB程序设计.电子工业出版社,2005.〔3〕VB6.0实例教程.电子工业出版社,2002.〔4〕水情信息编码标准.国家水利部,2005.2。
基于ExcelVBA水文频率计算程序的开发应用_袁超
![基于ExcelVBA水文频率计算程序的开发应用_袁超](https://img.taocdn.com/s3/m/3a55bfadb0717fd5360cdcbd.png)
t p = β ( x p - a0 ) 设计值 x p 求解: xp = ( 1 + Cv Φp ) x xp - x Cs tp 2 = + Φp = xC v 2 Cs 4 t p = GAMMAINV 1 - p, 2 , 1 Cs Φp =
( 8) ( 9) ( 10 )
(
)
( 11 )
Φ p = - 0 . 4500532 - 0 . 7796968ln[- ln( 1 - p) ] ( 23 ) 式中: Φ 为离均系数。
1
( 14 )
式中: NORMINV 为正态累积分布函数的反函数。
图1 程序以菜单形式出现在 Excel 菜单栏中图
3
功能简介
本程序主要功能分为以下几部分 : ( 1 ) 连续 系 列 和 非 连 续 系 列 频 率 ( 多 个 考 证
( 15 ) ( 16 )
期) 计算; Normal, Log - Nor( 2 ) 5 种频率线型 ( P - Ⅲ, mal1 , Log - P - Ⅲ, Gumbel) 选择; ( 3 ) 手动调节参数取值; ( 4 ) 设置数据有效数位; ( 5 ) 若对现有适线成果不满意可以重新适线 ; ( 6 ) 不同线型和不同参数取值, 求取各设计频 率设计值; ( 7 ) 在频率曲线图上可以添加数据点据 ( 如区 间数据) ; ( 8 ) 同一张频率曲线图上绘制多条频率曲线和 多个数据系列; ( 9 ) 设置频率曲线图 ( Y 坐标轴格式: 最大值、 最小值、 刻度单位; 网格线格式: 无网格、 简网格、 全 网格; 数据点据格式: 大小、 形状、 颜色; 曲线格式: 粗
3 西北水电·2011 年·第 5 期 细、 形状、 颜色; 图释: 图名、 参数取值、 设计成果) ; ( 10 ) 设计成果 ( 原始数 据、 经 验 频 率、 设计成 频率曲线图) 以 Excel 表格输出或直接打印。 果、到 1904 年历史洪水, 洪峰流量为 5 900 ~ 6 300 m3 / s, 为 1811 —2000 年最大洪水, 重 1981 年洪水作特大值 现期 T 为 191 a; 实测系列中,
运用VBA开发水文数据自动化统计表
![运用VBA开发水文数据自动化统计表](https://img.taocdn.com/s3/m/4192af1aa2161479171128b1.png)
由于 E cl 0 0有强大公式 和函数功能 , 常用 它来 xe 2 0 经 统计 各 种 数 据 , 如 在 E cl20 中使 用 V A( i a 假 xe 00 B Vs l u B s r p l a o ) 就可 以将大量 的 、 ai f pi t n , coA ci 重复 的操作 记录 为一个 V A程序 , B 用户 只需 利用一 个 简单 的菜单 命令 重
[ 中图分类 号] T 3 P9 [ 文献标识码 ] B [ 文章编号 ] 10 06—7 7 (0 10 — 0 9— 2 15 2 1 ) 1 0 9 0
S t o d c mma d o u e a d o n p pp o d c mma d a .Co t l. ado nb r nr s o
运 用 J4=I( R(S L N ( 1 )= R E。 B A K 1 F O IB A K C 4 T U I L N S
《 逐潮 高低 潮位表》 一直 以来 是用传 统的手算方 法制 做 。该报表 的传统制做 流程 是 : ( ) 水文 资料 整编规范》 《 潮高低 潮位表 》 1 按《 在 逐 中 填入潮位 、 时间 、 雨量和 /期 ( 3 公历 、 夏历 ) 。 () 2 手工计算 出高 潮 、 低潮 、 涨潮 差 、 落潮 差 、 潮历 涨 时 、 潮历 时。 落
用。
Wi C nrl A d m o o t lut ) t ot s d ( sC nr B t n h. o. o o C pi = ” at n o 制作新表”
. .
O A t n = ce r n ci o la "
E dW i n t h
2 根据 “ 水文 菜单” 的子 菜单逐 步 实 现 报 表 制 作
基于Visual Basic 6.0的航道整治水文分析程序设计与开发
![基于Visual Basic 6.0的航道整治水文分析程序设计与开发](https://img.taocdn.com/s3/m/da1294e16294dd88d0d26bce.png)
Ⅲ型曲线分布函数进行数学表达式转换 , 出了算 给
法 简单 、 通用 性 强及 收敛 速度 较快 的算法模 型 。
为特大值第 序号 的经验频率。
收 稿 1 : 0 8 l 1 3期 2 0 O l 作者简介 :黎剑 明( 9 3 ) 男 , 1 8 一 , 在读硕士 , 从事港 1 海岸及近海 工程 的研究 。 : 3、
值 法在 求解 的灵 活性 、 度 和范 围等 受 到限制 ; 献 精 文
2 )对 于不 连 序 系 列 经 验频 率 的 计 算 。设 在 历 史 调查 期 Ⅳ 年 中有 特 大值 a个 , 中 z 发 生在 n 其 个 年实 测 系 列 之 内 , 』 中的 a个 特 大 值 的经 验 频 率 7 v年
用下 式计 算 :
一
[ ][ ] 4 、5 中介绍的数值计算 方法也存在着 收敛 性 、
通 用性 、 稳定 性 等 不 够 理 想 的 问 题 。本 程 序 对 伽 玛 函数 近似公 式计 算 免去 了查 值 表 的麻烦 , 对 P 且 一
PM— + 一N 1
() 2
式 中 : 表示 为特 大值 由大 至小 排 列 的序 号 ; 表 N 示 为 自最 远 的调 查 考证 年 份 至 今 的年 数 ;P 表 示 M
第 3 卷第 4期 4 20 0 8年 1 2
Vo . 4 No 4 13 .
De . 00 c2 8
HUNAN COMMUNI CATI ON CI S ENCE AND TECHNOLOGY
文章编 号 : 0 884 2 0 )40 3—5 10 -4 X(0 8 0 —170
Vsa B s . i l ai 60作为开发平 台, u c 进行航道整 治水文分析的程序设计与开发。该程序 除具有水 文样本 系列排序、 经验频率计算、 理论频率计算、 基本站设计流量值推求等功能外 , 还具有描绘
水文预报课设vb代码
![水文预报课设vb代码](https://img.taocdn.com/s3/m/748890d4c9d376eeaeaad1f34693daef5ef713b7.png)
水文预报课设vb代码Dim P(1 To 366) As Single '流域的平均降雨量Dim i As Integer, P1(1 To 366) As Single, P2(1 To 366) As Single, P3(1 T o 366) As Single, P4(1 To 366) As Single Dim E0(1 To 366) As Single '流域的水面蒸发 Dim Ep(1 T o 366) As Single '流域的蒸发能力 Dim E(1 T o 366) As Single '流域总的蒸发量Dim EU(1 To 366) As Single, EL(1 To 366) As Single, ED(1 To 366) As Single Dim Q(1 To 366) As Single '流域实测径流 Dim R(1 To 366) As Single '流域计算径流Dim RS(1 To 366) As Single, RG(1 To 366) As Single, PE(1 To 366) As Single Dim W(1 To 367) As Single '流域总的蓄水量Dim WU(1 T o 367) As Single, WL(1 T o 367) As Single, WD(1 To 367) As Single, WMM As Single, a(1 To 367) As Single Const h1 = 0.33, h2 = 0.14, h3 = 0.33, h4 = 0.2 '各雨量站的权重 Const Wm = 140, Um = 20, Lm = 60, Dm = 60 Const B = 0.3, C = 0.16, IM = 0.002Private Sub Command1_Click() '任务一运用程序优选KcDim sumQ As Single, sumR As Single, sumR89(2000) As Single, sumQ89(2000) As Single, sumR90(2000) As Single, sumQ90(2000) As SingleDim JD89(2000) As Single, XD89(2000) As Single, j As Integer, JD90(2000) As Single, XD90(2000) As SingleDim JDB(2000) As Single, XDB(2000) As Single, Y As Single, minj As Integer, Min As Single, Kc(2000) As SingleConst Fc = 24For j = 1 To 2000 '运用1989年资料率定 Kc(j) = 0.9 + 0.001 * j Open "C:\Documents and Settings\Administrator\桌面\水文预报\1989年资料.txt" For Input As #1For i = 1 To 365 '流域平均降雨量计算 Input #1, Q(i), E0(i), P1(i), P2(i), P3(i), P4(i)P(i) = 0.33 * P1(i) + 0.14 * P2(i) + 0.33 * P3(i) + 0.2 * P4(i) sumQ89(j) = sumQ89(j) + Q(i) * 24 * 3.6 / 553 Next i Close #1 W(1) = 110: WU(1) = 10: WL(1) = 40: WD(1) = 60 '流域三层蒸发计算 W(1) = WU(1) + WL(1) + WD(1) WMM = Wm * (1 + B) a(1) = WMM * (1 - (1 - (W(1) / Wm)) ^ (1 / (1 + B))) For i = 1 To 365Ep(i) = E0(i) * Kc(j) Next iFor i = 1 To 365If WU(i) + P(i) >= Ep(i) Then EU(i) = Ep(i) EL(i) = 0 ED(i) = 0 End IfIf WU(i) + P(i) < Ep(i) Then If WL(i) >= C * Lm Then EU(i) = WU(i) + P(i)EL(i) = (Ep(i) - EU(i)) * WL(i) / Lm ED(i) = 0ElseIf WL(i) < C * Lm And WL(i) >= C * (Ep(i) - EU(i)) Then EU(i) = WU(i) + P(i)EL(i) = (Ep(i) - EU(i)) * C ED(i) = 0ElseIf WL(i) < C * (Ep(i) - EU(i)) Then EU(i) = WU(i) + P(i) EL(i) = WL(i)ED(i) = (Ep(i) - EU(i)) * C - EL(i) End If End IfE(i) = EU(i) + EL(i) + ED(i)PE(i) = P(i) - E(i) '流域产流计算 If PE(i) > 0 Then '当产流时 If PE(i) + a(i) < WMM ThenR(i) = PE(i) + W(i) - Wm + Wm * (1 - (PE(i) + a(i)) / WMM) ^ (B + 1) W(i + 1) = W(i) + PE(i) - R(i) a(i + 1) = PE(i) + a(i) ElseIf PE(i) + a(i) >= WMM Then R(i) = PE(i) + W(i) - Wm W(i + 1) = Wm a(i + 1) = WMM End If End IfIf WU(i) + P(i) - EU(i) - R(i) <= Um Then WU(i + 1) = WU(i) + P(i) - EU(i) - R(i) WL(i + 1) = WL(i) - EL(i) WD(i + 1) = WD(i) - ED(i)WU(i + 1) = UmIf WL(i) - EL(i) + (WU(i) + P(i) - EU(i) - R(i) - Um) <= Lm Then WL(i + 1) = WL(i) - EL(i) + (WU(i) + P(i)- EU(i) - R(i) - Um) WD(i + 1) = WD(i) - ED(i) ElseWL(i + 1) = LmIf WD(i) - ED(i) + WL(i) - EL(i) + (WU(i) + P(i) - EU(i) - R(i) - Um) - Lm <= Dm Then WD(i + 1) = WD(i) - ED(i) + WL(i) - EL(i) + (WU(i) + P(i) - EU(i) - R(i) - Um) - Lm ElseWD(i + 1) = Dm End If End If End IfIf PE(i) <= 0 Then '当不产流时 R(i) = 0W(i + 1) = W(i) + PE(i)a(i + 1) = WMM * (1 - (1 - W(i + 1) / Wm) ^ (1 / (1 + B))) End If Next iFor i = 1 To 365sumR89(j) = sumR89(j) + R(i) Next i Next jFor j = 1 To 2000 '运用1990年资料率定 Kc(j) = 0.9 + 0.001 * j Open "C:\Documents and Settings\Administrator\桌面\水文预报\1990年资料.txt" For Input As #2For i = 1 To 365Input #2, Q(i), E0(i), P1(i), P2(i), P3(i), P4(i)P(i) = 0.33 * P1(i) + 0.14 * P2(i) + 0.33 * P3(i) + 0.2 * P4(i) sumQ90(j) = sumQ90(j) + Q(i) * 24 * 3.6 / 553 Next i Close #2 W(1) = 110: WU(1) = 10: WL(1) = 40: WD(1) = 60 W(1) = WU(1) + WL(1) + WD(1) WMM = Wm * (1 + B)a(1) = WMM * (1 - (1 - (W(1) / Wm)) ^ (1 / (1 + B))) For i = 1 To 365Ep(i) = E0(i) * Kc(j) Next iFor i = 1 To 365If WU(i) + P(i) >= Ep(i) Then EU(i) = Ep(i):EL(i) = 0:ED(i) = 0If WU(i) + P(i) < Ep(i) Then If WL(i) >= C * Lm Then EU(i) = WU(i) + P(i)EL(i) = (Ep(i) - EU(i)) * WL(i) / Lm ED(i) = 0ElseIf WL(i) < C * Lm And WL(i)EL(i) = (Ep(i) - EU(i)) * CED(i) = 0ElseIf WL(i) < C * (Ep(i) - EU(i)) ThenEU(i) = WU(i) + P(i)EL(i) = WL(i)ED(i) = (Ep(i) - EU(i)) * C - EL(i)End IfEnd IfE(i) = EU(i) + EL(i) + ED(i)PE(i) = P(i) - E(i)If PE(i) > 0 ThenIf a(i) + PE(i) < WMM ThenR(i) = PE(i) + W(i) - Wm + Wm * (1 - (PE(i) + a(i)) / WMM) ^ (B + 1)a(i + 1) = PE(i) + a(i)W(i + 1) = W(i) + PE(i) - R(i)ElseR(i) = PE(i) + W(i) - Wma(i + 1) = WMMW(i + 1) = WmEnd IfElseR(i) = 0W(i + 1) = W(i) + PE(i)a(i + 1) = WMM * (1 - (1 - W(i + 1) / Wm) ^ (1 / (1 + B)))If WU(i) + P(i) - EU(i) - R(i) <= Um ThenWU(i + 1) = WU(i) + P(i) - EU(i) - R(i)WL(i + 1) = WL(i) - EL(i)WD(i + 1) = WD(i) - ED(i)ElseWU(i + 1) = UmIf WL(i) - EL(i) + (WU(i) + P(i) - EU(i) - R(i) - Um) <= Lm Then WL(i + 1) = WL(i) - EL(i) + (WU(i) + P(i) - EU(i) - R(i) - Um)WD(i + 1) = WD(i) - ED(i)ElseWL(i + 1) = LmIf WD(i) - ED(i) + WL(i) - EL(i) + (WU(i) + P(i) - EU(i) - R(i) - Um) - Lm <= Dm Then WD(i + 1) = WD(i) - ED(i) + WL(i) - EL(i) + (WU(i) + P(i) - EU(i) - R(i) - Um) - LmElseWD(i + 1) = DmEnd IfEnd IfEnd IfNext iFor i = 1 To 365sumR90(j) = sumR90(j) + R(i)Next iNext jFor j = 1 To 2000JD89(j) = sumR89(j) - sumQ89(j)XD89(j) = (sumR89(j) - sumQ89(j)) / sumQ89(j)JD90(j) = sumR90(j) - sumQ90(j)XD90(j) = (sumR90(j) - sumQ90(j)) / sumQ90(j)For j = 1 To 2000JDB(j) = Abs(XD90(j)) - Abs(XD89(j))XDB(j) = (Abs(XD90(j)) - Abs(XD89(j))) / Abs(XD89(j))Next jMin = 1For j = 1 To 2000 '运用尽量相近原则优选KcIf Abs(XDB(j)) < Min ThenMin = Abs(XDB(j))minj = jEnd IfNext jLabel2.Caption = Kc(minj) ‘输出计算结果JD89(minj) = sumQ89(minj) - sumR89(minj) '绝对误差XD89(minj) = (sumQ89(minj) - sumR89(minj)) / sumQ89(minj) '相对误差Text1.Text = sumQ89(minj)Text2.Text = sumR89(minj)Text3.Text = JD89(minj)Text4.Text = XD89(minj)JD90(minj) = sumQ90(minj) - sumR90(minj) '绝对误差XD90(minj) = (sumQ90(minj) - sumR90(minj)) / sumQ90(minj) '相对误差Text5.Text = sumQ90(minj)Text6.Text = sumR90(minj)Text7.Text = JD90(minj)Text8.Text = XD90(minj)End SubPrivate Sub Command2_Click()'任务二次洪流量计算Dim Qg(1 To 28) As Single, Qs(1 To 28) As Single, UH(1 To 28) As IntegerConst Fc = 11, Cg = 0.978, Qgchu = 55.3Kc = Val(Label2.Caption)Open "C:\Documents and Settings\Administrator\桌面\水文预报\暴雨资料.txt" For Input As #3For i = 1 To 28Input #3, E0(i), P1(i), P2(i), P3(i), P4(i)P(i) = h1 * P1(i) + h2 * P2(i) + h3 * P3(i) + h4 * P4(i)Ep(i) = E0(i) * KcNext iClose #3W(1) = 140: WU(1) = 20: WL(1) = 60: WD(1) = 60W(1) = WU(1) + WL(1) + WD(1)WMM = Wm * (1 + B)a(1) = WMM * (1 - (1 - (W(1) / Wm)) ^ (1 / (1 + B)))For i = 1 To 28If WU(i) + P(i) >= Ep(i) ThenEU(i) = Ep(i):EL(i) = 0:ED(i) = 0End IfIf WU(i) + P(i) < Ep(i) ThenIf WL(i) >= C * Lm ThenEU(i) = WU(i) + P(i)EL(i) = (Ep(i) - EU(i)) * WL(i) / LmED(i) = 0ElseIf WL(i) < C * Lm And WL(i) >= C * (Ep(i) - EU(i)) ThenEU(i) = WU(i) + P(i)EL(i) = (Ep(i) - EU(i)) * CED(i) = 0ElseIf WL(i) < C * (Ep(i) - EU(i)) ThenEU(i) = WU(i) + P(i)EL(i) = WL(i)ED(i) = (Ep(i) - EU(i)) * C - EL(i)End IfEnd IfE(i) = EU(i) + EL(i) + ED(i)PE(i) = P(i) - E(i) '流域产流计算If PE(i) > 0 ThenIf PE(i) + a(i) < WMM ThenR(i) = PE(i) + W(i) - Wm + Wm * (1 - (PE(i) + a(i)) / WMM) ^ (B + 1)W(i + 1) = W(i) + PE(i) - R(i)a(i + 1) = PE(i) + a(i)ElseIf PE(i) + a(i) >= WMM ThenR(i) = PE(i) + W(i) - WmW(i + 1) = Wma(i + 1) = WMMEnd IfEnd IfIf WU(i) + P(i) - EU(i) - R(i) <= Um ThenWU(i + 1) = WU(i) + P(i) - EU(i) - R(i)WL(i + 1) = WL(i) - EL(i)WD(i + 1) = WD(i) - ED(i)ElseWU(i + 1) = UmIf WL(i) - EL(i) + (WU(i) + P(i) - EU(i) - R(i) - Um) <= Lm Then WL(i + 1) = WL(i) - EL(i) + (WU(i) + P(i) - EU(i) - R(i) - Um)WD(i + 1) = WD(i) - ED(i)ElseWL(i + 1) = LmIf WD(i) - ED(i) + WL(i) - EL(i) + (WU(i) + P(i) - EU(i) - R(i) - Um) - Lm <= Dm Then WD(i + 1) = WD(i) - ED(i) + WL(i) - EL(i) + (WU(i) + P(i) - EU(i) - R(i) - Um) - LmElseWD(i + 1) = DmEnd IfEnd IfEnd IfIf PE(i) <= 0 ThenR(i) = 0W(i + 1) = W(i) + PE(i)a(i + 1) = WMM * (1 - (1 - W(i + 1) / Wm) ^ (1 / (1 + B)))End IfNext iFor i = 1 To 28 '水源划分If PE(i) > 0 ThenIf PE(i) <= Fc ThenRG(i) = R(i)RS(i) = 0ElseRG(i) = Fc * R(i) / PE(i)RS(i) = R(i) - RG(i)End IfEnd IfIf PE(i) <= 0 ThenR(i) = 0RG(i) = 0RS(i) = 0End IfNext i'出流系数法推求地下径流Qg(1) = Cg * Qgchu + (1 - Cg) * RG(1) * 553 / (3 * 3.6)For i = 2 To 28Qg(i) = Cg * Qg(i - 1) + (1 - Cg) * RG(i) * 553 / (3 * 3.6)Nexti'单位线推求直接径流Open "C:\Documents and Settings\Administrator\桌面\水文预报\单位线.txt" For Input As #4 For i = 1 To 11Input #4, UH(i)Next iClose #4For i = 1 To 28For j = 1 To 28If 1 <= i - j + 1 And i - j + 1 <= 28 ThenQs(i) = Qs(i) + RS(j) / 10 * UH(i - j + 1)End IfNext jNext iFor i = 1 To 28 '总的流量Q(i) = Qs(i) + Qg(i)Next i'次洪计算结果输出Open "C:\Documents and Settings\Administrator\桌面\水文预报\次洪流量过程.txt" For Output As #5For i = 1 To 28Print #5, "直接径流:" & Qs(i); "地下径流:" & Qg(i); "次洪总流量:" & Q(i)Next iClose #5End SubPrivate Sub Command3_Click() ‘退出EndEnd SubPrivate Sub Command4_Click() ‘人工优选和检验Dim R(1 To 366) As Single, RS(1 T o 366) As Single, RG(1 To 366) As SingleDim PE(1 To 366) As Single, W(1 T o 366) As Single, WU(1 To 366) As Single, WL(1 To 366) As Single, WD(1 To 366) As Single Dim WMM As Single, a(1 To 366) As SingleDim sumQ As Single, sumR As Single, sumQ90 As Single, sumR90 As SingleKc = Val(Text9.Text)If Option1.Value = True ThenOpen "C:\Documents and Settings\Administrator\桌面\水文预报\1989年资料.txt" For Input As #1For i = 1 To 365Input #1, Q(i), E0(i), P1(i), P2(i), P3(i), P4(i)P(i) = h1 * P1(i) + h2 * P2(i) + h3 * P3(i) + h4 * P4(i)sumQ = sumQ + Q(i) * 24 * 3600 * 1000 / 553000000Text1.Text = sumQNext iClose #1End IfIf Option2.Value = True ThenOpen "C:\Documents and Settings\Administrator\桌面\水文预报\1990年资料.txt" For Input As #2For i = 1 To 365Input #2, Q(i), E0(i), P1(i), P2(i), P3(i), P4(i)P(i) = h1 * P1(i) + h2 * P2(i) + h3 * P3(i) + h4 * P4(i)sumQ90 = sumQ90 + Q(i) * 24 * 3600 * 1000 / 553000000 Text5.Text = sumQ90Next iClose #2End IfIf Option3.Value = True ThenOpen "C:\Documents and Settings\Administrator\桌面\水文预报\1991年资料.txt" For Input As #6For i = 1 To 365 '运用1991年资料检验Input #6, Q(i), E0(i), P1(i), P2(i), P3(i), P4(i)P(i) = h1 * P1(i) + h2 * P2(i) + h3 * P3(i) + h4 * P4(i)sumQ = sumQ + Q(i) * 24 * 3600 * 1000 / 553000000Text1.Text = sumQNext iClose #6End IfW(1) = 110: WU(1) = 10: WL(1) = 40: WD(1) = 60W(1) = WU(1) + WL(1) + WD(1)WMM = Wm * (1 + B)a(1) = WMM * (1 - (1 - (W(1) / Wm)) ^ (1 / (1 + B)))For i = 1 To 365Ep(i) = E0(i) * KcNext iFor i = 1 To 365If WU(i) + P(i) >= Ep(i) ThenEU(i) = Ep(i): EL(i) = 0: ED(i) = 0End IfIf WU(i) + P(i) < Ep(i) ThenIf WL(i) >= C * Lm ThenEU(i) = WU(i) + P(i)EL(i) = (Ep(i) - EU(i)) * WL(i) / LmED(i) = 0ElseIf WL(i) < C * Lm And WL(i) >= C * (Ep(i) - EU(i)) Then EU(i) = WU(i) + P(i)EL(i) = (Ep(i) - EU(i)) * CED(i) = 0ElseIf WL(i) < C * (Ep(i) - EU(i)) ThenEU(i) = WU(i) + P(i)EL(i) = WL(i)ED(i) = (Ep(i) - EU(i)) * C - EL(i)End IfEnd IfE(i) = EU(i) + EL(i) + ED(i)PE(i) = P(i) - E(i)If PE(i) > 0 ThenIf PE(i) + a(i) < WMM ThenR(i) = PE(i) + W(i) - Wm + Wm * (1- (PE(i) + a(i)) / WMM) ^ (B + 1)W(i + 1) = W(i) + PE(i) - R(i)a(i + 1) = PE(i) + a(i)ElseIf PE(i) + a(i) >= WMM ThenR(i) = PE(i) + W(i) - WmW(i + 1) = Wma(i + 1) = WMMEnd IfEnd IfIf WU(i) + P(i) - EU(i) - R(i) <= Um ThenWU(i + 1) = WU(i) + P(i) - EU(i) - R(i)WL(i + 1) = WL(i) - EL(i)WD(i + 1) = WD(i) - ED(i)ElseWU(i + 1) = UmIf WL(i) - EL(i) + (WU(i) + P(i) - EU(i) - R(i) - Um) <= Lm Then WL(i + 1) = WL(i) - EL(i) + (WU(i) + P(i) - EU(i) - R(i) - Um)WD(i + 1) = WD(i) - ED(i)ElseWL(i + 1) = LmIf WD(i) - ED(i) + WL(i) - EL(i) + (WU(i) + P(i) - EU(i) - R(i) - Um) - Lm <= Dm ThenWD(i + 1) = WD(i) - ED(i) + WL(i) - EL(i) + (WU(i) + P(i) - EU(i) - R(i) - Um) - LmElseWD(i + 1) = DmEnd IfEnd IfEnd IfIf PE(i) <= 0 ThenR(i) = 0W(i + 1) = W(i) + PE(i)a(i + 1) = WMM * (1 - (1 - W(i + 1) / Wm) ^ (1 / (1 + B)))End IfNext iIf Option1.Value = True Or Option3.Value = True ThenFor i = 1 To 365sumR = sumR + R(i)Next iText2.Text = sumRText3.Text = sumQ - sumRText4.Text = (sumQ - sumR) / sumQEnd IfIf Option2.Value = True ThenFor i = 1 To 365sumR90 = sumR90 + R(i)Next iText6.Text = sumR90Text7.Text = sumQ90 - sumR90Text8.Text = (sumQ90 - sumR90) / sumQ90 End IfEnd Sub。
VB编程语言在水情值班中的应用
![VB编程语言在水情值班中的应用](https://img.taocdn.com/s3/m/733137d80d22590102020740be1e650e52eacf1c.png)
VB编程语言在水情值班中的应用
朱维科
【期刊名称】《水利科技与经济》
【年(卷),期】2013(019)007
【摘要】在水文信息化的今天,遥测站点数量不断增长,如何更高效地利用实时遥测数据成为了水情值班的新任务.使用VB编程语言编写暴雨闹钟程序自动读取、处理实时数据,捕捉1h最大雨量和3h最大雨量这两个极值,同时对比辖区内天气雷达图,并利用暴雨声音报警的功能,使水情值班人员更及时掌握辖区内暴雨情况和检验出错误数据.
【总页数】2页(P122,124)
【作者】朱维科
【作者单位】广东省水文局韶关水文分局,广东韶关512026
【正文语种】中文
【中图分类】TP39
【相关文献】
1.VB编程语言在《测量学》学习过程中的简单应用 [J], 李城;
2.VB编程语言在软件开发中的应用 [J], 马春玉
3.VB编程语言在纤维检验数据处理中的应用研究 [J], 王秀峰;张维霞
4.VB编程语言在软件开发中的应用 [J], 马春玉;
5.试论VB编程语言在软件开发中的应用 [J], 关琳琳
因版权原因,仅展示原文概要,查看原文内容请购买。
visual basic在求承压含水层水文地质参数中的运用
![visual basic在求承压含水层水文地质参数中的运用](https://img.taocdn.com/s3/m/7689bbe988eb172ded630b1c59eef8c75fbf9583.png)
visual basic在求承压含水层水文地质参数中的运用随着现代化技术的发展,电子计算机在地质科学领域中的应用愈发广泛。
在水文地质学领域,Visual Basic (以下简称VB)无疑是一种较为便捷且灵活的编程语言。
本文探讨VB在求解承压含水层水文地质参数中的应用。
一、承压含水层基础概念承压含水层是一个类于海绵的层,其中装有多孔多喉隙的岩石。
这些隙缝孔隙包含了水和气体。
至于承压层则是指遭受上方岩层和覆盖层压迫的地层。
这个过程就像我们平时坐在沙发上,身体就受到了沙发向下的重力一样。
承压含水层根据水文地质的学说被分为不同的类型。
这些类型不仅仅基于地层,还基于岩石的物理特性和水的流动特性。
在应用中,对承压含水层的性质进行理解是非常重要的。
每个含水层都有一些参数用于定量描述其特性。
这些参数通常是:1. 渗透率(K):液体通过固体体的能力2. 饱和渗透率(Ks):饱和状况下的渗透率3. 孔隙度(φ):岩石孔隙流体占据的体积比 4. 水头(H):由于重力水在管道或管道中自然流动时所产生的作用力。
二、Visual Basic 管道如前所述,VB是一种较为便捷且灵活的编程语言。
由其建立的管道可用于模拟水流,描绘承压含水层的特性。
管道的建立包括多个部分。
1. 确定所需的输入参数:在电子计算机上建立的水文地质模型需要输入多个参数以描述所分析的承压层。
这些参数通常是渗透率,孔隙度和水头等。
因此,在建立管道之前应确定所需的输入参数。
2. 设计管道:设计管道时需要考虑多个因素,例如管道的长度,直径和取样点的数量,等等。
管道应尽量与所需参数和数据匹配,以确保准确性和稳定性。
3. 输入数据:执行VB管道之前,需要收集和输入数据。
这些数据用于计算水流的特性,并确定管道在数据收集中所需使用的规范。
4. 运行模型:将收集的数据输入到VB管道中,步骤在完成准备工作后启动计算机程序,以计算高度集中的数据,包括渗透率,孔隙度和水头。
计算完成后,可以确定承压层的流动性质和特征。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
WL(i + 1) = Lm
If WD(i) - ED(i) + WL(i) - EL(i) + (WU(i) + P(i) - EU(i) - R(i) - Um) - Lm <= Dm Then WD(i + 1) = WD(i) - ED(i) + WL(i) - EL(i) + (WU(i) + P(i) - EU(i) - R(i) - Um) - Lm
Const h1 = 0.33, h2 = 0.14, h3 = 0.33, h4 = 0.2 '各雨量站的权重 Const Wm = 140, Um = 20, Lm = 60, Dm = 60 Const B = 0.3, C = 0.16, IM = 0.002
Private Sub Command1_Click() '任务一运用程序优选Kc
E(i) = EU(i) + EL(i) + ED(i)
PE(i) = P(i) - E(i) '流域产流计算 If PE(i) > 0 Then '当产流时 If PE(i) + a(i) < WMM Then
R(i) = PE(i) + W(i) - Wm + Wm * (1 - (PE(i) + a(i)) / WMM) ^ (B + 1) W(i + 1) = W(i) + PE(i) - R(i) a(i + 1) = PE(i) + a(i) ElseIf PE(i) + a(i) >= WMM Then R(i) = PE(i) + W(i) - Wm W(i + 1) = Wm a(i + 1) = WMM End If End If
Dim RS(1 To 366) As Single, RG(1 To 366) As Single, PE(1 To 366) As Single Dim W(1 To 367) As Single '流域总的蓄水量
Dim WU(1 To 367) As Single, WL(1 To 367) As Single, WD(1 To 367) As Single, WMM As Single, a(1 To 367) As Single
EL(i) = (Ep(i) - EU(i)) * WL(i) / Lm ED(i) = 0
ElseIf WL(i) < C * Lm And WL(i)
EL(i) = (Ep(i) - EU(i)) * C
ED(i) = 0
ElseIf WL(i) < C * (Ep(i) - EU(i)) Then
W(1) = 110: WU(1) = 10: WL(1) = 40: WD(1) = 60 W(1) = WU(1) + WL(1) + WD(1) WMM = Wm * (1 + B)
a(1) = WMM * (1 - (1 - (W(1) / Wm)) ^ (1 / (1 + B))) For i = 1 To 365
If WL(i) - EL(i) + (WU(i) + P(i) - EU(i) - R(i) - Um) <= Lm Then
WL(i + 1) = WL(i) - EL(i) + (WU(i) + P(i) - EU(i) - R(i) - Um) WD(i + 1) = WD(i) - ED(i) Else
If WU(i) + P(i) < Ep(i) Then If WL(i) >= C * Lm Then EU(i) = WU(i) + P(i)
EL(i) = (Ep(i) - EU(i)) * WL(i) / Lm ED(i) = 0
ElseIf WL(i) < C * Lm And WL(i) >= C * (Ep(i) - EU(i)) Then EU(i) = WU(i) + P(i)
WL(i + 1) = Lm
If WD(i) - ED(i) + WL(i) - EL(i) + (WU(i) + P(i) - EU(i) - R(i) - Um) - Lm <= Dm Then WD(i + 1) = WD(i) - ED(i) + WL(i) - EL(i) + (WU(i) + P(i) - EU(i) - R(i) - Um) - Lm Else
a(1) = WMM * (1 - (1 - (W(1) / Wm)) ^ (1 / (1 + B))) For i = 1 To 365
Ep(i) = E0(i) * Kc(j) Next i
For i = 1 To 365
If WU(i) + P(i) >= Ep(i) Then EU(i) = Ep(i) EL(i) = 0 ED(i) = 0 End If
P(i) = 0.33 * P1(i) + 0.14 * P2(i) + 0.33 * P3(i) + 0.2 * P4(i) sumQ89(j) = sumQ89(j) + Q(i) * 24 * 3.6 / 553 Next i Close #1
W(1) = 110: WU(1) = 10: WL(1) = 40: WD(1) = 60 '流域三层蒸发计算 W(1) = WU(1) + WL(1) + WD(1) WMM = Wm * (1 + B)
Dim JDB(2000) As Single, XDB(2000) As Single, Y As Single, minj As Integer, Min As Single, Kc(2000) As Single
Const Fc = 24
For j = 1 To 2000 '运用1989年资料率定 Kc(j) = 0.9 + 0.001 * j
EU(i) = WU(i) + P(i)
EL(i) = WL(i)
ED(i) = (Ep(i) - EU(i)) * C - EL(i)
End If
End If
E(i) = EU(i) + EL(i) + ED(i)
PE(i) = P(i) - E(i)
If PE(i) > 0 Then
For i = 1 To 365
sumR89(j) = sumR89(j) + R(i) Next i Next j
For j = 1 To 2000 '运用1990年资料率定 Kc(j) = 0.9 + 0.001 * j
Open "C:\Documents and Settings\Administrator\桌面\水文预报\1990年资料.txt" For Input As #2
Dim P(1 To 366) As Single '流域的平均降雨量
Dim i As Integer, P1(1 To 366) As Single, P2(1 To 366) As Single, P3(1 To 366) As Single, P4(1 To 366) t i
For i = 1 To 365
If WU(i) + P(i) >= Ep(i) Then EU(i) = Ep(i):EL(i) = 0:ED(i) = 0 End If
If WU(i) + P(i) < Ep(i) Then If WL(i) >= C * Lm Then EU(i) = WU(i) + P(i)
Dim E0(1 To 366) As Single '流域的水面蒸发 Dim Ep(1 To 366) As Single '流域的蒸发能力 Dim E(1 To 366) As Single '流域总的蒸发量
Dim EU(1 To 366) As Single, EL(1 To 366) As Single, ED(1 To 366) As Single Dim Q(1 To 366) As Single '流域实测径流 Dim R(1 To 366) As Single '流域计算径流
WD(i + 1) = Dm End If End If End If
If PE(i) <= 0 Then '当不产流时 R(i) = 0
W(i + 1) = W(i) + PE(i)
a(i + 1) = WMM * (1 - (1 - W(i + 1) / Wm) ^ (1 / (1 + B))) End If Next i
Else
R(i) = PE(i) + W(i) - Wm
a(i + 1) = WMM
W(i + 1) = Wm
End If
Else
R(i) = 0
W(i + 1) = W(i) + PE(i)
a(i + 1) = WMM * (1 - (1 - W(i + 1) / Wm) ^ (1 / (1 + B)))
EL(i) = (Ep(i) - EU(i)) * C ED(i) = 0
ElseIf WL(i) < C * (Ep(i) - EU(i)) Then EU(i) = WU(i) + P(i) EL(i) = WL(i)