?

非“十五”前兆數據轉換方案的研究與應用*

2013-12-14 09:30王小娟牛延平王建軍
地震研究 2013年3期
關鍵詞:前兆臺網應用程序

田 野,郝 臻,王小娟,牛延平,王建軍,2

0 引言

中國地震前兆臺網作為我國目前規模最大的地震前兆監測臺網,涉及多項學科,是國內地震前兆數據共享服務的主要數據來源 (周克昌等,2009;楊滿棟等,2000)。中國地震前兆數據管理系統實現了地震前兆數據的逐級自動采集、交換、匯集以及野外觀測儀器的網絡化控制,為前兆臺網統一規范的運行、觀測數據的整合與數據共享服務提供了可靠的技術支撐平臺。

“十五”前兆數字地震觀測網絡工程項目和“九五”并網改造工程的建設及運行,使各省前兆臺網的大多數數字地震監測儀器接入地震局行業網,大大簡化了區域臺網維護的復雜度,為觀測數據的管理和科學共享提供了極大便利。然而,部分觀測儀器不能并網接入“十五”前兆臺網的現象依然普遍存在,并且隨著地震前兆理論研究和探測方法的不斷進步,多種結構各異、類型繁多的前兆數據將源源不斷地產生,這都對“十五”前兆數據管理系統的適用性和穩定性提出了新的挑戰。

本文介紹了一種新的數據轉換的實施方案,旨在解決目前存在的部分前兆儀器不能并入“十五”前兆數據管理系統,以及該類儀器產出的數據無法自動入庫的問題,并對該實施方案的運行情況及存在的問題進行了分析和展望。

1 運行現狀

“十五”前兆臺網充分利用計算機通信技術,將前兆數據系統部署在網絡上,通過基于web的采集管理軟件和數據處理軟件,實現了前兆數據的統一管理及數據資源的共享和開放?!笆濉鼻罢着_網信息系統的數據傳控流程如圖1所示 (馬文娟等,2010;黃暉,2008)。相對于早期的前兆系統,“十五”前兆數據網絡通過以太網、采用基于TCP/IP協議的SOCKET連接的前兆臺網專用設備與客戶端進行數據信息交換 (中國地震局,2005a,b),其傳輸模式有著明顯的優勢,它使觀測數據的傳輸和管理更加高效、安全、便捷,這種模式是信息網絡化的必然要求。

圖1 “十五”數據傳控流程圖Fig.1 The flow chart of data transmission and control for“Tenth Five-Years”data

甘肅省地震局前兆臺網目前仍存在部分非“十五”標準 (以下簡稱“非標”)儀器,其數據格式與數據傳輸等技術指標無法與“十五”前兆數據管理系統兼容,只能由人工完成數據轉換及傳輸等工作,效率低且成本高,安全性和可靠性差。因此將非標數據自動納入“十五”前兆數據管理系統已成當務之急。

在不更改“十五”模式的運行流程且不影響前兆數據傳輸穩定性的前提下,較為合理的解決方案主要有兩種:①硬件策略。使用前兆儀器協議轉換器等硬件設備完成,其功能在于將“十五”系統所發送的通信規程指令信息和其他通信信息進行雙向解析,實現對非標數據的訪問、采集和儀器控制等功能。該方案需要在應用程序服務器端或前兆儀器端增加新的協議轉換設備 (王秀英等,2004;何案華等,2008);②軟件策略。開發“十五”數據轉換專用軟件,在數據采集后和入庫前,根據相關通信協議完成數據格式的標準化轉換。該方案只需在應用程序服務器端部署數據轉換軟件即可 (王軍等,2008;崔慧敏等,2004)。

硬件策略存在實現和部署成本過高等缺點;而軟件策略具有低成本、方便部署、靈活且易修改等優點。因此本工作采用軟件策略完成非標數據并入“十五”前兆數據管理系統的任務。

2 實施方案

