陈 珺
(江苏省基础地理信息中心,江苏南京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.