mapinfo在线地图插件_利用开源软件下载地图和影像瓦片数据(修订版)

作者:周洪锋(互联网空间数据挖掘研究小组)

指导:小瓦(互联网空间数据挖掘研究小组,geodatamining,非公众号)

小瓦曾经在《互联网地理数据挖掘》知识星球里发表过《利用开源软件下载地图和影像瓦片数据》一文,洪锋同学、高同学发现了小瓦的问题,同时天地图网站也发生了一些变化,于是洪锋同学经过自己的实践,在前文的基础上重新修订了一版,供大家学习借鉴。

前言

目前网络上存在着很多方法能够下载地图瓦片数据,最通行的还是通过商业地图软件付费下载,但对于广大同学来说获取商业软件下载地图瓦片数据需要支付的较高费用,因此本文仅选择开源软件(含免费软件), “Step by Step”地教会各位如何利用这些软件从商业地图(以天地图为例)上下载地图瓦片数据。该文不仅提供了所有的开源工具及其文件配置,也附送了1到7级的天地图矢量和影像瓦片(仅作学习和科研使用,小瓦不承担任何责任喔),以及高德地图等图源配置文件,而且根据该文的学习可以举一反三,可以下载同类型的所有商业地图的瓦片数据。

本文所用到的工具如下:

(1)Mobile Atlas Createor

(2)Cache View

(3)QGIS

1 Mobile Atlas Creator、Cache View和QGIS下载和安装

(1)Mobile Atlas Createor

Mobile Atlas Creator是一个自由软件,遵守GPL协议(正式名称是Trek Buddy Atlas Creator)。该软件的主要目的是为了GPS手持设备或者手机应用程序(如TrekBuddy,AndNav)以及其它基于Android或者Windows CE平台上的软件创建离线地图集。此外,可以将单独的地图导出为一张带有OMAPExplorer的校准MAP文件的大PNG图像。作为离线地图集的来源,Mobile Atlas Creator可以使用大量不同的在线地图,例如OpenStreetMap和其他在线地图提供商。

