專利名稱:一種基于實時數(shù)據(jù)文件的潮位警戒方法
技術(shù)領(lǐng)域:
本發(fā)明屬于海洋觀測技術(shù)領(lǐng)域,涉及其中的實時數(shù)據(jù)文件(每分鐘一個數(shù)據(jù)文件)處理。通過對海洋觀測網(wǎng)中國家級數(shù)據(jù)接收服務(wù)器上的實時數(shù)據(jù)文件進行到達檢測、狀態(tài)檢測、文件解析、警戒潮位值判斷,實現(xiàn)批量站點的潮位實時警戒。
背景技術(shù):
潮位實時監(jiān)控和警戒是海洋防災(zāi)減災(zāi)的一項重要技術(shù)工作。目前,對全海域范圍內(nèi)的多站點的潮位實時警戒尚未進行業(yè)務(wù)化應(yīng)用,主要原因是海洋觀測網(wǎng)中的實時數(shù)據(jù)文件(命名規(guī)則為SQYYYYMMDDHHmm.1IIII,其中SQ為實時數(shù)據(jù)標(biāo)志,YYYYMMDDHHmm為文件生成的年月日時分的格式,IIIII為驗潮站的區(qū)站號)在國家級數(shù)據(jù)接收服務(wù)器存在到達頻次高(每個驗潮站一分鐘一個數(shù)據(jù)文件)、到達時間不確定,且文件數(shù)量多(每個驗潮站每天生產(chǎn)1440個文件,目前共有106個驗潮站,每天共產(chǎn)生152640個實時數(shù)據(jù)文件)的特點。文件什么時間到達,哪些文件到達難以確定,也就無法開展后續(xù)的文件解析和警戒潮位值判斷工作,而傳統(tǒng)的輪詢比對的文件檢測方法不能滿足應(yīng)用要求。輪詢比對的方法需要將已經(jīng)檢測和處理的文件名稱記錄下來,與數(shù)據(jù)接收目錄中的文件進行循環(huán)比對,這種方法的比對次數(shù)是文件數(shù)量的平方數(shù),在文件數(shù)量多的情況下存在處理效率低下,實時性低的問題,對于有時效性要求的系統(tǒng)不適用。
發(fā)明內(nèi)容
針對海洋觀測網(wǎng)中實時數(shù)據(jù)文件的特點,本發(fā)明提出了一種基于實時數(shù)據(jù)文件的潮位警戒方法,包括以下步驟S1.初始化,完成關(guān)鍵參數(shù)和任務(wù)處理線程的初始化,主要包括以下內(nèi)容初始化驗潮站基本信息多維數(shù)組Arr,待處理文件鏈表LI,在處理文件鏈表L2,定時器Tl和計時器T2,從實時數(shù)據(jù)文件解析出的驗潮站區(qū)站號CC,測量時間DT,潮位值WL,并啟動任務(wù)處理線程;S2.待處理任務(wù)生成,通過Tl與T2配合,T2在每個小時的一個或幾個指定時刻進入中斷狀態(tài),通過文件命名算法計算出下一個時間段內(nèi)應(yīng)生成的一批實時數(shù)據(jù)文件名稱,結(jié)合實時數(shù)據(jù)文件存儲目錄生成一批完整的文件存儲路徑,并寫入LI ;S3.任務(wù)處理,在任務(wù)處理線程中循環(huán)執(zhí)行。具體如下S31.在處理任務(wù)生成,因LI是動態(tài)寫入的,需將LI的數(shù)據(jù)項復(fù)制到L2進行處理;S32.文件到達檢測,提取L2中的第i個數(shù)據(jù)項,檢查文件是否已經(jīng)到達,如果文件未到達,判斷文件是否已超時,如果超時執(zhí)行步驟S35,如果未超時執(zhí)行步驟S36 ;S33.文件狀態(tài)檢測,判斷文件是否寫入完畢,未完成則等待文件寫入完成;S34.文件解析,從文件名稱和內(nèi)容中提取出驗潮站的區(qū)站號及測量時間和潮位值,分別賦值給CC,DT和WL ;S35.警戒潮位值判斷,用CC與Arr中每個數(shù)據(jù)項中的區(qū)站號進行比較,找到Arr中區(qū)站號與CC相同的數(shù)據(jù)項,將WL與該數(shù)據(jù)項的警戒潮位值進行比較,記錄WL達到的警戒值的級別,如果WL未達到警戒值,執(zhí)行步驟S35 ;S36.告警顯示,從Arr當(dāng)前數(shù)據(jù)項中讀取驗潮站的名稱,與WL、DT的值一起輸出到軟件界面上的對應(yīng)的警戒級別站點列表中,同時在地圖上顯示;S37.待處理任務(wù)清除,則將LI中與當(dāng)前文件對應(yīng)的數(shù)據(jù)項刪除;S38.將i加I執(zhí)行步驟S32,直到所有數(shù)據(jù)項處理完畢;S39.在處理任務(wù)清除,則將L2中所有數(shù)據(jù)項刪除。執(zhí)行步驟S31。本發(fā)明的有益效果本發(fā)明提出的基于實時數(shù)據(jù)文件的潮位警戒方法,通過實時數(shù)據(jù)文件命名算法提前計算出待處理的實時數(shù)據(jù)文件的存儲路徑并寫入待處理文件鏈表,預(yù)生成了處理任務(wù),解決了文件到達情況難以確定的問題;通過任務(wù)處理線程,采用循環(huán)方式對待處理鏈表中的實時數(shù)據(jù)文件進行到達檢測、狀態(tài)檢測、文件解析和警戒值判斷以及告警顯示,保證了文件到達檢測和處理的時效性。
圖1是本發(fā)明的潮位警戒方法的流程示意2是本發(fā)明中實施例的文件命名算法(任務(wù)預(yù)生成)流程圖
具體實施例方式下面結(jié)合附圖,給出本發(fā)明的具體實施例。需要說明的是,實施例中的參數(shù),并不影響本發(fā)明的一般性?;趯崟r數(shù)據(jù)文件的潮位警戒方法,原理是利用驗潮站發(fā)送到數(shù)據(jù)接收服務(wù)器上的實時數(shù)據(jù)文件中的實測潮位值,與各站點的預(yù)設(shè)的警戒值進行比較。首先要能及時發(fā)現(xiàn)數(shù)據(jù)文件到達,然后判斷文件是否已經(jīng)寫入完畢,然后進行解析,提取驗潮站區(qū)站號、實測潮位值,測量時間,與該驗潮站的預(yù)設(shè)警戒值進行比對后給出告警信息。圖1是本發(fā)明的實施例的流程示意圖,本實例的定時器和計時器采用每小時第50分鐘進入中斷,計算出全部106個驗潮站在下一小時從00分到59分之間應(yīng)生成的一批實時數(shù)據(jù)文件,文件存儲目錄規(guī)則設(shè)置為D:\station\realtime\區(qū)站號\YYYYMMDD。流程展開如下S1.初始化。完成關(guān)鍵參數(shù)和任務(wù)處理線程的初始化,主要包括以下內(nèi)容初始化驗潮站基本信息多維數(shù)組Arr (每個數(shù)據(jù)項包含驗潮站名稱、區(qū)站號、坐標(biāo)值、藍黃橙紅四級警戒值),待處理文件鏈表LI,在處理文件鏈表L2,定時器Tl和計時器T2,驗潮站區(qū)站號CC,測量時間DT,潮位值WL,并啟動任務(wù)處理線程。S2.待處理任務(wù)生成。通過Tl與T2配合,T2在每個小時第50分鐘進入中斷狀態(tài),通過文件命名算法計算出下一小時00分至59分鐘內(nèi)應(yīng)生成的一批實時數(shù)據(jù)文件名稱,結(jié)合實時數(shù)據(jù)文件存儲目錄生成一批完整的文件存儲路徑,并寫入LI。S3.任務(wù)處理。在任務(wù)處理線程中循環(huán)執(zhí)行。具體如下S31.在處理任務(wù)生成。因LI是動態(tài)寫入的,需將LI的數(shù)據(jù)項復(fù)制到L2進行處理。S32.文件到達檢測。提取L2中的第i個數(shù)據(jù)項,檢查文件是否已經(jīng)到達。如果文件未到達,判斷文件是否已超時2分鐘未到達,如果超時執(zhí)行步驟S35,如果未超時執(zhí)行步驟 S36。S33.文件狀態(tài)檢測。判斷文件是否寫入完畢,未完成則等待文件寫入完成。S34.文件解析。從文件名稱和內(nèi)容中提取出驗潮站的區(qū)站號及測量時間和潮位值,分別賦值給Ce,DT和WL。S35.警戒潮位值判斷。用CC與Arr中每個數(shù)據(jù)項中的區(qū)站號進行比較,找到Arr中區(qū)站號與CC相同的數(shù)據(jù)項JfWL與該數(shù)據(jù)項的藍黃橙紅四級警戒潮位值進行比較,獲取WL達到的警戒值的級別。如果WL未達到警戒值,執(zhí)行步驟S35。S36.告警顯示。從Arr當(dāng)前數(shù)據(jù)項中讀取驗潮站的名稱,與WL、DT的值一起輸出到軟件界面上的對應(yīng)的警戒級別站點列表中,同時在地圖上顯示。S37.待處理任務(wù)清除。則將LI中與當(dāng)前文件對應(yīng)的數(shù)據(jù)項刪除。S38.將i加I執(zhí)行步驟S32,直到所有數(shù)據(jù)項處理完畢。S39.在處理任務(wù)清除。則將L2中所有數(shù)據(jù)項刪除。執(zhí)行步驟S31。圖2是上述實施例中采用的文件命名算法,作用是預(yù)先生成待處理任務(wù)。文件名稱中用到的表示年、月、日、時、分的字符串變量分別用Tm、麗、DD、HH、mm表示,算法處理流程展開如下(I)獲取當(dāng)前時刻的年、月、日、時的數(shù)值;(2)計算60分鐘后時刻的年、月、日、時的數(shù)值;(3)判斷月、日、時的數(shù)值是否是個位數(shù),如果不是個位數(shù)執(zhí)行S5 ;(4)在表示月、日、時的字符串前補0,使其成為兩位數(shù);(5)生成年月日時的合并字符串YYYYMMDDHH ;(6)獲取第i個驗潮站的區(qū)站號(i從O到105);(7)從第j分鐘開始(j從O到59);(8)判斷j是否是個位數(shù),如果不是個位數(shù),表示分鐘的字符串mm等于j,執(zhí)行SlO ;(9)表示分鐘的字符串mm等于‘0’加上j ;(10)生成文件名SQYYYYMMDDHHmm.區(qū)站號[i];(11)生成文件路徑D:\station\realtime\ 區(qū)站號[i] \YYYYMMDD\SQYYYYMMDDHHmm.區(qū)站號[i];(12)將生成的文件路徑寫入待處理文件列表LI ;(13)將j加I執(zhí)行步驟S7,直到60個文件處理完畢;(14)將i加I執(zhí)行步驟S6,直到106個驗潮站處理完畢。
權(quán)利要求
1.一種基于實時數(shù)據(jù)文件的潮位警戒方法,其特征在于,包括以下步驟 51.初始化,完成關(guān)鍵參數(shù)和任務(wù)處理線程的初始化,主要包括以下內(nèi)容 初始化驗潮站基本信息數(shù)組Arr,待處理文件鏈表LI,在處理文件鏈表L2,定時器Tl和計時器T2,驗潮站區(qū)站號CC,測量時間DT,潮位值WL,并啟動任務(wù)處理線程; 52.待處理任務(wù)生成,通過Tl與T2配合,T2在每個小時的一個或幾個指定時刻進入中斷狀態(tài),通過文件命名算法計算出下一個時間段內(nèi)應(yīng)生成的一批實時數(shù)據(jù)文件名稱,結(jié)合實時數(shù)據(jù)文件存儲目錄生成一批完整的文件存儲路徑,并寫入LI ; 53.任務(wù)處理,在任務(wù)處理線程中循環(huán)執(zhí)行。具體如下 531.在處理任務(wù)生成,因LI是動態(tài)寫入的,需將LI的數(shù)據(jù)項復(fù)制到L2進行處理; 532.文件到達檢測,提取L2中的第i個數(shù)據(jù)項,檢查文件是否已經(jīng)到達,如果文件未到達,判斷文件是否已超時,如果超時執(zhí)行步驟S35,如果未超時執(zhí)行步驟S36 ; 533.文件狀態(tài)檢測,判斷文件是否寫入完畢,未完成則等待文件寫入完成; 534.文件解析,從文件名稱和內(nèi)容中提取出驗潮站的區(qū)站號及測量時間和潮位值,分別賦值給CC,DT和WL ; 535.警戒潮位值判斷,用CC與Arr中每個數(shù)據(jù)項中的區(qū)站號進行比較,找到Arr中區(qū)站號與CC相同的數(shù)據(jù)項,將WL與該數(shù)據(jù)項的警戒潮位值進行比較,記錄WL達到的警戒值的級別,如果WL未達到警戒值,執(zhí)行步驟S35 ; 536.告警顯示,從Arr當(dāng)前數(shù)據(jù)項中讀取驗潮站的名稱,與WL、DT的值一起輸出到軟件界面上的對應(yīng)的警戒級別站點列表中,同時在地圖上顯示; 537.待處理任務(wù)清除,則將LI中與當(dāng)前文件對應(yīng)的數(shù)據(jù)項刪除; 538.將i加I執(zhí)行步驟S32,直到所有數(shù)據(jù)項處理完畢; 539.在處理任務(wù)清除,則將L2中所有數(shù)據(jù)項刪除,執(zhí)行步驟S31。
2.根據(jù)權(quán)利要求1所述的基于實時數(shù)據(jù)文件的潮位警戒方法,其特征還在于S2中的文件命名算法,即根據(jù)實時數(shù)據(jù)文件的命名規(guī)則,組合實時數(shù)據(jù)文件的標(biāo)志字符串以及年月日時分時間信息和驗潮站區(qū)站號三項構(gòu)成要素,生成完整的文件名稱,并結(jié)合實時數(shù)據(jù)文件存儲目錄規(guī)則,最終生成完整的文件路徑信息。
全文摘要
一種基于實時數(shù)據(jù)文件的潮位警戒方法。利用海洋觀測網(wǎng)產(chǎn)生的實時數(shù)據(jù)文件,可以解析出驗潮站的實時潮位值,開展多站點的潮位監(jiān)視警戒工作。但是實時數(shù)據(jù)文件存在文件數(shù)量多、到達頻次高的特點,難以對文件到達情況進行實時檢測。針對上述問題,本發(fā)明首先通過文件命名算法預(yù)先生成待處理的實時數(shù)據(jù)文件的路徑信息,然后對待處理的文件進行到達情況和寫入完成狀態(tài)檢測,最后從新到的文件中提取出實測潮位值,判斷警戒級別,并將達到警戒潮位值的驗潮站的名稱、實測潮位等信息輸出到軟件界面上的對應(yīng)級別的警戒站點列表中。
文檔編號G06F17/30GK102999567SQ20121044464
公開日2013年3月27日 申請日期2012年11月9日 優(yōu)先權(quán)日2012年11月9日
發(fā)明者李占斌, 張文, 華彥寧, 劉克 申請人:國家海洋信息中心