鐘澤宇 肖舒裴
摘要:精細(xì)化農(nóng)業(yè)是世界農(nóng)業(yè)現(xiàn)代化的發(fā)展方向。為推進(jìn)我國(guó)精細(xì)化農(nóng)業(yè)的發(fā)展,本文針對(duì)我國(guó)精細(xì)化農(nóng)業(yè)的現(xiàn)狀,設(shè)計(jì)開發(fā)了基于Google Earth的農(nóng)田信息監(jiān)測(cè)系統(tǒng)。該系統(tǒng)利用獲得的經(jīng)緯度信息,并引入Google Earth組件,二次開發(fā)可視化電子地圖;構(gòu)建監(jiān)測(cè)數(shù)據(jù)查詢分析模塊,從而實(shí)時(shí)監(jiān)測(cè)土壤墑情及農(nóng)田溫濕度的空間分布,實(shí)現(xiàn)對(duì)農(nóng)田信息的監(jiān)測(cè)與管理。
關(guān)鍵詞:Google Earth KML 數(shù)據(jù)庫 農(nóng)田監(jiān)測(cè)
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1007-9416(2016)07-0146-01
1 引言
精細(xì)化農(nóng)業(yè)是農(nóng)業(yè)現(xiàn)代化的發(fā)展方向,準(zhǔn)確、及時(shí)與可靠地獲取農(nóng)田氣候、土壤特性等信息是實(shí)現(xiàn)精細(xì)化農(nóng)業(yè)的基礎(chǔ)[1]。傳統(tǒng)農(nóng)田信息監(jiān)測(cè)方法中,工作人員孤立地利用各種測(cè)量?jī)x表在現(xiàn)場(chǎng)逐項(xiàng)進(jìn)行數(shù)據(jù)采集。采集的農(nóng)田屬性和地理環(huán)境信息記錄在專用文本上,信息的采集量受儀表存儲(chǔ)器容量的限制。本文針對(duì)我國(guó)傳統(tǒng)農(nóng)田信息監(jiān)測(cè)方法存儲(chǔ)農(nóng)田信息數(shù)據(jù)量小及后期分析困難的缺點(diǎn),設(shè)計(jì)開發(fā)了基于Google Earth的農(nóng)田信息監(jiān)測(cè)系統(tǒng)。該系統(tǒng)引入Google Earth組件,二次開發(fā)可視化電子地圖,實(shí)時(shí)監(jiān)測(cè)土壤墑情及農(nóng)田溫濕度的空間分布,實(shí)現(xiàn)對(duì)農(nóng)田信息的監(jiān)測(cè)與管理。
2 基于Google Earth的地理位置信息顯示
2.1 Google Earth簡(jiǎn)介
Google Earth是在地理信息系統(tǒng)的基礎(chǔ)上發(fā)展而來的龐大的地理信息數(shù)據(jù)庫。它將衛(wèi)星圖像、航空測(cè)繪圖像和地理信息系統(tǒng)布置在一個(gè)地球的三維模型上,能夠?qū)崟r(shí)地為用戶提供所觀察區(qū)域的多角度高清晰的衛(wèi)星圖像、地貌地形、街景視圖等[2]。Google Earth的電子地圖蘊(yùn)含著豐富的地理數(shù)據(jù)信息,可以實(shí)現(xiàn)實(shí)時(shí)呈現(xiàn)經(jīng)緯度、海拔高度等信息,并且開放了二次開發(fā)接口[3]。隨著Google Earth COM API的發(fā)布,Google Earth在越來越多的領(lǐng)域得到了廣泛的應(yīng)用。
2.2 KML簡(jiǎn)介
KML是Keyhole Markup Language的簡(jiǎn)稱,是一種基于XML(可擴(kuò)展標(biāo)記語言)的在Google Earth中用于交換地理數(shù)據(jù)的文件,具體可用來描述和保存地理數(shù)據(jù)、為指定地點(diǎn)作圖表和注記以及為每一個(gè)地理特征創(chuàng)建不同的視角等。作為一種多功能的地理數(shù)據(jù)文件格式,KML可用于定義的地理特征包括地點(diǎn)、描述、疊層、路徑和多邊形等,并可將圖片、模型等各種農(nóng)田信息在Google Earth客戶端中完整的呈現(xiàn)。
2.3 基于Google Earth COM API的開發(fā)
Google Earth COM API是目前針對(duì)Google Earth的一種開放方式?;贑OM API的開發(fā)方式主要針對(duì)Google Earth的視角和動(dòng)態(tài)效果,是可以獨(dú)立加載的二進(jìn)制程序。本文所開發(fā)的農(nóng)田信息監(jiān)測(cè)系統(tǒng)利用第三方可視化編程工具Visual Studio 2013,調(diào)用COM API函數(shù)及用戶自定義的方法,架構(gòu)應(yīng)用程序。COM技術(shù)其對(duì)象本身不對(duì)外開放,只設(shè)置若干個(gè)對(duì)外開放的接口以供外部程序調(diào)用。
2.4 Google Earth的啟動(dòng)、窗口嵌入及關(guān)閉
2.4.1 Google Earth客戶端的啟動(dòng)
IApplicationGE是進(jìn)入到Google Earth最主要的類,外部應(yīng)用程序?qū)oogle Earth的操作,大部分都需要直接或間接地通過該類來實(shí)現(xiàn),是基于Google Earth COM API進(jìn)行程序開發(fā)的基礎(chǔ)。
Google Earth com API 中主要類的用途有:其成員函數(shù)GetCamera ()返回Google Earth的當(dāng)前視角;SetCamra()以參數(shù)指定的速度飛到指定的視角。OpenKmlFile()和LoadKmlData()分別是加載一個(gè)KML文件和相應(yīng)KML數(shù)據(jù)流的函數(shù);GetFeatureBy-Name()則用來獲取參數(shù)指定Name的特征值。
2.4.2 Google Earth客戶端的窗口嵌入
Google Earth作為一個(gè)獨(dú)立的軟件運(yùn)行,需要將其嵌入農(nóng)田信息檢測(cè)系統(tǒng)使其作為整體運(yùn)行,實(shí)現(xiàn)農(nóng)田的地理位置關(guān)聯(lián)與顯示。可利用IApplicationGE類中提供的函數(shù)GetMainHwnd()和GetRenderHwnd()獲取Google Earth客戶端主窗口以及地圖窗口句柄,在MFC中對(duì)這兩個(gè)窗口句柄進(jìn)行相應(yīng)操作即可完成Google Earth地圖窗口在農(nóng)田信息檢測(cè)系統(tǒng)中的嵌入。實(shí)現(xiàn)Google Earth窗口嵌入的流程圖如圖1所示。
2.4.3 Google Earth客戶端的關(guān)閉
由于Google Earth客戶端獨(dú)立于農(nóng)田信息檢測(cè)系統(tǒng)運(yùn)行,用戶在關(guān)閉農(nóng)田信息檢測(cè)系統(tǒng)窗口后并沒有關(guān)閉Google Earth客戶端。因此需要在Visual Studio中編寫相應(yīng)代碼使其完全關(guān)閉??稍谵r(nóng)田信息檢測(cè)系統(tǒng)運(yùn)行窗口關(guān)閉時(shí),向Google Earth組件發(fā)送關(guān)閉命令,并釋放資源,以達(dá)到完全關(guān)閉的目的。
3 基于SQL Server數(shù)據(jù)庫的農(nóng)田信息存儲(chǔ)與處理
3.1 數(shù)據(jù)庫簡(jiǎn)介
數(shù)據(jù)庫作為存儲(chǔ)與管理數(shù)據(jù)的平臺(tái),具體可以實(shí)現(xiàn)以下幾點(diǎn)功能:(1)結(jié)構(gòu)化存儲(chǔ)數(shù)據(jù);(2)實(shí)現(xiàn)數(shù)據(jù)共享;(3)減少數(shù)據(jù)的冗余度;(4)保護(hù)數(shù)據(jù)完整性;(5)數(shù)據(jù)集中控制;(6)并發(fā)控制。
3.2 基于SQL Server數(shù)據(jù)庫的農(nóng)田信息存儲(chǔ)與處理
要實(shí)現(xiàn)訪問操作,首先要建立農(nóng)田信息檢測(cè)系統(tǒng)平臺(tái)與數(shù)據(jù)庫之間的連接,具體操作如下:
(1)配置數(shù)據(jù)源。本系統(tǒng)在程序中根據(jù)用戶選擇動(dòng)態(tài)配置數(shù)據(jù)源而不調(diào)用ODBC數(shù)據(jù)源管理器以簡(jiǎn)化開發(fā)過程。配置SQL Server數(shù)據(jù)源時(shí),必須具備SQL Server服務(wù)器名和服務(wù)器中的目標(biāo)數(shù)據(jù)庫名??赏ㄟ^ODBC API中的SQLBrowseConnect()函數(shù)得到本地所有的SQL Server服務(wù)器、庫、語言信息等。
(2)與數(shù)據(jù)源建立連接。ODBC API中的SQLConnect()函數(shù)用于對(duì)給定參數(shù)直接建立與數(shù)據(jù)源的連接;SQLDriverConnect()函數(shù)用于給定部分連接參數(shù)時(shí)與數(shù)據(jù)源的連接,并彈出數(shù)據(jù)源瀏覽窗口與用戶交互,獲得足夠的參數(shù)后建立與數(shù)據(jù)源的連接的情況;而SQLBrowseConnect()函數(shù)是通過迭代獲取連結(jié)參數(shù)后再進(jìn)行連接[6]。
(3)對(duì)數(shù)據(jù)庫進(jìn)行存取和查詢操作。與數(shù)據(jù)源建立連接后,用戶即可在農(nóng)田信息檢測(cè)系統(tǒng)界面調(diào)用數(shù)據(jù)庫中的經(jīng)度、緯度、溫濕度等數(shù)據(jù)并對(duì)其進(jìn)行更新操作。
4 Google Earth在農(nóng)田信息管理系統(tǒng)中的運(yùn)行結(jié)果
將程序編譯及運(yùn)行,測(cè)試上述功能的運(yùn)行情況。該系統(tǒng)可實(shí)現(xiàn)監(jiān)測(cè)指定經(jīng)緯度農(nóng)田土壤水分、環(huán)境溫濕度的空間分布的功能。運(yùn)行結(jié)果如圖2所示:
5 結(jié)語
本系統(tǒng)利用Google Earth二次開發(fā)技術(shù)并結(jié)合KML語言,通過Visual C++將其應(yīng)用于農(nóng)田信息監(jiān)測(cè)之中,為精細(xì)化農(nóng)業(yè)實(shí)時(shí)監(jiān)測(cè)土壤墑情及農(nóng)田溫濕度的空間分布提供了一種解決方案。
參考文獻(xiàn)
[1]劉龍申,沈明霞,孫玉文,陸明洲,熊迎軍.基于FPGA的農(nóng)田圖像采集與GPRS無線傳輸系統(tǒng)設(shè)計(jì)[J].農(nóng)業(yè)機(jī)械學(xué)報(bào),2011,42(12):186-190.
[2]Google,Inc.Google Earth COM API Documentation.2009.
[3]李就好,羅錫文,趙新.基于GPS和GIS的旱情監(jiān)測(cè)系統(tǒng)與應(yīng)用[J].農(nóng)機(jī)化研究,2004,(6):218-220.