如何优雅的从OSM(OpenStreetMap)上获取一个城市的路网?

您所在的位置:网站首页 如何快速认识一个城市的道路 如何优雅的从OSM(OpenStreetMap)上获取一个城市的路网?

如何优雅的从OSM(OpenStreetMap)上获取一个城市的路网?

2024-02-14 10:08| 来源: 网络整理| 查看: 265

文章目录 一、通过Overpass API获取OSM文件二、OSM文件转为shapefile三、路网数据处理四、总结 在科研、竞赛中,很多时候需要获取一个城市的交通路网数据,一般而言就会从开源的公开地图数据Openstreetmap中获取。Openstreetmap(简称osm)其包含图层主要有高速公路、铁路、水系、水域、建筑、边界、建筑物等图层。其中OSM的下载主页为: 传送门。使用说明为: 传送门。

申明:

本文只是介绍以城市为单位获取一个市的路网数据方法,只是OSM中一个小功能,OSM还提供很多很强大的功能。已经有很多优秀的博客记录了处理方法,本文也从中受益很多,贴出好的blog供大家学习。 从Openstreetmap获取路网数据并制作shapefile图层 利用OpenStreetMap获取大洲、国家、省市、行政区路网数据还可以配合中国行政区域边界shp图层下载,参考这个老哥的blog。

OKK,下面正式开始介绍——以下载福建省南平市路网为例。

一、通过Overpass API获取OSM文件

1、在openstreetmap上搜会发现,南平市的行政区域是不规则的,但是直接通过openstreetmap上只能通过小范围的矩形经纬度进行框选直接导出,这显然不符合我们的需求。(重点:可以记一下下图框选出来的南平市ID) 在这里插入图片描述 2、Overpass API是一个可以写代码获取一个城市路网的接口。具体使用方法为:

① 根据城市名获取城市的ID: 进入网页,然后在Overpass API QueryForm这个窗口中输入以下代码(需要把南平市替换为您的目标城市),然后点击query,就会下载一个interpreter的文件。

打开下载的文件(记事本打开就行),可以看到一个ID,这个ID与第一步在openstreetmap中写的城市ID是一致的。 在这里插入图片描述 ② 依据城市的ID获取路网数据:还是在网页,然后在Overpass API QueryForm这个窗口中输入以下代码(需要把中的数字替换为您的目标城市的ID+3600000000,也就是前三位为360,后面7位数是上一步得到的城市ID),然后点击query,又会下载一个interpreter的文件。

二、OSM文件转为shapefile

刚刚下载的interpreter文件在ArcGis中打不开,需要进行转换。

1、安装ArcGIS Editor for OpenStreetMap插件

资源下载:https://blog.csdn.net/weixin_41070993/article/details/120982415 下载地址查询:

https://www.esri.com/en-us/arcgis/products/arcgis-editor-for-openstreetmaphttps://github.com/Esri/arcgis-osm-editor

下载后直接解压,双击对应版本.exe安装即可,安装完成后。打开ArcMap,发现ArcToolbox还没有该插件,点击自定义,勾选上Openstreetmap,将插件添加到工具箱中,工具箱会出现OpenStreetMap Toolbox.tbx。

2、将OSM数据转为shp数据

① 在本地新建一个文件地理数据库。 在这里插入图片描述

② 使用OpenStreetMap Toolbox.tbx工具中的Load OSM File功能,将生成结果输出到新建的文件地理数据库。转换完成后,会生成点线面shp文件,对应着不同的数据信息,可以查看官方文档对不同字段的定义。这时文件地理数据库中存储着转换后的数据,我们只需要将路网图层导出为shapefile文件就可以了。 在这里插入图片描述 会生成一个数据集 在这里插入图片描述

上述的图和说明都是直接复制前人的,确实写的不错。踩坑点在于:文件路径不能出现中文,否则会出现线状图层没数据。

三、路网数据处理

1、数据字段含义

从openstreetmap上下载的数据其实很乱的,字段含义也与国内的道路分级不太相同,我们依然可以根据下面的图表按照需求进行处理。 我们打开道路SHP数据属性表,OSM对道路的分级在fclass字段里,字段里包含27个分类。

tertiary(第三级道路):城市支路,tertiary_link(第三级道路-连接):匝道,机场集散车行道路(数据量极少,多是未知道路)residential(居住区道路):居住区车行道路,unclassified(未分类道路):居住区车行道路,滨水车行道路,机场机动车通道secondary(次要道路):城市次要车行道路,机场外围车行道路,secondary_link(次要道路-连接):城市次要车行道路立交、匝道(数据量少,部分零散分布未知类别)primary(主要道路):城市主要车行道路primary_link(主要道路):城市主要车行道路立交,城市主要车行道路匝道(数据量少,部分零散分布未知类别)motorway(高速公路):高速公路,过江隧道motorway_link(高速公路-连接):高速公路立交,匝道trunk(干道):高架快速路,机场进站快速路,过江隧道,桥上快速路trunk_link(干道-连接):立交,匝道,桥上引道,机场进站快速路,国道改道track(小路):郊区、乡村、工矿区、田间、林间小路track_grade1(小路 级别1):郊区、乡村、工矿区、田间、林间小路track_grade2(小路 级别2):郊区、乡村、工矿区、田间、林间小路track_grade3(小路 级别3):郊区、乡村、工矿区、田间、林间小路track_grade4(小路 级别4):郊区、乡村、工矿区、田间、林间小路track_grade5(小路 级别5):郊区、乡村、工矿区、田间、林间小路bridleway(马道):体育场馆内部专用道路(数据量极少,零星道路在公园、居住区内部)living_street(生活街道):居住区车行道路,公园车行道路path(小道):公园车行道路,居住区车行道路(分布零碎,量少)service(服务性道路):居住区车行道路,火车站集散车行道,公园车行道路,公共建筑集散车行道,公交枢纽入口车行道路,停车场入口车行道路footway(人行道):滨水绿道,公园步行道,广场步行道,大学步行道路,人行道,火车站人行集散道路pedestrian(步行街道):步行街,广场步行道路,公园步行道路,居住区步行道路steps(台阶踏步):人行过街天桥台阶,广场台阶、公共建筑入口台阶,登山台阶cycleway(自行车道):滨水绿道,非机动车道,公园自行车道unknown(未知道路):滨水车行道路,校园广场车行道路,乡道(数据量少,比较难判别道路类型)

然后,还可能出现水系、行政边界啥的,就很乱。按照需求采用删掉不合规的数据。

具体咋做?先调出edit的窗口,start editing然后把不合规的全部删掉。

2、根据路网提取路段交点

这个道路数据除了特别乱,而且拓扑关系也乱,线图层可以视作路段,点图层是路段矢量化的点,太多了不适合做分析,因此本文想提取出所有路段交点,用路段交点打断路网,生成一个点图层和一个线图层。

① 将所有路段合并为一个矢量要素

start editing,选中所有的要素,点击“合并” 在这里插入图片描述

② 打断相交线 在这里插入图片描述

③ 建立网络数据集 在这里插入图片描述 然后一直按next,建立完之后就形成了一个图层 在这里插入图片描述 具体的操作看这个吧

四、总结

记录是为了避免重复的学习



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3