利用QGIS下载地图数据

  • 2019 年 10 月 3 日
  • 筆記

这段时间做了一些利用地理信息进行定位导航的系列工作,其中很重要的一部分是如何获取到地图数据,比如道路的矢量图、某一区域的栅格图,我用到的主要工具是QGIS。QGIS是一个跨平台的免费应用,其中集成了对矢量图、栅格图处理的很多功能,同时也集成了很多开放地图数据网站的接口,比如OpenStreetMap等,因此,在获取数据,并处理成我们需要的格式方面非常便利。本篇博文主要介绍如何使用QGIS下载数据,并处理成特定的格式。

一、 指定区域指定地物矢量图获取

我们经常会遇到这样一种需求:获取某一区域的指定地物的地图,比如获取某一区域的道路图、河流图等。这一节的内容能够解决这一需求。通常我们从开放的地图平台OpenStreetMap中下载某一区域的矢量地图,而后通过后续的处理,来获取我们需要的地图信息。

1、数据下载

1) 在vector菜单栏中选择OpenStreetMap ->Download Data,即可打开数据的下载框:

 

2)而后设定需要下载数据的区域,这里提供了三种区域设置方式:

a) From map canvas:当前窗口显示的区域

b) From layer:某一图层所代表的区域

c) Manual:人为设定区域

通常当我们已知我们需要下载的数据的区域,我们采用第三种方式。

 

3)下载数据:设置好下载区域,并输入保存文件名后,点击确定,即开始下载数据。这里需要注意的一点是,在设定保存文件名时,需要把文件的扩展名带上,即.osm,这样在后续加载文件时,才不会出现找不到文件的情况。

 

2、提取指定地物及矢量图保持

上一步下载的数据是以xml的形式存储的,不是矢量图的格式,因此不能被直接处理。我们需要首先将该文件加载入QGIS中,并转换为矢量数据,才能进行下一步的处理。

1) osm文件加载:选择vector->Import Topology from XML,打开数据导入页面: 

选择需要导入的文件(即刚才我们下载的osm文件),设置转换后文件名,点击确认。

2) 导出矢量图:选择vector->Export Topology to SpatiaLite,打开矢量图导出页面: 

由于此处我们需要得到的是道路数据,因此我们在“export type”选择Polylines;而后设置导出文件名;最后需要导出标签。选择Load from DB,并选择感兴趣的标签。这里我们仅对道路感兴趣,因此我们仅选择highway。保留标签的目的是为了进一步筛选,虽然我们在“export type”中选择了Polylines,但是并不是所有的Polylines都是道路(也有可能是河流等),因此需要进行进一步的筛选。 

3) 筛选感兴趣的地物:

 

上述得到的矢量图,不仅仅包含道路图,还包含了其他地物特征,因此需要进一步筛选。

在获得的图层上,右键打开菜单选项,选择Open Attribute Table: 

选择select by expression(图中红色圈),而后设置筛选的条件。这里我们需要选择的是道路,因此我们的筛选条件为:NOT (“highway”= ‘NULL’)。点集select按钮后,可以看见,道路部分被黄色高亮了。

 

而后我们在图层窗口右键打开菜单,选择保存,打开保存页面:

 

设置保存文件名,地理坐标系,注意勾选红色圈内选项,选择保存,即得到该区域的道路矢量图。

二、指定区域栅格图获取

1、设置下载网址

在Browser Panel窗口中找到Tile Server(XYZ),右键,New Connection:

输入服务器的网址,例如:

高德影像图:

https://webst01.is.autonavi.com/appmaptile?style=6&x={x}&y={y}&z={z}

高德路网:

https://wprd01.is.autonavi.com/appmaptile?x={x}&y={y}&z={z}&lang=zh_cn&size=1&scl=2&style=8&ltype=11

此时会生成服务器地图的接口。

2、创建栅格地图图层

双击上述创建的服务器地图接口,即会在Layer Panel中生成一个响应的图层。此时,如果我们知道需要下载的区域的地理坐标,可直接进入第三步。如果不知道,可以打开参考地图,通过手动选取,来设定下载区域。具体做法为:

打开web->OpenLayers plugin,选择想要的地图:

 

而后通过缩放,拖动等操作,将地图设置到我们需要的区域:

 

3、保存需要的栅格地图

在创建的栅格图层上,右键,选择保存,打开保存页面:

 

设置保存的路径,地理坐标系,范围(Extent),分辨率(Resolution),点击确定后,栅格地图数据就会被下载下来。如果保存的范围很大,通常地图会被分割为若干个小的区域进行保存。 

相关操作,可以参考视频:https://www.bilibili.com/video/av65253432/