非標數據在采集后,以文本文件的形式存儲于原始數據服務器中,作為輸入數據參與數據轉換軟件的處理;部署于應用程序服務器上的數據轉換軟件負責輸出“十五”標準格式的數據文件,并將輸出文件上傳至“十五”前兆數據管理系統服務器中以備入庫。整體處理過程如圖2所示。

圖2 非標準數據到標準數據的轉換處理過程Fig.2 Transform process from the non-standard data to the“Tenth Five-Years”standard one

2.1 數據同步

如圖2所示,數據文件的傳輸涉及到3臺服務器間的文件同步問題,分別是應用程序服務器與原始數據服務器間、“十五”管理系統服務器與應用程序服務器間的數據通訊。文件同步是數據轉換軟件獲得即時輸入文件、生成輸出文件并及時入庫的前提。

鑒于服務器的操作系統各異 (原始數據服務器和應用程序服務器均為Windows,前兆數據管理系統服務器是Suse Linux),因此考慮使用Rsync作為服務器間文件同步的工具。Linux操作系統中自動集成了 Rsync,而在 Windows平臺上則部署cwRsync軟件來實現服務器之間的數據文件同步。

2.2 轉換流程設計

研究工作的主要環節為將非標數據格式轉換為“十五”前兆數據管理系統兼容的標準數據格式,考慮到軟件的靈活性和擴展性,數據轉換軟件應具備以下幾個特征:

(1)數據轉換軟件的運行只與邏輯流程有關,和需要轉換的數據及其格式無關;

(2)軟件可以適應需要轉換的數據類型的增加、刪除、修改等變更操作;

(3)數據格式轉換算法與軟件的編譯運行相互獨立,算法不會影響軟件運行的穩定性。

圖3 數據轉換方案工作流程圖Fig.3 The working flow chart of data transformation scheme

圖3 顯示了轉換軟件在應用程序服務器中的工作流程,該工作流程以上述特征為設計前提,其中數據轉換算法由用戶根據原始數據和標準數據的格式設計,以函數的形式組織編寫。數據轉換軟件具有編譯數據轉換算法和執行數據轉換兩個主要作用。前者將算法編譯為程序可識別的入口文件備用;后者通過數據監聽模塊獲知原始數據的接收狀況,并通知數據分揀模塊實時獲得原始數據。程序根據原始數據的類型選擇對應的算法程序入口文件,之后運行轉換功能將其保存為標準格式的數據,最后通過數據上傳模塊將轉換后的標準數據上傳到“十五”前兆數據管理系統服務器以備其他程序使用。

考慮到文件傳輸的安全性,上述流程中的數據監聽、數據分揀和數據上傳模塊均由數據文件同步完成。

2.3 動態編譯與執行

在具體實施中引入動態編譯技術以實現轉換流程所要求的3個特征。動態編譯技術允許在程序運行時加入額外的編譯信息以完成特定功能 (崔慧敏等,2004),其優點在于減少了程序主體的體積,并且增強了程序的可擴展性;但另一方面,該技術也增加了程序框架的邏輯復雜度,使系統運行效能有所降低,并且對程序的內存管理提出較高要求。

程序框架采用Microsoft Visual Studio的.Net Framework開發平臺完成,.Net在System.CodeDom.Compiler命名空間中封裝了各種支持指定編程語言源代碼的生成和編譯管理的類與接口,這些類與接口提供了實現動態編譯功能的方法。數據轉換軟件的動態編譯與執行的運行框架如圖4所示。程序在運行時,首先檢測轉換算法是否存在變更,如果存在變更,則利用編譯模塊將以文件形式存在的數據轉換算法動態編譯為動態鏈接庫 (dll)文件;之后程序的執行模塊將dll文件加載到新開辟的應用程序域中,利用反射機制,遠程調用dll文件提供的數據轉換算法,輸入原始數據完成數據轉換工作,最后銷毀新的應用程序域及其內存占用。這種設計有效改進了動態編譯在運行效率和內存管理等方面的不足。

圖4 動態編譯與執行的運行框架Fig.4 The operating framework of dynamic compilation and execution

