一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种HEC-HMS模型输入文件的图表示与编辑方法及其终端设备

2022-11-30 15:11:40 来源:中国专利 TAG:

一种hec-hms模型输入文件的图表示与编辑方法及其终端设备
技术领域
1.本发明涉及分布式水文模型的输入信息存取技术领域,特别是一种hec-hms模型输入文件的图表示与编辑方法及其终端设备。


背景技术:

2.hec-hms模型运行的所有信息都存储在其输入文件中当,这些文件包括后缀为“.basin”、“.control”、“.run”、“.gage”、“.hms”的文件。当利用hec-hms模型进行模型率定(通过不断试错来寻找合适模型参数过程)或水文模拟和预报时,都需要不断的更新模型的输入文件、执行模型模拟并分析其结果。然而,hec-hms模型作为免费软件却没有相应提供模型输入文件的编辑工具或公开其输入文件编辑应用程序编辑接口。因此,用户如果需要hec-hms模型和其他软件集成(如利用swat-cup软件来实现hec-hms模型的率定)就需要自行实现hec-hms模型输入文件的编辑工具。目前,尽管有部分hec-hms模型和其他软件集成的报道,但却未见hec-hms模型输入文件专有编辑工具实现报道。尽管仍可以利用常用的文本文件编辑工具(如记事本和ultraedit)实现hec-hms模型输入文件编辑,但在需要实现自动化输入文件编辑时则无法利用这些工具实现。此外,这些工具没有考虑hec-hms模型输入文件特殊文件结构,无法实现高效文件内容检索和编辑。
3.hec-hms模型输入文件是分级分块进行组织的。其中,每一块的第一行为“[级别缩进]块类型:[块名称]”组成,每一块的最后一行为“[级别缩进]end块类型:[块名称]”。第一与最后一行间的内容为其所属下一级块集合,为了维扩块之间的包含关系,次级块整休缩进一定字符。当块为单元块时,即块仅仅包含原子信息的时候,其格式为“[级别缩进]块名称:块的值”。除单元块之外,同级别块之间必须存在空行实现块的区隔。现有hec-hms模型输入文件的编辑工具在实现hec-hms模型输入文件内容检索和编辑时,采用逐行对比的形式进行检索和编辑,其时间复杂度为o(n)。
[0004]
另一方面,当用户提供修改文件要求中包含块之间的链接关系时,则无法通过简单的逐行对比实现文件编辑,需要人工参与判断或编写复杂的正则表达式现这种块之间的链接关系。由于缺乏相关的应用程序编程接口,所以无法利用这些工具实现自动化批量的编辑,进而无法与其他软件进行集成应用。


技术实现要素:

