1引言在本公眾號文章《EyeUVison電子海圖為海上航行點亮行程》(2020年4月17日發(fā)布)中介紹了航海雷達顯示終端基于S57標準實現(xiàn)的電子海圖顯示能力,但對于陸地岸基雷達終端,往往需要進行陸圖的顯示。本文將基于ShapeFile格式介紹陸地矢量地圖文件的組成與顯示。2 ShapeFile 矢量文件格式S-57是由海道信息系統(tǒng)條件委員會提出的海道數(shù)據(jù)傳輸標準,是目前最具權(quán)威性的海圖數(shù)據(jù)標準,對于陸圖,美國環(huán)境系統(tǒng)研究所提出了基于ShapeFile格式的矢量數(shù)據(jù)文件,用來儲存陸地地理信息特征。ShapeFile文件由主文件(*.shp)、索引文件(*.shx)、屬性表文件(*.dbf)組成,其并不存儲拓撲關(guān)系,而是通過點、線、多邊形來存儲特征形狀。主文件是整個 ShapeFile的核心。其數(shù)據(jù)結(jié)構(gòu)由固定長度的文件頭以及變長的記錄構(gòu)成,如表 1所示。表1 SHP文件格式主文件頭
記錄頭(定長)記錄內(nèi)容(變長)
記錄頭(定長)記錄內(nèi)容(變長)
…
文件頭存儲了文件的長度、版本、幾何形體類等基本信息。記錄又由記錄頭與記錄內(nèi)容組成。記錄頭存儲了本記錄的索引號和內(nèi)容長度;記錄內(nèi)容存儲了該幾何形體的形狀類型、部件點以及頂點數(shù)據(jù)。索引文件是存儲圖形要素與屬性信息索引的文件,主要起到定位的作用,其 由文件頭和記錄兩部分組成,文件頭的內(nèi)容和主文件的基本一致。屬性表文件是由頭記錄及數(shù)據(jù)記錄組成。頭記錄定義了該表的結(jié)構(gòu)并包含與表相關(guān)的其它信息,它主要對屬性文件作一些概括性描述。3 ShapeFile支持的幾何類型ShapeFile主文件的記錄內(nèi)容包括目標的幾何類型( ShapeType) 和具體的坐標記錄( X,Y) ,記錄內(nèi)容因要素幾何類型的不同,其具體的內(nèi)容及格式都有所不同。幾何類型可以分為點 ( Point) 、線( PolyLine) 和面( Polygon) 3 種類型。點類型存儲的是一組坐標( X,Y) ,其記錄結(jié)構(gòu)如表 2所示。表2點類型記錄格式記錄項數(shù)值數(shù)據(jù)類型個數(shù)
幾何類型1int1
XX坐標值double1
YY坐標值double1
線類型存儲的是一系列的點坐標串( X1,Y1,X2,Y2 ) 。其記錄結(jié)構(gòu)如表 3所示。表3線類型記錄格式記錄項數(shù)值數(shù)據(jù)類型個數(shù)
幾何類型3int1
坐標范圍當前線坐標范圍double4
子線段個數(shù)構(gòu)成當前線目標的子線段個數(shù)int1
坐標點數(shù)構(gòu)成當前線目標所包含的坐標點數(shù)int1
Parts 數(shù)組每個子線段的坐標在 Points 數(shù)組中的起始位置intParts 數(shù)量
Points 數(shù)組記錄了所有的坐標信息Parts點數(shù)量
面類型存儲的是一系列封閉的坐標串( X1,Y1,X2,Y2,…,X1,Y1 )。其記錄結(jié)構(gòu)如表 4所示。表4面類型記錄格式記錄項數(shù)值數(shù)據(jù)類型個數(shù)
幾何類型5int1
坐標范圍當前線坐標范圍double4
子線段個數(shù)構(gòu)成當前線目標的子線段個數(shù)int1
坐標點數(shù)構(gòu)成當前線目標所包含的坐標點數(shù)int1
Parts 數(shù)組每個子線段的坐標在 Points 數(shù)組中的起始位置intParts 數(shù)量
Points 數(shù)組記錄了所有的坐標信息Parts點數(shù)量
4 ShapeFile矢量地圖文件的讀取根據(jù)ShapeFile 的數(shù)據(jù)格式,可以按 ShapeFile的幾何類型來創(chuàng)建圖層, 然后逐條解析并存儲 ShapeFile的主文件和屬性文件記錄。ShapeFile矢量地圖讀取流程如圖 1所示。
圖1 ShapeFile矢量地圖文件解析流程雷海雷達顯控終端已基于ShapeFile矢量地圖文件實現(xiàn)了陸圖的顯示,如圖 2所示。顯示信息可以根據(jù)配置選擇顯示的內(nèi)容,如是否顯示城市、鄉(xiāng)鎮(zhèn)、名稱以及水系、鐵路、公路等。
圖2基于ShapeFile的矢量地圖顯示效果5總結(jié)本文以 ShapeFile 數(shù)據(jù)為基礎(chǔ),介紹了ShapeFile文件的基本結(jié)構(gòu),通過對該結(jié)構(gòu)的解析,實現(xiàn)基于ShapeFile的矢量地圖的讀取與顯示。根據(jù)海圖與陸圖不同場景,可以靈活切換使用,進一步的,可在S57與ShapeFile數(shù)據(jù)共享方面進行深入研究,以增強水陸信息的一體化的管理能力。6文獻參考a) 跨平臺GIS在交通共享平臺建設(shè)中的應(yīng)用,李聞昊;b) ARC/VIEW中 Shapefile 數(shù)據(jù)結(jié)構(gòu)剖析及格式轉(zhuǎn)換,張新宇;c) 矢量地圖在浙江電力GIS中的應(yīng)用研究,鐘一??;
d) ShapeFile格式文件寫入方法研究, 柳佳佳;e) 常用GIS數(shù)據(jù)轉(zhuǎn)換方式的比較研究,李紅玥;f) ShapeFile格式電子海圖數(shù)據(jù)集成存儲研究,郝燕玲。