李紹榮,陳宏文
(國土資源部廣州海洋地質(zhì)調(diào)查局,廣東廣州 510760)
多波束數(shù)據(jù)入庫方案設(shè)計(jì)及程序?qū)崿F(xiàn)*
李紹榮,陳宏文
(國土資源部廣州海洋地質(zhì)調(diào)查局,廣東廣州 510760)
提出了基于ArcGIS的多波束數(shù)據(jù)入庫方案,該方案能滿足數(shù)據(jù)管理、調(diào)查項(xiàng)目管理和數(shù)據(jù)應(yīng)用3方面的需求。為了實(shí)現(xiàn)該方案,開發(fā)了多波束數(shù)據(jù)導(dǎo)入地理數(shù)據(jù)庫的處理程序,利用該程序可以將存放在同一文件夾下的整個(gè)調(diào)查航次所有的多波束數(shù)據(jù)文件自動(dòng)、批量導(dǎo)入地理數(shù)據(jù)庫中,最終可以實(shí)現(xiàn)海上調(diào)查采集的多波束數(shù)據(jù)與陸上數(shù)據(jù)中心的地理數(shù)據(jù)庫的無縫連接。
多波束;海洋測深;海底地形;地理數(shù)據(jù)庫;ArcGIS
多波束測深是一種高效率、高精度、全覆蓋的海底地形測量技術(shù)手段,獲得的數(shù)據(jù)是海洋地質(zhì)調(diào)查與研究工作中不可缺的基礎(chǔ)數(shù)據(jù)。由于多波束測深系統(tǒng)獲取的水深數(shù)據(jù)是成片的,數(shù)據(jù)量與測量精度成正比,數(shù)據(jù)量非常大。因此,在多波束數(shù)據(jù)的管理中,海量數(shù)據(jù)存儲(chǔ)和可視化輸出的效率問題顯得尤其突出,必須制定一套合理的數(shù)據(jù)組織管理及數(shù)據(jù)入庫處理方案。
為了實(shí)現(xiàn)包括多波束調(diào)查數(shù)據(jù)在內(nèi)的海洋地質(zhì)調(diào)查數(shù)據(jù)的數(shù)字化管理,本文提出了在ArcGIS軟件環(huán)境下建立海洋地質(zhì)調(diào)查數(shù)據(jù)庫系統(tǒng)的方案。該數(shù)據(jù)庫系統(tǒng)客戶端采用了ArcGIS Engine開發(fā)的應(yīng)用系統(tǒng),服務(wù)器端部署了ArcSDE空間數(shù)據(jù)庫引擎和Oracle數(shù)據(jù)庫管理系統(tǒng),客戶端應(yīng)用軟件通過ArcSDE空間數(shù)據(jù)庫引擎與后臺(tái)數(shù)據(jù)庫連接。由于海洋地質(zhì)調(diào)查技術(shù)手段多樣化,獲得的數(shù)據(jù)多種多樣,因此在建設(shè)海洋地質(zhì)調(diào)查數(shù)據(jù)庫中,要制定針對(duì)各種調(diào)查數(shù)據(jù)的子數(shù)據(jù)庫方案,其中包括多波束子數(shù)據(jù)庫方案。為此,本文介紹了基于ArcGIS的多波束子數(shù)據(jù)庫的入庫方案及其程序的實(shí)現(xiàn)。
多波束數(shù)據(jù)庫要滿足如下3方面的需求:調(diào)查數(shù)據(jù)管理的需求,調(diào)查項(xiàng)目管理的需求,數(shù)據(jù)應(yīng)用和研究的需求。
與其它海洋地質(zhì)調(diào)查獲取的數(shù)據(jù)資料一樣,在調(diào)查項(xiàng)目工作結(jié)束后,多波束原始數(shù)據(jù)和處理后的成果數(shù)據(jù)也要按照相關(guān)規(guī)定進(jìn)行歸檔,歸檔到數(shù)據(jù)中心的電子數(shù)據(jù)要利用先進(jìn)的數(shù)據(jù)庫技術(shù)進(jìn)行管理,以方便數(shù)據(jù)查詢和提供數(shù)據(jù)應(yīng)用服務(wù)。
海洋地質(zhì)勘查管理人員和項(xiàng)目負(fù)責(zé)人員需要了解已有的多波束調(diào)查工作情況,以便后續(xù)多波束調(diào)查工作的部署安排。
數(shù)據(jù)組織和存儲(chǔ)結(jié)構(gòu)要符合高效的數(shù)據(jù)處理、數(shù)據(jù)查詢、數(shù)據(jù)顯示輸出的需要,通過應(yīng)用軟件實(shí)現(xiàn)數(shù)據(jù)處理分析、數(shù)據(jù)成圖等數(shù)據(jù)應(yīng)用和數(shù)據(jù)服務(wù)功能。
根據(jù)前文所述需求,設(shè)計(jì)了如圖1所示的多波束數(shù)據(jù)庫方案,并把多波束數(shù)據(jù)分為3種:一是海上采集的原始數(shù)據(jù),二是經(jīng)過編輯、修改、校正等處理后提交的成果數(shù)據(jù)(一般以通用的文本文件格式作為數(shù)據(jù)交換格式),三是轉(zhuǎn)換到ArcGIS地理數(shù)據(jù)庫的柵格數(shù)據(jù)(GRID格式)。轉(zhuǎn)換到地理數(shù)據(jù)庫中的多波束數(shù)據(jù),采用GRID格式進(jìn)行存儲(chǔ)和管理,這是因?yàn)镚RID格式的數(shù)據(jù)管理、數(shù)據(jù)查詢、數(shù)據(jù)處理分析、數(shù)據(jù)顯示輸出的效率和速度遠(yuǎn)比TIN數(shù)據(jù)格式高,并且很多數(shù)據(jù)處理和數(shù)據(jù)分析工具都是針對(duì)GRID數(shù)據(jù)的。
圖1 多波束數(shù)據(jù)庫方案Fig.1 Multi beam database schema
原始數(shù)據(jù)、處理后的成果數(shù)據(jù)和轉(zhuǎn)換后的GRID數(shù)據(jù),都以磁盤文件形式保存在服務(wù)器端的同一文件夾下,它們之間是一對(duì)一的關(guān)系。圖1右邊部分是地理數(shù)據(jù)庫,其中要素類、數(shù)據(jù)表均是地理數(shù)據(jù)庫中的對(duì)象,它們又與服務(wù)器端的多波束數(shù)據(jù)文件相關(guān)聯(lián)。
在ArcGIS地理數(shù)據(jù)庫中建立一個(gè)叫“多波束數(shù)據(jù)基本信息”的多邊形要素類,存放每個(gè)多波束數(shù)據(jù)文件的描述信息,包括GRID多波束數(shù)據(jù)文件的存放路徑及文件名,工區(qū)名,數(shù)據(jù)文件的數(shù)據(jù)范圍(多邊形圖形)等?!岸嗖ㄊ鴶?shù)據(jù)基本信息”通過“數(shù)據(jù)集編號(hào)”字段與“調(diào)查項(xiàng)目基本信息數(shù)據(jù)表”關(guān)聯(lián),從而可查詢相關(guān)調(diào)查項(xiàng)目的信息。
該數(shù)據(jù)庫方案的特點(diǎn)是多波束數(shù)據(jù)集以文件形式保存在服務(wù)器端磁盤上,把多波束數(shù)據(jù)集的描述信息作為要素類和數(shù)據(jù)表通過SDE空間數(shù)據(jù)庫引擎保存在后臺(tái)地理數(shù)據(jù)庫中。如果海量的多波束GRID數(shù)據(jù)集也通過SDE空間數(shù)據(jù)庫引擎保存到后臺(tái)地理數(shù)據(jù)庫中,數(shù)據(jù)加載要通過SDE空間數(shù)據(jù)庫引擎和后臺(tái)數(shù)據(jù)庫管理系統(tǒng),那么數(shù)據(jù)存取效率將會(huì)降低,同時(shí)還會(huì)由于數(shù)據(jù)量大,增加后臺(tái)數(shù)據(jù)庫管理系統(tǒng)的維護(hù)工作量。
GRID格式的數(shù)據(jù)一般作為水深圖、坡度圖、坡向圖等圖層形式顯示?!岸嗖ㄊ鴶?shù)據(jù)基本信息”要素類則以多邊形圖層和屬性數(shù)據(jù)表顯示,一個(gè)多邊形圖形,表示一個(gè)多波束數(shù)據(jù)文件的數(shù)據(jù)范圍。在客戶端的應(yīng)用軟件中有兩種數(shù)據(jù)查詢?nèi)肟?一是從“多波束數(shù)據(jù)基本信息”的多邊形圖層進(jìn)行查詢,用鼠標(biāo)在地圖上選定一個(gè)范圍,在這個(gè)范圍內(nèi)的數(shù)據(jù)文件列表就會(huì)顯示出來;二是從“多波束數(shù)據(jù)基本信息”的屬性數(shù)據(jù)表通過條件查詢查找到所要的多波束數(shù)據(jù)文件列表。前者是空間查詢,后者是屬性查詢,都能方便地查找到所需的數(shù)據(jù)集。由于多波束原始數(shù)據(jù)、成果數(shù)據(jù)、GRID數(shù)據(jù)集都存放在同一個(gè)文件夾下,查找到GRID數(shù)據(jù)集,也就等于查找到原始數(shù)據(jù)和處理后的成果數(shù)據(jù)。一個(gè)海區(qū)的多波束數(shù)據(jù)文件可以合并成一個(gè)大的GRID數(shù)據(jù)集,這樣就可一次加載和顯示一片調(diào)查海區(qū)的所有多波束調(diào)查數(shù)據(jù)。
根據(jù)圖1中的數(shù)據(jù)庫方案,必須要解決多波束調(diào)查數(shù)據(jù)與地理數(shù)據(jù)庫之間的數(shù)據(jù)接口問題,實(shí)現(xiàn)海上多波束調(diào)查數(shù)據(jù)到地理數(shù)據(jù)庫的無縫連接。ArcGIS軟件平臺(tái)提供了豐富的數(shù)據(jù)接口,通過手工操作也能將多波束數(shù)據(jù)轉(zhuǎn)換導(dǎo)入地理數(shù)據(jù)庫。在海上多波束調(diào)查中,數(shù)據(jù)是連續(xù)采集的,數(shù)據(jù)量達(dá)到一定時(shí)就寫盤,一個(gè)航次調(diào)查提交的數(shù)據(jù)有數(shù)十或數(shù)百個(gè)數(shù)據(jù)文件,如果每個(gè)數(shù)據(jù)文件都要經(jīng)過復(fù)雜的手工操作才能轉(zhuǎn)換入庫,很耗時(shí)、繁瑣。因此,應(yīng)該開發(fā)一種能將指定文件夾下一個(gè)航次的所有多波束數(shù)據(jù)文件自動(dòng)、批量轉(zhuǎn)換導(dǎo)入地理數(shù)據(jù)庫的軟件工具。
對(duì)海上調(diào)查的多波束數(shù)據(jù)進(jìn)行格式轉(zhuǎn)換處理,將文件夾下的每個(gè)數(shù)據(jù)文件轉(zhuǎn)換為GRID數(shù)據(jù)集,提取數(shù)據(jù)范圍和相關(guān)屬性信息保存到“多波束數(shù)據(jù)基本信息”要素類里。
數(shù)據(jù)入庫處理程序主體用Python腳本語言編寫,見圖2。程序首先接收傳遞給程序的數(shù)據(jù)文件路徑、經(jīng)度字段名、緯度字段名、水深值字段名等參數(shù),隨后調(diào)用VB編寫的.txt文本文件到Access數(shù)據(jù)庫文件的Text2Access.exe轉(zhuǎn)換程序,遍歷文件夾下所有文本格式的數(shù)據(jù)文件,將其轉(zhuǎn)換成Access數(shù)據(jù)庫文件,然后循環(huán)調(diào)用Access2GDB轉(zhuǎn)換處理過程。該過程是用Model Builder建模工具設(shè)計(jì)的數(shù)據(jù)處理模型導(dǎo)出的Python程序,它將每個(gè)Access數(shù)據(jù)庫文件轉(zhuǎn)換成ArcGIS地理數(shù)據(jù)庫GRID數(shù)據(jù)集,同時(shí)提取表示數(shù)據(jù)范圍的多邊形圖形并在地理數(shù)據(jù)庫的“多波束數(shù)據(jù)基本信息”要素類中新建一個(gè)記錄,保存該數(shù)據(jù)集的屬性信息和表示數(shù)據(jù)范圍的多邊形圖形。
圖2 數(shù)據(jù)入庫處理程序構(gòu)成Fig.2 The structure of data importing library processing program
Text2Access轉(zhuǎn)換工具程序?qū)嶋H上是調(diào)用微軟公司的DAO庫和Text ISAM Driver驅(qū)動(dòng)程序來完成文本文件數(shù)據(jù)到Access數(shù)據(jù)表的轉(zhuǎn)換的。程序的具體操作是自動(dòng)遍歷文件夾中的所有文本數(shù)據(jù)文件,將文本格式的多波束數(shù)據(jù)文件的經(jīng)度、緯度和水深值導(dǎo)入到新建的Access數(shù)據(jù)表中。由于文本格式的多波束數(shù)據(jù)文件中沒有列標(biāo)題(字段名),需要借助一個(gè)schema.ini文件來定義數(shù)據(jù)表結(jié)構(gòu)。對(duì)于將文本格式的數(shù)據(jù)導(dǎo)入到Access數(shù)據(jù)表的操作,采用DAO庫和Text ISAM Driver驅(qū)動(dòng)程序的方法最有效、占用內(nèi)存最小,因?yàn)樗俏募轿募奶幚磉^程,速度非??臁?shí)際測試,一般主流計(jì)算機(jī)上平均1 s能轉(zhuǎn)換3-4 M字節(jié)的數(shù)據(jù)量。ArcGIS中雖然有導(dǎo)入文本格式數(shù)據(jù)文件的功能,但要求每個(gè)數(shù)據(jù)文件的第一行含有列標(biāo)題(字段名),因此手工為每個(gè)數(shù)據(jù)文件添加列標(biāo)題工作繁瑣,達(dá)不到自動(dòng)、批量轉(zhuǎn)換處理的目的。
圖3 用Model Builder設(shè)計(jì)的數(shù)據(jù)轉(zhuǎn)換處理模型Fig.3 Data converting processing model designed by Model Builder
ArcInfo的Model Builder模型設(shè)計(jì)工具,其實(shí)是一個(gè)可視化編程工具。用Model Builder設(shè)計(jì)了一個(gè)數(shù)據(jù)轉(zhuǎn)換處理模型(見圖3),將模型導(dǎo)出為Python程序代碼,再將導(dǎo)出的程序代碼融入到數(shù)據(jù)入庫處理程序中,這段Python程序代碼作為一個(gè)過程被主程序循環(huán)調(diào)用,每執(zhí)行一次調(diào)用就轉(zhuǎn)換一個(gè)數(shù)據(jù)文件。
用Model Builder設(shè)計(jì)的這個(gè)模型是一個(gè)順序執(zhí)行過程,輸入?yún)?shù)是Access數(shù)據(jù)表路徑、經(jīng)度、緯度和水深值的字段名,處理結(jié)果是轉(zhuǎn)換生成GRID格式的多波束數(shù)據(jù)集和在地理數(shù)據(jù)庫的“多波束數(shù)據(jù)基本信息”要素類中新增一個(gè)記錄,提取表示數(shù)據(jù)范圍的多邊形和數(shù)據(jù)文件的屬性信息存放到新建記錄里。
數(shù)據(jù)轉(zhuǎn)換處理模型圖(見圖3)中的矩形表示調(diào)用數(shù)據(jù)處理命令,橢圓表示命令的輸入和輸出,小橢圓表示輸入變量。其中變量Table1是輸入變量,它傳遞多波束數(shù)據(jù)庫文件(Access數(shù)據(jù)表)的存放路徑,變量finalraster是模型輸出的GRID數(shù)據(jù)集。模型執(zhí)行步驟對(duì)應(yīng)的Geoprocessing命令(為節(jié)省篇幅,省去命令參數(shù))如下:
1)gp.MakeXYEventLayer_management(),將 Access數(shù)據(jù)表(含經(jīng)度、緯度、水深值)轉(zhuǎn)換成點(diǎn)要素圖層。
2)gp.Project_management(),對(duì)點(diǎn)要素圖層進(jìn)行投影變換。
3)gp.PointToRaster_conversion(),將投影變換后的點(diǎn)要素轉(zhuǎn)換成低精度的GRID數(shù)據(jù)集,其網(wǎng)格大小設(shè)為300 m,目的是為了快速提取表示數(shù)據(jù)范圍的多邊形,模型執(zhí)行后作為中間數(shù)據(jù)被清除。
4)gp.SingleOutputMapAlgebra_sa(),將GRID數(shù)據(jù)集中有水深數(shù)據(jù)值的網(wǎng)格單元(cell)賦值1,無水深數(shù)據(jù)的網(wǎng)格單元賦值0。
5)gp.RasterToPolygon_conversion(),將GRID數(shù)據(jù)集中有水深數(shù)據(jù)的區(qū)域作為多邊形提取出來,臨時(shí)存放到一個(gè).shp文件中。
6)gp.AggregatePolygons_management(),合并多邊形,剔除多邊形中的小空洞。
7)gp.AddField_management(),給.shp文件中的多邊形要素增加一個(gè)屬性字段,用于保存數(shù)據(jù)文件的存放路徑信息。
8)gp.CalculateField_management(),將數(shù)據(jù)文件路徑和文件名賦值給屬性字段。
9)gp.Append_management(),將.shp文件中的多邊形及其屬性數(shù)據(jù)作為一個(gè)新記錄追加到地理數(shù)據(jù)庫的“多波束數(shù)據(jù)基本信息”要素類中。
10)gp.PointToRaster_conversion(),最后,再執(zhí)行一次這個(gè)命令,但命令參數(shù)不同,網(wǎng)格大小按需要設(shè)置,比如設(shè)置為10 m,生成高精度GRID數(shù)據(jù)集。
可將前文所述方法開發(fā)的數(shù)據(jù)入庫處理程序放在ArcInfo桌面系統(tǒng)中作為腳本命令執(zhí)行,也可以作為ArcToolbox工具箱中的一個(gè)工具運(yùn)行。作為工具運(yùn)行時(shí),需要為工具設(shè)置傳遞給數(shù)據(jù)入庫處理程序的4個(gè)輸入?yún)?shù):數(shù)據(jù)文件夾、經(jīng)度和緯度字段名、水深值字段名。
程序執(zhí)行后,文件夾下的所有多波束數(shù)據(jù)文件都被轉(zhuǎn)換入庫,可獲得與每個(gè)數(shù)據(jù)文件一一對(duì)應(yīng)的GRID格式的數(shù)據(jù)集和在地理數(shù)據(jù)庫中的“多波束數(shù)據(jù)基本信息”要素類中的記錄。數(shù)據(jù)入庫處理程序?qū)δ硞€(gè)航次所有數(shù)據(jù)文件處理后自動(dòng)生成表示數(shù)據(jù)分布范圍的“多波束數(shù)據(jù)基本信息”多邊形要素類圖層(見圖4),轉(zhuǎn)換為GRID格式的多波束數(shù)據(jù)作為水深圖層顯示。從圖4中可以看到,在海上進(jìn)行多波束測量時(shí)調(diào)查船走過的大致路線,數(shù)據(jù)采集區(qū)域的寬度和相鄰重疊的情況,船走多遠(yuǎn)距離就將采集的數(shù)據(jù)寫盤的情況。圖中每個(gè)“竹節(jié)”對(duì)應(yīng)一個(gè)數(shù)據(jù)文件及其數(shù)據(jù)分布范圍,也對(duì)應(yīng)“多波束數(shù)據(jù)基本信息”要素類中的一個(gè)記錄?!爸窆?jié)”多邊形的邊緣平整,說明數(shù)據(jù)采集完整,如果相鄰的“竹節(jié)”不重疊并有間隙,說明數(shù)據(jù)采集不完全。這為海上調(diào)查項(xiàng)目管理人員提供直觀信息。
圖4 某航次數(shù)據(jù)文件入庫處理后自動(dòng)生成的要素類圖層Fig.4 Automatically created factor class layer after data files importing database processing in the number of voyages
本文提出的多波束數(shù)據(jù)入庫方案,為多波束數(shù)據(jù)歸檔集中管理和服務(wù)提供了高效、可行的技術(shù)方案,該方案選用了數(shù)據(jù)顯示速度快、數(shù)據(jù)分析研究方法豐富的GRID數(shù)據(jù)格式,在利用ArcGIS Engine開發(fā)的應(yīng)用系統(tǒng)中,多波束數(shù)據(jù)以GRID圖層形式顯示為水深圖、坡度圖、坡向圖等。為了方便用戶從地圖上或者從屬性數(shù)據(jù)表中查找多波束數(shù)據(jù)文件,設(shè)計(jì)了一個(gè)叫“多波束數(shù)據(jù)基本信息”的地理數(shù)據(jù)庫要素類。它既保存了多波束數(shù)據(jù)文件的空間分布范圍,也保存了多波束數(shù)據(jù)文件的屬性信息,從而使得原始數(shù)據(jù)文件、處理后的數(shù)據(jù)文件、GRID數(shù)據(jù)文件、數(shù)據(jù)文件的數(shù)據(jù)分布范圍圖層、數(shù)據(jù)文件的屬性信息相互關(guān)聯(lián),使得從地圖上和從屬性數(shù)據(jù)表中都可方便地查找到所需的多波束數(shù)據(jù)文件?!岸嗖ㄊ鴶?shù)據(jù)基本信息”的地理數(shù)據(jù)庫要素類還提供了多波束數(shù)據(jù)采集范圍、數(shù)據(jù)的覆蓋率、數(shù)據(jù)采集完整性等信息,能為海上調(diào)查工作部署提供依據(jù)。
本文介紹的數(shù)據(jù)入庫處理程序,能高效、自動(dòng)、批量的完成多波束數(shù)據(jù)入庫操作,實(shí)現(xiàn)從海上調(diào)查采集的多波束數(shù)據(jù)到地理數(shù)據(jù)庫的無縫連接??傊?,該數(shù)據(jù)庫方案既能滿足數(shù)據(jù)歸檔管理、海上調(diào)查項(xiàng)目管理和數(shù)據(jù)應(yīng)用及服務(wù)3方面的需求,同時(shí)也能使各種數(shù)據(jù)和信息相互關(guān)聯(lián)且有機(jī)結(jié)合為一體,說明該方案是可行的。
[1]Deitel HM,Deitel PJ,Liperi JP,等.Python編程金典[M].周靖,譯.北京:北京大學(xué)出版社,2003.
[2]Wesley J Chun.Core Python Programming[M].Boston,USA:Prentice Hall,2007.
[3]Corey Tucker.Writing Geoprocessing Scripts with ArcGIS[M].California,USA:ESRI,2005.
[4]Jill McCoy.Geoprocessing in ArcGIS[M].California,USA:ESRI,2004.
[5]Andrew Perencsik,Simon Woo,Bob Booth,et al.Building a Geodatabase[M].California,USA:ESRI,2004.
A Schema of Importing Multi-beam Data into Geo-database of Programming and Implementation
LI Shao-rong,CHEN Hong-wen
(Guangzhou Marine Geological Survey of MLR,Guangzhou Guangdong 510760,China)
A schema is proposed for multi-beam data importing program in ArcGIS.The schema could meet the three aspect demands of data management,survey deployment and data application.A geo-processing program tool is introduced to convert multi-beam data into ArcGIS geo-database.With the convenient program,all multi-beam data files stored in a folder would automatically be converted into grid data set of ArcGIS in batch.This is,multi-beam data acquired at sea could be imported directly geo-database into geo-database at datacenter.
multi wave-beam;bathymetry;seafloor relief;geo-database:ArcGIS
P 208;P 229
A
1007-9394(2011)03-0005-03
2011-05-11
國家專項(xiàng)地勘配套科研項(xiàng)目(GZH200700413)
李紹榮(1956~),男,山東黃縣人,碩士,正高級(jí)工程師,現(xiàn)主要從事地理信息系統(tǒng)與數(shù)據(jù)庫技術(shù)應(yīng)用方面的研究工作。