[0005]
有鉴于此,本发明的目的在于提供一种hec-hms模型输入文件的图表示与编辑方法及其终端设备,实现模型参数灵活及高效的修改,以及显著提高待修改参数的检索和匹配速度。
[0006]
为实现上述目的,本发明采用如下技术方案:一种hec-hms模型输入文件的图表示与编辑方法,适于在计算设备中执行,包括以下步骤:
[0007]
步骤s10,接收hec-hms模型参数路径及待修改的参数值信息;
[0008]
步骤s20,判断hec-hms模型图网络数据是否已经加载,如果未加载则执行步骤s30,反之执行步骤s40;
[0009]
步骤s30,从hec-hms模型输入文件加载模型参数信息,并依据参数间的关联关系,将输入文件转换为图网络数据结构;
[0010]
步骤s40,依据hec-hms模型参数路径及待修改的参数值信息,对hec-hms模型图网络数据进行修改;
[0011]
步骤s50,将hec-hms模型图网络数据转换为hec-hms模型输入文件格式,存储并替换原模型文件。
[0012]
在一较佳的实施例中,所述步骤s10中hec-hms模型参数路径及待修改的参数值信息的结构由若干个块信息和一个待修改参数信息通过“.”号连接组成;每个块内包括块类型和块名称,块类型和块名称通过“:”连接;块信息还可以由“#”和“*”号构成,“#”和“*”号分别代表一个和任意个匿名块;待修改参数信息由参数名称和参数值通过“:”连接构成。
[0013]
在一较佳的实施例中,所述步骤s30包括:
[0014]
步骤s3-1,为模型输入文件创建一个根节点,并以行为单位将文件内容读入到字符串列表中,并以根节点和字符串列表为参数调用步骤s3-2至步骤s3-11定义的递归函数;
[0015]
步骤s3-2,递归函数接收一个节点和字符串列表,初如化行标识为0;
[0016]
步骤s3-3,判断行标识是否小于字符串列表元素个数,若是则执行步骤s3-4,反之结束流程;
[0017]
步骤s3-4,判断当前行标识所指行是否为空,若是则执行步骤s3-5,反之则执行步骤s3-6;
[0018]
步骤s3-5,创建一个空节点,添加到递归函数接收节点的子节点列表中,同时将行标识增加1,并跳转执行步骤s3-3;
[0019]
步骤s3-6,计算下一参数块包含的行数;
[0020]
步骤s3-7,判断参数块内容是否包含两行以上,若是则依序执行步骤s3-8和步骤s3-9,反之执行步骤s3-10;
[0021]
步骤s3-8,创建多行块节点,添加到递归函数接收节点的子节点列表中;
[0022]
步骤s3-9,构建一个新字符串列表,其内究为去除首尾行之外的块内容,并以步骤s3-8中创建的多行块节点和新构字符串表表为参数调用步骤s3-2,完成递归调用后执行步骤s3-11;
[0023]
步骤s3-10,构建单行块结点,添加到递归函数接收节点的子节点列表中,随后执行步骤s3-11;
[0024]
步骤s3-11,更新行标识为当前行标识值和步骤s3-6所计算的块行数的和,跳转执行步骤s3-3。
[0025]
在一较佳的实施例中,所述步骤s40包括:
[0026]
步骤s4-1,以待修改参数的路径信息及hec-hms模型图网络的根结点作为参数调用步骤s4-2至步骤s4-13定义递归函数;
[0027]
步骤s4-2,递归函数接收修改参数的路径信息及图网络结点;
[0028]
步骤s4-3,以“.”为分隔符,将修改参数的路径分成多个单元;
[0029]
步骤s4-4,判断修改参数的路径划分单元个数,若只有一个单元则执行步骤s4-5,
反之执行步骤s4-8;
[0030]
步骤s4-5,以“:”为分隔符,对修改参数的路径第一个单元进行进一步分解;
[0031]
步骤s4-6,判断分解第一部分是否与接收节点的p1值相等,若不相等则结束流程,反之执行步骤s4-7;
[0032]
步骤s4-7,将节点的p2值设置为分解后第二部分内容,并结束流程;
[0033]
步骤s4-8,对比第一个单元的值,若第一单元的值与“*”相同则执行步骤s4-9,若第一单元的值与“#”相同则执行步骤s4-10,其余情况则执行步骤s4-11;
[0034]
步骤s4-9,查找当前节点所有直接和间接子节点,并放置临时子节点集合中,随后执行步骤s4-12;
[0035]
步骤s4-10,查找当前节点所有直接子节点,并放置临时子节点集合中,随后执行步骤s4-12;
[0036]
步骤s4-11,查找当前节点所有直接子节点中与第一个单元值匹配的子节点,并放置临时子节点集合中,随后执行步骤s4-12;
[0037]
步骤s4-12,将修改参数的路径信息设置为去除第一部分内容后的路径;
[0038]
步骤s4-13,对临时子节点集合中的元素进行遍历,以更新后的参数路径和当前元素为参数调用递归函数,完成调用后结束流程。
[0039]
在一较佳的实施例中,所述步骤s50包括:
[0040]
步骤s5-1,创建一个字符串列表,以该列表及hec-hms模型图网络的根结点作为参数调用步骤s5-2至步骤s5-10定义递归函数;
[0041]
步骤s5-2,递归函数接收字符串列表及图网络结点;
[0042]
步骤s5-3,判断图网络节点的p1变量是否为空,若为空则执行步骤s5-4,反之则执行步骤s5-5;
[0043]
步骤s5-4,为字符串列表添加一个元素,该元素为一个内容为空的字符串,随后执行步骤s5-6;
[0044]
步骤s5-5,为字符串列表添加一个元素,该元素的内容为p1值加“:”加p2值,随后执行步骤s5-6;
[0045]
步骤s5-6,判断图网络节点直接子节点个数是否大于零,或是则执行步骤s5-7,反之执行步骤s5-8;
[0046]
步骤s5-7,对当前节点的所有直接子节点进行遍历,第次遍历时以该子节点和字符串列表为参数调用递归函数;
[0047]
步骤s5-8,判断当前节点的p3值是否为空,若不为空则执行步骤s5-9,反之执行步骤s10;
[0048]
步骤s5-9,为字符串列表添加一个元素,该元素的内容为p3值加“:”加p4值,随后执行步骤s5-10;
[0049]
步骤s5-10,按照顺序依次将字符串列表元素写入到hec-hms模型的输入文件。
[0050]
本发明还提供了一种hec-hms模型输入文件的图表示与编辑终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如所述的一种hec-hms模型输入文件的图表示与编辑方法的步骤。
[0051]
本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如所述的一种hec-hms模型输入文件的图表示与编辑方法的步骤。
[0052]
与现有技术相比,本发明具有以下有益效果:
[0053]
在本发明中我们利用图数据结构来存储hec-hms模型输入文件内容及块之间的关联关系,进而利用图数据结构中的路径可快速实现hec-hms模型输入文件内容检索和编辑。在hec-hms模型输入文件内容检索和编辑效率上,利用图遍历算法实现可获得常用的文本文件编辑工具所不具备的优势。例如,当hec-hms模型输入文件内容被概化为二叉树时,其时间复杂度仅为o(logn)。一种hec-hms模型输入文件的图表示与编辑方法,能与其他软件集成,如利用swat-cup软件来实现hec-hms模型的率定,以发挥hec-hms模型的在水文模拟和预报领域的作用。
附图说明
[0054]
图1为本发明优选实施例的hec-hms模型输入文件的图表示与编辑流程示意图;
[0055]
图2为本发明优选实施例的参数修改路径的结构与组成示意图;
[0056]
图3为本发明优选实施例的hec-hms模型文件的图网络表达流程图;
[0057]
图4为本发明优选实施例的图网络节点结构及hec-hms模型样例文件的图网络表达示例图;
[0058]
图5为本发明优选实施例的依托图网络表征的hec-hms模型参数修改流程图;
[0059]
图6为本发明优选实施例的将图网络数据转换为hec-hms模型输入文件示意图。
具体实施方式
[0060]
下面结合附图及实施例对本发明做进一步说明。
[0061]
应该指出,以下详细说明都是例示性的,旨在对本技术提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本技术所属技术领域的普通技术人员通常理解的相同含义。
[0062]
需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本技术的示例性实施方式;如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。
[0063]
如图1所示,本实施例提供了一种hec-hms模型输入文件的图表示与编辑方法及终端设备。
[0064]
一种hec-hms模型输入文件的图表示与编辑方法,适于在计算设备中执行,该方法包括:
[0065]
步骤s10,接收hec-hms模型参数路径及待修改的参数值信息;
[0066]
步骤s20,判断hec-hms模型图网络数据是否已经加载,如果未加载则执行步骤s30,反之执行步骤s40;
[0067]
步骤s30,从hec-hms模型输入文件加载模型参数信息,并依据参数间的关联关系,将输入文件转换为图网络数据结构;
[0068]
步骤s40,依据hec-hms模型参数路径及待修改的参数值信息,对hec-hms模型图网络数据进行修改;
[0069]
步骤s50,将hec-hms模型图网络数据转换为hec-hms模型输入文件格式,存储并替换原模型文件。
[0070]
如图2所示,步骤s10所述hec-hms模型参数路径及待修改的参数值信息的结构由若干个块信息和一个待修改参数信息通过“.”号连接组成;每个块内包括块类型和块名称,块类型和块名称通过“:”连接;块信息还可以由“#”和“*”号构成,“#”和“*”号分别代表一个和任意个匿名块;待修改参数信息由参数名称和参数值通过“:”连接构成。
[0071]
如图3所示,步骤s30,运行步骤包括:
[0072]
步骤s3-1,为模型输入文件创建一个根节点,并以行为单位将文件内容读入到字符串列表中,并以根节点和字符串列表为参数调用步骤s3-2至步骤s3-11定义的递归函数;
[0073]
步骤s3-2,递归函数接收一个节点和字符串列表,初如化行标识为0;
[0074]
步骤s3-3,判断行标识是否小于字符串列表元素个数,若是则执行步骤s3-4,反之结束流程;
[0075]
步骤s3-4,判断当前行标识所指行是否为空,若是则执行步骤s3-5,反之则执行步骤s3-6;
[0076]
步骤s3-5,创建一个空节点,添加到递归函数接收节点的子节点列表中,同时将行标识增加1,并跳转执行步骤s3-3;
[0077]
步骤s3-6,计算下一参数块包含的行数;
[0078]
步骤s3-7,判断参数块内容是否包含两行以上,若是则依序执行步骤s3-8和步骤s3-9,反之执行步骤s3-10;
[0079]
步骤s3-8,创建多行块节点,添加到递归函数接收节点的子节点列表中;
[0080]
步骤s3-9,构建一个新字符串列表,其内究为去除首尾行之外的块内容,并以步骤s3-8中创建的多行块节点和新构字符串表表为参数调用步骤s3-2,完成递归调用后执行步骤s3-11;
[0081]
步骤s3-10,构建单行块结点,添加到递归函数接收节点的子节点列表中,随后执行步骤s3-11;
[0082]
步骤s3-11,更新行标识为当前行标识值和步骤s3-6所计算的块行数的和,跳转执行步骤s3-3。
[0083]
如图4所示,步骤s3-1至步骤s3-11中所述的根节点、空节点、多行块节点及单行块节点结构相同,都包含4个存储参数信息的字符串变量(p1、p2、p3和p4)和一个存储子节点的列表集合(children);当为根节点时,p1的值为“root”,p2值为hec-hms输入文件名,其余变量为空;当为空节点时,所有变量均为空;当为单行节点时,p1值为参数名称,p2值为参数值;当为多行块节点时,p1的值为块的类型,p2值为块的名称,p3为块结束标记,p4也为块的名称或为空。
[0084]
如图5所示,步骤s40,运行步骤包括:
[0085]
步骤s4-1,以待修改参数的路径信息及hec-hms模型图网络的根结点作为参数调用步骤s4-2至步骤s4-13定义递归函数;
[0086]
步骤s4-2,递归函数接收修改参数的路径信息及图网络结点;
[0087]
步骤s4-3,以“.”为分隔符,将修改参数的路径分成多个单元;
[0088]
步骤s4-4,判断修改参数的路径划分单元个数,若只有一个单元则执行步骤s4-5,反之执行步骤s4-8;
[0089]
步骤s4-5,以“:”为分隔符,对修改参数的路径第一个单元进行进一步分解;
[0090]
步骤s4-6,判断分解第一部分是否与接收节点的p1值相等,若不相等则结束流程,反之执行步骤s4-7;
[0091]
步骤s4-7,将节点的p2值设置为分解后第二部分内容,并结束流程;
[0092]
步骤s4-8,对比第一个单元的值,若第一单元的值与“*”相同则执行步骤s4-9,若第一单元的值与“#”相同则执行步骤s4-10,其余情况则执行步骤s4-11;
[0093]
步骤s4-9,查找当前节点所有直接和间接子节点,并放置临时子节点集合中,随后执行步骤s4-12;
[0094]
步骤s4-10,查找当前节点所有直接子节点,并放置临时子节点集合中,随后执行步骤s4-12;
[0095]
步骤s4-11,查找当前节点所有直接子节点中与第一个单元值匹配的子节点,并放置临时子节点集合中,随后执行步骤s4-12;
[0096]
步骤s4-12,将修改参数的路径信息设置为去除第一部分内容后的路径;
[0097]
步骤s4-13,对临时子节点集合中的元素进行遍历,以更新后的参数路径和当前元素为参数调用递归函数,完成调用后结束流程。
[0098]
如图6所示,步骤s50,运行步骤包括:
[0099]
步骤s5-1,创建一个字符串列表,以该列表及hec-hms模型图网络的根结点作为参数调用步骤s5-2至步骤s5-10定义递归函数;
[0100]
步骤s5-2,递归函数接收字符串列表及图网络结点;
[0101]
步骤s5-3,判断图网络节点的p1变量是否为空,若为空则执行步骤s5-4,反之则执行步骤s5-5;
[0102]
步骤s5-4,为字符串列表添加一个元素,该元素为一个内容为空的字符串,随后执行步骤s5-6;
[0103]
步骤s5-5,为字符串列表添加一个元素,该元素的内容为p1值加“:”加p2值,随后执行步骤s5-6;
[0104]
步骤s5-6,判断图网络节点直接子节点个数是否大于零,或是则执行步骤s5-7,反之执行步骤s5-8;
[0105]
步骤s5-7,对当前节点的所有直接子节点进行遍历,第次遍历时以该子节点和字符串列表为参数调用递归函数;
[0106]
步骤s5-8,判断当前节点的p3值是否为空,若不为空则执行步骤s5-9,反之执行s10;
[0107]
步骤s5-9,为字符串列表添加一个元素,该元素的内容为p3值加“:”加p4值,随后执行步骤s5-10;
[0108]
步骤s5-10,按照顺序依次将字符串列表元素写入到hec-hms模型的输入文件。
[0109]
目前除hec-hms模型自带的输入文件编辑功能外,并未见公开报道第三方hec-hms模型输入文件专有编辑方法和装置。此外,一些常用的文档编辑工具如记事本和ultraedit
等也可以一定程度支撑hec-hms模型文件编辑,但本发明所提的一种hec-hms模型输入文件的图表示与编辑方法、存储设备及终端具有hec-hms模型和其他传统编辑工具所不具备的功能和性能优势,包括:
[0110]
hec-hms模型和传统编辑工具都需要人工在其图形界面下操作实现hec-hms模型文件编辑,无法利用这些工具自动化实现hec-hms模型文件编辑,因而无法与模型自动率定工具结合,也无法集成hec-hms模型实现洪水自动模拟和预报;
[0111]
本发明将hec-hms模型输入文件表征成了图网络数据,进行可以利用“模型参数路径”实现模型参数灵活及高效的修改,即不仅可以利用“模型参数路径”实现指定参数准确修改,还可以利用“*”和“#”通配符实现灵活多参数同时修改;
[0112]
借助图网络数据表达,可显著提高待修改参数的检索和匹配速度,例如当hec-hms模型输入文件表征为二叉树时,其时间复杂度仅为o(logn),而传统顺序查找的时间复杂度为o(n)。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献