访问MobileAtlas Creator首页(https://mobac.sourceforge.io),可以下载到Mobile Atlas Creator最新的版本。该程序是一个Java运行程序,如果你的机器上没有安装Java运行环境,则需要安装Java运行环境(Java Runtime Environment Version 7或者更高版本)。如何判断自己电脑上是否安装java运行环境?鼠标右键点击电脑“开始”菜单,选择“命令提示符”会弹出命令行窗口,然后在窗口中键入“java -version”命令,如果出现如下图信息,则证明该机器安装有Java运行环境,里面的版本号1.8.0的含义是指则是开发运行环境,即版本是8.0。(注意:java -version中“java”后有空格)

58814c46f7bcfa3e0101aeab1d0beb97.png

如果没有安装Java运行环境,则需要到如下链接下载Java运行环境,并进行安装。

https://www.oracle.com/technetwork/java/javase/downloads/index.html(官网下载)

https://www.ithome.com/html/soft/159714.htm(IT之家下载)

安装成功后,则可以直接运行Mobile Atlas Creator的exe运行程序。由于避免法律上的风险,Mobile Atlas Creator从1.9版本之后因版权原因删除了大量的地图资源。当然我们可以通过本文的学习来写出新的配置文件,并通过这些配置文件进行地图瓦片下载。

(2)Cache View

Cache View是一个免费软件,由Nir Sofer开发的查看 Netscape、Mozilla、IE等浏览器缓存文件的免费工具,可以在如下页面上(www.nirsoft.net/web_browser_tools.html)上下载。本文以GoogleChrome浏览器为例,下载chromecacheview软件,解压后,直接双击exe即可以运行。

(3)QGIS

QGIS是基于Qt,使用C++开发的一个用户界面友好、跨平台的开源版桌面地理信息系统,可运行在Linux、Unix、Mac OSX和Windows等平台之上。它提供数据的显示、编辑和分析功能。本文将讲解如何使用QGIS显示下载的瓦片地图并实现缩放。QGIS可以在官网(https://www.qgis.org)上下载最新版。

2 Cache View软件观察天地图地图瓦片的网址并写好配置文件

2.1  利用ChromeCacheView查看Google浏览器的缓存

为了便于观察天地图地图瓦片的网址。首先清空Google Chrome浏览器的缓存,如下图所示。

mapinfo在线地图插件_利用开源软件下载地图和影像瓦片数据(修订版)_第1张图片

运行Cache View软件,则里面没有任何记录,如下图(左)所示,当通过Google浏览器浏览天地图网站(http://map.tianditu.gov.cn)时,则里面有记录,如下图(右)所示。

mapinfo在线地图插件_利用开源软件下载地图和影像瓦片数据(修订版)_第2张图片mapinfo在线地图插件_利用开源软件下载地图和影像瓦片数据(修订版)_第3张图片

选择其中的一个png图片,左键选择属性,在属性(Properties)视窗里面,可以看到如下信息,其中URL一栏就是地图瓦片所在的网址信息,可以将该网址复制在浏览器中进行检查,可以看到该网址的内容是一张地图瓦片,如图:

mapinfo在线地图插件_利用开源软件下载地图和影像瓦片数据(修订版)_第4张图片mapinfo在线地图插件_利用开源软件下载地图和影像瓦片数据(修订版)_第5张图片

2.2  借助ChromeCacheViewURL编写配置文件

在ChromeCacheView中观察到URL,如下所示:

https://t2.tianditu.gov.cn/DataServer?T=cva_w&tk=433a6d003df7e0dc336c699d60f1f0ea&x=1685&y=775&l=11

接下来的工作,就是根据经验猜测了,本文解说一下这个URL中所用到的参数:

①http://t2.tianditu.gov.cn/DataServer为服务器地址,t*猜测是为了减少服务器压力,增加了多台服务器,默认使用t0,最大为t7;

②T表示的是底图类型,包括矢量(vec)、影像(img)、地形(ter)、中文注记(cva)、英文注记(eta);

③_w表示的是Web墨卡托投影;

④x表示的是地图瓦片的行号,y表示的是地图瓦片的列号,l代表的是瓦片的层级,起始位为1,最大为18。以第1层级为例,全球地图划分为4张图片,分别按照如下方式切片,如图所示。

mapinfo在线地图插件_利用开源软件下载地图和影像瓦片数据(修订版)_第6张图片

在明确URL的各项参数后,开始进行配置文件的编写。下面用一张图来介绍配置文件的基本格式:

mapinfo在线地图插件_利用开源软件下载地图和影像瓦片数据(修订版)_第7张图片

其中,是配置多层图源时的标签,当需要对多层图源进行叠合显示时使用。

为配置单层数据源的标签,每进行一层图源配置时都需要首先声明。

为配置文件的名称。

为必填参数,表示地图的最小缩放等级,如0级。

为必填参数,表示地图的最大缩放等级,如20级。

为必填参数,表示地图的图片格式,支持JPG、PNG、GIF3种配置。

为最重要的参数,表示访问的url规则,即:如何由x,y,z 拼出图片的在线网址。

为可选参数,指定多台服务器,作用等于替换掉中的{$serverport}部分。

除上述参数外,还有一些可选参数:

用于反转y,有些地图y编号是反向增长的,即最底下一行为0,越向北,编号越大,这时需要将此设为true,才能正常使用。

指定地图的背景颜色,只对透明的地图或请求失败时才有意义,并按照#RGBA的格式,例如#FF00007F表示半透明的红色。

为绝对本地缓存的地图图片的刷新逻辑,支持:IfNoneMatch、ETag、IfModifiedSince、LastModified、None(默认)。前面4个需要服务器支持,None表示不考虑服务器标记,只按照MOBAC全局设置中设置的过期时间为准。

用于决定在下载出错时是否忽略错误,继续下载。如果设置为false(默认),会在显示一个红色叉在对应位置,并且会记录到总出错计数中,注意:对于天地图2.0, 因为地图设计的特殊性,必须将ignoreErrors设为true,才能正常下载。

编写图源配置文件时,URL需要改成Mobile Atlas Creator识别的格式,即将所有的"&"替换成"&",x、y、z的坐标数据部分替换成{$x}、{$y}、{$z},由于在2019年1月1日起调用天地图API及服务接口时需要的开发授权(key),所以还需要在URL后面添加“tk=秘钥”项。

下面是编写好的关于天地图的矢量地图配置文件和影像地图配置文件。(注意:配置文件可用txt编辑器编写,然后以xml格式保存即可)

矢量地图瓦片主要由矢量和注记两个图层组成,配置文件如下:

  TianDiTu Map

  PNG

  #000000

  1.00.8

        TianDiTu BaseMap

        1

        18

        PNG

        None

       true  http://t4.tianditu.com/DataServer?T=vec_w&x={$x}&y={$y}&l={$z}&tk=6a359a3a3e4401f86b060a2ee4e20609

      TianDiTu Note

      1

      18

      PNG

      None

     true

http://t4.tianditu.com/DataServer?T=cva_w&x={$x}&y={$y}&l={$z}&tk=6a359a3a3e4401f86b060a2ee4e20609

影像地图由影像(jpg格式)、注记还有政区边界以及道路叠加在影像上的图层等三个组成,配置文件如下: 

  tianditu_image

  PNG

 #000000

  1.00.8

        tianditu_img

        1

        18

        jpg

       None    http://t4.tianditu.com/DataServer?T=img_w&x={$x}&y={$y}&l={$z}&tk=6a359a3a3e4401f86b060a2ee4e20609

        tianditu_cia

        1

        18

        png

       None      http://t4.tianditu.com/DataServer?T=cia_w&x={$x}&y={$y}&l={$z}&tk=6a359a3a3e4401f86b060a2ee4e20609

      tianditu_ibo

      1

      18

      png

      None     http://t4.tianditu.com/DataServer?T=ibo_w&x={$x}&y={$y}&l={$z}&tk=6a359a3a3e4401f86b060a2ee4e20609

上面天地图的配置文件都是多层地图源的配置,通过分析Network的网络请求,你会发现天地图的图片其实是由2层地图叠加而成,底层是卫星图,上层是透明的道路地图等,要支持这样的多图层地图源,即需要利用MOBAC的多图层地图源()配置,它可以将任意多个不同类型的地图源叠在并输出。

利用Mobile Atlas Creator显示图源并下载瓦片

在配置文件编写好后,需要将文件添加到Mobile AtlasCreator安装目录下面的mapsources子目录,如图:

mapinfo在线地图插件_利用开源软件下载地图和影像瓦片数据(修订版)_第8张图片

       

配置文件添加后重启Mobile Atlas Creator,就可以在软件界面的地图源栏找到我们自己加入的图源,点击显示,如图:

①找到配置的天地图数据源(矢量地图或者影像地图);

②定位到所需要下载的区域,并框选;

③勾选所需要下载的比例尺层级;

④将勾选的区域添加到下载地图集,默认是地图册(AFTrack);

⑤点击开始下载按钮即可。

mapinfo在线地图插件_利用开源软件下载地图和影像瓦片数据(修订版)_第9张图片

4. 利用QGIS显示离线瓦片地图

4.1  QGIS2.18版本前的解决方案

在QGIS2.18版本前,在QGIS上显示该地图瓦片数据,则需要一个TileLayerPlugin插件(https://plugins.qgis.org/plugins/TileLayerPlugin/),该插件适用于QGIS2.*版本。单击QGIS菜单Plugins->Manage and Install Plugins...,会出现如下对话框,然后选择TileLayerPlugin即可。

mapinfo在线地图插件_利用开源软件下载地图和影像瓦片数据(修订版)_第10张图片

如果需要显示天地图瓦片,还需要对该插件的配置文件进行配置。该插件安装好后,通常会在用户的目录下,如“*****用户\.qgis2\python\plugins\TileLayerPlugin\layers”,添加一个后缀名为.tsv的文件(如others.tsv文件),在该文件里根据天地图的矢量以及影像添加两条记录(tab):

tianditu_vec    local   file:///C:/DataSample/tianditu/tdt_vec/{z}/{x}/{y}.png    1   1    18    -180   -85    180    85

tianditu_img    local   file:///C:/DataSample/tianditu/tdt_img/{z}/{x}/{y}.png    1   1    18    -180   -85    180    85

各项含义说明如下 :

(1)数据源名称

(2)属性,可以是网络上的数据源,在这里主要是设置本地数据源,因此写成local

(3)url,在本地需要设置成路径,然后变量,如x,y,z则用{x},{y},{z}代替

(4) 原点,1代表原点是左上角点,0代表是左下角点

(5)zmin,zmax,z的层级

(6)xmin,ymin,x,y的最小值

(7)xmax,ymax,x,y的最大值

关于TileLayerPlugin的插件更详细说明可以参考如下链接(https://github.com/minorua/TileLayerPlugin)。最后则可以在QGIS里显示出完整的天地图的图层。

mapinfo在线地图插件_利用开源软件下载地图和影像瓦片数据(修订版)_第11张图片

mapinfo在线地图插件_利用开源软件下载地图和影像瓦片数据(修订版)_第12张图片

4.2  QGIS2.18版本以后的解决方案

QGIS2.18版本以后内置了对地图瓦片的支持,这些图层通常被称为“ XYZ”图层,因为它们是针对x,y坐标网格上的每个缩放级别(z)使用单独的地图瓦片制作的。特别是TileLayerPlugin插件不再支持QGIS3.*版本,这也为显示离线瓦片地图提供了极大的便捷,具体操作如下:

首先打开QGIS,找到主界面左侧“浏览”窗口中的“XYZ Tiles”工具,如图:

mapinfo在线地图插件_利用开源软件下载地图和影像瓦片数据(修订版)_第13张图片

    然后鼠标右键点击该工具,选择新建链接,打开“XYZ连接”选项卡。

mapinfo在线地图插件_利用开源软件下载地图和影像瓦片数据(修订版)_第14张图片

mapinfo在线地图插件_利用开源软件下载地图和影像瓦片数据(修订版)_第15张图片

 选项卡中“名称”任取,“网址”根据下载的离线瓦片在磁盘中的位置编写,如:(file:///D:/TianDiTu/beijing/cva/{z}/{x}/{y}.png),其他选项默认或根据需要选择。设置完成后你就可以打开瓦片啦!!!

mapinfo在线地图插件_利用开源软件下载地图和影像瓦片数据(修订版)_第16张图片

本文所用工具(除QGIS外)以及1到7层的天地图矢量和影像数据,请到如下链接下载:

链接:https://pan.baidu.com/s/13hopj4KxVTRElx-OhNxtjg

提取码: difq

获取本文pdf版本,了解更多的互联网地理数据挖掘知识,欢迎加入互联网地理数据挖掘(geodatamining)知识星球

mapinfo在线地图插件_利用开源软件下载地图和影像瓦片数据(修订版)_第17张图片

你可能感兴趣的:(mapinfo在线地图插件,windowsce软件)