陳 珺
(江蘇省基礎地理信息中心,江蘇南京210013)
隨著WebGIS技術的日趨成熟,網絡地圖的應用也越發(fā)廣泛。這些應用技術雖各有不同,但所開發(fā)出的網絡地圖的功能卻近乎相似。在地圖展示方面,現(xiàn)有的網絡地圖基本都采用了ArcGISServer、MapServer、GeoServer等生成地圖緩存和實現(xiàn)地圖發(fā)布,對于出版地圖內容的展示則效率不高。
在簡要分析OpenScales技術的基礎上,本文提出以OpenScales框架實現(xiàn)出版地圖的展示,為出版地圖在WebGIS環(huán)境中的展示提供了新的思路。本文首先探討了OpenScales開發(fā)框架所涉及的關鍵技術,進而探討了在OpenScales開發(fā)框架下出版地圖數(shù)據(jù)的組織及技術實現(xiàn),并以江蘇地圖網為例進行分析。
OpenScales是一個基于LGPL協(xié)議的開源前臺地圖框架,支持多種標準的地圖服務,如 WMS、WFS、WMTS等。由于 OpenScales是基于 Action Script 3和Flex開發(fā)的,通常在 Flex框架中嵌入OpenScales框架,以實現(xiàn)地圖展示功能。
OpenScales具有以下特點:
(1)支持多種圖層
OpenScales可以集成多種基于OGC標準的地圖服務。由于OpenScales對國際標準的高度支持,從而使OpenScales可以與各種地圖服務軟件協(xié)同使用,如 ArcGISServer、MapServer、GeoServer等。
(2)強大的矢量數(shù)據(jù)描繪功能
利用FlashPlayer已有的功能,使得OpenScales具有強大的矢量數(shù)據(jù)描繪功能。OpenScales可以實現(xiàn)對矢量數(shù)據(jù)的編輯、描繪等功能。OpenScales支持的矢量數(shù)據(jù)包括點、線、面、多點、多線、多面等。
(3)內置的地圖控件
OpenScales提供了豐富的地圖控件,實現(xiàn)縮放、漫游、測量、標注等功能。OpenScales將這些功能進行了封裝。
(4)支持跨平臺
由于 OpenScales是基于 FlashPlayer的,因此OpenScales可以支持多種平臺,包括 Windows、Linux等。
(1)Flex
Flex是一個免費的開源框架,用于構建交互性較高、具有較強表現(xiàn)力的Web應用程序。Flex提供了現(xiàn)代的、基于標準的語言和編程模型,支持公共設計模式;使用基于XML的MXML語言描述用戶界面布局和行為,使用面向對象的ActionScript 3語言創(chuàng)建客戶端邏輯。Flex還包含了一個豐富的組件庫,用于創(chuàng)建RIA(Rich Internet Application)應用程序。本文需在Flex中嵌入OpenScales開發(fā)框架。
(2)Python
Python是面向對象的解釋性程序語言,具有豐富和強大的類庫。在本文中,出版地圖的原始格式是經掃描形成的JPG圖片,圖片的尺寸較大??紤]到顯示效率,采用基于Python開發(fā)的切圖程序對出版地圖進行分級裁切處理,按照地圖的尺寸將出版地圖分別裁切成4級或5級,生成PNG格式的切片。代碼如下:
(3)XML
XML主要用于存儲數(shù)據(jù),更注重數(shù)據(jù)本身。易用性使其可在任何應用程序中方便地讀寫數(shù)據(jù)。
本文采用XML文件組織所有出版地圖,以目錄樹的形式展現(xiàn)在頁面中。目錄樹按圖冊、圖集、單張地圖和專題地圖的形式組織。圖冊、圖集中需包含二級節(jié)點,展開后為其中包含的所有單張圖幅。XML文件組織如圖1所示。
圖1 XML文件的組織
通過對圖幅的組織,并在OpenScales框架中調用該XML文件,就可以實現(xiàn)對相應圖幅的調用。
(1)數(shù)據(jù)組織
由于涉及大量的出版地圖、經切片生成的瓦片數(shù)據(jù)以及點位信息數(shù)據(jù),因此數(shù)據(jù)組織是非常重要的。從以下3個方面分別探討數(shù)據(jù)組織。
1)出版地圖。通過對出版圖冊排序建立XML格式的索引樹,從而實現(xiàn)索引樹和地圖瓦片數(shù)據(jù)之間的一一對應關系。
2)瓦片數(shù)據(jù)。所有瓦片數(shù)據(jù)統(tǒng)一存放在一個固定的目錄下。在該目錄下,所有切片以其所在圖冊中的頁碼按順序存儲。為了實現(xiàn)出版地圖與目錄樹之間的對應關系,需要為出版地圖單獨建立虛擬目錄,通過URL訪問出版地圖。
3)點位信息。點位信息主要是針對疊加在出版地圖上的專題興趣點。這些興趣點的相關數(shù)據(jù)主要包括點位坐標、點位圖片、圖片尺寸、相關文字介紹等,以TEXT文本的形式存儲。
由于原始點位坐標是在ArcGISDesktop環(huán)境中JPG格式的地圖上采集的,為了使點位數(shù)據(jù)能夠在WebGIS環(huán)境中準確疊加到出版地圖上,還需要進行坐標變換,計算點位數(shù)據(jù)在屏幕坐標系中的坐標。采用以下公式轉換
(2)Python、OpenScales、XML 相結合
本文采用Python與XML相結合的技術,并在客戶端基于開源的OpenScales引擎實現(xiàn)出版地圖的切片和展示。
通過對地圖集和地圖冊的分圖幅掃描,將每幅圖都保存為JPG格式,并根據(jù)該圖幅名稱和頁碼之間的對應關系建立每一幅圖的索引表(Excel格式)。用Python切片程序將出版地圖裁切成瓦片形式,目錄組織按照XML的格式,以樹狀結構進行組織。通過將索引表轉換成XML格式,進而在Open-Scales程序中通過訪問該索引表,實現(xiàn)對出版地圖的訪問。流程如圖2所示。
圖2 Python、OpenScales和XML相結合
OpenScales開發(fā)框架具有以下特點:
1)OpenScales框架內置了豐富的地圖控件,可以實現(xiàn)地圖展示、編輯、標注功能。
2)OpenScales框架易于實現(xiàn)與其他相關技術的集成,如XML、.NET框架等,從而豐富地圖網站的功能。
3)出版地圖的展示性能主要取決于切片的數(shù)據(jù)量及單幅地圖的大小。在本文中,出版地圖采用的切片尺寸為256像素×256像素,可以滿足一般網絡環(huán)境中對地圖瀏覽速度的基本要求。
以江蘇地圖網中的出版地圖子系統(tǒng)為例,該系統(tǒng)是基于OpenScales框架開發(fā)的地圖展示系統(tǒng),提供了縮放、平移、標注等功能。本文中,對江蘇省鄉(xiāng)村旅游圖經Python切片生成瓦片,進而在江蘇省鄉(xiāng)村旅游圖上以圖標的形式疊加了全省的鄉(xiāng)村旅游景點。點擊任一景點,都將以彈出框的形式顯示該景點的基本信息。圖3為鄉(xiāng)村旅游圖的界面。
圖3 出版地圖子系統(tǒng)
在一般的WebGIS環(huán)境中,出版地圖的顯示效率不高,應用也較單一。針對該問題,本文提出在OpenScales框架下實現(xiàn)出版地圖展示。在分析Open-Scales開發(fā)框架特點的基礎上,探討了OpenScales開發(fā)框架所涉及的關鍵技術,并進一步探討了在Open-Scales框架下出版地圖數(shù)據(jù)的組織,以及所采用的技術實現(xiàn)方法。本文為出版地圖在WebGIS環(huán)境中的展示提出了新的思路,但也存在一定的不足。
[1]吳信才.面向網絡的新一代地理信息系統(tǒng)[M].北京:科學出版社,2009.
[2]高曉蓉,徐丹,雷瑛.基于Flex和REST服務的Web-GIS系統(tǒng)開發(fā):以隴西縣地理空間信息應用系統(tǒng)為例[J].遙感技術與應用,2011,26(1):123-127.
[3]張宏,溫永寧,劉愛利,等.地理信息系統(tǒng)算法基礎[M].北京:科學出版社,2006.