1 前言
本文介绍如何通过QGIS来获取境内任意城市的路网数据(经纬度坐标),并以上海市为例,一步步演示最终得到全市路网的百度坐标。
1.1 准备工作
- 下载QGIS(本文所用版本:QGIS-OSGeo4W-2.18);下载完成后双击安装。安装完可以设置语言为简体中文Setting→Options→Locale→Override system locale→中文。
- 下载QGIS的坐标转换插件GeoHey Toolbox;下载完成后将其解压到“C:\Users{用户名} .qgis2\python\plugins”,如果没有这个文件夹,则新建之。
- 下载QGIS的底图插件Quick Map Services;并将其解压到“C:\Users{用户名}.qgis2\python\plugins”。
- 全国矢量数据获取;网上有很多资源可以下载,保存于本地即可。
- 全国路网数据下载,可通过OSM Geofabrik项目下载中国水系、道路路网、建筑物、湖泊河网数据,数据坐标系为WGS84,下载地址http://download.geofabrik.de/asia/china-latest-free.shp.zip 。
以上步骤不做赘述,有疑问可留言交流 。
2 上海市路网数据获取
打开QGIS(该软件也甚是奇怪,安装完成之后,快捷方式在一桌面文件夹中,里面有多个快捷方式),双击名为QGIS Desktop 2.18.11的快捷方式打开该软件。
2.1 选择OSM打开底图
OSM的坐标系是WGS84。打开之后,中间画板可随意拖动地图,鼠标滚轮也可以将其放大缩小。
2.2 添加全国省级行政区图层
点击图层-添加图层-添加矢量图层,或使用左侧菜单栏中添加图层按钮,如图,添加图层,数据集选择打开全国矢量部分中的省级行政区文件(选择后缀shp文件即可)。
添加后如图所示:
可以看到全国行政区和OSM的地图几乎完全重合,因此该行政区文件是WGS84或者国标2000的坐标系。
2.3 获取上海行政区划数据
当我们需要从全国路网数据里裁剪出上海市的路网,那么我们最好使用上海市的行政区划对全国路网进行裁剪。基本思路就是把上海市行政区的图斑复制一下,然后通过这块图斑裁剪全国路网数据图层,再把裁剪下来的上海市路网数据保存到一个空白的新的矢量文件(shapefile)中。
2.3.1 新建图层
新建shapefile图层,因为行政区划是一个多边形,所以这里选择多边形。文件编码可选择UTF-8(默认是System,以免最后路网数据文件中的街道名称中文乱码),新建字段不必填,这属于入门知识,初学者可以忽略。点击ok后另存为上海行政区。
2.3.2 选中上海市图斑并启动编辑
在全国行政区图层上选择上海市图斑,选中后如图所示:
再在左侧面板栏中右键省级行政区,选择切换编辑状态:
2.3.3 复制并粘贴上海市图斑
在上述步骤操作完成后,点击菜单栏中的编辑-----复制要素
然后再按照图中演示步骤在上海市行政区图层中粘贴要素,先取消勾选省级行政区,将该图层隐藏,再点击上海行政区图层,并选择切换编辑状态,然后再在菜单中粘贴要素。
上述步骤完成后右键上海行政区选择保存图层编辑
2.4 使用行政区划裁剪全国路网
从上述准备工作中的china-xxxx-free.shp.zip中找到gis_osm_roads_free_1.*并解压,在QGIS中添加gis_osm_roads_free_1矢量文件。
添加后如图所示
在右侧工具栏中搜索裁剪,对路网进行裁剪操作,步骤如图所示,最后选择保存路径,点击run运行
裁剪后的路网显示:
如上图左侧图层面板中的“剪下”文件就是裁剪下来的上海市路网shapefile文件(shp文件,wgs坐标系),得到该文件后即可将其进行坐标转换。
2.4.1 对裁剪文件进行格式和坐标转换
准备工作中的坐标转换插件安装完成并激活后,可以在右侧工具栏中找到该工具,坐标转换步骤如下图所示:
点击run之后,转换过程如下图所示
如此,我们便得到了百度坐标系的上海市路网数据shp文件,但该文件无法用notepad打开,我们最终需要的是经纬度坐标的文本文件,因此还需将其转换成geojson文件,先在左侧图层面板中右击要转换的图层,另存为geojson文件,定义好输出路径即可。
2.5 输出验证
最后geojson文件:
检测一下,取几个坐标在百度坐标拾取器上验证,可发现路名与geojson文件中的路名完全相同,说明我们的路网数据获取正确。