一种自描述的算法参数表达与生成方法与流程

文档序号:24049064发布日期:2021-02-23 20:13阅读:119来源:国知局
一种自描述的算法参数表达与生成方法与流程

[0001]
本发明涉及地理信息系统与遥感领域的算法自描述规则与对话框自动生成的方法,具体地说,涉及在地理信息系统、测绘及遥感应用领域中,对多种非用户交互的算法进行自描述规则生成,并在解析这些规则的基础上自动生成算法对话框的方法,本发明可适用于针对较大或较复杂的地理信息系统与遥感方面的算法应用与快速集成。


背景技术:

[0002]
在进行地理信息系统或遥感领域应用中,很多时候需要实现gis或遥感软件系统/平台实现对多种算法的系统集成,以方便后续的应用。在进行gis与遥感算法集成时,常规的方法是由算法实现者实现对算法内部流程的实现过程,并将该算法在一定规范下集成到系统/平台中。在此过程中,由于需要算法实现者各自对自己的算法界面进行设计,难免出现不同算法之间风格不匹配的情况,导致用户交互不友好。另外,由于大多数情况下算法实现者只针对算法的精度、效率进行改进,而对用户交互界面并不熟悉,导致需要多人配合起来实现,这也给算法的实现过程及算法的集成带来了麻烦。因此需要实现一种算法的自描述机制,通过该机制一方面能够将算法实现者从界面编制中解脱出来,省下大量的界面编制与调整时间,另一方面还能够确保通过自描述机制而自动生成的算法界面风格的一致性。
[0003]
在针对可集成到软件/平台中的算法的自描述方法/机制方面,国内外相关的文献很少,包括:刘苏祺,白光伟,沈航.基于用户自描述标签的层次分类体系构建方法.计算机科学.201643(7):224-230;孙毅,裘杭萍,王沁雪.网络用户自描述标签向量生成及标签层次体系构建方法.信息技术与网络安全.2018.37(11):44-49;ming zhang;jing zhang;wei zheng;feiran hu;ge zhuang.a self-description data framework for tokamak control system design.fusion engineering and design.2015 03:1033-1037;ali mortazavi.interactive fuzzy search algorithm:a new self-adaptive hybrid optimization algorithm.engineering applications of artificial intelligence.2019(81):270-282.等。
[0004]
在针对算法的自描述方法方面,目前可查到的专利并不多,检索结果中共有35项,其中与本发明稍有相关的仅有3项,如:厦门南讯软件科技有限公司陈碧勇等的专利“一种基于json自描述结构的网页界面生成方法及装置”(公开号:cn108664245a),该专利是针对网页界面实现的,与采用c++实现软件/平台的方法并不一样;山东鲁能智能技术有限公司陈杰等的专利“基于数据库的自描述数据模型结构”是针对数据库方面的自描述方法,与本文中的软件/平台方法也不相同;北京科泰世纪科技有限公司陈榕等的专利“构件自描述封装方法及运行的方法”(公开号:cn1514361)则是针对硬件中的构件进行的自描述方法,与本文的发明也几乎无关。


技术实现要素:

