用Python玩玩OSMnx包获取道路数据并可视化分析

简介:

今天我们来玩玩街道道路数据的获取,简化和可视化分析。

今天每个人都离不开导航,除了开车用导航外,其实走路、骑车、公交都可以导航,选址和找餐厅、酒店也需要,如果一个城市能够标注所以公交厕所也是很有必要的。

用Python玩玩OSMnx包获取道路数据并可视化分析

当然,实现这一切都需要我们拥有道路数据,标示道路交叉路口、死胡同、红路灯灯,并能够计算道路长度,最短路径和规划线路。

今天实现这一切都依赖地图公司的API接口和SDK,导航APP应用,利用这一切并不新鲜很是方便。比如如果你开发的APP需要具备这些功能可以直接利用百度LBS的API接口即可实现。

用Python玩玩OSMnx包获取道路数据并可视化分析

但如果我们需要进行分析型的道路分析和城市规划应用,就需要有更好的办法获取道路数据,并能够进行计算和建模,特别是网络分析的建模和度量指标,在结合区块区域Ploygon,兴趣点POI等进行匹配分析,从而实现选址、整体布局、设施评价等带来大数据分析的建模思想。

恰好前段时间看到一篇Geoff Boeing的博客提供了OSMnx的Python包,OSM是Open Street Map开源地图数据库,可以部分解决这个想法,非常棒,我们一起来玩玩!

我的环境是Mac系统安装了Anaconda的Python环境,用Conda Install OSMnx包(说明:windows操作系统下安装比较麻烦)

首先我们加载osmnx包

用Python玩玩OSMnx包获取道路数据并可视化分析

假如我们希望得到北京市朝阳区的交通道路数据,我们先熟悉一下朝阳区的区块Polygon

用Python玩玩OSMnx包获取道路数据并可视化分析

选择朝阳区后,可以得到朝阳的行政区块数据

用Python玩玩OSMnx包获取道路数据并可视化分析

我们在看看能否得到更细致的区块数据:北京大学校园占地区域

用Python玩玩OSMnx包获取道路数据并可视化分析

北京大学未名湖的Polygon数据

用Python玩玩OSMnx包获取道路数据并可视化分析

用Python玩玩OSMnx包获取道路数据并可视化分析

这样我们大概可以了解,理论上我们可以得到OSM地图上,全球范围内的所有国家、地区、城市、区县、小区、单位、建筑等,甚至是每一栋楼的区块数据。当然前提是OSM地图有这个Place标记。

下面我们看看如何获得道路数据:

我们先以北京市的道路数据看看(数据量比较大,需要一定的等待时间)

北京市行政区域道路数据:

用Python玩玩OSMnx包获取道路数据并可视化分析

根据道路的距离可视化:距离越长显示红色,越短显示黄色

用Python玩玩OSMnx包获取道路数据并可视化分析

根据道路的单行线标示颜色,红色是oneway道路

用Python玩玩OSMnx包获取道路数据并可视化分析

我们也可以同样得到朝阳区的道路数据,这里需要注意我们可以指定得到道路数据的类型:drive=驾驶,walk=步行,bike=自行车,包括指定公共道路和私家道路。

朝阳区内道路:walk类型

用Python玩玩OSMnx包获取道路数据并可视化分析

接下来,我们可以任意给定一个坐标点(经纬度坐标,lan-long),设定距离distance多远,获取坐标点距离多少的道路数据。

我以中国传媒大学的俺家为中心点,距离2000米范围,得到道路数据:

用Python玩玩OSMnx包获取道路数据并可视化分析

从图中我们可以看到这些道路的打点数据,某些点数据有标示:交叉路口、红路灯位置、死胡同等标示。

我们可以把获得的道路数据保存下来,存储成为:Shapefiles、GarphML和SVG格式文件。

这样可以将存储的node点数据和edge边数据用Tableau或Alteryx,或者Folium进行可视化。

用Python玩玩OSMnx包获取道路数据并可视化分析

我们也可以根据数据类型对道路数据进行简化,比如去掉一些点仅保留交叉路口点(有严格和非严格方式);

用Python玩玩OSMnx包获取道路数据并可视化分析

上面的红色点将可以被简化掉。

用Python玩玩OSMnx包获取道路数据并可视化分析

也可以显示不同线路长度的可视化

用Python玩玩OSMnx包获取道路数据并可视化分析

我们获得传媒大学隔壁的二外道路数据:bike类型

用Python玩玩OSMnx包获取道路数据并可视化分析

然后我们统计这部分道路的统计量

用Python玩玩OSMnx包获取道路数据并可视化分析

看看betweenness-centrality的点在哪里?

用Python玩玩OSMnx包获取道路数据并可视化分析

这个红点应该是二外的中介最高的交叉点。

