APP下载

基于.NET的智能蔬菜病虫害诊断与防治专家系统构建

2013-10-10王久兴刘介丹陈秀敏

河北科技师范学院学报 2013年2期
关键词:控件农资病虫害

王久兴,刘介丹,陈秀敏

(河北科技师范学院,河北 秦皇岛,066600)

农业专家系统是运用人工智能技术,汇集农业知识和专家经验,采用适宜的知识表示技术和推理策略,为生产及管理者提供咨询服务的计算机软件,已在现在农业生产上得到了广泛的应用,对推动农业发展发挥了重要作用[1~3]。蔬菜生产关系到国计民生,正确诊断与防治病虫害对提高种植效益,获得无公害产品尤为重要。为此,笔者曾研制了蔬菜病虫害辅助诊断与防治系统[4]。而智能蔬菜病虫害诊断与防治专家系统则是在此基础上,依托生产实践经验、植保知识和相关科研成果,构建知识库,通过优化结构设计和友好的人机界面,帮助用户对蔬菜病虫害做出正确诊断,并提供相应的防治方法。

1 开发工具及环境

智能蔬菜病虫害诊断与防治专家系统采用C#语言、在.NET3.5环境下开发,系窗体应用程序,采用C/S架构,数据库可以是Access,Sql Server,Oracle其中的任一种,数据库连接组件采用ADO.NET中的OLEDB数据提供程序。之所以采用窗体应用程序,是因为数据库中有大量的图片信息,需要有较高的采集效率和较快的显示响应速度。

2 智能蔬菜病虫害诊断与防治专家系统的结构设计

2.1 智能蔬菜病虫害诊断与防治专家系统的设计思想

专家系统需要有大量数据的支撑,因此决定了此应用程序是以数据为中心的系统。本系统采用分层的组件设计思想,分为DB层、DTO层、BL层和UI层,同时有一个Utils自定义工具组件。每一层都是一个单独的程序集组件,与其它层可最大程度地分离,同时通过对此层所对应的程序集的引用来调用此层中的功能,每一层都是一个单独的类库。其中,DB层为数据访问层,完成对数据库的直接数据操纵,采用的系统类库是OLEDB数据提供程序,位于System.Data.OleDb命名空间,可以连接和操纵Access,Sql Server,Oracle等多种数据库,最大程度地满足用户对于数据库的扩展性要求。DTO层为数据传输对象层,与数据库的各个表结构相对应,用来获取表结构如字段和关系的信息,同时派生出BL层。BL层是业务逻辑层,用来处理系统所需的基础数据,调用DB层的数据访问功能,从而实现各个数据表对应的数据的业务逻辑的执行,供用户界面层直接调用,实现用户界面层与业务逻辑层的分离,从而便于维护、扩展以及分布式部署。UI层为用户界面层,与用户交互,采用窗体形式,其后的控件的事件过程代码调用BL层的功能。Utils层为工具层,为公共的函数库,完成从数据库中读取图片、向数据库中存储图片以及读取、设置数据库的连接字符串、密码的加密传输等公共的操作。

2.2 智能蔬菜病虫害诊断与防治专家系统的基本结构

系统分为智能诊断、浏览查询、推荐农资、数据管理4个主模块。其中数据管理是基础模块,为系统提供基础数据的组织、录入、管理、存储,其余3个模块是应用模块。数据管理模块又分为蔬菜信息管理、病虫害信息管理、农资信息管理、蔬菜病虫害管理、特征图片管理、治疗方案管理、角色管理、用户管理8个模块(图1)。

图1 智能蔬菜病虫害诊断与防治专家系统结构

2.3 智能蔬菜病虫害诊断与防治专家系统的数据访问

采用ADO.NET中的OLEDB数据提供程序访问数据库。当UI层以数据网格形式操纵数据时,采用的是无连接的适配器访问模式,即使用数据适配器DataAdapter对象直接填充到数据集之中,然后将DataGrid数据绑定到此数据集的一个数据表之上,从而完成数据的显示工作。对于此数据源的添加、删除、修改等更新操作,由数据适配器自动记录,然后由程序调用DataAdapter的update方法把数据的更新操作回写到数据库之中。其中用到的主要对象有OleDbConnection,OleDbCommand,OleDbDataAdapter,DataSet,OleDbCommandBuilder。当UI层操作数据显示功能时,采用有连接的形式,主要使用OleDb-Connction,OleDbCommand,OleDbDataReader等3 个对象完成。

