蔣紅燕,楊哲海
(1.信息工程大學(xué)測(cè)繪學(xué)院,河南鄭州 450052;2.海軍海洋測(cè)繪研究所,天津 300061;3.沈陽軍區(qū)聯(lián)勤部指揮自動(dòng)化工作站,遼寧沈陽 110005)
地理信息從 SHP格式向 SVG格式的轉(zhuǎn)換
蔣紅燕1,2,楊哲海3
(1.信息工程大學(xué)測(cè)繪學(xué)院,河南鄭州 450052;2.海軍海洋測(cè)繪研究所,天津 300061;3.沈陽軍區(qū)聯(lián)勤部指揮自動(dòng)化工作站,遼寧沈陽 110005)
經(jīng)過分析提出將 SHP格式的地理數(shù)據(jù)轉(zhuǎn)換為 SVG的思路和轉(zhuǎn)換模型,并對(duì)若干關(guān)鍵技術(shù)進(jìn)行重點(diǎn)闡述。最后通過試驗(yàn)對(duì)轉(zhuǎn)換模型進(jìn)行驗(yàn)證。
地理信息;SHP;SVG;格式轉(zhuǎn)換
Esri公司在地理信息系統(tǒng)應(yīng)用領(lǐng)域推出的ArcInfo、ArcView等系列產(chǎn)品雖然能夠基本滿足各類地理信息用戶的應(yīng)用需求,但這些軟件過于龐大、造價(jià)昂貴,對(duì)系統(tǒng)配置的要求較高,因而,在實(shí)際應(yīng)用中會(huì)受到一定限制。近些年來,隨著地理信息應(yīng)用領(lǐng)域的不斷拓展和網(wǎng)絡(luò)技術(shù)的迅速發(fā)展,一種基于 XML的可縮放矢量圖形 (scalable vector graphics,SVG)技術(shù)受到越來越多的關(guān)注。與ArcInfo相比,利用 SVG技術(shù)開發(fā)WebGIS系統(tǒng),具有地圖制作周期短、開發(fā)成本低、表現(xiàn)形式靈活等諸多優(yōu)點(diǎn)。因而如果能夠?qū)崿F(xiàn) ArcInfo的數(shù)字產(chǎn)品向 SVG格式的轉(zhuǎn)換,不僅能夠保留原系統(tǒng)強(qiáng)大的地理信息網(wǎng)絡(luò)功能,而且還能夠克服原系統(tǒng)笨重、操作煩瑣等若干缺點(diǎn)。本文對(duì) SHP文件向 SVG格式的轉(zhuǎn)換技術(shù)進(jìn)行了研究,并通過相關(guān)地區(qū)的試驗(yàn)數(shù)據(jù)對(duì)轉(zhuǎn)換模型進(jìn)行了驗(yàn)證。
SHP文件是 ArcInfo的外部交換格式。一個(gè)完整的 SHP由若干個(gè)前綴相同,而后綴不同的文件組成。其中有四個(gè)文件是必不可少的,分別為 PRJ文件、SHP文件、SHX文件和 DBF文件[1]。
1)PRJ文件:PRJ是投影文件,包含著相關(guān)圖幅的投影信息。該文件決定著是否能將空間目標(biāo)精確地定位到相應(yīng)的位置,因而投影文件是進(jìn)行轉(zhuǎn)換格式所要考慮的首要因素。
2)SHP文件:SHP文件是 SHP的主文件,記錄著圖元的空間信息,由文件頭和文件體兩部分組成。其中文件頭記錄了文件代碼、長(zhǎng)度、版本、圖元邊界等重要信息,文件體記錄了圖形的形狀信息(點(diǎn)、線或面)和該圖形的空間位置信息。
3)SHX文件:SHX文件是 SHP的索引文件,記錄著圖元在 SHP文件內(nèi)的位置信息,同樣由文件頭和文件體兩部分組成。
4)DBF文件:DBF是屬性文件,記錄著點(diǎn)、線或面圖元的屬性信息。
SVG是萬維網(wǎng)聯(lián)盟 (world wide web consortium,W3C)為適應(yīng) InternetWeb應(yīng)用的飛速發(fā)展需要而制定的一套基于 XML的二維可縮放矢量圖形標(biāo)準(zhǔn)。在語法上,SVG具有以下要求[2]:
1)所有的標(biāo)記都有開始標(biāo)記和結(jié)束標(biāo)記,否則必須注明為空標(biāo)記??諛?biāo)記用反斜杠結(jié)束,如〈path/〉。
2)標(biāo)記必須正確嵌套。如果一個(gè)標(biāo)記在另一個(gè)標(biāo)記中開始,那么它也必須在該標(biāo)記中結(jié)束。
3)文檔必須只有一個(gè)跟。一個(gè)〈SVG〉〈/SVG〉元素包含了一個(gè) SVG文檔的所有內(nèi)容。
4)文檔應(yīng)以 XML聲明〈?xml version=″1.0″?〉開始。
5)文檔應(yīng)包含一個(gè) DOCTYPE聲明,該聲明指向一個(gè)允許元素的列表。
SVG認(rèn)為現(xiàn)實(shí)世界中的地理實(shí)體可劃分為簡(jiǎn)單地理實(shí)體與復(fù)雜地理實(shí)體兩大類。其中簡(jiǎn)單地理實(shí)體還可根據(jù)其幾何特征進(jìn)一步分為點(diǎn)狀實(shí)體、線狀實(shí)體、面狀實(shí)體等;而復(fù)雜地理實(shí)體則由多個(gè)簡(jiǎn)單地理實(shí)體構(gòu)成。在 SVG文檔中,地理實(shí)體的圖形通過 SVG規(guī)定的 6種基本圖形元素來表示,即圓形 (circle)、橢圓 (ellipse)、矩形 (rectangle)、線(line)、折線 (polyline)、多變形 (polygon)。
此外,SVG通過 text元素表示注記,通過 image元素表示柵格實(shí)體。
轉(zhuǎn)換的流程如圖 1所示,主要包括原始文件信息的獲取、地圖空間數(shù)據(jù)和屬性數(shù)據(jù)的處理、SVG文件生成等步驟。轉(zhuǎn)換過程所用到的關(guān)鍵技術(shù)包括如下幾個(gè)部分。
圖 1 轉(zhuǎn)換流程示意圖
首先是進(jìn)行原始文件的讀取。對(duì)于 PRJ文件,需要讀取 PROJCS、GEOGCS、DATUM等關(guān)鍵字信息,以獲取地圖投影方式、坐標(biāo)系統(tǒng)、基準(zhǔn)面、橢球體、移位信息等若干重要參數(shù)。對(duì)于 SHP文件和SHX文件,分別讀取文件頭和文件體,獲取各地圖要素的空間位置信息。地理要素的屬性信息從DBF文件獲取。
對(duì)于讀取的文件信息,需要將它們按照一定的格式加以存儲(chǔ)并進(jìn)行管理,以備后續(xù)轉(zhuǎn)換模塊對(duì)地圖投影等控制信息和地理要素等實(shí)體信息的調(diào)用需求。對(duì)于面狀要素,為了描述其邊界信息,通常需要根據(jù)原始文件所包含線狀要素的拓?fù)潢P(guān)系計(jì)算生成。此外,SHP文件和 SHX文件的存儲(chǔ)位序包括高位和低位兩種形式,因而需要轉(zhuǎn)換過程能夠進(jìn)行字節(jié)存儲(chǔ)位序的轉(zhuǎn)化。在本模塊中,分別編寫了如下函數(shù)
坐標(biāo)系統(tǒng)轉(zhuǎn)換是整個(gè)轉(zhuǎn)換過程的關(guān)鍵環(huán)節(jié)之一,因?yàn)樗鼪Q定著轉(zhuǎn)換結(jié)果空間位置的準(zhǔn)確程度,這對(duì)于圖上量算和定位操作具有決定性的作用。在 SHP文件和 SVG文件中,兩者的坐標(biāo)系統(tǒng)并不相同。SHP文件的坐標(biāo)是基于一定的投影方式和坐標(biāo)系統(tǒng),按照地圖分幅等相關(guān)信息進(jìn)行描述的,其提供形式是經(jīng)緯度坐標(biāo)或是平面直角坐標(biāo)。而SVG文件的坐標(biāo)系是基于平面的,原點(diǎn)在初始視口(屏幕)的左上角,X軸的正向朝右,Y軸的正向朝下。為了實(shí)現(xiàn)在 SVG屏幕上正確顯示圖形數(shù)據(jù),就必須把經(jīng)緯度坐標(biāo)數(shù)據(jù)或平面直角坐標(biāo)數(shù)據(jù)轉(zhuǎn)換為 SVG坐標(biāo)數(shù)據(jù)。對(duì)于當(dāng)前最常用的高斯投影坐標(biāo)系統(tǒng),其轉(zhuǎn)換公式如下[3]
式中,X、Y為點(diǎn)的平面直角坐標(biāo)系的縱、橫坐標(biāo);φ、λ為點(diǎn)的地理坐標(biāo),以弧度計(jì),λ從中央經(jīng)線起算;S為緯度φ處的卯酉圈曲率半徑;η=e′2cos 2φ,其中e′2=(a2-b2)/b2為地球的第二偏心率 ,a、b則分別為地球橢球體的長(zhǎng)、短半軸。
在我國(guó)基本比例尺地形圖上,為了便于圖上指示目標(biāo)、量測(cè)距離和方位,應(yīng)在地形圖上按一定的整千米數(shù)加繪平行于直角坐標(biāo)軸的方里網(wǎng)線。然而對(duì)于原始數(shù)據(jù),通常不包含有方里網(wǎng)的直接信息,而是需要根據(jù)圖幅的邊界數(shù)據(jù)來進(jìn)行內(nèi)插。插值的過程包括兩個(gè)步驟:①根據(jù)圖廓點(diǎn)的坐標(biāo)和地圖比例尺來確定方里網(wǎng)線的數(shù)量和屬性值,即該方里網(wǎng)線所代表的平面直角坐標(biāo)值;②計(jì)算各網(wǎng)線與圖幅邊界的交點(diǎn),并根據(jù)適當(dāng)?shù)呐袆e準(zhǔn)則來確定各方里網(wǎng)線的起始點(diǎn)和結(jié)束點(diǎn)。
在計(jì)算方里網(wǎng)線與圖幅邊界的交點(diǎn)時(shí),由于圖幅邊界在地圖平面上的投影為曲線,因此方里網(wǎng)線與邊界的求交會(huì)變得較為復(fù)雜,各方里網(wǎng)線的始末點(diǎn)就會(huì)變得難以判斷。筆者所采取的方法是計(jì)算單條方里網(wǎng)線與圖廓的所有交點(diǎn) (數(shù)量可能多于兩個(gè)),對(duì)于所有的交點(diǎn)按照從左至右 (或從上至下)的方向排序,按照始點(diǎn)與末點(diǎn)交替的方式判定方里網(wǎng)線的端點(diǎn)。比如,某方里網(wǎng)線與圖廓有四個(gè)交點(diǎn) ,分別標(biāo)為:點(diǎn) 1、點(diǎn) 2、點(diǎn) 3、點(diǎn) 4,則點(diǎn) 1和點(diǎn) 2之間的連線、點(diǎn) 3和點(diǎn) 4之間的連線為所求方里網(wǎng)線。
SHP文件中有很多專有的地圖符號(hào),如碼頭、鐵路、水塘等,而在 SVG文件中沒有這些圖形元素可以采用,因而必須利用相關(guān)技術(shù)實(shí)現(xiàn)各類符號(hào)的抽象顯示。在轉(zhuǎn)換過程中,對(duì)于點(diǎn)狀符號(hào),可以認(rèn)為其由不同形狀的幾何圖形單元組合構(gòu)成,根據(jù)SVG提供的6種基本圖形元素,能夠很好地構(gòu)成點(diǎn)狀符號(hào)的基本圖元描述;對(duì)于線狀符號(hào),依據(jù)符號(hào)的分解特性和對(duì)稱關(guān)系,將其分為普通的線狀符號(hào)(如等高線、單線河)和模式化的線狀符號(hào) (如高速公路、鐵路 ),并利用 SVG提供的〈polyline〉、〈path〉等元素實(shí)現(xiàn)線狀標(biāo)號(hào)的顯示;對(duì)于面狀符號(hào),根據(jù)其填充樣式,設(shè)置 SVG關(guān)鍵字〈pattern〉的屬性,然后在渲染該填充區(qū)域時(shí)引用該模式,即可實(shí)現(xiàn)面狀地理要素的顯示。
對(duì)于一幅地圖文件,通常根據(jù)地物類別將其分層組織和管理,也就是原始數(shù)據(jù)包含多個(gè) SHP文件,分別對(duì)應(yīng)不同的地物類別。在 SVG中也有類似的概念。SVG利用元素〈g〉將圖形元素分類成組,這樣每個(gè)圖形元素就多了一個(gè)圖層屬性描述信息。在轉(zhuǎn)換過程中,可以將 SHP圖元對(duì)象和 SVG圖形元素進(jìn)行比較,根據(jù)元素〈g〉所記錄的圖層標(biāo)示符,將同一圖層的對(duì)象放在同一個(gè)元素中。同時(shí)考慮到數(shù)據(jù)管理的便捷性,規(guī)定一個(gè)圖層只能包含一類地理實(shí)體,這樣整個(gè)圖層會(huì)按地理實(shí)體的類型劃分為 5類:即點(diǎn)圖層、線圖層、面圖層、注記層和柵格層,最終實(shí)現(xiàn)在SVG中方便有效地管理地圖數(shù)據(jù)的目的。
為了驗(yàn)證轉(zhuǎn)換模型的正確性,筆者運(yùn)用 Visual C++技術(shù)對(duì)該模型進(jìn)行了試驗(yàn)。原始數(shù)據(jù)選用某地區(qū) 1∶50 000的居民地層 SHP文件,試驗(yàn)環(huán)境參數(shù)如表 1所示。
轉(zhuǎn)換結(jié)果如圖 2所示。
圖 2(a)所示是某地區(qū) SHP文件在 ArcMap下的顯示效果,圖 2(b)所示是轉(zhuǎn)換后的同一地區(qū) SVG格式文件在 IE6.0中的顯示效果圖。從圖 2中可以看出,經(jīng)過轉(zhuǎn)換的 SVG文件與原始 SHP文件具有相同的顯示效果,驗(yàn)證了轉(zhuǎn)換模型的正確性。
表 1 試驗(yàn)環(huán)境參數(shù)
圖 2 地圖數(shù)據(jù)轉(zhuǎn)換前后效果對(duì)比
本文分析了 SHP文件和 SVG文件的特點(diǎn)及數(shù)據(jù)結(jié)構(gòu),建立了 SHP文件到 SVG文件的轉(zhuǎn)換模型,并用 Visual C++開發(fā)技術(shù)實(shí)現(xiàn)了某地區(qū) SHP文件到 SVG文件的轉(zhuǎn)換,對(duì)轉(zhuǎn)換模型的可行性進(jìn)行了驗(yàn)證。該轉(zhuǎn)換模型的建立克服了 SHP格式的地理數(shù)據(jù)對(duì)運(yùn)行環(huán)境的依賴,轉(zhuǎn)而為獲取 SVG地圖數(shù)據(jù)提供了一種新的有效途徑,有利于更好地推動(dòng) SVG在WebGIS中的應(yīng)用,因而具有一定的實(shí)用價(jià)值和廣闊的應(yīng)用前景。
[1]Esri.Esri Shapefile Technical Description[M].New York:Esri,1998.
[2]李東,謝芳勇,葉友.WebGIS應(yīng)用中 Map Info文件到SVG的轉(zhuǎn)換 [J],計(jì)算機(jī)應(yīng)用研究,2009,26(1):175-178.
[3]陳述彭,魯學(xué)軍,周成虎.地理信息系統(tǒng)導(dǎo)輪 [M].北京:科學(xué)出版社,2000:69-73.
[4]吳功和,夏錦紅.基于 SVG模版的網(wǎng)絡(luò)地理信息服務(wù)應(yīng)用研究 [J].測(cè)繪科學(xué)技術(shù)學(xué)報(bào),2006,23(5):381-383.
[5]和萬里,崔鐵軍,劉興科,等.基于 SVG的地圖符號(hào)設(shè)計(jì)與實(shí)現(xiàn) [J].測(cè)繪科學(xué)技術(shù)學(xué)報(bào),2006,23(3):208-214.
Format Conversion of Geographic Information From SHP to SVG
J IANG Hongyan,YANG Zhehai
0494-0911(2011)02-0073-03
P208
B
2010-08-04
蔣紅燕 (1977—),女,甘肅甘谷人,碩士生,工程師,主要從事地理信息系統(tǒng)開發(fā)與應(yīng)用研究工作。