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