[0005]
本发明的目的是提供一种自描述的算法参数表达与生成方法,特别是针对gis/遥感软件系统/平台需要集成较多的算法时,采用此发明中的自描述方法/机制实现的算法可以快速、方便地集成到系统/平台中,且得到风格相对统一的效果,本发明则主要是针对此类算法快速集成的问题进行解决。
[0006]
本发明的思路为:首先制定算法的自描述机制规则,各算法再按此规则进行各自算法的功能接口实现。对应的接口功能完成后,各算法再采用xml的方式进行gis/遥感软件系统/平台的注册,注册后对应的gis/遥感软件系统/平台就能够在对应的算法工具箱内找到已经注册的算法,在用户双击激活对应的算法后,算法将能够根据对应的3个必须重载的接口进行自描述,并在算法激活后自动生成与算法相对应的用户交互界面与算法参数对话框。本发明中采用算法自描述的机制/规则实现算法的快速集成的最大优点是能够实现多种算法的参数自描述与用户交互界面上的参数自动生成,不但省去大量的人工交互界面制定过程/时间,还同时保证了生成界面风格的一致性。本发明要求算法采用本专利中的自描述机制/规则进行,所有算法的界面生成过程均在内存中快速进行,能够保证算法在用户交互方面的效率。
[0007]
本发明的技术方案提供了一种自描述的算法参数表达与生成方法,其特征在于包括以下的实施步骤:
[0008]
1),算法采用c导出接口的动态链接库的方式对外服务,同时额外导出3个自描述接口,分别描述接口参数说明,接口帮助信息与接口关于信息;
[0009]
2),对于算法本身导出的功能接口,要求其所有参数均采用字符型进行表达,且函数的返回类型也同样为字符型,如果需要其他类型的参数可以由字符型参数进行转换;
[0010]
3),对于算法必须导出的3个自描述接口,其中1个为算法的所有参数的说明性文字,该函数返回由特定字符相间隔的所有参数说明性文字的字符串,另外2个自描述接口分别返回算法的帮助信息字符串与关于信息字符串;
[0011]
4),算法对话框的自动过程中,需要首先判断当前算法是否已经重载了上述3个接口,如果未有效重载此3个接口,则该算法动态库不是有效的自描述算法动态库,返回;如果已经重载则转向步骤5;
[0012]
5),对算法的自描述性参数说明性文字的大字符串进行解析,根据所设定的字符间隔,将该自描述字符串分解成为多个字符串,这里字符串的个数就对应着算法参数的个数,而每一个字符串则对应着该字符串的说明性文字,算法加载时再根据这些说明性文字自动生成算法对话框。
[0013]
上述实施步骤的特征在于:
[0014]
步骤1)中需要算法采用c兼容的方式(extern“c”)导出接口,这样在算法集成后,gis软件系统/平台就可以采用c接口兼容的方式调用相应的接口,这种方式最大的好处就是可以有效避免不同c++版本在编译方面的不同,避免不同版本(如visual studio.net)生成的动态库之间的不兼容。同时,需要算法额外导出3个c接口,即接口getfuncparamsdesp(),接口getfuncaboutdesp(),与接口getfunchelpdesp()。其中,接口getfuncparamsdesp的主要作用是返回用于自描述的参数,返回一个字符串,通过分析该字符串能够获得用于自动生成对话框的算法参数,接口getfuncaboutdesp的作用是返回算法
的关于信息,接口getfunchelpdesp的作用是返回算法的帮助信息。
[0015]
步骤2)则是要求算法本身及3个重载接口的所有参数及返回类型均为字符型,即对应于c语言的char*或const char*类型,采用这种方式定义的最大好处就是能够向下兼容所有的参数数据类型,构造并形成本发明中算法自描述的基本定义模型,同时能够兼容c的导出函数类型,并且通过简单的数据类型转换能够快速转换回算法实现者希望采用的数据类型。
[0016]
步骤3)是对步骤1)中的3个需要导出(重载)的函数的解释说明,其中,函数getfuncparamsdesp用于返回自动生成算法对话框的所有参数的字符串,通过解析此字符串能够得到参数的个数及各参数的说明性文字,为本发明中算法自描述的主要函数。
[0017]
步骤4)是系统平台在自动生成算法对话框之前,需要分析本发明中的算法通过该接口返回的自描述字符串,如果没有重载对应的接口或没有返回正确的字符串,则返回失败信息,无法自动生成对应的算法对话框。
[0018]
步骤5)是算法对接口getfuncparamsdesp返回的自描述性参数说明性字符串进行解析,通过设定的字符间隔将该自描述字符串分解成为多个字符串,并根据分析出的多个小字符串生成对应的算法对话框并指示对话框上所需要用户交互的参数说明性文字。
[0019]
本发明与现有技术相比具有如下特点:本发明通过制定算法的自描述规则,能够一方面对算法中所参数进行抽象,形成统一的算法自描述机制/规范,使算法实现者从大量界面控制调节中解脱出来,形成风格一致的算法输入对话框,大大提高了算法对话框的生成与集成效率并保证了风格的一致性。
附图说明
[0020]
图1是本发明的主要实现方法流程示意图
[0021]
图2是根据自描述接口自动生成的算法用户交互对话框界面图
[0022]
图3是自描述文字同生成的界面之间的对应关系图
[0023]
图4是算法对话框上的“关于”版权信息
[0024]
图5是算法的批处理时的用户交互界面(采用网格控件进行批量输入)
具体实施方式
[0025]
图1示意了本发明的主要实现思路。图1分左右2部分分别示意了算法实现者实现算法自描述的方法与系统/平台实现算法自动集成与调用的思路。其中对于算法实现者来说,需要算法实现者对算法的主接口进行定义,定义的规则为所有算法的参数均采用c兼容的字符串类型,即定义为char*或const char*类型,同时定义该主功能接口的返回类型也同样为字符类型,即char*类型。
[0026]
以计算遥感影像的植被指数算法为例,基于遥感影像对归一化植被指数进行计算的定义为:
[0027][0028]
其中nir表示遥感影像的近红外波段,r表示遥感影像的红波段,ndvi为计算后得到的归一化植被指数。
[0029]
根据上面公式,可以定义该函数的最基本原型为:
[0030][0031]
上述接口定义中,算法的输入参数有2个,分别为输入的原始遥感影像文件名与输出的ndvi计算结果文件名,返回的类型为bool类型,指示该算法调用后数据计算结果的正确与否。
[0032]
进一步地,对上述函数定义的基本原型进行扩展,使其符合大多数情况下的ndvi计算,对应的扩展原型为:
[0033][0034]
上述接口定义对前面基本原型进行了扩展,增加了3个参数,其中参数nbandnir与参数nbandr要求用户分别输入影像中的近红外波段与红波段分别对应于输入遥感影像的波段数,以便于采用正确的波段按前文公式进行计算;参数pszreturndatatype则是指示返回数据类型,比如可以为“float”,可以为“double”,也可以为“byte”等,这个参数将会影响输出ndvi计算结果影像pszoutputfile的数据类型。
[0035]
针对上述ndvi计算的扩展原型,根据步骤1)中的要求,将其函数原型更改为:
[0036][0037]
仔细观察新的ndvi计算接口,该函数声明是以c兼容导出的方式进行声明的,同上述扩展原型最大的不同就是函数返回类型由原来的bool型变成了char*类型,同时将原来所有参数的类型均变成了const char*类型,而算法实现者需要在算法内部自己实现由const char*数据类型向自己所希望的数据类型进行转换。
[0038]
也就是说,对于原扩展类型,对应的ndvi计算的接口实现伪代码类似如下:
[0039][0040]
由于更改了数据类型,因此需要对上述代码进行适当地修改,修改如下:
[0041][0042]
比较上述代码同原代码,可以看出最大的修改主要在于数据类型的修改,将新的char*类型的参数变化原来算法中希望的数据类型(int),同时,返回的数据类型也返回成char*数据类型“true”,而非原来的布尔型true,其他代码的主体部分并无大变化。
[0043]
在完成ndvi计算的主接口ndvicompute之后,我们需要根据本专利的要求对其他3个接口进行重载,首先我们对这3个函数的声明原型进行定义如下:
[0044][0045][0046]
可以看到,这3个函数同样是以c兼容的方式进行接口导出的,对应的参数均只有一个,即接口名称所对应的字符串。首先最重要的就是参数自描述接口getfuncparamsdesp,其对应的代码为:
[0047][0048]
这一段代码非常重要,是本专利实现算法自描述的核心。
[0049]
函数接口getfuncparamsdesp返回了对应于接口ndvicompute的自描述性文字,即代码中的文字,中间以英文的逗号字符作为间隔。以引间隔字符可以前前文的大字符串分隔为5个小字符串,且每个字符串中均有算法中的保留字(以英文的括号开始与结束),如其中的“(file)”是指此处为文件输入框,其底层实现实际上对应着一个下拉框与后面的文件浏览按钮控件,“(out)”是指此文件作为算法的输出,后续可能需要进行输出文件的加载询问等,“(edit)”是指一个输入框控件,冒号后面的为该输入框控件中的默认字符,“(combobox)”为下拉框控件,冒号后面的为其下拉数据选项,其中第一项为默认。
[0050]
同样另外2个导出接口非常简单,分别返回2个对应的html文件即可,代码如下:
[0051][0052]
完成上述自描述算法的导出接口之后,就可以在系统/平台中进行算法注册,注册的过程非常简单,就是在对应的xml文件中增加对算法的文件夹、动态库、以及接口描述就可以了,类似如下:
[0053][0054]
在系统中注册了该算法之后,当对该算法激活时,会得到如图2所示的算法对话框,而图2所示的算法对话框是完全由系统/平台自动生成的,比较我们上述代码与图2就可以得到:图2中示意的对话框中的参数个数同自描述函数getfuncparamsdesp获得的字符串所分离出的子字符串个数相等,且各参数的说明也来源于这些子字符串,二者的对应关系如图3所示。
[0055]
在由上述自描述函数getfuncparamsdesp的字符串向图2所示的算法对话框生成过程中,还有一系列关键保留字,以英文的括号开始与结束,这些保留字的定义如下:
[0056]
1.(file)代表了文件输入/选择的下拉框(ccombobox)及后面的文件选择按钮(cbutton),将会在此处自动生成对应的文件下拉框与后面的文件选择按钮,反应到用户算法中的参数是一个字符串,指示当前下拉框中的内容(即文件);
[0057]
2.(dir)代表了文件夹输入框(cedit)及后面的文件选择按钮(cbutton),将会在此处自动生成对应的输入框与后面的文件夹选择按钮(点击后会选择计算机上的文件夹),反应到用户算法中的参数是一个字符串,指示当前下拉框中的内容(即文件夹);
[0058]
3.(edit:300)代表了数据/字符串的输入框(cedit),将会在此处自动生成一个输入框,其中允许用户指定该输入框的默认值,如本句中的输入框中默认为“300”,又如,(edit:200;500)是指对应的输入框中默认的值为“200;500”,反应到用户算法中的参数是一个字符串,指示当前输入框中的内容(如果用户不更改,算法参数即为“300”);
[0059]
4.(checkbox)代表了复选框(cbutton),将会在此处自动生成一个复选框,反应到用户算法中的参数是一个字符串,指示当前复选框是否选中:当选中时,返回字符串“1”,否则返回“0”;
[0060]
5.(filelist)代表了文件的列表框(clistbox)及其后面的文件选择、文件顺序调整及文件删除按钮(cbutton),将会在此处自动生成对应的文件列表框及文件顺序调整、删除等按钮,反应到用户算法中的参数是一个字符串,指示当前列表框中的内容(即所有文件,各文件之间采用英文的分号作为间隔);
[0061]
6.(combobox)代表了数据下拉框(ccombobox),由于下拉框中的数据需要事先给定其值,或事先告诉其值的来源,因此实际上此保留值的应用方法有3种:第1种是在这里事先定义好所有的下拉值并以分号作为间隔,如“(combobox:geotiff;erdas image;envi file;bitmap file;jpeg file;png file)”将自动生成一个下拉框,其中的第1项值为“geotiff”,第2项值为“erdas image”,依次类推,反应到用户算法中的参数是一个字符串,指示当前下拉框中选定的内容的字符;第2种则是指定该下拉框中的值来源于某一输入矢量文件的字段,如“(combobox:field_from_input1)”其中的“field_from_input”为保留字符串,说明该下拉框控件的数据来源于第1个输入(cedit或ccombobox)所对应文件的字段,当第1个输入更改后,会自动更改本下拉框中的值,反应到用户算法中的参数是一个字符串,指示当前下拉框中的选定的内容(字段)字符串;第3种则是指定该下拉框中的值来源于某一输入影像文件的波段,如“(combobox:band_from_input2)”其中的“band_from_input”为保留字符串,说明该下拉框控件的数据来源于第2个输入(cedit或ccombobox)所对应文件的波段,当第2个输入更改后,会自动更改本下拉框中的值,反应到用户算法中的参数是一个字符串,指示当前下拉框中的选定的内容(波段)字符串。此项工作还可以根据实际需求进行进一步扩展。
[0062]
7.(listbox)代表了数据列表框(clistbox),该项的各种规定同上面的第6点比较相似:由于列表框中的数据需要事先给定其值,或事先告诉其值的来源,因此实际上此保留值的应用方法有3种:第1种是在这里事先定义好所有的下拉值并以分号作为间隔,如“(listbox:geotiff;erdas image;envi file;bitmap file;jpeg file;png file)”将自动生成一个列表框,其中的第1项值为“geotiff”,第2项值为“erdas image”,依次类推,反应到用户算法中的参数是一个字符串,指示当前列表框中选定的内容的字符,字符之间采用英文的分号连接;第2种则是指定该下拉框中的值来源于某一输入矢量文件的字段,如“(listbox:field_from_input3)”其中的“field_from_input”为保留字符串,说明该下拉框控件的数据来源于第3个输入(cedit或ccombobox)所对应文件的字段,当第3个输入更改后,会自动更改本列表框中的值,反应到用户算法中的参数是一个字符串,指示当前下拉框中的选定的内容(字段)字符串(如果选择多项,以英文的分号作为间隔);第3种则是指定该列表框中的值来源于某一输入影像文件的波段,如“(listbox:band_from_input4)”其中的“band_from_input”为保留字符串,说明该列表框控件的数据来源于第4个输入(cedit或
ccombobox)所对应文件的波段,当第4个输入更改后,会自动更改本列表框中的值,反应到用户算法中的参数是一个字符串,指示当前下拉框中的选定的内容(波段)字符串(如果选择多项,以英文的分号作为间隔)。
[0063]
8.(out)代表了此项为算法的输出,在算法完成后,可能需要弹出对话框询问用户是否需要加载新生成的文件,这些新生成的文件就是标有(out)的选项的输入框或下拉框中的数据。
[0064]
图2中右侧窗口的算法帮助信息则是来源与另一个函数getfunchelpdesp,其返回的为一个html文件,则在图2右侧自动解析该html文件(即前文代码中的mhndvicompute_help.htm)并显示在该窗口中。同样地,当用户按下图2中的关于按钮后,则会弹出如图4所示的关于对话框,该对话框内的信息来源于另一个html文件,即前文中的mhndvicompute_about.htm文件。
[0065]
最后,在gis系统/软件/平台完成上述自描述算法的集成之后,就可以在系统/平台中查看到算法信息,当对算法进行激活之后,就会弹出如本发明的附图2、附图5所示的算法用户交互对话框,用户将信息填写完毕并提交后,再算法系统/软件/平台负责对主体算法接口进行调用(如前文中示例中的ndvicompute接口),并在算法完成后询问是否需要加载新生成的文件。
[0066]
本发明的实例在pc平台上实现,经实验证明,本发明能够较常规的算法对话框用户实现与集成方式有较大方面的效率改进,能够满足所有带有一定参数实现空间数据某种计算方式的算法的自描述与快速集成,且采用统一的界面实现方式。本发明中所提及方法可广泛应用于多种系统、软件、平台等的算法自动描述、界面自动生成与集成等应用中。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1