2.4 技術實現

動態編譯與執行的運行框架提供了程序中算法編譯和數據轉換模塊的運行邏輯,其具體步驟如下:

(1)構建數據轉換代碼。獲取所有數據轉換算法的代碼,生成包含完整命名空間以及轉換算法類的代碼文件。

(2)編譯代碼文件。.Net的CSharpCodeProvider類提供動態編譯功能,利用該類的CompileAssemblyFromSource方法編譯第1步得到的代碼文件,生成唯一的轉換算法類的動態鏈接庫,保存到程序指定目錄。

(3)創建遠程訪問類和跨程序應用域調用的接口。新建繼承于遠程訪問類MarshalByRefObject的子類RemoteInvoker,實現其創建遠程訪問程序應用域的功能;新建接口IRemoteInf,實現其跨應用程序域調用方法,用于執行指定的算法函數。

(4)開辟新的應用程序域。利用AppDomain類的CreateDomain方法生成一個新的可管理的應用程序域appDom,以下的步驟皆在此空間中運行。

(5)加載數據轉換代碼。利用應用程序域類AppDomain的方法CreateInstance的創建RemoteInvoker的一個實例,并加載轉換算法的動態鏈接庫。

(6)調用數據轉換功能。利用第5步的實例,實現接口IRemoteInf調用函數的功能,完成數據轉換。該步驟使用反射機制,從當前應用程序域遠程調用appDom域中的相關功能。

在上述步驟中,第1、2步只在新建或者更新數據轉換算法時執行;第3、4步的作用為在主程序應用域之外創建新的應用域空間,用于管理內存中動態執行的數據轉換功能,并為主程序提供了跨程序域調用的方法;第5、6步在執行轉換時將生成的動態鏈接庫加載到內存中的指定應用程序域中,利用反射調用需要的轉換方法。結合圖3可以看出,轉換算法是以類似于插件的形式參與到程序的運行中的,更新、增加算法只需要對動態鏈接庫文件進行相關操作即可,無需改動程序,保證了算法和轉換程序之間的獨立性。

具體編碼實現如下:

//創建編譯參數實例,加載引用、設置動態鏈接庫輸出路徑,arithmeticName代表算法名稱

CSharpCodeProvider objCompPara=new CSharp-CodeProvider();

objCompPara.ReferencedAssemblies.Add("System.dll");

objCompParaOutputAssembly="arithmetic Name.dll";

//創建 CSharpCodePrivoder對象 cp,source-Code為代碼文件 (實現步驟2)

CSharpCodeProvider cp=new CSharpCodeProvider();

cp.CompileAssemblyFromSource(objCompPara,sourceCode);

//創建應用程序域 (實現步驟4),名稱為DataTransformation

AppDomain appDom=AppDomain.CreateDomain("DataTransformation",null,objSetup);

//創建遠程訪問類對象ri,RemoteInvoker繼承自MarshalByRefObject(實現步驟5)

RemoteInvoker ri=(RemoteInvoker)appDom.CreateInstance("RemoteInvoke","RemoteInvoke.RemoteInvoker").Unwrap();

//加載動態鏈接庫,加載轉換算法類 (實現步驟5)

object obj=ri.Create("arithmeticName.dll","DynComp.DataTransformation",null);

//調用轉換算法 (實現步驟6),objArithmeticParams為算法所需的輸入參數

IRemoteInf iri=(IRemoteInf)obj;

iri.Invoke("arithmeticName",objArithmetic Params);

3 實施結果

目前甘肅省前兆臺網共有17臺 (套)儀器產出的非標數據使用本文的數據轉換方案進行處理。以ZKGD-3000型中科流體儀水溫數據為例,表1和表2分別列出了其原始數據格式和轉換后的“十五”標準數據格式。數據轉換軟件中的算法根據此格式編寫,處理后的數據已經完全符合“十五”標準。

