利用QGIS下载地图数据
这段时间做了一些利用地理信息进行定位导航的系列工作,其中很重要的一部分是如何获取到地图数据,比如道路的矢量图、某一区域的栅格图,我用到的主要工具是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<ype=11
此时会生成服务器地图的接口。
2、创建栅格地图图层
双击上述创建的服务器地图接口,即会在Layer Panel中生成一个响应的图层。此时,如果我们知道需要下载的区域的地理坐标,可直接进入第三步。如果不知道,可以打开参考地图,通过手动选取,来设定下载区域。具体做法为:
打开web->OpenLayers plugin,选择想要的地图:
而后通过缩放,拖动等操作,将地图设置到我们需要的区域:
3、保存需要的栅格地图
在创建的栅格图层上,右键,选择保存,打开保存页面:
设置保存的路径,地理坐标系,范围(Extent),分辨率(Resolution),点击确定后,栅格地图数据就会被下载下来。如果保存的范围很大,通常地图会被分割为若干个小的区域进行保存。
相关操作,可以参考视频:https://www.bilibili.com/video/av65061459/
利用QGIS下载地图数据的更多相关文章
- 利用pyecharts做地图数据展示
首先, pip install pyecharts 为了地图上的数据能显示完全,加载好需要的城市地理坐标数据. pip install echarts-countries-pypkg pip inst ...
- C++代码利用pthread线程池与curl批量下载地图瓦片数据
项目需求编写的程序,稳定性有待进一步测试. 适用场景:在网络地图上,比如天地图与谷歌地图,用户用鼠标在地图上拉一个矩形框,希望下载该矩形框内某一层级的瓦片数据,并将所有瓦片拼接成一个完整的,包含地理坐 ...
- 用java解析在OpenStreetMap上下载的地图数据
采用dom4j解析下载的xml文件,java程序如下: package gao.map.preprocess; import java.io.BufferedWriter; import java.i ...
- ECharts的geojson地图数据下载(根据城市区划代码的前六位查询)
链接如下: http://echarts.baidu.com/echarts2/doc/example/geoJson/china-main-city/522200.json 想要对应城市的geojs ...
- 使用R画地图数据
用R画地图数据 首先,从这里下载中国地图的GIS数据,这是一个压缩包,完全解压后包含三个文件(bou2_4p.dbf.bou2_4p.shp和bou2_4p.shx),将这三个文件解压到同一个目录下. ...
- 利用 PortableBasemapServer 发布地图服务
前段时间需要给自己的C/S系统加一个地图,但是没有数据,于是就想到了使用网上的切片地图,但是C/S系统又不能联网,于是就想本地发布切片服务来使用. 本来想用ArcGIS Server来发布从网上下载的 ...
- 利用ArcEngine开发地图发布服务,将mxd文档一键发布成wmts,并根据需要对地图进行空间查询,返回客户端geojson
一直想开发一个软件取代ArcGIS Server,该软件使用ArcEngine开发,以Windows Service形式发布,部署在服务端上,解决wmts地图服务发布和空间查询的问题,经过不断的研究. ...
- 全国SHP地图数据赠送
百度搜索:GIS之家获取全国SHP图层数据的方式:收藏(ArcGIS地图全国电子地图shp格式版本GIS地图数据.GIS开发顺德政府GIS公共服务共享平台),并且截图验证,验证通过后,收下邮箱,我把下 ...
- Android利用Fiddler进行网络数据抓包
最新最准确内容建议直接访问原文:Android利用Fiddler进行网络数据抓包 主要介绍Android及IPhone手机上如何进行网络数据抓包,比如我们想抓某个应用(微博.微信.墨迹天气)的网络通信 ...
随机推荐
- matlab考试重点详解
此帖是根据期末考试复习重点补充完成, 由于使用word编辑引用图片和链接略有不便, 所以开此贴供复习及学习使用.侵删 复习要点 第一章 Matlab的基本概念,名称的来源,基本功能,帮助的使用方法 1 ...
- Quartus ii调试技巧_01
前几天李主任跟我分享了一些特别好用的调试技巧: 1)System Sources and Probes Editor---类似于人为设置触发条件,创建虚拟按键等功能,这段时间一直在做一个电机的驱动,板 ...
- linux初学者-Apache篇
linux初学者-Apache篇 Apache提供了超文本传输协议http,httpd是Apache超文本传输协议的主服务器.下文将对httpd的安装和配置进行简单的叙述. ...
- JSP数据交互(一)
1.JSP内置对象:JSP内置对象是 Web 容器创建的一组对象,不用通过手动new就可以使用 2.JSP9大内置对象: 对象名称 类型 request (请求对象) javax.servl ...
- Heap Greedy
1 239 Sliding Window Maximun 双端队列 public int[] maxSlidingWindow(int[] nums, int k) { if (nums == nul ...
- 【JDK】JDK源码分析-LinkedHashMap
概述 前文「JDK源码分析-HashMap(1)」分析了 HashMap 主要方法的实现原理(其他问题以后分析),本文分析下 LinkedHashMap. 先看一下 LinkedHashMap 的类继 ...
- 【Java】Map
今天用到了键-值对,于是想起了 Java 的 Map,由于之前并不很熟悉,就看了下源码,如下: /* * Copyright (c) 1997, 2006, Oracle and/or its aff ...
- poj 1503 高精度加法
把输入的数加起来,输入0表示结束. 先看我Java代码,用BigINteger类很多东西都不需要考虑,比如前导0什么的,很方便.不过java效率低点,平均用时600ms,C/C++可以0ms过. im ...
- 搭建谷歌浏览器无头模式抓取页面服务,laravel->php->python->docker !!!
背景: 公司管理系统需要获取企业微信页面的配置参数如企业名.logo.人数等信息并操作,来隐藏相关敏感信息并自定义简化企业号配置流程 第一版已经实现了扫码登录获取cookie,使用该cookie就能获 ...
- JDBC连接池-C3P0连接
JDBC连接池-C3P0连接 c3p0连接池的学习英语好的看英文原版 c3p0 - JDBC3 Connection and Statement Pooling 使用c3p0连接池 三种方 ...