有些同学可能不知道我们想分析或计算的坐标点,其实有很多种方法获取特定位置的经纬度坐标,比如:你可以导入Folium可视化地图包,点击地图就可以弹出经纬度坐标数据:

用Python玩玩OSMnx包获取道路数据并可视化分析

下面我们看看天安门,我选国旗位置点1500米范围的道路数据:walk类型

用Python玩玩OSMnx包获取道路数据并可视化分析

获得两个点的最短路径线路数据

用Python玩玩OSMnx包获取道路数据并可视化分析

也可以指定_起点:Origin_Point,终点:Destination_Point计算两点的路径和规划线路节点

用Python玩玩OSMnx包获取道路数据并可视化分析

从这些功能和计算上我们可以看到:导航是如何实现的,当然我这里就是玩玩,并没用具体的意义,至少同学们学习后可以知道基于地图数据的线路规划是啥意思,一般的原理!

其实这些算法的前景还是很广泛的,可能能够评测一家餐厅的道路方便性是重要的指标,选址和城市规划也是。

最近好像共享自行车比较火,如果能够获得人们的骑行线路,分析的思路应该有帮助!

当然,最终的地理空间数据是大数据的重要组成部分,如果根据多边形Ploygon和POI兴趣点进行数据匹配和测算,从分析型挖掘的角度应用前景广泛。后面我将继续介绍些应用算法。

推广思路上,我们可以想象地铁线路、公交线路等等道理相似。未来的车联网、道路传感器都需要这些数据的支持!

本文作者:沈浩
来源:51CTO
相关文章
|
1月前
|
机器学习/深度学习 数据采集 TensorFlow
使用Python实现智能食品消费模式分析的深度学习模型
使用Python实现智能食品消费模式分析的深度学习模型
126 70
|
1月前
|
数据采集 数据可视化 数据挖掘
利用Python自动化处理Excel数据:从基础到进阶####
本文旨在为读者提供一个全面的指南,通过Python编程语言实现Excel数据的自动化处理。无论你是初学者还是有经验的开发者,本文都将帮助你掌握Pandas和openpyxl这两个强大的库,从而提升数据处理的效率和准确性。我们将从环境设置开始,逐步深入到数据读取、清洗、分析和可视化等各个环节,最终实现一个实际的自动化项目案例。 ####
123 10
|
1月前
|
机器学习/深度学习 数据采集 TensorFlow
使用Python实现智能食品消费习惯分析的深度学习模型
使用Python实现智能食品消费习惯分析的深度学习模型
146 68
|
2月前
|
测试技术 Python
手动解决Python模块和包依赖冲突的具体步骤是什么?
需要注意的是,手动解决依赖冲突可能需要一定的时间和经验,并且需要谨慎操作,避免引入新的问题。在实际操作中,还可以结合使用其他方法,如虚拟环境等,来更好地管理和解决依赖冲突😉。
|
2月前
|
持续交付 Python
如何在Python中自动解决模块和包的依赖冲突?
完全自动解决所有依赖冲突可能并不总是可行,特别是在复杂的项目中。有时候仍然需要人工干预和判断。自动解决的方法主要是提供辅助和便捷,但不能完全替代人工的分析和决策😉。
|
1月前
|
机器学习/深度学习 数据采集 数据挖掘
使用Python实现智能食品消费市场分析的深度学习模型
使用Python实现智能食品消费市场分析的深度学习模型
119 36
|
14天前
|
数据采集 Web App开发 监控
Python爬虫:爱奇艺榜单数据的实时监控
Python爬虫:爱奇艺榜单数据的实时监控
|
27天前
|
数据可视化 算法 数据挖掘
Python量化投资实践:基于蒙特卡洛模拟的投资组合风险建模与分析
蒙特卡洛模拟是一种利用重复随机抽样解决确定性问题的计算方法,广泛应用于金融领域的不确定性建模和风险评估。本文介绍如何使用Python和EODHD API获取历史交易数据,通过模拟生成未来价格路径,分析投资风险与收益,包括VaR和CVaR计算,以辅助投资者制定合理决策。
73 15
|
1月前
|
机器学习/深度学习 数据采集 数据挖掘
使用Python实现智能食品消费趋势分析的深度学习模型
使用Python实现智能食品消费趋势分析的深度学习模型
117 18
|
1月前
|
数据可视化 编译器 Python
Manim:数学可视化的强大工具 | python小知识
Manim(Manim Community Edition)是由3Blue1Brown的Grant Sanderson开发的数学动画引擎,专为数学和科学可视化设计。它结合了Python的灵活性与LaTeX的精确性,支持多领域的内容展示,能生成清晰、精确的数学动画,广泛应用于教育视频制作。安装简单,入门容易,适合教育工作者和编程爱好者使用。
284 7
下一篇
开通oss服务