傅成來
摘要:本文通過對S-57標(biāo)準(zhǔn)的研究,介紹分析S-57標(biāo)準(zhǔn)數(shù)據(jù)的模型、結(jié)構(gòu)、特征,實現(xiàn)S-57標(biāo)準(zhǔn)與Shape數(shù)據(jù)格式的轉(zhuǎn)換,在ArcMap中有效顯示與查看。安裝完成ArcSDE與Oracle的連接、調(diào)整、配置,實現(xiàn)S-57數(shù)據(jù)標(biāo)準(zhǔn)在數(shù)據(jù)庫中的輸入與提取,最終完成航海地理數(shù)據(jù)庫的設(shè)計。
關(guān)鍵詞:電子海圖;S-57標(biāo)準(zhǔn);Oracle;ArcSDE;地理數(shù)據(jù)庫
1.引 言
S-57 是國際海道測量組織(InternationalHydrographic Organization)規(guī)定的電子海圖數(shù)據(jù)交換國際標(biāo)準(zhǔn)格式文件,在數(shù)據(jù)模型上,S-57 采用了面向?qū)ο蟮乃枷?,對實體世界的地物進(jìn)行了對象類的劃分,建立各類的屬性描述,類由點、線、面幾何特征描述,。
2 S-57數(shù)據(jù)的轉(zhuǎn)換及優(yōu)化
2.1 S-57與Shape轉(zhuǎn)換的實現(xiàn)
數(shù)據(jù)轉(zhuǎn)換就是讀取現(xiàn)有海圖數(shù)據(jù),根據(jù)對照表以程序執(zhí)行方式分別將S-57中建立好的的孤立節(jié)點、連接節(jié)點、邊表和水深點表輸入到矢量數(shù)據(jù)(.shp 文件)中,將各目標(biāo)類的要素/屬性表輸入到特征數(shù)據(jù)(.dbf 文件)中,將S-57 元數(shù)據(jù)表中(包括CATD、DSID、DSSI、DSPM等字段內(nèi)容)輸入到控制文件(.rec 文件)中。
2.2轉(zhuǎn)換前后的結(jié)果比對
分別對C1511711QHD.000、CN15440GZ.000、GB4X0000.000進(jìn)行轉(zhuǎn)換,轉(zhuǎn)換后的(*.shape)文件在ArcMap中顯示打開,現(xiàn)在以 “GB4X0000.000”為例,對比轉(zhuǎn)換前后的結(jié)果。
3 S-57地理數(shù)據(jù)庫的設(shè)計
3.1 ArcSDE與Oracle的連接配置
S-57標(biāo)準(zhǔn)數(shù)據(jù)經(jīng)過軟件的轉(zhuǎn)換,得到了Shape格式的文件,將這些數(shù)據(jù)加載到空間數(shù)據(jù)庫中。如下圖,是加載的過程。
3.2地理數(shù)據(jù)庫的查詢與檢測
3.2.1 空間數(shù)據(jù)庫關(guān)聯(lián)表
數(shù)據(jù)庫詳細(xì)表結(jié)構(gòu)如表1至表2所示。
(1)表1為物標(biāo)索引表,存放特征物標(biāo)目錄信息,表主鍵為(MPNM,F(xiàn)IND)。
(2)表2為特征記錄屬性表,存放特征物標(biāo)屬性信息,每條記錄為一個特征物標(biāo)屬性的一個屬性值信息,表主鍵為(MPNM,F(xiàn)IND,ATTL),通過(MPNM,F(xiàn)IND)與物標(biāo)索引表相關(guān)聯(lián)。
3.2.2 Oracle中真實地物的存儲
在航標(biāo)燈的屬性表中包含了航標(biāo)燈名稱、類型、屬性、X坐標(biāo)、Y坐標(biāo)這些字段。 對于航向而言,在實際中就是一個帶有箭頭的線段,因此它就包含了四個點坐標(biāo)。在航道中,它表示河流區(qū)域,所以是由許多個點組成的。
3.3 SDE空間數(shù)據(jù)庫的調(diào)用
利用Java和ArcEngine編寫程序,調(diào)用SDE空間數(shù)據(jù)庫的屬性表,并且打開屬性表顯示其中的字段及其類型。程序代碼如下:
//定義一維數(shù)據(jù)作為列標(biāo)題
private Object[][] getTableData(ITable sde_Table){
Object[][] tableData = null;
try {
IFields pFlds = sde_Table.getFields();
tableData = new Object[pFlds.getFieldCount()][2];
for(int i=0;i IField pFld = pFlds.getField(i); String pFTName = null; switch(pFld.getType()){ case 0:pFTName = "短整型";break; case 1:pFTName = "長整型";break; case 2:pFTName = "單精度";break; case 3:pFTName = "雙精度";break; case 4:pFTName = "文本";break; case 5:pFTName = "日期"; } tableData[i][0] = pFld.getName(); tableData[i][1] = pFTName; } } catch(AutomationException e){ e.printStackTrace(); } catch(IOException e){ e.printStackTrace(); } return tableData; } 4. 結(jié) 果 本文通過對基于S-57標(biāo)準(zhǔn)的航海地理數(shù)據(jù)進(jìn)行分析與處理,首先通過程序代碼將S-57標(biāo)準(zhǔn)數(shù)據(jù)(包括C1511711QHD.000、CN15440GZ.000、GB4X0000.000)轉(zhuǎn)換成SHAP格式的數(shù)據(jù)。在地理數(shù)據(jù)庫設(shè)計的過程中,結(jié)合數(shù)據(jù)庫的理論模型、實施方法和具體數(shù)據(jù)結(jié)構(gòu)設(shè)計的實例,通過ArcSDE空間搜索引擎與Oracle連接,將轉(zhuǎn)換后的SHAP格式的S-57標(biāo)準(zhǔn)數(shù)據(jù)存入到空間數(shù)據(jù)庫中,然后編寫程序代碼,調(diào)用SDE空間數(shù)據(jù)庫中的屬性表,查看S-57空間數(shù)據(jù)庫的關(guān)聯(lián)表,實現(xiàn)簡單的調(diào)用和查詢過程。 參考文獻(xiàn) [1]孟嬋媛,翟京生,陸毅.S-57數(shù)據(jù)的組織與實現(xiàn)[J].測繪學(xué)院學(xué)報,2003,20(4) [2]孔德寧,黃偉,曹萬華.基于S-57自定義海圖數(shù)據(jù)轉(zhuǎn)換及優(yōu)化[J].船舶電子工程,2007,157(1) [3]孟嬋媛,翟京生,陸毅,賈俊濤. Shape 格式海圖數(shù)據(jù)向S257 格式的轉(zhuǎn)換[J].海洋測繪,2004,24(5) [4]范新云. 建立電子海圖航標(biāo)數(shù)據(jù)庫的探討[J].中國航海,2007,27(3) [5]李宏利,李漢榮,朱建良,汪海.基于IHO S-57標(biāo)準(zhǔn)的海圖數(shù)據(jù)庫建設(shè)[J].地理信息科學(xué),2004,6(1) (作者單位:鹽城市海域使用動態(tài)監(jiān)管中心)