3 智能蔬菜病虫害诊断与防治专家系统的核心功能模块及其功能

3.1 智能蔬菜病虫害诊断与防治专家系统的智能诊断模块

智能诊断模块按照种类对蔬菜信息分类,用树形图和常用按钮项进行组织,其中常用按钮项动态配置,满足不同用户个性需求。当用户点击某蔬菜结点或按钮时,特征图片区就会显示此蔬菜对应的所有特征症状图片,每张图片配有简短文字说明,对图片可进行缩放操作。用户通过比对,对特征图片进行勾选。系统根据在数据管理模块中录入的基础数据进行计算和判断,从而推导出病虫害名称。用户继续点击相应的“详细信息”按钮查看该病虫害的所有症状图片、文本以及治疗方案。

3.2 智能蔬菜病虫害诊断与防治专家系统的浏览查询模块

在浏览查询模块中,按照蔬菜及病虫害的分类,浏览和查询各种蔬菜病虫害的图片和文字内容。分3级显示,第1级为病虫害种类,分为侵染性病害、生理性病害、虫害3类,第2级为蔬菜种类,分为瓜类、茄果类、豆类、白菜类、甘蓝类、葱蒜类、根菜类、薯芋类等12类,第3级为具体的蔬菜病虫害。

每种蔬菜的侵染性病害数据内容分图片和文字两部分,图片内容包括不同发病时期(前期、中期、后期)和不同发病部位(根、茎、花、叶、果)的发病症状图片和对应的病原形态学显微照片,文本内容为该病害的英文名称、别名、症状描述、病原、发病规律、防治方法等详细信息。

每种蔬菜生理性病害的图片内容包括不同发病时期(前期、中期、后期)和不同发病部位(根、茎、花、叶、果)的发病症状图片,文本内容为该病害的英文名称、别名、症状描述、发病原因、防治方法等详细信息。

每种蔬菜虫害的图片内容包括蔬菜不同部位(根、茎、花、叶、果)的受害症状以及害虫不同虫态(卵、幼虫、蛹、成虫)的形态图片,文本内容为该害虫的英文名称、别名、拉丁文学名、分类、为害特点、形态特征、生活习性、发生规律、防治方法等详细信息。

在浏览查询界面,蔬菜病虫害的显示分为详细树形图列表和常用蔬菜病虫害按钮两种形式,且常用按钮是可以动态配置的。对所有图片可以进行放大、缩小、全屏显示、移动等操作,便于用户观察症状细节。可以通过点击按钮,查看此病虫害的文本,并可打印文本,可以浏览推荐农药。可以按照蔬菜病虫害的名字检索相应的信息。

3.3 智能蔬菜病虫害诊断与防治专家系统的农资模块

农资层次信息同样以树形图的形式组织,当点击每个结点时,其所下辖的具体农资便会显示在数据网格中,同时与此种农资相关的治疗方案也会呈现出来。点击每一种农资,即可查看相应的图片和文本介绍。

3.4 智能蔬菜病虫害诊断与防治专家系统的数据管理模块

数据管理模块分8个子模块(图2)。

蔬菜信息管理模块,下辖蔬菜类别、具体蔬菜信息的添加、删除、修改等操作。

病虫害信息管理模块,下辖病虫害类别、具体病虫害信息的添加、删除、修改等操作。

农资信息管理模块,完成农资层次树的建立、修改、删除操作,实现农资层次的无限扩展,适合于任一形式的层次存储结构,完成对农资的添加、删除、修改等操作,同时存取此农资对应的图片和文本数据信息。农资的层次关系是一个树形的多级不递归且层次确定的数据结构,层次下面有若干子层,子层下面又再分为若干次一级子层,从而便于程序的扩展性,当删除某一层时,下面的所有子层(包括直接子层和间接子层)也会被递归删除。这样的结构是建立在数据库某个表结构中的,对于每一条记录,有ID,Name,ParentID几个关键字段,ID是自动递增数字,也是主键,Name是农资的名称,ParentID是其直接父级ID号,即此表的ID既是主键也是外键,当某一条记录是最高层时,其ParentID设为-1。

蔬菜病虫害模块,由蔬菜和病虫害信息依照“多对多”的关系组合而成,抽取各自的主键,形成蔬菜病虫害信息表,完成对其添加、删除、修改等的操作。同时,与此具体蔬菜病虫害相关联的图片数据和文本数据被录入到数据库中,实现对图片数据和文本数据的添加、删除、修改等的操作。其中,图片输入的基本流程为,将图片从文件流中读到字节数组中,然后将字节数组中的数据再读到数据库中,因此要为文件建立1个文件流,用文件流的Read()方法将该文件的数据读入本地的字节数组之中。

