本站小編為你精心準備了氣象站實時數(shù)據(jù)采集論文參考范文,愿這些范文能點燃您思維的火花,激發(fā)您的寫作靈感。歡迎深入閱讀并收藏。
1VantagePro氣象站
VantagePro電子氣象站是美國戴維斯公司(DavisInstrumentsCorp.)面向氣象服務、面向移動服務的小型氣象站[5]。體積小,重量輕,功耗小,集成度高,安裝簡單,長期工作穩(wěn)定可靠。氣象站由傳感器單元(ISS)、顯示控制器(CONSOLE)和記錄器軟件(WeatherLink)組成[6,7]。有線站傳感器(ISS)上的信號由有線傳送到顯示控制器上,電纜線長度30米;無線站傳感器(ISS)上的信號由無線傳送到顯示控制器上,距離大約200-300米。VantagePro也是目前國內(nèi)外天文領域應用得較廣的全自動氣象站之一,在遠程自主觀測等方面應用較廣。VantagePro可以測量空氣溫度、空氣相對濕度、風向、風速、雨量、氣壓、太陽輻射和紫外輻射,組成8要素電子氣象站。還可擴展對土壤溫度、土壤濕度及葉面濕度等氣象要素進行觀測。與一般的氣象站不同,VantagePro采用了所謂的一體化傳感器單元(ISS),通過ISS接口板接收數(shù)據(jù)并轉發(fā)至CONSOLE(顯示控制器)或連接的計算機中,其中溫濕度傳感器在白色百葉式防輻射罩內(nèi),翻斗式雨量計的翻斗在雨量筒內(nèi)。各傳感器信號線均接入到ISS接口板中。ISS通過其外部所帶太陽能板供電,盒內(nèi)裝有一塊3伏鋰電池,用于夜間及無日照時的供電[8]。CONSOLE顯示控制器,用來在未連接計算機單獨顯示氣象信息時的狀態(tài)。但由于當前MUSER采用計算機實時采集,因此CONSOLE并不需要配置。
1.1通信協(xié)議VantagePro中數(shù)據(jù)傳輸和命令控制使用串行通信協(xié)議,即RS232C串口通訊協(xié)議標準。RS232C串口通信協(xié)議的包含,8個數(shù)據(jù)位,1個起始位,1個停止位,無奇偶校驗位。通信協(xié)議中的波特率設置為4800比特。用RS232C串口通信協(xié)議中的DB9(9針D型串口)。VantagePro的串行端口的命令格式可以表示為下面的格式:<參數(shù)名稱—十進制數(shù)字><參數(shù)名稱—十六進制數(shù)字><參數(shù)名稱—二進制數(shù)字>這三種格式。十進制和十六進制數(shù)字可以用ASCII替換。二進制數(shù)字發(fā)送字符值。每個命令之后都要緊跟著一個換行符(\n)。
1.2數(shù)據(jù)格式VantagePro通過串口獲取氣象數(shù)據(jù),實際傳送的氣象數(shù)據(jù)為99個字節(jié)的數(shù)據(jù)包,如表1所示,從1-99對數(shù)據(jù)包編號,提取的數(shù)據(jù)用括號給出了注釋,括號中逗號之前的內(nèi)容表示字段含義,逗號之后的內(nèi)容表示測量值的單位。數(shù)據(jù)包的具體格式如表1所示。
2實時氣象數(shù)據(jù)拆分與歸檔
在MUSER的應用中,將各個ISS采集的氣象因子數(shù)據(jù)直接通過RS232C串口通信協(xié)議將采集的數(shù)據(jù)傳到操作系統(tǒng)為LINUX的計算機,通過該接收機器上的數(shù)據(jù)請求與拆分程序將RS232C傳送的氣象因子數(shù)據(jù)包實時拆分出需要的氣象因子并歸檔到MySQL數(shù)據(jù)庫和Redis高速緩存中。同時數(shù)據(jù)合并程序自動合并同價值的數(shù)據(jù),將最新的數(shù)據(jù)存到Redis中。系統(tǒng)整體結構如圖1所示。
2.1初始化串口數(shù)據(jù)的接收和歸檔以駐留程序方式運行在服務器上,圖2顯示了實時氣象數(shù)據(jù)拆分與處理的初始化流程。氣象因子的記錄器對象主要暫時存儲拆分處理后的氣象數(shù)據(jù),氣象因子讀取器對象負責讀取數(shù)據(jù)包中記錄的特定氣象因子的測量值。由于VantagePro氣象站測量的氣象因子的值與要歸檔值的單位不一致,因此也需要氣象因子的修正器對象來對測量的原始值進行修正。
2.2數(shù)據(jù)的拆分與處理系統(tǒng)的初始化后,采集程序定時從串口接收數(shù)據(jù),首先獲得采集時間并轉換為1970年到現(xiàn)在的秒數(shù),并向VantagePro請求一個數(shù)據(jù)包,接著就是處理收到的氣象數(shù)據(jù)包。PC上實時氣象數(shù)據(jù)的拆分與處理的流程如圖3所示。圖3中的時間秒數(shù)的定義為從1970年1月1日0時0分0秒到此時的秒數(shù)。相鄰的兩個時間秒數(shù)之間相差60秒,即1分鐘。數(shù)據(jù)的采樣周期也是1分鐘。時間秒數(shù)用來唯一表示氣象因子的采集時間或采樣時間,同時也作為Redis存儲中可分類的集合中Score的值。
2.3氣象數(shù)據(jù)的存儲將采集的氣象數(shù)據(jù)保存到MySQL數(shù)據(jù)庫中,同時為了提高查詢速度,使用Redis作為高速緩存。MySQL數(shù)據(jù)庫中數(shù)據(jù)表的定義如表2所示。Redis是一個Key-Value存儲系統(tǒng)[10]。和Memcached類似,它支持存儲的value類型相對更多,包括string(字符串)、list(鏈表)、set(集合)和zset(有序集合)。Redis的功能可以理解為一個Key-Value的數(shù)據(jù)結構操作,數(shù)據(jù)都保存在內(nèi)存中定期刷新到磁盤,以及提高的讀寫效率。Redis數(shù)據(jù)庫通過兩種方式可以實現(xiàn)數(shù)據(jù)持久化:使用快照的方式將內(nèi)存中的數(shù)據(jù)不斷寫入磁盤和將操作記錄記錄在磁盤文件中。因為需要在Redis執(zhí)行范圍查詢,我們使用有序集合SortedSets存儲氣象數(shù)據(jù),集合結構中使用時間秒數(shù)作為score,氣象數(shù)據(jù)的實際值為其value值。而Key的值為氣象的統(tǒng)計因子,如溫度(temperature)、濕度(humidity)等。比如將2015年1月29日16時26分05秒采集的溫度的值17℃存儲到Redis的命令為:redis127.0.0.1:6379>zaddiss.temperature142252110017。
2.4拆分存儲實例在如下的氣象數(shù)據(jù)拆分與歸檔的例子中,以測量室外溫度的傳感器iss.temperature為例。其它氣象因子數(shù)據(jù)的拆分與歸檔和氣象因子(室外溫度)的處理情況類似。步驟如下:1)開始采樣時間為2015年1月29日16時26分05秒,將該時間轉換成1970年以來的時間秒數(shù),為1422521100。2)向VantagePro發(fā)送命令‖LOOP1‖命令,請求一個99字節(jié)的數(shù)據(jù)包。接收端到氣象站響應的數(shù)據(jù)包,數(shù)據(jù)包的內(nèi)容如圖5所示。3)傳感器iss.temperature的讀取器從數(shù)據(jù)包中偏移量為12的位置讀取2個字節(jié),其十六進制值為001d。讀取器對象將001d轉換成十進制的29。4)傳感器iss.temperature的修正器將傳感器的29F修正為2.900000F,然后再將2.900000F轉換成-16.166667℃。(溫度傳感器記錄的測量值是實際測量值的10倍,其它值的倍數(shù)詳見表1)5)傳感器iss.temperature的記錄器將-16.166667℃更新到記錄器對象中。6)將傳感器的值歸檔到MySQL和Redis中。7)更新下一次采用時間,循環(huán)步驟1-7。
3氣象數(shù)據(jù)合并與快速檢索
3.1氣象數(shù)據(jù)的合并一般情況下將采集到的氣象數(shù)據(jù)處理成特定格式后直接追加到數(shù)據(jù)庫中,然而隨著時間的積累,數(shù)據(jù)庫中的記錄數(shù)會急劇增加。相應地檢索某一個時間段的天氣狀態(tài)所需的時間也會增加,不能滿足MUSER的高效數(shù)據(jù)處理的要求。由于連續(xù)時間段的天氣狀態(tài)可能相同。例如在2014-6-610:00:00到2014-6-610:00:59這一分鐘采集到的天氣狀態(tài)為晴天,而在接下來的59分鐘的時間內(nèi)采集到的天氣狀態(tài)都為晴天。通常情況下是將這60條記錄全部存儲到數(shù)據(jù)庫中,然而改進的歸檔方法是合并這60條記錄為一條記錄。當檢索落在這一合并后的時間段天氣狀態(tài)時,仍然可以檢索到要檢索時間段的天氣狀態(tài)為晴天,這樣做和從60條記錄中檢索到的天氣狀態(tài)一樣都是晴天,保證了合并后的數(shù)據(jù)仍然是有效的。如果一天要歸檔的所有采集到的天氣狀態(tài)都一樣,那么采用合并方法,數(shù)據(jù)庫中存儲一條記錄就可以記錄這一天的天氣狀態(tài)。但是如果采用傳統(tǒng)的數(shù)據(jù)歸檔方式,記錄一天的天氣狀態(tài)就需要24*60條記錄,這樣不僅浪費了存儲空間,同時影響到檢索效率。
3.2快速檢索數(shù)據(jù)合并一定程度上可以加快檢索速度,但對于具體值的氣象采集因子,如需要在每個UVFITS文件中存儲的溫度,濕度值,是無法采用數(shù)據(jù)合并的,數(shù)據(jù)量仍非常大。為了進一步提高查詢速度,使用Redis作為高速緩存。數(shù)據(jù)查詢時首先訪問Redis,只有當Redis訪問失敗時或者在Redis中找不到數(shù)據(jù)時才訪問MySQL,并將從MySQL獲得的數(shù)據(jù)更新到Redis中。MUSER中最常用的氣象數(shù)據(jù)查詢模式是根據(jù)觀察時間查詢氣象數(shù)據(jù),因此使用有序集合SortedSet,SortedSet是Set的一個升級版本,它在Set的基礎上增加了一個順序屬性,這一屬性在添加修改元素的時候可以指定,每次指定后,zset會自動重新按新的值調整順序??梢岳斫鉃橛袃闪械腗ySQL表,一列存儲具體的值,一列存順序,也就是氣象數(shù)據(jù)的時間。操作中key理解為zset的名字。查詢時根據(jù)觀察時間和氣象因子可以獲得該時刻的具體氣象數(shù)據(jù)。比如查詢時間2015年1月29日16時26分05秒的溫度的值,首先將該時間轉換成1970年以來的時間秒數(shù),為1422521100,在Redis上執(zhí)行如下查詢命令:redis127.0.0.1:6379>zrangebyscoretemperature1422521100+infLIMIT01這條命令的意思是在鍵值為temperature的SortedSets中查找大于時間點1422521100的第一個值。+inf在Redis中表示正無窮大。
4結論
本文首先介紹了MUSER項目的基本情況,并對MUSER項目中氣象條件的可能應用場景和氣象條件對觀測數(shù)據(jù)有效性可能造成的影響進行了論述;簡要地介紹了VantagePro氣象站的基本工作原理,數(shù)據(jù)交換格式以及串行通信協(xié)議。設計并實現(xiàn)了氣象數(shù)據(jù)的實時采集數(shù)據(jù)歸檔,合并和快速索引方法。本文介紹的VantagePro氣象站的氣象數(shù)據(jù)采集,存儲及快速查詢的優(yōu)化方法對MUSER觀測數(shù)據(jù)的處理有重要的支撐作用,同時也可應用于望遠鏡選址中的氣象條件的自動監(jiān)測。本文雖然提到了氣象數(shù)據(jù)的合并方法,但是具體的氣象條件狀態(tài)值的確定是需要統(tǒng)計分析氣象數(shù)據(jù)對MUSER觀測數(shù)據(jù)的影響后得出。因此未來我們將進行大量統(tǒng)計分析以評估氣象數(shù)據(jù)對MUSER觀測數(shù)據(jù)的可能影響,并完善歸并方法。
作者:衛(wèi)守林 石聰明高姣姣王鋒鄧輝季凱帆單位:中國科學院云南天文臺昆明理工大學云南省計算機技術應用重點實驗室
本站为第三方开放式学习交流平台,所有内容均为用户上传,仅供参考,不代表本站立场。若内容不实请联系在线客服删除,服务时间:8:00~21:00。