梁阿全,梁躍,馬寶君,李太巖,高雙玲
(黑龍江地震局牡丹江地震臺(tái),黑龍江牡丹江 157009)
應(yīng)用EXCEL VBA實(shí)現(xiàn)地震目錄格式的轉(zhuǎn)換
梁阿全,梁躍,馬寶君,李太巖,高雙玲
(黑龍江地震局牡丹江地震臺(tái),黑龍江牡丹江 157009)
地震目錄是地震學(xué)中基礎(chǔ)資料。從相關(guān)網(wǎng)站下載的地震目錄在進(jìn)行地震分析預(yù)測(cè)研究之前,需要轉(zhuǎn)換為相應(yīng)的格式,以往這項(xiàng)工作都是人工完成,工作量大而且容易出錯(cuò)。以Excel VBA宏語(yǔ)言為工具,實(shí)現(xiàn)下載目錄與地震分析預(yù)測(cè)目錄之間自動(dòng)轉(zhuǎn)換,為進(jìn)一步的科學(xué)研究提供詳實(shí)可靠的基礎(chǔ)資料。
Excel VBA;地震目錄;格式轉(zhuǎn)換
地震目錄是地震學(xué)中最基礎(chǔ)的產(chǎn)出資料,在地震活動(dòng)性研究、地震預(yù)測(cè)研究、地震危險(xiǎn)性分析和震害損失預(yù)測(cè)研究中被廣泛使用;同時(shí)還是編制地震烈度區(qū)劃圖的主要信息源及國(guó)家經(jīng)濟(jì)建設(shè)和國(guó)土開(kāi)發(fā)的重要資料。因此準(zhǔn)確、及時(shí)和完整地獲取地震目錄對(duì)地震科研人員以及防震減災(zāi)、城建規(guī)劃至關(guān)重要[1]。
直接的地震目錄一般為*.xlsx、*.txt格式,而地震預(yù)測(cè)研究人員使用Mapsis軟件對(duì)地震數(shù)據(jù)分析時(shí)多為*.wkf、*eqt、*.Q01等格式,常常需要進(jìn)行手動(dòng)鍵入和人工校對(duì),工作繁重、耗時(shí)費(fèi)力,而且手動(dòng)輸入非常容易出現(xiàn)錯(cuò)誤。本文以Excel VBA宏語(yǔ)言為工具,實(shí)現(xiàn)下載目錄與地震分析預(yù)測(cè)目錄之間自動(dòng)轉(zhuǎn)換,為進(jìn)一步的科學(xué)研究提供詳實(shí)可靠的基礎(chǔ)資料。
Visual Basic for Applications(簡(jiǎn)稱(chēng)VBA)是新一代標(biāo)準(zhǔn)宏語(yǔ)言,是基于Visual Basic for Windows
發(fā)展而來(lái)的。VBA 提供了面向?qū)ο蟮某绦蛟O(shè)計(jì)方法和相當(dāng)完整的程序設(shè)計(jì)語(yǔ)言, 易于學(xué)習(xí)掌握,可以使用宏記錄器記錄用戶(hù)的各種操作并將其轉(zhuǎn)換為VBA程序代碼。這樣用戶(hù)可以容易地將日常工作轉(zhuǎn)換為VBA程序代碼,使工作自動(dòng)化。
1.1 地震目錄來(lái)源及格式
目前,可從網(wǎng)絡(luò)檢索地震目錄,如中國(guó)地震臺(tái)網(wǎng)中心(CENC)地震數(shù)據(jù)管理與服務(wù)系統(tǒng)(http://www.csndmc.ac.cn/newweb/data.htm)及國(guó)家地震科學(xué)數(shù)據(jù)共享中心(http://data.earthquake.cn/data/),美國(guó)地震調(diào)查局(http://earthquake.usgs.gov/)等;另外地震工作中經(jīng)常使用的格式還有*.wkf,*.Q01,*eqt,*x01,*.C01等等。限于篇幅本文只介紹幾種常見(jiàn)的地震目錄格式(表1~表4)。
表1 中國(guó)地震臺(tái)網(wǎng)中心(CENC)地震目錄格式
表2 國(guó)家地震科學(xué)數(shù)據(jù)共享中心地震目錄格式
表3 Wkf文件地震目錄格式
表4 Q01文件地震目錄格式
1.2 格式對(duì)比分析
1.2.1 目錄格式對(duì)比
臺(tái)網(wǎng)中心目錄:*.xlsx格式,時(shí)間保存到秒(保留小數(shù)后1位),經(jīng)度和緯度以度表示(保留小數(shù)后2位),采用Ms、Ms7、ML、mb、mB震級(jí)。
數(shù)據(jù)共享中心目錄:*.xlsx格式,時(shí)間保存到秒(保留小數(shù)后1位),經(jīng)度和緯度以度表示(保留小數(shù)后2位),采用Ms震級(jí)。
*wkf格式:文本格式,時(shí)間保存到分,經(jīng)度和緯度以度分為單位,采用Ms震級(jí)。
*.Q01格式:文本格式,時(shí)間保存到秒(保留小數(shù)后1位)比*.wkf精度高(wkf保存到分),經(jīng)度和緯度以度分為單位,與*.wkf的經(jīng)度相同,采用ML、Ms震級(jí)。
1.2.2 目錄格式分析
(1)轉(zhuǎn)換前后的地震目錄字段先后順序不一樣,需要重新排序;
(2)轉(zhuǎn)換前后經(jīng)緯度單位不同,需要化度為分;
(3)深度、附加等字段計(jì)數(shù)位數(shù)不同,不足以0補(bǔ)齊,字段間以“,”間隔開(kāi)來(lái);
(4)各種震級(jí)如Ms、ML的適用情況不同,根據(jù)不同需要,采用經(jīng)驗(yàn)公式對(duì)其轉(zhuǎn)換[2-8]:
Ms=1.13ML-1.08; 1.21=0.80mB-0.60Ms
另外,網(wǎng)絡(luò)下載的地震目錄有單元格缺失的情況,程序轉(zhuǎn)換中以0補(bǔ)位進(jìn)行處理。
通過(guò)VBA程序,將中國(guó)地震臺(tái)網(wǎng)中心、地震數(shù)據(jù)共享中心等網(wǎng)站下載的目錄轉(zhuǎn)換為分析預(yù)報(bào)軟件mapsis可以使用目錄格式,實(shí)現(xiàn)從*.xlsx、*.Q01、*eqt等至*.wkf格式之間的轉(zhuǎn)換。
轉(zhuǎn)換后統(tǒng)一使用文本格式,保留年、月日、經(jīng)緯度、震級(jí)等信息,時(shí)間保存到分,經(jīng)緯度以度分為單位,以北緯為正、南緯為負(fù);東經(jīng)為正、西經(jīng)為負(fù),采用Ms震級(jí)。
Subtest()
Dimi,j,kAsInteger
Worksheets("sheet1").Activate
Fori=Sheet1.[a65535].End(xlUp).RowTo1Step-1
IfSheet1.Cells(i, 5) = ""Then
Sheet1.Rows(i& ":" &i).DeleteShift:=xlUp
EndIf
Next
Forj= 1Toi
Sheets("list").Cells(j, "a") =Left(Sheet1.Cells(j, "a"), 4) '年
Sheets("list").Cells(j, "b") =Mid(Sheet1.Cells(j, "a"), 6, 2) &Mid(Sheet1.Cells(j, "a"), 9, 2)
Sheets("list").Cells(j, "c") =Mid(Sheet1.Cells(j, "a"), 12, 2) '小時(shí)
Sheets("list").Cells(j, "d") =Mid(Sheet1.Cells(j, "a"), 15, 2)
Next
……
Sheets("list").Range("a1")="年"
Sheets("list").Range("b1")="月日"
Sheets("list").Range("c1")="小時(shí)"
Sheets("list").Range("d1")="分鐘"
Sheets("list").Range("e1")="緯度"
Sheets("list").Range("f1")="經(jīng)度"
Sheets("list").Range("g1")="震級(jí)"
Sheets("list").Range("h1")="深度"
Sheets("list").Rows(1).Select
WithSelection
.Font.Bold=True′加粗
.Font.Name="arial" ′字體
.Font.Size=11 ′字號(hào)
.HorizontalAlignment=xlLeft′居中
EndWith
……
EndSub
使用VBA代碼以O(shè)ffiice2007為例。
單機(jī)左上角【Office圖標(biāo)】-【Excel選項(xiàng)】-【信任中心】-【信任中心設(shè)置】-【宏設(shè)置】-【啟用所有宏】-單機(jī)確定-宏命令的啟動(dòng)。如圖1所示。
圖1 宏命令設(shè)置界面
啟動(dòng)宏命令后,用戶(hù)可以使用如下多種方法打開(kāi)VBE窗口(圖2):
(1)按
(2)單擊菜單欄【開(kāi)發(fā)工具】選項(xiàng)卡的【VisualBasic】按鈕;
(3)如果VBE窗口已經(jīng)處于打開(kāi)狀態(tài),多次按
(4)在當(dāng)前工作表標(biāo)簽上單擊鼠標(biāo)右鍵,在彈出的快捷菜單中選擇【查看代碼】命令。
圖2 代碼編輯窗口界面
單擊【運(yùn)行】-【運(yùn)行子過(guò)程/用戶(hù)窗體】或者使用快捷鍵【F5】運(yùn)行代碼,結(jié)果如圖2。
目前,VBA轉(zhuǎn)換程序已在牡丹江地震臺(tái)開(kāi)展使用,使用者可以根據(jù)研究需要,從網(wǎng)站下載地震目錄進(jìn)行轉(zhuǎn)換。該方法無(wú)需安裝軟件,操作簡(jiǎn)單,便于地震預(yù)測(cè)研究人員開(kāi)展后續(xù)工作。通過(guò)一段時(shí)間實(shí)踐,逐步完善其功能后進(jìn)一步向其他臺(tái)站推廣。
VBA的好處在于與Excel緊密結(jié)合在一起,增強(qiáng)了Excel的靈活性,使用ExcelVBA對(duì)地震目錄格式進(jìn)行自動(dòng)轉(zhuǎn)換,避免了大量數(shù)據(jù)的手動(dòng)修改和人工校對(duì),便捷快速,大大提高了工作效率。
本文選取VBA作為工具實(shí)現(xiàn)對(duì)地震目錄的轉(zhuǎn)換是基于以下幾點(diǎn)考慮:
VBA代碼開(kāi)放,簡(jiǎn)單易操作,使用者針對(duì)不同的功能略做修改即可。VBA是一門(mén)內(nèi)置于Office中的語(yǔ)言,無(wú)需安裝,只要電腦中已裝備了Office,就可以運(yùn)行VBA編程平臺(tái)了。
VBA架構(gòu)簡(jiǎn)單,實(shí)用高效,便于推廣。目前常見(jiàn)的Java、C++等則是更為高級(jí)的語(yǔ)言了,他們都屬于結(jié)構(gòu)化的面向?qū)ο蟮恼Z(yǔ)言,它的重點(diǎn)在于算法與數(shù)據(jù)結(jié)構(gòu),一般作為底層架構(gòu)來(lái)開(kāi)發(fā)大型程序。地震目錄無(wú)論是*.xlsx還是*.txt都是文本格式的,算法和運(yùn)算相對(duì)簡(jiǎn)單,用VBA即可方便實(shí)現(xiàn)功能需求。
VBA編程語(yǔ)言適用于數(shù)據(jù)量不大的工作范圍。當(dāng)數(shù)據(jù)量過(guò)大的時(shí)候,如超過(guò)10 000條記錄時(shí),Excel的查詢(xún)和計(jì)算速度會(huì)明顯下降,這時(shí)候就要建議考慮選用數(shù)據(jù)庫(kù)產(chǎn)品;另外ExcelVBA無(wú)法像數(shù)據(jù)庫(kù)一樣實(shí)現(xiàn)多用戶(hù)管理等等。
總體上Excel適合于開(kāi)發(fā)單機(jī)版、訪問(wèn)量與開(kāi)發(fā)維護(hù)量都不是很大、對(duì)數(shù)據(jù)有分析建模功能的應(yīng)用程序。當(dāng)然,使用ExcelVBA作為開(kāi)發(fā)工具還有一個(gè)巨大的優(yōu)勢(shì)就在于用戶(hù)群廣大,可以大大縮短學(xué)習(xí)周期,通過(guò)VBA對(duì)地震目錄進(jìn)行批量轉(zhuǎn)換,簡(jiǎn)單快捷,提高工作效率,保證數(shù)據(jù)質(zhì)量。
地震目錄轉(zhuǎn)換僅僅是地震目錄資料應(yīng)用的第一步,未來(lái)將深入研究ExcelVBA與其他語(yǔ)言及應(yīng)用平臺(tái)上的融合與功能擴(kuò)展,推動(dòng)程序更加智能化和自動(dòng)化。
[1] 陸遠(yuǎn)忠,李勝樂(lè),鄧志輝.基于GIS的地震分析預(yù)報(bào)系統(tǒng)[M].成都:成都地圖出版社,2002:169-172.
[2] 劉瑞豐,陳運(yùn)泰,任梟,等.中國(guó)地震臺(tái)網(wǎng)震級(jí)的對(duì)比[M].地震學(xué)報(bào),2007 29(5):467-476.
[3] 張衛(wèi)華,李勝樂(lè).地震目錄資料自動(dòng)搜索、下載軟件的實(shí)現(xiàn)[J].地震,2007.27(1):131-141.
[4] 劉麗芳.云南地區(qū)地震目錄最小完整性震級(jí)研究術(shù)[J].地震研究,2012.35(4):491-499.
[5] 馬寶君.地震目錄快速轉(zhuǎn)換軟件[J].地震地磁觀測(cè)與研究,2005.26(3):87-90.
[6] 吳娟,于笑非.遼寧省地震局目錄數(shù)據(jù)格式的轉(zhuǎn)換[J].北京:東北地震研究,2003.19(3):77-80.
[7]Excelhome編著.ExcelVBA實(shí)戰(zhàn)技巧精粹[J].人民郵電出版社,2013:1-8.
[8] 國(guó)家地震局震害防御司.地震工作手冊(cè)[M].北京:地震出版社,1990:129.
CONVERSION OF EARTHQUAKE CATALOG FORMAT BY APPLICATION OF VBA EXCEL
LIANG Aquan,LIANG Yue,MA Baojun,LI Taiyan,GAO Shuangling
(MudanjiangSeismicStation,EarthquakeAdministrationOfHeilongjiangProvince,Mudanjiang157009,China)
Earthquake catalogue is basic data in seismology.Before the analysis of earthquake prediction research,the earthquake catalog downloaded from relevant websites need to be converted to the corresponding format.This work is usually done manually, and this has heavy management working load and more mistakes.To Excel VBA macro language as the tool, download directory and automatic conversion between analysis and prediction of earthquake catalogue,in order to further scientific research to provide the basis of detailed and reliable data.
VBA Excel;Earthquake catalog;Format conversion
2016-04-28
黑龍江省地震局一般性課題(項(xiàng)目編號(hào):201601)資助。
梁阿全(1981— ),男,黑龍江牡丹江人,工程師,主要從事地震監(jiān)測(cè)工作。E-mail:43326298@qq.com。
P315-39
A
1005-586X(2016)04-0059-05