蔣紅燕,楊哲海
(1.信息工程大學測繪學院,河南鄭州 450052;2.海軍海洋測繪研究所,天津 300061;3.沈陽軍區聯勤部指揮自動化工作站,遼寧沈陽 110005)
地理信息從 SHP格式向 SVG格式的轉換
蔣紅燕1,2,楊哲海3
(1.信息工程大學測繪學院,河南鄭州 450052;2.海軍海洋測繪研究所,天津 300061;3.沈陽軍區聯勤部指揮自動化工作站,遼寧沈陽 110005)
經過分析提出將 SHP格式的地理數據轉換為 SVG的思路和轉換模型,并對若干關鍵技術進行重點闡述。最后通過試驗對轉換模型進行驗證。
地理信息;SHP;SVG;格式轉換
Esri公司在地理信息系統應用領域推出的ArcInfo、ArcView等系列產品雖然能夠基本滿足各類地理信息用戶的應用需求,但這些軟件過于龐大、造價昂貴,對系統配置的要求較高,因而,在實際應用中會受到一定限制。近些年來,隨著地理信息應用領域的不斷拓展和網絡技術的迅速發展,一種基于 XML的可縮放矢量圖形 (scalable vector graphics,SVG)技術受到越來越多的關注。與ArcInfo相比,利用 SVG技術開發WebGIS系統,具有地圖制作周期短、開發成本低、表現形式靈活等諸多優點。因而如果能夠實現 ArcInfo的數字產品向 SVG格式的轉換,不僅能夠保留原系統強大的地理信息網絡功能,而且還能夠克服原系統笨重、操作煩瑣等若干缺點。本文對 SHP文件向 SVG格式的轉換技術進行了研究,并通過相關地區的試驗數據對轉換模型進行了驗證。
SHP文件是 ArcInfo的外部交換格式。一個完整的 SHP由若干個前綴相同,而后綴不同的文件組成。其中有四個文件是必不可少的,分別為 PRJ文件、SHP文件、SHX文件和 DBF文件[1]。
1)PRJ文件:PRJ是投影文件,包含著相關圖幅的投影信息。該文件決定著是否能將空間目標精確地定位到相應的位置,因而投影文件是進行轉換格式所要考慮的首要因素。
2)SHP文件:SHP文件是 SHP的主文件,記錄著圖元的空間信息,由文件頭和文件體兩部分組成。其中文件頭記錄了文件代碼、長度、版本、圖元邊界等重要信息,文件體記錄了圖形的形狀信息(點、線或面)和該圖形的空間位置信息。
3)SHX文件:SHX文件是 SHP的索引文件,記錄著圖元在 SHP文件內的位置信息,同樣由文件頭和文件體兩部分組成。
4)DBF文件:DBF是屬性文件,記錄著點、線或面圖元的屬性信息。
SVG是萬維網聯盟 (world wide web consortium,W3C)為適應 InternetWeb應用的飛速發展需要而制定的一套基于 XML的二維可縮放矢量圖形標準。在語法上,SVG具有以下要求[2]:
1)所有的標記都有開始標記和結束標記,否則必須注明為空標記。空標記用反斜杠結束,如〈path/〉。
2)標記必須正確嵌套。如果一個標記在另一個標記中開始,那么它也必須在該標記中結束。
3)文檔必須只有一個跟。一個〈SVG〉〈/SVG〉元素包含了一個 SVG文檔的所有內容。
4)文檔應以 XML聲明〈?xml version=″1.0″?〉開始。
5)文檔應包含一個 DOCTYPE聲明,該聲明指向一個允許元素的列表。
SVG認為現實世界中的地理實體可劃分為簡單地理實體與復雜地理實體兩大類。其中簡單地理實體還可根據其幾何特征進一步分為點狀實體、線狀實體、面狀實體等;而復雜地理實體則由多個簡單地理實體構成。在 SVG文檔中,地理實體的圖形通過 SVG規定的 6種基本圖形元素來表示,即圓形 (circle)、橢圓 (ellipse)、矩形 (rectangle)、線(line)、折線 (polyline)、多變形 (polygon)。
此外,SVG通過 text元素表示注記,通過 image元素表示柵格實體。
轉換的流程如圖 1所示,主要包括原始文件信息的獲取、地圖空間數據和屬性數據的處理、SVG文件生成等步驟。轉換過程所用到的關鍵技術包括如下幾個部分。

圖 1 轉換流程示意圖
首先是進行原始文件的讀取。對于 PRJ文件,需要讀取 PROJCS、GEOGCS、DATUM等關鍵字信息,以獲取地圖投影方式、坐標系統、基準面、橢球體、移位信息等若干重要參數。對于 SHP文件和SHX文件,分別讀取文件頭和文件體,獲取各地圖要素的空間位置信息。地理要素的屬性信息從DBF文件獲取。
對于讀取的文件信息,需要將它們按照一定的格式加以存儲并進行管理,以備后續轉換模塊對地圖投影等控制信息和地理要素等實體信息的調用需求。對于面狀要素,為了描述其邊界信息,通常需要根據原始文件所包含線狀要素的拓撲關系計算生成。此外,SHP文件和 SHX文件的存儲位序包括高位和低位兩種形式,因而需要轉換過程能夠進行字節存儲位序的轉化。在本模塊中,分別編寫了如下函數