特征图片管理模块,主要完成特征图片的设置。管理由发病部位如叶、花、果、茎、根以及虫态如卵、幼虫、蛹、成虫等构成的特征类,实现对这些特征类的添加、删除、修改等操作。并对图片信息进行分类,对特征类所下辖的图片信息实现添加、删除、修改等的操作。只记录图片的主键信息,不重复存取图片数据。

治疗方案管理模块,设置已录入农资与蔬菜病虫害的对应关系,农药和蔬菜病害之间是“多对多”关系,并实现对治疗方案的添加、删除、修改等操作。

角色管理模块,将特定的角色与一组特定的权限相关联,当某个用户从属于某个角色时,即拥有与该角色相对应的权限。本系统充分使用了.NET之中的反射机制,权限控制严格、分配细致,能够通过设置将角色所对应的权限细致到每一个按钮或每一个菜单项,从而随意控制用户使用某个特定控件的权利,而该控件的事件过程就执行了程序中的一定的逻辑,对控件的使用权就意味着是否有执行程序中某一个功能模块的权利,从而达到控制权限的目的。所使用的数据库的表有Users,Roles,Priveleges,Functions,用户登录后,查询它所属的角色号,由角色号查询Privelegs表,从而得到能够控制的功能号(funID),由funID号确定此逻辑功能是由系统中的哪些控件的事件处理程序来实现的,然后把控件的名字和所属窗体名字保存到一个全局的集合之中,每当窗体加载时,根据集合中保存的控件的信息来决定此窗体中的各控件是否可用。

用户管理模块,执行添加、删除、修改用户的功能。执行用户注销功能,使当前用户退出,重新回到数据管理的登录窗口。

图2 智能蔬菜病虫害诊断与防治专家系统的数据管理界面

4 结论与讨论

农业专家系统的最终使用效果,主要取决于如何解决计算机技术与农业知识的结合问题[5,6]。本系统大量采集田间实拍照片,总结实践经验,整合科研成果,并根据蔬菜病虫害的发病特点和规律,构建了大型知识库,通过独特的特征图片比对等技术,实现了对蔬菜病虫害的浏览、查询、诊断、防治等多种功能。目前,该系统已在全国30多个省、市、自治区得到应用。

由于本系统是以图片库为支持的,要求瞬间从数据库中读取几十乃至几百张图片,需要解决占用大量内存的问题,虽然采用了一定的方法,但仍无完美的解决方案。另外,对于图像的模拟识别及其与植物样本匹配等智能性问题,还有待进一步研究[7,8]。

[1]李朝东,崔国贤,盛畅,等.农业专家系统的发展概况与展望[J].农业网络信息,2009(2):4-7,12.

[2]王霓,张艳荣,迟雨佳.东北地区速生丰产林病虫害专家系统的设计与实现[J].北京林业大学学报,2009,31(增刊2):27-30.

[3]陈步英,胡利平.棉花病虫害专家系统的构建[J].农机化研究,2010(11),146-149.

[4]贺桂欣,王久兴,李卓,等.蔬菜病虫害辅助诊断与防治系统VPS的构建[J].河北科技师范学院学报,2005,19(3):57-58.

[5]高天琦,金宝石.基于WEB的大豆病虫害专家系统构建[J].黑龙江八一农垦大学学报,2009,21(5):65-68.

[6]刘任,刘杰,黄建民,等.基于Web的植物病虫害专家系统的设计与应用[J].天津农业科学,2012,18(3):95-98.

[7]孙敏,姚海燕.园艺植物专家系统研究概况与发展趋势[J].安徽农业科学,2012,40(2):1 213-1 216.

[8]张葳,杨春雨.基于ASP.NET的玉米病虫害专家系统研究[J].黑龙江科技信息,2012(3):68.

猜你喜欢

控件农资病虫害
春季葡萄苗病虫害咋样防治
夏季玉米主要病虫害有哪些
三招搞定花卉病虫害
送农资增收致富添助力
关于.net控件数组的探讨
农资人,你是否看见鱼在流泪?
一个幸福的农资人
参加农资展会,细节绝不能丢
ASP.NET服务器端验证控件的使用
基于嵌入式MINIGUI控件子类化技术的深入研究与应用