薛麗娜 吳晟



摘要蟲害防治系統是針對作物不同時期和不同環境條件下出現的各種癥狀,診斷可能出現的蟲害,提出有效的防治方法。蟲害診斷系統是農業專家系統的重要應用領域,到目前為止已經開發出了很多相應的系統,取得了可喜的成果,但是或多或少都存在一定的局限性;而通過在移動終端Android平臺開發蟲害指認診斷系統可以將診斷規則、推理過程、預測結果、病害信息以“典型圖像+通俗文字”描述的直觀形式呈現給用戶,解決農戶的實際應用問題,提高系統的操作性與實用性。
關鍵詞蟲害;指認診斷;Android;馬鈴薯
中圖分類號S126文獻標識碼
A文章編號0517-6611(2015)28-346-03
Potato Pest Identification System Based on Android
XUE Lina, WU Sheng* (Kunming University of Science and Technology, Kunming, Yunnan 650500)
Abstract Insect pest control system is to put forward effective prevention and control method according to a variety of symptoms in different periods of crops and different conditions. Pest diagnosis system is the important application of agriculture expert system, there have been developed a lot of corresponding system so far, and achieved gratifying results, but more or less, there are some limitations, through developing pest identification diagnosis system in the Android mobile phone platform, the diagnosis rules, inference process, predicted results and disease information can be presented to the user in a visual form of typical image and popular words, which can help farmers solve the practical problems, improve system operation and uses.
Key words Insect pest; Identify diagnosis; Android; Potato
通過實地考察以及與農業科技人員的深入交流,獲知農戶診斷馬鈴薯蟲害的實際流程。農戶獲知蟲害災情信息分為2種方式:一種是從農業機構獲知災情信息;另一種是從田間地頭通過人工觀察獲知災情信息。前一種方式具體流程是農業機構通過收集田間信息和閱讀往年的災情資料首先作出判斷和預測,再通過各種媒體向農戶發布災害信息以及防治措施,農戶收到該信息后采取相應的防治措施。后一種方式具體流程是農戶通過對田間地頭馬鈴薯生長狀況的觀察,結合以往蟲害的經驗,對馬鈴薯蟲害狀況作出判斷,如果目前的蟲害是以往遇見過的,就會根據以往的經驗采取相應的防治措施;如果目前的蟲害是以前沒有遇見過的,就會邀請專家或農業技術員到田間去診斷,專家或農業技術員采集到蟲害信息通過觀察或化驗得出判斷,再將蟲害信息和防治措施傳遞給農戶,由農戶采取相應的防治措施。
目前馬鈴薯病蟲害的診斷流程都還處于人工診斷階段。上述第一種方式是靠農業機構收集災害信息和閱讀以往的災情信息來做出預測和判斷,它是一種很被動的診斷方式,對農業機構依賴性太大,在災情信息收集上不能很全面,在時間上也不能準確地判斷災害發生日期,不能根據實際每塊田地作出分析,這種方式只適用于大規模發病并且非常普遍的蟲害,精度和準度都不能滿足實際的農業生產。第二種方式靠農戶對田間馬鈴薯的觀察來作出判斷,是主動的診斷方式。但它太過依賴農戶個人的經驗,需要農戶對蟲害知識的日積月累,時間周期很長,而且很大程度上導致了蟲害知識的不能共享,同時偶然性很大,與農戶觀察馬鈴薯生長狀況的次數和仔細程度有很大關系。以上2種方式會消耗很大的人力和物力,并且診斷的效果不佳[1]。
研究基于目前移動終端常用的Android平臺,設計開發了一種新的馬鈴薯蟲害指認診斷系統,針對以往系統對使用者素質要求過高的問題,將植保專業知識與農戶的田間實際體驗相結合,通過優化的人機交互界面,用戶可以根據自己的實際情況選擇不同的診斷方法,對不同時期的馬鈴薯作物進行蟲害診斷。該系統最大的優點是,它是一款移動終端版系統,使農戶能夠隨時隨地對馬鈴薯蟲害進行田間實時診斷,極大地提高了該系統使用的實用性、方便性、快捷性。
1蟲害指認式診斷
在進入指認式診斷界面后,系統會查詢數據庫顯示所有的蟲害典型圖片和名稱。用戶可以點擊相應的圖片顯示該蟲害的詳細信息;還可以根據蟲害的發病部位進行分類查詢,系統會根據用戶的選擇將蟲害的搜索范圍縮小,有條件地顯示蟲害。
蟲害指認式診斷流程見圖1。
用戶從主界面進入蟲害指認式診斷模塊,系統會自動初始化系統參數,將指認式診斷模式設置成“蟲害”,將蟲害搜索范圍設置成“全部”等。初始化主要是初始化指認式診斷的關鍵詞,比如所有、葉片、地下、莖鞘、果穗等。在初始化的基礎上,可以根據蟲害的發生部位對蟲害進行搜索,系統會根據用戶所選擇的關鍵詞查詢數據庫,獲取該類蟲害圖片信息。在用戶識別出需要的診斷圖像時,點擊相應的圖像會顯示該蟲害的詳細信息。蟲害指認式診斷可以劃分為3個階段:初始化關鍵詞、按類別關鍵詞診斷、顯示診斷結果[2]。
在初始化階段,系統會根據指認式診斷的模式初始化蟲害關鍵詞參數,默認參數為所有蟲害。調用指認式診斷服務來獲取所有蟲害的圖片存儲信息。根據圖片存儲信息通過圖片引擎獲取圖片對象,再通過自定義顯示組件將蟲害典型圖片展示給用戶。初始化階段涉及幾個關鍵對象(或概念):用于存儲初始關鍵詞的關鍵詞對象;用于處理指認式診斷應用邏輯的服務對象;用于獲取圖片的圖片引擎對象;用于存儲圖片信息的圖片存儲對象;用于顯示蟲害圖片的顯示組件對象。進一步對這些對象進行抽象得到對應的類:Keywords_Module類、DIGList_Service類、ImageEngine類、Images_Module類、系統GridView類。
在按類別關鍵詞診斷階段,系統會根據用戶的選擇修改蟲害關鍵詞參數。然后調用指認式診斷服務來獲取對應類別的蟲害的圖片存儲信息。根據圖片存儲信息通過圖片引擎獲取圖片對象,再通過刷新自定義顯示組件將該類蟲害典型圖片展示給用戶。本階段涉及幾個關鍵對象(或概念),用于存儲初始關鍵詞的關鍵詞對象,用于處理指認式診斷應用邏輯的服務對象,用于獲取圖片的圖片引擎對象,用于存儲圖片信息的圖片存儲對象,用于顯示蟲害圖片的顯示組件對象。進一步對這些對象進行抽象得到對應的類:Keywords_Module類、DIGList_Service類、ImageEngine類、Images_Module類、系統GridView類、自定義組件gridcom。
在顯示階段,委托給專門顯示診斷信息的對象去實現。在該階段系統只要向委托對象傳遞蟲害數據庫關鍵字,由委托對象顯示診斷結果的詳細信息。這個階段主要涉及到的關鍵對象是用于傳遞蟲害關鍵字的參數對象,用于屏幕跳轉的跳轉對象。對這些對象進行抽象得到對應的類:系統Intent類。系統Intent類可以同時實現參數傳遞和屏幕跳轉功能。
運用ArgoUML工具畫出如圖2所示的時序圖[3]。
2指認式診斷實現
蟲害的指認式診斷涉及一個界面,系統可以通過主界面傳遞的參數來初始化該界面,以適應不同類別的診斷。該界面由界面靜態部分diglist.xml、動態圖片顯示組件gridcom.xml組成[4]。
指認式診斷的核心是指認式服務,它接收指認式診斷界面傳遞的參數,根據參數的值選擇執行的操作,并將結果封裝成一個對象返回給前臺界面。
if(keywordName.equals("disease")){
cursor = dao.executeQuery("select * from TechnicalArticles where CategoryID=1");
}else if(keywordName.equals("insect")){
cursor = dao.executeQuery("select * from TechnicalArticles where CategoryID=2");
}else if(keywordName.equals("grass")){
cursor = dao.executeQuery("select * from TechnicalArticles where CategoryID=3");
}else{
cursor = dao.executeQuery("select * from(select * from TechnicalArticles where Keyword like "+"'"+keywordName+"%' or Keyword like "+"'%"+keywordName+"%' or Keyword like "+"'%"+keywordName+"') where CategoryID="+categoryID);
}
以上代碼是指認式服務根據接收的參數值不同選擇不同的數據庫操作,最重要的是第四個條件,它是根據指認的關鍵字,對數據庫進行模糊查詢以獲得對應的數據。它是一條復合SQL語句,在符合關鍵字的記錄集中選擇滿足指認式診斷危害類別的記錄。
public void onStart(){
int num=cursor.getCount();
cursor.moveToFirst();
for(int i=0;i images_Module[i].setId(cursor.getInt(cursor.getColumnIndex("id"))); images_Module[i].setImageName(cursor.getString(cursor.getColumnIndex("ImageName"))); images_Module[i].setImageDescription(cursor.getString(cursor.getColumnIndex("ImageDescription"))); images_Module[i].setImageAddress(cursor.getString(cursor.getColumnIndex("ImageAddress"))); images_Module[i].setThumbnailAddress(cursor.getString(cursor.getColumnIndex("ThumbnailAddress"))); images_Module[i].setArticleID(cursor.getInt(cursor.getColumnIndex("ArticleID")));
cursor.moveToNext();
}
}
以上代碼是將從數據庫獲得的記錄集的每條記錄封裝成一個個對象的過程。每條記錄對應一個對象,該對象是模型對象,專門存儲圖片信息。通過循環每讀取一條記錄,即游標向下移動一格,就會向模型對象中寫入一個字段信息,直到讀取所有記錄,這相當于關系到對象的映射功能[5]。
3測試結果記錄
對基于Android平臺所建立的蟲害指認診斷系統進行診斷測試,結果見表1。
由表1可知,該研究所建立的蟲害指認診斷系統運行正常,可用于馬鈴薯蟲害指認診斷。
序號蟲害指認式診斷結果
1是否可以正常進入蟲害指認式診斷界面正常進入蟲害指認式診斷界面
2在蟲害指認式診斷主界面,是否顯示44種馬鈴薯常見害蟲圖像顯示44種馬鈴薯常見害蟲圖像
3在蟲害指認式診斷主界面,點擊任意一幅圖像,出現診斷結論界面出現診斷結論界面
4點擊移動終端上的“MENU”按鈕,是否出現害蟲對馬鈴薯的危害部位選項出現害蟲對馬鈴薯的危害部位選項
5點擊危害部位選擇項,可以根據害蟲對馬鈴薯的危害部位分類查詢根據害蟲對馬鈴薯的危害部位分類查詢
6在蟲害診斷結論界面中是否包含蟲害名稱、指認關鍵字、概述、為害癥狀、形態特征、發生及為害規律、防治技術、典型圖像包含
參考文獻
[1] 王慶雷,沈佐銳,高靈旺,等.林果病蟲害防治技術專家系統的建立與應用[J].世界農業,2003(7):47-48.
[2] 王愛茹,劉書華,曹克強,等.基于規則和圖形的蘋果、梨病蟲害診斷及防治專家系統[J].河北農業大學學報,1999(1):71-72.
[3] 劉大有,唐海鷹,陳建中,等.多媒體玉米生產智能系統的研制與應用[J].江西農業大學學報,2003,25(4):498-500.
[4] 高靈旺,沈佐銳,李志紅.計算機軟件技術的發展與植保應用軟件開發[J].農業工程學報,2000,16(2):32-35.
[5] 張仕成.基于Google Android 平臺的應用程序開發與研究[J].電腦知識與技術,2009,28(5):7959-7962.