坐標系統轉換是整個轉換過程的關鍵環節之一,因為它決定著轉換結果空間位置的準確程度,這對于圖上量算和定位操作具有決定性的作用。在 SHP文件和 SVG文件中,兩者的坐標系統并不相同。SHP文件的坐標是基于一定的投影方式和坐標系統,按照地圖分幅等相關信息進行描述的,其提供形式是經緯度坐標或是平面直角坐標。而SVG文件的坐標系是基于平面的,原點在初始視口(屏幕)的左上角,X軸的正向朝右,Y軸的正向朝下。為了實現在 SVG屏幕上正確顯示圖形數據,就必須把經緯度坐標數據或平面直角坐標數據轉換為 SVG坐標數據。對于當前最常用的高斯投影坐標系統,其轉換公式如下[3]

式中,X、Y為點的平面直角坐標系的縱、橫坐標;φ、λ為點的地理坐標,以弧度計,λ從中央經線起算;S為緯度φ處的卯酉圈曲率半徑;η=e′2cos 2φ,其中e′2=(a2-b2)/b2為地球的第二偏心率 ,a、b則分別為地球橢球體的長、短半軸。
在我國基本比例尺地形圖上,為了便于圖上指示目標、量測距離和方位,應在地形圖上按一定的整千米數加繪平行于直角坐標軸的方里網線。然而對于原始數據,通常不包含有方里網的直接信息,而是需要根據圖幅的邊界數據來進行內插。插值的過程包括兩個步驟:①根據圖廓點的坐標和地圖比例尺來確定方里網線的數量和屬性值,即該方里網線所代表的平面直角坐標值;②計算各網線與圖幅邊界的交點,并根據適當的判別準則來確定各方里網線的起始點和結束點。
在計算方里網線與圖幅邊界的交點時,由于圖幅邊界在地圖平面上的投影為曲線,因此方里網線與邊界的求交會變得較為復雜,各方里網線的始末點就會變得難以判斷。筆者所采取的方法是計算單條方里網線與圖廓的所有交點 (數量可能多于兩個),對于所有的交點按照從左至右 (或從上至下)的方向排序,按照始點與末點交替的方式判定方里網線的端點。比如,某方里網線與圖廓有四個交點 ,分別標為:點 1、點 2、點 3、點 4,則點 1和點 2之間的連線、點 3和點 4之間的連線為所求方里網線。
SHP文件中有很多專有的地圖符號,如碼頭、鐵路、水塘等,而在 SVG文件中沒有這些圖形元素可以采用,因而必須利用相關技術實現各類符號的抽象顯示。在轉換過程中,對于點狀符號,可以認為其由不同形狀的幾何圖形單元組合構成,根據SVG提供的6種基本圖形元素,能夠很好地構成點狀符號的基本圖元描述;對于線狀符號,依據符號的分解特性和對稱關系,將其分為普通的線狀符號(如等高線、單線河)和模式化的線狀符號 (如高速公路、鐵路 ),并利用 SVG提供的〈polyline〉、〈path〉等元素實現線狀標號的顯示;對于面狀符號,根據其填充樣式,設置 SVG關鍵字〈pattern〉的屬性,然后在渲染該填充區域時引用該模式,即可實現面狀地理要素的顯示。
對于一幅地圖文件,通常根據地物類別將其分層組織和管理,也就是原始數據包含多個 SHP文件,分別對應不同的地物類別。在 SVG中也有類似的概念。SVG利用元素〈g〉將圖形元素分類成組,這樣每個圖形元素就多了一個圖層屬性描述信息。在轉換過程中,可以將 SHP圖元對象和 SVG圖形元素進行比較,根據元素〈g〉所記錄的圖層標示符,將同一圖層的對象放在同一個元素中。同時考慮到數據管理的便捷性,規定一個圖層只能包含一類地理實體,這樣整個圖層會按地理實體的類型劃分為 5類:即點圖層、線圖層、面圖層、注記層和柵格層,最終實現在SVG中方便有效地管理地圖數據的目的。
為了驗證轉換模型的正確性,筆者運用 Visual C++技術對該模型進行了試驗。原始數據選用某地區 1∶50 000的居民地層 SHP文件,試驗環境參數如表 1所示。
轉換結果如圖 2所示。
圖 2(a)所示是某地區 SHP文件在 ArcMap下的顯示效果,圖 2(b)所示是轉換后的同一地區 SVG格式文件在 IE6.0中的顯示效果圖。從圖 2中可以看出,經過轉換的 SVG文件與原始 SHP文件具有相同的顯示效果,驗證了轉換模型的正確性。

表 1 試驗環境參數

圖 2 地圖數據轉換前后效果對比
本文分析了 SHP文件和 SVG文件的特點及數據結構,建立了 SHP文件到 SVG文件的轉換模型,并用 Visual C++開發技術實現了某地區 SHP文件到 SVG文件的轉換,對轉換模型的可行性進行了驗證。該轉換模型的建立克服了 SHP格式的地理數據對運行環境的依賴,轉而為獲取 SVG地圖數據提供了一種新的有效途徑,有利于更好地推動 SVG在WebGIS中的應用,因而具有一定的實用價值和廣闊的應用前景。
[1]Esri.Esri Shapefile Technical Description[M].New York:Esri,1998.
[2]李東,謝芳勇,葉友.WebGIS應用中 Map Info文件到SVG的轉換 [J],計算機應用研究,2009,26(1):175-178.
[3]陳述彭,魯學軍,周成虎.地理信息系統導輪 [M].北京:科學出版社,2000:69-73.
[4]吳功和,夏錦紅.基于 SVG模版的網絡地理信息服務應用研究 [J].測繪科學技術學報,2006,23(5):381-383.
[5]和萬里,崔鐵軍,劉興科,等.基于 SVG的地圖符號設計與實現 [J].測繪科學技術學報,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—),女,甘肅甘谷人,碩士生,工程師,主要從事地理信息系統開發與應用研究工作。