在數據轉換前,將每臺ZKGD-3000型中科流體儀以非在線儀器的形式添加到“十五”管理系統中,它們各自具有唯一的儀器ID標識。之后運行數據轉換軟件實現非標數據的自動轉換及入庫。

表1 ZKGD-3000水溫原始數據格式Tab.1 The original data format of the underground water temperature recorded by the ZKGD-3000 instrument

表2 ZKGD-3000“十五”標準水溫數據格式Tab.2 The data format of the underground water temperature in“Tenth Five-Year”recorded by the ZKGD -3000 instrument

4 總結與討論

本研究工作以非標儀器的數據轉換入庫為出發點,在總結歸納“十五”前兆臺網運行流程的基礎上,開展相關數據轉換實施方案的工作。處理對象可以涵蓋各類非標儀器的地震前兆觀測數據。數據轉換方案具有一定的拓展前景,同時也有不足之處,有待在今后的研究工作中進一步完善和改進。

(1)數據的完整性和一致性校驗

完整性和一致性校驗是數據轉換的后續工作,是轉換后數據的準確性和可靠性的保證。數據校驗可在數據轉換后、上傳前完成,數據若通過完整性和一致性校驗則正常上傳,否則重新實施轉換。數據校驗涉及到具體的數據內容和格式,因此亦可采用動態編譯的方式實現。

(2)數據預處理

實施方案設計的數據轉換軟件,對處理算法采用了類似于插件的運行模式,所以對數據對象和處理方法都具有較高的兼容性。各種數據對象的處理算法經過適當改寫,都可運行于軟件中。因此本工作研發的數據轉換軟件,除了實現數據轉換的功能以外,還可向多種數據預處理功能拓展,包括異常值識別、儀器工作日志信息提取、文件格式轉換等。

(3)儀器控制功能

數據轉換方案的實現首先必須依賴于儀器產出的原始數據已正確傳輸至數據服務器,而部分儀器必須由客戶端向其發送指令,才會傳輸數據。這導致數據轉換工作的自動化流程受到該操作延遲的影響,因此有必要研究儀器客戶端的數據采集接口或命令,并將其集成于數據轉換軟件中以實現儀器自動控制功能。

崔慧敏,戴桂蘭,王生原,等.2004.動態編譯技術研究[J].計算機科學,31(7):113-117.

何案華,趙剛,王軍,等.2008.串口前兆儀器的因特網接入方案與配套軟件開發[J].地震研究,31(3):279-283.

黃暉.2008.“十五”前兆觀測模式之嬗變及其應對[J].華南地震,28(2):103-107.

馬文娟,何案華,曹開,等.2010.“九五”前兆儀器與“十五”前兆管理系統的整合[J].地震研究,33(4):361 -364.

王軍,趙剛,何案華,等.2008.“九五”前兆臺站與“十五”前兆臺網的整合研究[J].大地測量與地球動力學,28(4):125-130.

王秀英,周振安,牛從達,等.2004.高精度數據采集器網絡通訊功能的實現[J].地震研究,27(2):203-207.

楊滿棟,李閩峰,姜立新,等.2000.中國地震前兆臺網中心數據信息網絡服務系統[J].地震,20(增刊):211-216.

中國地震局.2005a.中國地震前兆臺網技術規程[M].北京:地震出版社.

中國地震局.2005b.中國地震信息服務系統技術規程[M].北京:地震出版社.

周克昌,張崇立,紀壽文,等.2009.中國地震前兆臺網主要問題探討[J].地震地磁觀測與研究,30(1):76 -80.

猜你喜歡
前兆臺網應用程序
地球物理臺網儀器維修信息管理的研究與實現
論春秋時期天命觀的變遷及其新標準
刪除Win10中自帶的應用程序
谷歌禁止加密貨幣應用程序
九江臺前兆儀器監控軟件
騰沖地電場震前的前兆異常分析
瀾滄江流域小灣、糯扎渡水庫地震臺網震級完備性初探
三星電子將開設應用程序下載商店
微軟軟件商店開始接受應用程序
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合