这段时间做了一些利用地理信息进行定位导航的系列工作,其中很重要的一部分是如何获取到地图数据,比如道路的矢量图、某一区域的栅格图,我用到的主要工具是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/av65061459/

利用QGIS下载地图数据的更多相关文章

  1. 利用pyecharts做地图数据展示

    首先, pip install pyecharts 为了地图上的数据能显示完全,加载好需要的城市地理坐标数据. pip install echarts-countries-pypkg pip inst ...

  2. C++代码利用pthread线程池与curl批量下载地图瓦片数据

    项目需求编写的程序,稳定性有待进一步测试. 适用场景:在网络地图上,比如天地图与谷歌地图,用户用鼠标在地图上拉一个矩形框,希望下载该矩形框内某一层级的瓦片数据,并将所有瓦片拼接成一个完整的,包含地理坐 ...

  3. 用java解析在OpenStreetMap上下载的地图数据

    采用dom4j解析下载的xml文件,java程序如下: package gao.map.preprocess; import java.io.BufferedWriter; import java.i ...

  4. ECharts的geojson地图数据下载(根据城市区划代码的前六位查询)

    链接如下: http://echarts.baidu.com/echarts2/doc/example/geoJson/china-main-city/522200.json 想要对应城市的geojs ...

  5. 使用R画地图数据

    用R画地图数据 首先,从这里下载中国地图的GIS数据,这是一个压缩包,完全解压后包含三个文件(bou2_4p.dbf.bou2_4p.shp和bou2_4p.shx),将这三个文件解压到同一个目录下. ...

  6. 利用 PortableBasemapServer 发布地图服务

    前段时间需要给自己的C/S系统加一个地图,但是没有数据,于是就想到了使用网上的切片地图,但是C/S系统又不能联网,于是就想本地发布切片服务来使用. 本来想用ArcGIS Server来发布从网上下载的 ...

  7. 利用ArcEngine开发地图发布服务,将mxd文档一键发布成wmts,并根据需要对地图进行空间查询,返回客户端geojson

    一直想开发一个软件取代ArcGIS Server,该软件使用ArcEngine开发,以Windows Service形式发布,部署在服务端上,解决wmts地图服务发布和空间查询的问题,经过不断的研究. ...

  8. 全国SHP地图数据赠送

    百度搜索:GIS之家获取全国SHP图层数据的方式:收藏(ArcGIS地图全国电子地图shp格式版本GIS地图数据.GIS开发顺德政府GIS公共服务共享平台),并且截图验证,验证通过后,收下邮箱,我把下 ...

  9. Android利用Fiddler进行网络数据抓包

    最新最准确内容建议直接访问原文:Android利用Fiddler进行网络数据抓包 主要介绍Android及IPhone手机上如何进行网络数据抓包,比如我们想抓某个应用(微博.微信.墨迹天气)的网络通信 ...

随机推荐

  1. Gitlab Runner实现NetCore自动化持续集成

    目录 1.开发工具 2.GitLab服务器搭建 3.新建webapi 4.Dockerfile配置 5.配置docker-compose.yml 6.配置.gitlab-ci.yml 7.在GitLa ...

  2. 个人永久性免费-Excel催化剂功能第51波-聚光灯功能,长宽工作表不看错位使用

    Excel的聚光灯功能,笔者是有点看不上,也曾经写文吐槽过这些类似的功能的实用性,但现实可能真的很多小白很需要,大家Excel水平参差不齐,大量的不规范做表习惯,致使此功能使用场景仍然非常广阔.很怀疑 ...

  3. 个人永久性免费-Excel催化剂功能第36波-新增序列函数用于生成规律性的循环重复或间隔序列

    啃过Excel函数的表哥表姐们,一定对函数的嵌套.数组公式等高级的应用有很深的体会,威力是大,但也烧死不少脑细胞,不少人就在这样的绕函数中光荣地牺牲了,走向从入门到放弃.Excel催化剂的创立,初衷就 ...

  4. c语言进阶7-结构体

    一.  结构体: 在程序设计基础当中我们学习了变量,变量可以节省使用空间相对于常量而言,大家来看下表: 学号 姓名 职位 性别 数学 英语 语文 总成绩 1 刘琳 班委 女 50 61 56 167 ...

  5. C#3.0新增功能10 表达式树 01 简介

    连载目录    [已更新最新开发文章,点击查看详细] 如果你使用过 LINQ,则会有丰富库(其中 Func 类型是 API 集的一部分)的经验. (如果尚不熟悉 LINQ,建议阅读 LINQ 教程,以 ...

  6. sql注入篇1

    一.前言 学习了感觉很久的渗透,总结一下sql注入,系统整理一下sql注入思路. 二.关于sql注入 所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到 ...

  7. 四、利用SQL Server 2008 R2创建自动备份计划

    (转) 本文主要利用SQL Server 2008 R2自带的"维护计划"创建一个自动备份数据的任务. 首先,启动 Sql Management studio,确保"SQ ...

  8. linux初学者-DNS集群篇

    linux初学者-DNS集群篇 DNS服务器一般在使用时,为了缓解服务器的压力,多使用一个主DNS服务器,多个副DNS服务器,这些DNS服务器就组成了一个DNS集群. 在DNS主服务器配置好后,需要另 ...

  9. Floyd—Warshall算法

    我们用DP来求解任意两点间的最短路问题 首先定义状态:d[k][i][k]表示使用顶点1~k,i,j的情况下,i到j的最短路径 (d[0][i][j]表示只使用i和j,因此d[0][i][j] = c ...

  10. 使用Redis为注册中心的Dubbo微服务架构(基于SpringBoot)

    title: 使用Redis为注册中心的Dubbo微服务架构(基于SpringBoot) date: 2019-07-30 14:06:29 categories: 架构 author: mrzhou ...