崔 仁,孟兆敏,譚巧林,邵長高
(1.國土資源部海底礦產(chǎn)資源重點實驗室 廣州海洋地質(zhì)調(diào)查局,廣東 廣州 510075;
2.上海工程技術(shù)大學,上海 201620;3.廣東省地質(zhì)測繪院,廣東 廣州 510800)
BSR測線導航數(shù)據(jù)入庫接口模型的設(shè)計與實現(xiàn)
崔 仁1,孟兆敏2,譚巧林3,邵長高1
(1.國土資源部海底礦產(chǎn)資源重點實驗室 廣州海洋地質(zhì)調(diào)查局,廣東 廣州 510075;
2.上海工程技術(shù)大學,上海 201620;3.廣東省地質(zhì)測繪院,廣東 廣州 510800)
BSR測線導航數(shù)據(jù)通常以單個文件形式進行管理,數(shù)據(jù)的檢索查詢需手工進行,管理復雜且易出錯。采用數(shù)據(jù)庫形式對單個BSR測線導航數(shù)據(jù)進行管理,設(shè)計了BSR測線導航數(shù)據(jù)入庫接口模型,并在VB環(huán)境下開發(fā)了該模型。模型包含BSR測線導航數(shù)據(jù)庫結(jié)構(gòu)、數(shù)據(jù)索引方式和導航數(shù)據(jù)入庫方法。模型對BSR測線導航數(shù)據(jù)進行了統(tǒng)一管理,提高了數(shù)據(jù)管理的效率,改善了數(shù)據(jù)索引機制;同時整合的測線導航數(shù)據(jù)也為未來測線規(guī)劃提供了基礎(chǔ),特別是在海洋地質(zhì)調(diào)查等數(shù)據(jù)量大的領(lǐng)域,可以較快的運算速度提取所需數(shù)據(jù)。
海洋地質(zhì)調(diào)查;似海底反射波;導航數(shù)據(jù);數(shù)據(jù)庫
天然氣水合物作為最有可能替代石油的下一代清潔能源,其研究越來越受重視[1-3]。2013年我國在南海鉆獲了高純度的天然氣水合物,為我國的商業(yè)化開采奠定了基礎(chǔ)。近年來,國家對天然氣水合物的調(diào)查產(chǎn)生了海量數(shù)據(jù),如何有效、安全地管理這些數(shù)據(jù)資料成為亟待解決的問題。BSR指含水合物的地層在地震反射剖面上常常會出現(xiàn)一強振幅的連續(xù)反射波,大致與海底反射波平行,故又稱似海底反射波[1]。研究表明,BSR是目前天然氣水合物識別的重要標志之一[4-7]。海洋地質(zhì)調(diào)查獲取的BSR測線導航數(shù)據(jù)通常以單個文件形式進行管理,需手工進行數(shù)據(jù)檢索與查詢,管理復雜且易出錯;目前工作中尚無有效方式管理全部的BSR測線導航數(shù)據(jù)。本文提出了采用數(shù)據(jù)庫形式管理單個BSR測線導航數(shù)據(jù)的方法;設(shè)計了BSR測線導航數(shù)據(jù)的數(shù)據(jù)接口模型;并在VB環(huán)境下實現(xiàn)了BSR測線導航數(shù)據(jù)模型。模型為單條測線的索引、區(qū)域內(nèi)測線的索引以及任意屬性的索引均提供了基本性支持;同時整合的測線導航數(shù)據(jù)也為未來測線規(guī)劃提供了基礎(chǔ),特別是在海洋地質(zhì)調(diào)查等數(shù)據(jù)量大的領(lǐng)域,可以較快的運算速度提取所需數(shù)據(jù)[5]。
1.1 數(shù)據(jù)結(jié)構(gòu)
本文將BSR測線導航數(shù)據(jù)管理分為3個部分(見圖1)。①調(diào)查測線數(shù)據(jù),負責管理海上野外勘查過程中所有的測線數(shù)據(jù)信息。調(diào)查測線數(shù)據(jù)表是空間圖形數(shù)據(jù)表,包含數(shù)據(jù)集編號、工區(qū)編號、測線編號、測線長度、調(diào)查類別、起始日期、結(jié)束日期、起始經(jīng)度、起始緯度、終止經(jīng)度、終止緯度、起始點號、終止點號、調(diào)查比例、導航數(shù)據(jù)文件、數(shù)據(jù)文件路徑、坐標系統(tǒng)等。②BSR測線信息,負責管理有BSR剖面圖像測線段的基本信息,是對調(diào)查測線信息的延伸,即調(diào)查側(cè)線上含有BSR信息的測線段信息。其內(nèi)容包含測線編號、BSR測線號、起點經(jīng)度、起點緯度、終點經(jīng)度、終點緯度、起點炮號、終點炮號、起點CDP號、終點CDP號、平均雙程時間、平均深度、BSR類型、波形組合、弱振幅、空白帶、備注等。③導航數(shù)據(jù)信息,即野外勘查測線和BSR測線段的導航信息,主要有測線編號、炮號、經(jīng)度、緯度4個方面信息。
圖1 BSR測線導航數(shù)據(jù)總體數(shù)據(jù)結(jié)構(gòu)
1.2 數(shù)據(jù)索引
調(diào)查測線表中主鍵為測線編號,外鍵為數(shù)據(jù)集編號,數(shù)據(jù)集編號負責與整個調(diào)查項目的索引;BSR測線表中主鍵為BSR測線號,外鍵為測線編號,測線編號負責與調(diào)查測線表的索引;地震測線導航數(shù)據(jù)表主鍵為炮號,外鍵為測線編號,測線編號負責與調(diào)查測線表的索引。BSR測線表與地震測線導航數(shù)據(jù)表之間索引較為復雜,首先通過調(diào)查測線表索引出調(diào)查測線編號,然后通過起始炮號、終止炮號字段索引出地震測線導航數(shù)據(jù)表中的數(shù)據(jù)。數(shù)據(jù)集編號采用廣州海洋地質(zhì)調(diào)查通用數(shù)據(jù)集編碼規(guī)則,按“項目代碼—年份—調(diào)查船—航次”編碼,項目代碼取自廣州海洋地質(zhì)調(diào)查局數(shù)據(jù)庫的數(shù)據(jù)項目代碼表[3]。
2.1 數(shù)據(jù)入庫及獲取流程
按照BSR測線導航數(shù)據(jù)結(jié)構(gòu),本文設(shè)計了BSR測線導航數(shù)據(jù)入庫及獲取流程圖,如圖2所示。
圖2 BSR測線導航數(shù)據(jù)入庫及獲取流程圖
在數(shù)據(jù)入庫方面,調(diào)查測線信息和BSR測線信息以基本信息形式進行數(shù)據(jù)錄入或數(shù)據(jù)導入,要求信息完整,索引結(jié)構(gòu)字段主外鍵不能為空;地震測線導航數(shù)據(jù)以文件信息形式導入,先讀取導航數(shù)據(jù)的原始文件,再進行測線編號的信息填充,填充完畢后入庫。
在數(shù)據(jù)獲取中,首先讀取BSR測線信息,通過測線編號在調(diào)查測線表中進行信息索引查詢;再把BSR測線和調(diào)查測線兩個數(shù)據(jù)表信息進行關(guān)聯(lián);然后將關(guān)聯(lián)后的數(shù)據(jù)表與地震測線導航數(shù)據(jù)表數(shù)據(jù)進行索引,尋找導航測線數(shù)據(jù)表中的測線信息和炮號信息;最終形成完整的BSR測線導航數(shù)據(jù)表。
2.2 數(shù)據(jù)原始文件讀取及入庫實現(xiàn)方法
根據(jù)BSR測線導航數(shù)據(jù)入庫及獲取流程,本文設(shè)計了一個在VB環(huán)境下的數(shù)據(jù)入庫方法。其難點主要為導航數(shù)據(jù)文件的導入和數(shù)據(jù)入庫(圖3)。
圖3 導航原始文件讀取
導航數(shù)據(jù)文件解析及導入具體實現(xiàn)代碼為:
Private Sub txtLNavFile_LostFocus() '自動填充測線編號,起止點坐標,把文本讀到內(nèi)存里
On Error GoTo ErrOccurs
Dim strTmp As String
strTmp = FileChk(txtLNavFile)
If strTmp <> "" Then
txtLineID.Text = strTmp '將文件名指定為默認的測線編號
txtLFilePath.Text = txtLNavFile.Text '保存文本數(shù)據(jù)至內(nèi)存
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
Dim tsFile As TextStream
Set tsFile = fso.OpenTextFile(txtLNavFile.Text, ForReading)
Dim curLine() As String, rLine As String, iNum As Integer, eLine As Integer
Dim curShot As String, curLon As Double, curLat As Double '當前行之炮號,首尾兩點無條件保留,其余按200的間距抽稀
strLons = ""
strLats = ""
curShot = ""
iNum = -1
eLine = tsFile.Line
Do Until tsFile.AtEndOfStream
‘------原始文件讀取及空格信息處理-------------
rLine = Trim(tsFile.ReadLine)
rLine = Replace(rLine, " ", " ")
rLine = Replace(rLine, " ", " ")
rLine = Replace(rLine, " ", " ")
rLine = Replace(rLine, " ", " ")
rLine = Replace(rLine, " ", " ")
curLine = Split(rLine) '解析出的數(shù)據(jù)為(炮號,緯度,經(jīng)度)
iNum = iNum + 1
ReDim Preserve wShotID(iNum)
ReDim Preserve wLats(iNum)
ReDim Preserve wLons(iNum)
wShotID(iNum) = curLine(0)
wLats(iNum) = CLng(curLine(1) * 100) / 100
wLons(iNum) = CLng(curLine(2) * 100) / 100
If eLine Mod 200 = 1 Then '取點的行號為:1 201 401 601 ...,如果坐標有誤,則跳過
curShot = curLine(0)
curLat = DegCon(CDbl(curLine(1)))
curLon = DegCon(CDbl(curLine(2)))
If curLat >= 0 And curLat <= 90 And curLon >= 0 And curLat <= 180 Then
strLats = strLats & curLat & " "
strLons = strLons & curLon & " "
End If
End If
eLine = tsFile.Line
DoEvents
Loop
txtLSPoint.Text = wShotID(0)
txtLSLatitude.Text = wLats(0)
txtLSLongitude.Text = wLons(0)
txtLEPoint.Text = wShotID(iNum)
txtLELatitude.Text = wLats(iNum)
txtLELongitude.Text = wLons(iNum)
If curShot <> curLine(0) Then
strLats = strLats & DegCon(CDbl(curLine(1)))
strLons = strLons & DegCon(CDbl(curLine(2)))
Else
strLats = Trim(strLats)
strLons = Trim(strLons)
End If
Set fso = Nothing
tsFile.Close
Set tsFile = Nothing
Else
txtLineID.Text = ""
txtLFilePath.Text = ""
ReDim wShotID(0)
ReDim wLats(0)
ReDim wLons(0)
ReDim curLine(0)
txtLSPoint.Text = ""
txtLSLatitude.Text = ""
txtLSLongitude.Text = ""
txtLEPoint.Text = ""
txtLELatitude.Text = ""
txtLELongitude.Text = ""
End If
strPreNavFile = txtLNavFile.Text
Exit Sub
ErrOccurs:
MsgBox "所用文件不是有效的導航數(shù)據(jù)文件!", , "原始文件讀取失敗:"
End Sub
代碼通過解析導航數(shù)據(jù)文件的原始數(shù)據(jù)對數(shù)據(jù)信息進行提取,再將提取出導航坐標信息的屬性信息進行數(shù)據(jù)入庫,空間信息進行數(shù)據(jù)繪圖形成地圖點坐標信息。
2.3 坐標投影轉(zhuǎn)換
測線導航數(shù)據(jù)提取后要進行WGS84投影下經(jīng)緯度坐標與墨卡托投影的轉(zhuǎn)換。墨卡托投影正解公式為[8]:
式中,k0為原點處比例因子;θ1為墨卡托投影中第一標準緯線。
式中,E為墨卡托投影緯度坐標;a為地球半徑,單位為m;FE為經(jīng)度偏移;λ為經(jīng)度;λ0為起點經(jīng)度。
N= FN+aK0ln{tan(π/4+θ/2)[(1-esinθ)/(1+esinθ)](e/2)}式中,N為墨卡托投影經(jīng)度坐標;FN為緯度偏移;θ為測量經(jīng)度。
基于ArcEngine的坐標轉(zhuǎn)換方法可詳見參考文獻[8],墨卡托投影反解公式可詳見參考文獻[9]、[10]。
2.4 BSR測線生成
坐標轉(zhuǎn)換后,再生成數(shù)據(jù)測線,其核心代碼為:
Case "BSR測線導航" '地震測線導航
If Trim(cmbELineID.Text) = "" Then
MsgBox "測線編號不能為空,請重新輸入!"
cmbELineID.SetFocus
ElseIf Trim(txtEShotID.Text) = "" Then
MsgBox "炮號不能為空,請重新輸入!"
txtEShotID.SetFocus
Else
strObject = "select OBJECTID from sde." & strCurSeaArea & "_調(diào)查項目基本信息 "
ObjectRs.Open strObject, Conn, adOpenKeyset, adLockOptimistic
While Not ObjectRs.EOF
m = m + 1
ObjectRs.MoveNext
Wend
If m <> 0 Then
ObjectRs.MoveFirst
End If
For n = 1 To m
If ObjectRs.Fields(0).Value = "" Then
Exit For
Else: ObjectRs.MoveNext
End If
Next
ObjectRs.Close
'查詢是否有重復記錄
sqlStr = "select 測 線 編 號 , 炮 號 from sde." & strCurSeaArea & "_BSR測線導航數(shù)據(jù) where trim(測線編號)='" _& Trim(cmbELineID.Text) & "' and trim(炮號)='" & Trim(txtEShotID.Text) & "'"
prjRS.Open sqlStr, Conn, adOpenKeyset, adLockOptimistic
If prjRS.BOF And prjRS.EOF Then
prjRS.Close
Set prjRS = Nothing
'允許插入一條新記錄
sqlStr = "insert into sde." & strCurSeaArea & "_BSR測線導航數(shù)據(jù) (OBJECTID,測線編號, 炮號, 經(jīng)度, 緯度) values ('" & n & "','"
sqlStr = sqlStr & Trim(cmbELineID) & "', '" & Trim(txtEShotID) & "', '"
sqlStr = sqlStr & Trim(txtELongitude) & "', '" & Trim(txtELatitude) & "')"
Conn.Execute sqlStr
openSDEWorkspace.ExecuteSql (sqlStr)
If Conn.State = adStateOpen Then Conn.Close
MsgBox "成功錄入一條記錄!", , "提示:"
'********* (注:單個導航點不生成圖形) *********
Else
prjRS.Close
Set prjRS = Nothing
If Conn.State = adStateOpen Then Conn.Close
MsgBox "數(shù)據(jù)庫中已有使用[" & Trim(cmbELineID.Text) & "]作為測線編號, [" & Trim(txtEShotID.Text) & "]作為炮號的記錄存在!", , "重復錄入錯誤:"
End If
cmbELineID.SetFocus
End If
BSR測線導航數(shù)據(jù)生成前需進行索引過程主鍵檢查,檢查通過后才能進行打點成線。
實施天然氣水合物資源勘查試采工作、加快水合物的商業(yè)開發(fā),將是解決我國能源供需矛盾、保證國家能源安全的有效途徑之一。為此,廣州海洋地質(zhì)調(diào)查局近年實施了大規(guī)模的水合物勘查工作,獲取了大量地球物理、地球化學、地質(zhì)學、環(huán)境科學等多個學科的數(shù)據(jù)。為了保證對勘查數(shù)據(jù)的有效安全管理,實現(xiàn)專業(yè)化角度的共享服務(wù),廣州海洋地質(zhì)調(diào)查局建設(shè)了水合物數(shù)據(jù)庫管理系統(tǒng)(圖4)。目前系統(tǒng)已應用于廣州海洋地質(zhì)調(diào)查局的實際工作中,持續(xù)為實際勘查工作服務(wù)。系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)以及對BSR測線導航數(shù)據(jù)的管理均采用本文設(shè)計的BSR測線導航數(shù)據(jù)入庫接口模型。
BSR測線導航數(shù)據(jù)是海洋地質(zhì)調(diào)查野外數(shù)據(jù)的重要內(nèi)容,針對目前處理BSR數(shù)據(jù)技術(shù)的缺乏,按照本文設(shè)計的BSR測線導航數(shù)據(jù)結(jié)構(gòu)和實現(xiàn)方法,在水合物數(shù)據(jù)庫管理系統(tǒng)中開發(fā)了一個數(shù)據(jù)錄入模塊。該模塊實現(xiàn)了BSR測線導航數(shù)據(jù)原始文件讀取、屬性數(shù)據(jù)錄入、空間數(shù)據(jù)成圖等功能,負責測線數(shù)據(jù)及BSR測線導航數(shù)據(jù)的管理及錄入。該模塊的實際應用證明了本文設(shè)計模型的可靠性和可推廣性。
圖4 水合物數(shù)據(jù)庫管理系統(tǒng)界面
本文設(shè)計了BSR測線導航數(shù)據(jù)的數(shù)據(jù)庫結(jié)構(gòu)及索引機制,實現(xiàn)了對BSR測線導航數(shù)據(jù)的安全管理;還設(shè)計了BSR測線導航數(shù)據(jù)原始文件及數(shù)據(jù)庫之間的入庫接口,并在VB環(huán)境下實現(xiàn)了數(shù)據(jù)接口,提供了專業(yè)的代碼。目前BSR測線導航數(shù)據(jù)入庫接口模型已進入實際應用階段,應用效果良好,具有解決實際工作的能力,值得借鑒。
[1] 金慶煥,張光學,楊木壯,等.天然氣水合物資源概論[M].北京:科學出版社,2006:2-5
[2] 黃永樣,張光學.我國海域天然氣水合物地質(zhì):地球物理特征及前景[M].北京:地質(zhì)出版社,2009
[3] 陳宏文,王立飛,邵長高,等.天然氣水合物屬性及空間數(shù)據(jù)庫結(jié)構(gòu)設(shè)計[J].海洋地質(zhì)前沿,2012,28(5):59-63
[4] 沙志彬,楊木壯,梁金強,等.BSR的反射波特征及其對天然氣水合物識別的應用[J].南海地質(zhì)研究,2003(1):55-61
[5] 徐華寧,楊勝雄,鄭曉東,等. 南中國海神狐海域天然氣水合物地震識別及分布特征[J].地球物理學報,2010,53(7):1 691-1 698
[6] 鄒大鵬,盧博,閻貧,等.南海北部海底沉積物在溫度變化下的三種聲速類型[J].地球物理學報,2012,55(3):1 017-1 024
[7] 宋海斌,吳時國,江為為.南海東北部973剖面BSR及其熱流特征[J].地球物理學報,2007,50(5):1 508-1 517
[8] 邵長高,譚建軍,荊麗梅,等.海洋小比例尺地圖精確測量及計算方法[J].地理與地理信息科學,2009,25(2):42-45
[9] International Association of Oil & Gas Producers. Coordinate Conversions and Transformation Including Formulas[M]. OGP Publicaiton,2013:35-39
[10] 邵長高,崔仁.地震剖面解釋數(shù)據(jù)提取接口方法[J].測繪科學,2015(專刊):143-146
P208
B
1672-4623(2017)05-0025-04
10.3969/j.issn.1672-4623.2017.0050.8
崔仁,主要從事海洋地質(zhì)調(diào)查數(shù)據(jù)入庫、數(shù)據(jù)結(jié)構(gòu)制定、原始資料管理等方面研究。
2016-04-27。
項目來源:國家高技術(shù)研究發(fā)展計劃資助項目(2013AA092501、2013AA0925010401);“127”國家專項資助項目(DD20160227、DD20160227-6、GZH201100312);“729”國家專項資助項目(GZH201200512、GZH201200512-2)。