无人机农田服务信息管理系统设计

无人机农田服务信息管理系统设计

摘要:无人机在农业领域应用日益普及,但无人机供需信息服务水平还比较落后,为此设计了无人机农田服务信息系统。基于SpringBoot框架开发实现了一个Web应用程序,包括登录模块、订单模块、消息模块以及认证等功能模块。经测试,该系统具有较好的实用性。

关键词:无人机信息管理;Web应用程序;分布式系统

0引言

中国是农业大国,基本农田面积达18亿亩[1]。但由于农村劳动力老龄化和城市化,导致农田劳动力紧缺,所以需要大量无人机来代替人力完成农田中的植保工作[2]。但无人机成本高,专业性很强,如果农户自己购买、使用无人机,成本会大大提高。由无人机专业团队提供集中式服务,则可以极大地平摊成本,提升无人机使用效率。现有的无人机服务供给和需求信息大部分是通过熟人介绍,或者用社交软件如微信、QQ等进行撮合,导致供需信息匹配效率不高,不利于实现资源的最优配置。本研究一方面帮助农户实现服务需求,对优质无人机服务进行筛选、管理,在农户服务需求和飞手供应信息之间架设渠道;另一方面根据农户地理位置和服务需求等情况实现合理接单,让飞手集约高效率地提供服务。

1相关研究

早在1911年德国就提出使用飞机来喷洒农药进行森林害虫防治的计划。1949年美国农药喷洒技术有了更大提升,空中作业以雾喷为主。到了1987年,日本成功发明无人机,并将无人机投入到农业植保领域,代替传统的劳动力,提高作业效率。美国成熟的雾喷技术加上日本无人机的创新发明,使得无人机在植保领域大有作为[3-4]。文献[5]提出一种无人机探查技术,发明了两个连续相位计算单个树和树行的三维几何特征创新方法;文献[6]研究提升无人机采集的麦田图像拼接精度新方法。国外研究主要集中在无人机本身的研发环节,专门针对无人机共享使用的Web应用程序开发技术则比较罕见。随着无人机在我国农业植保领域的兴起,国家已将无人机纳入农机补贴政策以促进无人机在农业植保领域的普及[7]。随着互联网技术的普及,国内一些厂商围绕无人机共享技术开展了一些研究[8-14],设计了一些平台。这些平台存在以下问题:①功能较为复杂,用户体验不佳,缺少地图化展示,对于无人机的终端用户农民来说,学习使用起来较为困难;②这些平台没有基于最新的Web快速开发技术,如SpringBoot等,导致开发成本和维护成本较高。在Web快速开发技术方面,SpringBoot是一个热门框架,它秉承“约定优于配置”的原则,大大简化了Web开发过程,可以很方便地扩展为微服务应用[15]。基于SpringBoot的Web应用日益受到欢迎[16-18]。地图化展示方面,传统的GIS开发复杂,技术门槛和成本都很高,而基于百度地图API可以快速开发地图化展示功能,近年来成功案例很多[19-20]。本文基于最新的Web快速开发技术构建一个实用的无人机农田服务信息管理系统,有一定的应用价值。

2需求分析

本系统面向农户、商户两种角色分析功能需求。

2.1农户

农户即需要无人机农田服务的对象,可以不用注册就能浏览本系统中所有的无人机农田服务方信息,但是必须注册才可使用农田服务预约等核心功能。农户角色涉及的功能包括农田服务展示、订单管理、购物车、注册与登录、服务评价与个人信息管理。

2.2商户

商户即拥有无人机经营许可的组织或公司。商户旗下可以拥有具备无人机操作经验的飞手。商户涉及的功能包括服务信息管理、订单管理、飞手管理、注册与登录、经营许可认证、个人信息管理。

3系统设计与实现

3.1功能设计

各个子系统在相互协作的同时还需要保证业务流程的完整性,共同构成完整的无人机农田服务信息管理系统。整个系统分为4个子系统,每个子系统对应不同的功能模块。

3.2数据库设计

本系统涉及的数据库实体一共有8个,分别是:①农户;②商户;③机手;④订单;⑤农田服务;⑥购物车;⑦通知;⑧服务评价。另外还设计了两个中间表记录“订单与机手”、“订单与农田服务”相关信息。

3.3界面设计

3.3.1农户界面

登录成功后进入主页,显示近一个月“销量较好”的无人机服务和商户信息,点击服务或商户,就会进入服务的详情页面和农田服务列表页面,分页显示指定商户旗下的所有农田服务信息,本文显示排名前4的服务信息,具体界面如图4所示。在农田服务列表页面,系统会自动根据农户个人信息中填写的地址进行定位,然后显示该区域(省份+城市)下的农田服务,默认是价格升序排序;然后按照直线距离远近升序排序。农田服务详情页面,显示该服务的“销量”、“平均评分”、“累计评论”以及相应的评论信息和所属的商户信息,具体如图5所示。在农户购物车界面,显示农户选中的农田服务,可对服务的数量进行修改、移除和结算。根据购物车结算服务生成相应的创建订单页面。农户可自定义作业地址,否则默认是农户的地址;设置预约日期和填写订单备注信息。农户的订单管理页面,分页显示一定数量的订单详细信息,如订单的基本信息、订单关联的农田服务信息以及负责的机手信息。除此之外,农户可以更改“进行中”的订单状态。

