吳東慶 徐楚健 郭鵬飛 王前 侯超鈞



摘 要:無人機在農業領域應用日益普及,但無人機供需信息服務水平還比較落后,為此設計了無人機農田服務信息系統。基于Spring Boot框架開發實現了一個Web應用程序,包括登錄模塊、訂單模塊、消息模塊以及認證等功能模塊。經測試,該系統具有較好的實用性。
關鍵詞:無人機信息管理;Web應用程序;分布式系統
DOI:10. 11907/rjdk. 191983 開放科學(資源服務)標識碼(OSID):
中圖分類號:TP319文獻標識碼:A 文章編號:1672-7800(2020)007-0140-04
The Design and Implementation of UAV Farmland Service
Information Management System
WU Dong-qing1,2,XU Chu-jian1, GUO Peng-fei1,WANG Qian1,HOU Chao-jun1
(1.College of Computational Science, Zhongkai University of Agriculture and Engineering,Guangzhou 510225,China;
2.College of Mechanical and Electrical Engineering,Guangdong University of Technology, Guangzhou 510006, China)
Abstract: The application of UAV in agriculture is becoming more and more popular, but the supply and demand information service of UAV cannot meet the needs of farmers. This paper discusses the design and implementation of UAV farmland service information system. A Web application is developed in sequence based on Spring Boot framework. The system can be used by ordinary farmers and businesses, including login module, order module, message module and authentication module. After testing, the system has good practicability.
Key Words: UAV information management; Web Application; distributed system
0 引言
中國是農業大國,基本農田面積達18億畝[1]。但由于農村勞動力老齡化和城市化,導致農田勞動力緊缺,所以需要大量無人機來代替人力完成農田中的植保工作[2]。但無人機成本高,專業性很強,如果農戶自己購買、使用無人機,成本會大大提高。由無人機專業團隊提供集中式服務,則可以極大地平攤成本,提升無人機使用效率。現有的無人機服務供給和需求信息大部分是通過熟人介紹,或者用社交軟件如微信、QQ等進行撮合,導致供需信息匹配效率不高,不利于實現資源的最優配置。本研究一方面幫助農戶實現服務需求發布,對優質無人機服務進行篩選、管理,在農戶服務需求和飛手供應信息之間架設渠道;另一方面根據農戶地理位置和服務需求等情況實現合理接單,讓飛手集約高效率地提供服務。
1 相關研究
早在1911年德國就提出使用飛機來噴灑農藥進行森林害蟲防治的計劃。1949年美國農藥噴灑技術有了更大提升,空中作業以霧噴為主。到了1987年,日本成功發明無人機,并將無人機投入到農業植保領域,代替傳統的勞動力,提高作業效率。美國成熟的霧噴技術加上日本無人機的創新發明,使得無人機在植保領域大有作為[3-4]。文獻[5]提出一種無人機探查技術,發明了兩個連續相位計算單個樹和樹行的三維幾何特征創新方法;文獻[6]研究提升無人機采集的麥田圖像拼接精度新方法。國外研究主要集中在無人機本身的研發環節,專門針對無人機共享使用的Web應用程序開發技術則比較罕見。
隨著無人機在我國農業植保領域的興起,國家已將無人機納入農機補貼政策以促進無人機在農業植保領域的普及[7]。隨著互聯網技術的普及,國內一些廠商圍繞無人機共享技術開展了一些研究[8-14],設計了一些平臺。這些平臺存在以下問題:①功能較為復雜,用戶體驗不佳,缺少地圖化展示,對于無人機的終端用戶農民來說,學習使用起來較為困難;②這些平臺沒有基于最新的Web快速開發技術,如Spring Boot等,導致開發成本和維護成本較高。
在Web快速開發技術方面,Spring Boot是一個熱門框架,它秉承“約定優于配置”的原則,大大簡化了Web開發過程,可以很方便地擴展為微服務應用[15]。基于Spring Boot的Web應用日益受到歡迎[16-18]。地圖化展示方面,傳統的GIS開發復雜,技術門檻和成本都很高,而基于百度地圖API可以快速開發地圖化展示功能,近年來成功案例很多[19-20]。
本文基于最新的Web快速開發技術構建一個實用的無人機農田服務信息管理系統,有一定的應用價值。
2 需求分析
本系統面向農戶、商戶兩種角色分析功能需求。
2.1 農戶
農戶即需要無人機農田服務的對象,可以不用注冊就能瀏覽本系統中所有的無人機農田服務方信息,但是必須注冊才可使用農田服務預約等核心功能。農戶角色涉及的功能包括農田服務展示、訂單管理、購物車、注冊與登錄、服務評價與個人信息管理。
2.2 商戶
商戶即擁有無人機經營許可的組織或公司。商戶旗下可以擁有具備無人機操作經驗的飛手。商戶涉及的功能包括服務信息管理、訂單管理、飛手管理、注冊與登錄、經營許可認證、個人信息管理。
3 系統設計與實現
3.1 功能設計
各個子系統在相互協作的同時還需要保證業務流程的完整性,共同構成完整的無人機農田服務信息管理系統。系統頂層數據流如圖1所示。
整個系統分為4個子系統,每個子系統對應不同的功能模塊,如圖 2所示。
3.2 數據庫設計
本系統涉及的數據庫實體一共有8個,分別是:①農戶;②商戶;③機手;④訂單;⑤農田服務;⑥購物車;⑦通知;⑧服務評價。另外還設計了兩個中間表記錄“訂單與機手”、“訂單與農田服務”相關信息,實體之間ER關系如圖 3所示。
3.3 界面設計
3.3.1 農戶界面
登錄成功后進入主頁,顯示近一個月“銷量較好”的無人機服務和商戶信息,點擊服務或商戶,就會進入服務的詳情頁面和農田服務列表頁面,分頁顯示指定商戶旗下的所有農田服務信息,本文顯示排名前4的服務信息,具體界面如圖 4所示。
在農田服務列表頁面,系統會自動根據農戶個人信息中填寫的地址進行定位,然后顯示該區域(省份+城市)下的農田服務,默認是價格升序排序;然后按照直線距離遠近升序排序。農田服務詳情頁面,顯示該服務的“銷量”、“平均評分”、“累計評論”以及相應的評論信息和所屬的商戶信息,具體如圖 5所示。
在農戶購物車界面,顯示農戶選中的農田服務,可對服務的數量進行修改、移除和結算。根據購物車結算服務生成相應的創建訂單頁面。農戶可自定義作業地址,否則默認是農戶的地址;設置預約日期和填寫訂單備注信息。農戶的訂單管理頁面,分頁顯示一定數量的訂單詳細信息,如訂單的基本信息、訂單關聯的農田服務信息以及負責的機手信息。除此之外,農戶可以更改“進行中”的訂單狀態。
3.3.2 商戶界面
商戶界面包括顯示商戶所有“進行中”狀態的訂單信息。地圖部分顯示所有訂單與商戶(個人信息中填寫的地址)的位置信息。訂單根據預約日期升序顯示,還顯示預約時間與現在時間差(倒計時)。除此之外,商戶還可將訂單導出為Excel文件,如圖6所示。
在訂單概況列表頁面,商戶可根據訂單狀態分頁顯示訂單主要信息,還可批量更改“未處理”狀態訂單信息。
在農田服務列表頁面,商戶可根據農田服務狀態(“上架”或者“下架”)分頁顯示,并且可批量更新農田服務狀態,農田服務信息則需要逐一修改。
在機手列表頁面,分頁顯示商戶關聯的機手信息,可對指定機手信息進行修改。
3.4 系統實現
集成開發環境采用Eclipse Luna,Java Develop Kit1.8,數據庫基于MySQL,應用服務器采用Apache Tomcat9.0,整個項目基于Maven構建和管理依賴關系。
系統實現包括用戶管理子系統、訂單子系統、消息子系統和認證子系統。訂單子系統是本系統的核心業務,主要針對“訂單”“農田服務”“機手”以及“服務評論”這4個實體來實現。下面介紹農田服務查詢和購物車兩個核心功能。
(1)農田服務查詢。兩種角色的農田服務信息查詢方式會有所差異。對于農戶而言,搜索農田服務,根據農戶選擇的區域(省份+城市)和價格排序方式分頁顯示,默認為農戶個人信息填寫地址;如果沒有設置,則默認值為前端設置的默認值。該功能算法為:后臺將前端傳來的“區域”信息模糊匹配該區域所有商戶;然后向數據庫批量查詢這些商戶旗下的所有農田服務信息,并且按照農田服務價格進行排序(排序方式由農戶定義);再判斷農戶是否還需要按照商戶位置與農戶自身位置的距離依升序排序。如果是,就需要調用“Baidu地圖的距離位置計算”服務,批量計算這些農田服務所屬的商戶位置與農戶位置的距離信息,然后按照自定義排序方式對農田服務進行排序。排序規則是在價格相等情況下,按照距離的遠近升序排序。如果不需要按照距離排序,那么就直接返回查詢數據即可。
對于商戶而言,農田服務查詢只能查詢自身發布的農田服務,可以根據農田服務狀態分頁顯示。
農戶和商戶兩種角色在訂單查詢時基本一致,但是由于訂單涉及的實體比較多,有“農戶”、“商戶”、“農田服務”以及“飛手”等。雖然在同一訂單情景下,農戶與商戶是一對一的關系,但是“農田服務”和“訂單”“飛手”與“訂單”是“多對一”關系,整體上它們是多對多關系,所以用兩張第三方表記錄“一個訂單關聯哪些農田服務”和“一個訂單由多少飛手負責”等信息。
因此在查詢上關聯的表比較多,這樣增加了數據庫查詢的負擔和難度。對此在查詢某一訂單關聯的所有實體信息時,首先通過“訂單表”與“兩張第三方表”連接,獲取訂單關聯的實體主鍵信息以及訂單的主要信息;然后再將訂單關聯的實體主鍵信息重新組裝成主鍵集合,批量從Redis查詢這些實體信息;最后再將從Redis得到的實體詳細信息包裝到“訂單的展示Vo”中并返回。
為了提升查詢效率,這一訂單查詢工作分成幾段進行,分而治之。同時,在查詢訂單過程中可根據用戶設置的查詢條件進行,可以按照訂單的狀態或者訂單的預約時間升序排序,或者是按訂單創建時間進行排序并分頁顯示,該執行過程如圖7所示。
(2)購物車。考慮到農戶對購物車的增刪查改操作會很頻繁,所以采用Redis存儲農戶選中的農田服務相關信息。采用Hash數據類型存儲,使用“ShoppingCartTable”作為HashKey,然后用農戶的ID作為key,并用“購物車”實體的Json字符串對象作為value。該“購物車”實體的屬性在“數據庫設計”中有說明,記錄的就是“服務ID”“服務所屬的商戶ID”以及“服務的數量”等關鍵信息。
4 結語
本系統基于Spring Boot和地圖開發技術,實現了農戶尋找合適的“無人機農田服務”目的,也為商戶對“農戶需求訂單”的集中管理帶來便利。經測試,系統能夠很好地搜索農戶的服務需求,以及對訂單進行管理,平衡農戶服務需求與飛手供應的關系,提供基于地圖搜索與服務需求的匹配功能,實現集約、高效率的無人機農田信息服務。但本研究還有一些不足之處:①沒有設計移動端/微信端應用,可能會影響推廣;②在商業智能方面可以結合客戶對商家的評價量化其服務水平,從而為消費者推薦更優質的商家。后續研究將以這兩點為重點方向。
參考文獻:
[1] 瞿如一,童紹玉,唐靜波,等. 基于第一和第二次全國土地調查數據的我國土地利用變化特征分析[J]. 安徽農業科學,2018,46(2): 5-11, 24.
[2] 尚春雨,蔡建法,黃思健,等. 我國農用植保無人機應用現狀與前景分析[J]. 安徽農業科學,2017,45(30): 193-195.
[3] 郭晨,周杰,梁琴琴. 基于專利視角的美國無人機技術創新態勢研究[J]. 全球科技經濟瞭望,2017,32(4): 69-76.
[4] 朱翔. 美國無人機助力植保[J]. 農經,2015(5):75-77.
[5] TORRES-SáNCHEZ JORGE,FRANCISCA LóPEZ-GRANADOS, NICOLáS SERRANO, et al. High-throughput 3-D monitoring of agricultural-tree plantations with unmanned aerial vehicle (UAV) technology[J]. Plos One,2015,10(6): e130479.
[6] D G MEZ CAND N,CASTRO A I,L PEZ GRANADOS F. Assessing the accuracy of mosaics from unmanned aerial vehicle (UAV) imagery for precision agriculture purposes in wheat[J]. Precision Agriculture, 2013, 15(1): 44-56.
[7] 前瞻網. 植保無人機納入農機補貼 農業無人機即將“騰飛”[J]. 農業工程技術,2018,38(3): 50-51.
[8] 趙光輝. 從共享單車說到植保無人機[J]. 中國農資, 2018(5):156-161.
[9] 校林. 著眼引領農業智能革命極飛發布三款新型植保無人機[J]. 農機質量與監督, 2017(11): 44-45.
[10] 袁夢杰. 無人機共享方法、服務器、客戶端及系統[J]. 中國農資,2016(2):65-68.
[11] 趙光輝. 從共享單車說到植保無人機[J]. 中國農資, 2018 (5):25-31.
[12] 張成華,李曉峰. 無人機數據共享平臺結構及功能設計[J]. 艦船電子工程, 2013, 33(3): 70-73.
[13] 齊智敏,張明義. 聯合作戰無人機情報處理與共享體系結構研究[J]. 艦船電子工程, 2014(7): 47-50.
[14] 張彥,殷華杰,李虎. 無人機系統智能服務研究[J]. 航空電子技術, 2018, 49(3): 31-37.
[15] CRAIG WALLS. Spring boot in action[M]. Greenwich:Manning Publications, 2016.
[16] 劉櫻,楊明,王銳,等. 基于Spring Boot框架的氣象風參數查詢服務平臺設計與實現[J]. 軟件導刊, 2019, 18(5): 110-113.
[17] 鄧笑. 基于Spring Boot的校園輕博客系統的設計與實現[D]. 武漢:華中科技大學, 2018.
[18] 王振宇. 基于Spring Boot的整車出庫管理系統設計與開發[D]. 南京:南京郵電大學, 2018.
[19] 王紅崧,周海晏. 基于百度地圖API的旅游地理信息系統開發[J]. 現代計算機(專業版),2012(23): 60-63.
[20] 張波,趙雙明. 基于Android平臺的百度地圖開發研究[J]. 軟件導刊, 2015, 14(7): 96-99.
(責任編輯:杜能鋼)