开源在线地图下载软件MOBAC对天地图图源解析
2015-08-09周毅范鸿魏晓
周 毅 范 鸿 魏 晓
(成都理工大学 沉积地质研究院,四川 成都 610059)
1 MOBAC介绍及下载原理
MOBAC 全称Mobile Atlas Creator 是免费开源地图下载软件,用户可根据协议修改程序和自定义编写图源。在线地图为了保证效率和性能会将地图按照缩放等级进行分割。这些图片块称为“瓦片”。每增加一级,图片个数增加4 倍。从地图的左上角开始,每个等级的每张图片按X 轴和Y 轴取0,1,2,3…这样的整数进行编号。加上缩放等级z,则x,y,z 三个数字组成的编号可以唯一确定某个缩放级别下唯一的一个区域[1-2]。MOBAC通过自定义编写图源文件可以抓取这些地图瓦片。
2 MOBAC1.9.16-Ext对天地图下载
由于MOBAC 官方版(http://mobac.sourceforge.net/)不能下载经纬度投影的天地图和以经纬度投影的天地图为底图的其他在线地图。因此本论文介绍MOBAC 在github 上的另一个开源项目MOBAC1.9.16-Ext 版本(https://github.com/rilyu/mobac-ext)。其 增 加 了msGeo-Latlong参数,能够使MOBAC下载经纬度投影的地图如天地图总站上的地图和以经纬度方式投影的各分省天地图。
经过浏览器解析及对天地图的瓦片地址仔细对比,天地图按投影方式和图层可细分为8 种类型[3-4](见表1)。
表1 天地图8种类型样式的区分
可以以其中之一的天地图底图为例来具体分析其解析过程和解析地址。
笔者采用的工具是火狐浏览器加上Firebug插件,在国家天地图网站中,将投影方式调为经纬度投影。启动Firebug工具(F12),用鼠标在地图上划动,则Firebug的图片栏会显示被刷新出来的地图切片。仔细分析会发现有两种类型的地图切片,一种是解析地址中包含T=vec_c的天地图底图片,为底图不透明层;另一种是地址中包含T=cva_c的文字标注层,为透明图层。并且在解析地址中还可见到x、y和图片层级l等信息(见图1)。
图1 浏览器解析天地图瓦片
其中的一个天地图底图层瓦片地址为:http://t0.tianditu.com/DataServer?T=vec_c&x=1686&y=283&l=11,透明文字标注图层瓦片地址为:http://t6.tianditu.com/DataServer?T=cva_c&x=12935&y=2700&l=14,(见图2)。
图2 天地图底图层(左)和透明文字层(右)
3 一个完整的图源文件的解析
以上面任意抓取的一个经纬度投影的天地图图片为例,我们可以编写一个完整的MOBAC 图源文件,其代码如下:
使用经纬度投影的天地图-->
在代码中,我们定义了图源名称为天地图底图-C,最小和最大的缩放级别分别是0 级和20 级,地图切片的类型是png格式,指定该切片是经纬度投影方式。在上述代码中,url 地址是将解析的地址中的数字都用变量代替,其中参数serverpart 代表线程,经过试验,总共用6个线程,以提高下载速度;x、y、l分别用{$x}、{$y}、{$z}代替。将上述代码另存为xml 格式,编码为可识别中文的UTF-8(无签名)。命名之后将此xml 图源文件放在MOBAC 的mapsource 文件夹中,这样就添加了一个自定义图源(见图3)。
图3 天地图底图层在MOBAC中的显示
4 混合图源的制作
此图源是一个混合图源,最顶上的图源是天地图的文字标注层,是一个透明图层,在图源代码中写在最下面;最底下的图层是天地图底图,图源代码中写在最上面。需要注意的是,在这个混合图源中,这三个分图源的具体代码并没有写出,是因为MOBAC可以将已经写好并放在图源文件夹mapsource 中的这三个图源自动读取并按照新图源的命令进行整合(见图4)。
其混合图源代码如下:
<customMultiLayerMapSource>
图4 天地图底图配合文字标注层
因此基于上述的方法,我们可以自定义丰富的图源,如谷歌卫星图和天地道路图的混合,腾讯卫星图和高德文字标注层的混合等以满足不同的用图需求。
[1]付云虹,方俊.基于ArcGISEngine和Google静态地图服务的背景地图实现[J].计算技术与自动化,2012,31(3):142-144.
[2]董元,李娜,张广平.应用G_tilelayer的谷歌混合地图显示[J].地理空间信息,2011,9(4):72-74.
[3]仲伟政,魏金明,邵飞.基于天地图的地图服务方法初探[J].测绘通报,2014(S2):265-268.
[4]郭伟鹏,沈松雨.Silverlight支持下的WebGIS的研究与实现[J].地理空间信息,2011,9(4):34-36.