陳 珺
(江蘇省基礎地理信息中心,江蘇南京210013)
隨著WebGIS技術的日趨成熟,網絡地圖的應用也越發廣泛。這些應用技術雖各有不同,但所開發出的網絡地圖的功能卻近乎相似。在地圖展示方面,現有的網絡地圖基本都采用了ArcGISServer、MapServer、GeoServer等生成地圖緩存和實現地圖發布,對于出版地圖內容的展示則效率不高。
在簡要分析OpenScales技術的基礎上,本文提出以OpenScales框架實現出版地圖的展示,為出版地圖在WebGIS環境中的展示提供了新的思路。本文首先探討了OpenScales開發框架所涉及的關鍵技術,進而探討了在OpenScales開發框架下出版地圖數據的組織及技術實現,并以江蘇地圖網為例進行分析。
OpenScales是一個基于LGPL協議的開源前臺地圖框架,支持多種標準的地圖服務,如 WMS、WFS、WMTS等。由于 OpenScales是基于 Action Script 3和Flex開發的,通常在 Flex框架中嵌入OpenScales框架,以實現地圖展示功能。
OpenScales具有以下特點:
(1)支持多種圖層
OpenScales可以集成多種基于OGC標準的地圖服務。由于OpenScales對國際標準的高度支持,從而使OpenScales可以與各種地圖服務軟件協同使用,如 ArcGISServer、MapServer、GeoServer等。
(2)強大的矢量數據描繪功能
利用FlashPlayer已有的功能,使得OpenScales具有強大的矢量數據描繪功能。OpenScales可以實現對矢量數據的編輯、描繪等功能。OpenScales支持的矢量數據包括點、線、面、多點、多線、多面等。
(3)內置的地圖控件
OpenScales提供了豐富的地圖控件,實現縮放、漫游、測量、標注等功能。OpenScales將這些功能進行了封裝。
(4)支持跨平臺
由于 OpenScales是基于 FlashPlayer的,因此OpenScales可以支持多種平臺,包括 Windows、Linux等。
(1)Flex
Flex是一個免費的開源框架,用于構建交互性較高、具有較強表現力的Web應用程序。Flex提供了現代的、基于標準的語言和編程模型,支持公共設計模式;使用基于XML的MXML語言描述用戶界面布局和行為,使用面向對象的ActionScript 3語言創建客戶端邏輯。Flex還包含了一個豐富的組件庫,用于創建RIA(Rich Internet Application)應用程序。本文需在Flex中嵌入OpenScales開發框架。
(2)Python
Python是面向對象的解釋性程序語言,具有豐富和強大的類庫。在本文中,出版地圖的原始格式是經掃描形成的JPG圖片,圖片的尺寸較大??紤]到顯示效率,采用基于Python開發的切圖程序對出版地圖進行分級裁切處理,按照地圖的尺寸將出版地圖分別裁切成4級或5級,生成PNG格式的切片。代碼如下:


(3)XML
XML主要用于存儲數據,更注重數據本身。易用性使其可在任何應用程序中方便地讀寫數據。
本文采用XML文件組織所有出版地圖,以目錄樹的形式展現在頁面中。目錄樹按圖冊、圖集、單張地圖和專題地圖的形式組織。圖冊、圖集中需包含二級節點,展開后為其中包含的所有單張圖幅。XML文件組織如圖1所示。

圖1 XML文件的組織
通過對圖幅的組織,并在OpenScales框架中調用該XML文件,就可以實現對相應圖幅的調用。
(1)數據組織
由于涉及大量的出版地圖、經切片生成的瓦片數據以及點位信息數據,因此數據組織是非常重要的。從以下3個方面分別探討數據組織。
1)出版地圖。通過對出版圖冊排序建立XML格式的索引樹,從而實現索引樹和地圖瓦片數據之間的一一對應關系。
2)瓦片數據。所有瓦片數據統一存放在一個固定的目錄下。在該目錄下,所有切片以其所在圖冊中的頁碼按順序存儲。為了實現出版地圖與目錄樹之間的對應關系,需要為出版地圖單獨建立虛擬目錄,通過URL訪問出版地圖。
3)點位信息。點位信息主要是針對疊加在出版地圖上的專題興趣點。這些興趣點的相關數據主要包括點位坐標、點位圖片、圖片尺寸、相關文字介紹等,以TEXT文本的形式存儲。
由于原始點位坐標是在ArcGISDesktop環境中JPG格式的地圖上采集的,為了使點位數據能夠在WebGIS環境中準確疊加到出版地圖上,還需要進行坐標變換,計算點位數據在屏幕坐標系中的坐標。采用以下公式轉換

(2)Python、OpenScales、XML 相結合
本文采用Python與XML相結合的技術,并在客戶端基于開源的OpenScales引擎實現出版地圖的切片和展示。
通過對地圖集和地圖冊的分圖幅掃描,將每幅圖都保存為JPG格式,并根據該圖幅名稱和頁碼之間的對應關系建立每一幅圖的索引表(Excel格式)。用Python切片程序將出版地圖裁切成瓦片形式,目錄組織按照XML的格式,以樹狀結構進行組織。通過將索引表轉換成XML格式,進而在Open-Scales程序中通過訪問該索引表,實現對出版地圖的訪問。流程如圖2所示。

圖2 Python、OpenScales和XML相結合
OpenScales開發框架具有以下特點:
1)OpenScales框架內置了豐富的地圖控件,可以實現地圖展示、編輯、標注功能。
2)OpenScales框架易于實現與其他相關技術的集成,如XML、.NET框架等,從而豐富地圖網站的功能。
3)出版地圖的展示性能主要取決于切片的數據量及單幅地圖的大小。在本文中,出版地圖采用的切片尺寸為256像素×256像素,可以滿足一般網絡環境中對地圖瀏覽速度的基本要求。
以江蘇地圖網中的出版地圖子系統為例,該系統是基于OpenScales框架開發的地圖展示系統,提供了縮放、平移、標注等功能。本文中,對江蘇省鄉村旅游圖經Python切片生成瓦片,進而在江蘇省鄉村旅游圖上以圖標的形式疊加了全省的鄉村旅游景點。點擊任一景點,都將以彈出框的形式顯示該景點的基本信息。圖3為鄉村旅游圖的界面。

圖3 出版地圖子系統
在一般的WebGIS環境中,出版地圖的顯示效率不高,應用也較單一。針對該問題,本文提出在OpenScales框架下實現出版地圖展示。在分析Open-Scales開發框架特點的基礎上,探討了OpenScales開發框架所涉及的關鍵技術,并進一步探討了在Open-Scales框架下出版地圖數據的組織,以及所采用的技術實現方法。本文為出版地圖在WebGIS環境中的展示提出了新的思路,但也存在一定的不足。
[1]吳信才.面向網絡的新一代地理信息系統[M].北京:科學出版社,2009.
[2]高曉蓉,徐丹,雷瑛.基于Flex和REST服務的Web-GIS系統開發:以隴西縣地理空間信息應用系統為例[J].遙感技術與應用,2011,26(1):123-127.
[3]張宏,溫永寧,劉愛利,等.地理信息系統算法基礎[M].北京:科學出版社,2006.