3.3.2商户界面

商户界面包括显示商户所有“进行中”状态的订单信息。地图部分显示所有订单与商户(个人信息中填写的地址)的位置信息。订单根据预约日期升序显示,还显示预约时间与现在时间差(倒计时)。除此之外,商户还可将订单导出为Excel文件,如图6所示。在订单概况列表页面,商户可根据订单状态分页显示订单主要信息,还可批量更改“未处理”状态订单信息。在农田服务列表页面,商户可根据农田服务状态(“上架”或者“下架”)分页显示,并且可批量更新农田服务状态,农田服务信息则需要逐一修改。在机手列表页面,分页显示商户关联的机手信息,可对指定机手信息进行修改。

3.4系统实现

集成开发环境采用EclipseLuna,JavaDevelopKit1.8,数据库基于MySQL,应用服务器采用ApacheTomcat9.0,整个项目基于Maven构建和管理依赖关系。系统实现包括用户管理子系统、订单子系统、消息子系统和认证子系统。订单子系统是本系统的核心业务,主要针对“订单”“农田服务”“机手”以及“服务评论”这4个实体来实现。下面介绍农田服务查询和购物车两个核心功能。(1)农田服务查询。两种角色的农田服务信息查询方式会有所差异。对于农户而言,搜索农田服务,根据农户选择的区域(省份+城市)和价格排序方式分页显示,默认为农户个人信息填写地址;如果没有设置,则默认值为前端设置的默认值。该功能算法为:后台将前端传来的“区域”信息模糊匹配该区域所有商户;然后向数据库批量查询这些商户旗下的所有农田服务信息,并且按照农田服务价格进行排序(排序方式由农户定义);再判断农户是否还需要按照商户位置与农户自身位置的距离依升序排序。如果是,就需要调用“Baidu地图的距离位置计算”服务,批量计算这些农田服务所属的商户位置与农户位置的距离信息,然后按照自定义排序方式对农田服务进行排序。排序规则是在价格相等情况下,按照距离的远近升序排序。如果不需要按照距离排序,那么就直接返回查询数据即可。对于商户而言,农田服务查询只能查询自身的农田服务,可以根据农田服务状态分页显示。农户和商户两种角色在订单查询时基本一致,但是由于订单涉及的实体比较多,有“农户”、“商户”、“农田服务”以及“飞手”等。虽然在同一订单情景下,农户与商户是一对一的关系,但是“农田服务”和“订单”“飞手”与“订单”是“多对一”关系,整体上它们是多对多关系,所以用两张第三方表记录“一个订单关联哪些农田服务”和“一个订单由多少飞手负责”等信息。因此在查询上关联的表比较多,这样增加了数据库查询的负担和难度。对此在查询某一订单关联的所有实体信息时,首先通过“订单表”与“两张第三方表”连接,获取订单关联的实体主键信息以及订单的主要信息;然后再将订单关联的实体主键信息重新组装成主键集合,批量从Redis查询这些实体信息;最后再将从Redis得到的实体详细信息包装到“订单的展示Vo”中并返回。为了提升查询效率,这一订单查询工作分成几段进行,分而治之。同时,在查询订单过程中可根据用户设置的查询条件进行,可以按照订单的状态或者订单的预约时间升序排序,或者是按订单创建时间进行排序并分页显示,该执行过程如图7所示。(2)购物车。考虑到农户对购物车的增删查改操作会很频繁,所以采用Redis存储农户选中的农田服务相关信息。采用Hash数据类型存储,使用“ShoppingCartTable”作为HashKey,然后用农户的ID作为key,并用“购物车”实体的Json字符串对象作为value。该“购物车”实体的属性在“数据库设计”中有说明,记录的就是“服务ID”“服务所属的商户ID”以及“服务的数量”等关键信息。

4结语

本系统基于SpringBoot和地图开发技术,实现了农户寻找合适的“无人机农田服务”目的,也为商户对“农户需求订单”的集中管理带来便利。经测试,系统能够很好地搜索农户的服务需求,以及对订单进行管理,平衡农户服务需求与飞手供应的关系,提供基于地图搜索与服务需求的匹配功能,实现集约、高效率的无人机农田信息服务。但本研究还有一些不足之处:①没有设计移动端/微信端应用,可能会影响推广;②在商业智能方面可以结合客户对商家的评价量化其服务水平,从而为消费者推荐更优质的商家。后续研究将以这两点为重点方向。

作者:吴东庆 徐楚健 郭鹏飞 王前 侯超钧 单位:仲恺农业工程学院 计算科学学院