OSMNX绘制上海地图和车辆轨迹(一)

OSMNX地图绘制——两行代码绘制地图


最近一段时间在做道路相关的工作,想要去构建节点和边的模型。发现OSMNX自带这个功能,于是开始了OSMNX的学习之路。由于网上的资料相对较少,写下这篇博客分享一下OSMNX的使用。
如想直接学习创建地图的代码,请直接移步至 用OSMNX创建地图

OSMNX初探

pip install osmnx下载好这个包,然后打开官方文档看OSMNX的用法。在本章首先对OSMNX的主要构成进行介绍,之后用一个例子来说明如何创建地图。

OSMNX的主要构成

模块组成

从官方文档看,比较重要的模块分为以下几个部分:

  • osmnx.bearing 图中边的方向角度,方向的熵,方向的分布
  • osmnx.distance 计算距离和最短路径并找到离点最近的节点/边
  • osmnx.elevation 海拔计算
  • osmnx.folium 通过folium创建可交互的地图(folium真的很强大!!!)
  • osmnx.geocoder 根据地址的名字返回经纬度或者gdf(GeoDataFrame )
  • osmnx.geometries 从 OpenStreetMap 下载地理空间实体的几何图形和属性
  • osmnx.graph 创建graph,返回networkx.MultiDiGraph,创建方法包括从点创建,从bbox创建,从多边形创建,从xml创建等
  • osmnx.io 进行序列化存储到磁盘,从磁盘上加载模型
  • osmnx.plot 绘制空间几何图形、街道网络和路线
  • osmnx.speed 添加speed和travel time
  • osmnx.stats 图的一些统计特征,例如节点的度、有多少个segment、边的平均长度等等
  • osmnx.truncate 按距离、边界框或多边形截断图形
  • osmnx.utils general util function
  • osmnx.utils_geo 和地理相关的utility function,从点创建bbx,插值、采样
  • osmnx.utils_graph 和图相关的utility function,如从MultiDiGraph变为DiGraph,GeoDataFrame/MultiDiGraph相互转化,获得最大联通分量子图,获取每条边的属性值列表,去除独立不含边的点
涉及数据类型介绍

用OSMNX创建地图

笔者使用的OSMNX版本为1.2.2,下面的实验都基于该版本。在加载地图时需要科学上网。
地图获取

首先import osmnx这个包,之后采用graph_from_place方法从地址上海市创建出networkx.MultiDiGraph对象

import osmnx as ox 

city = ox.graph_from_place("上海市",network_type = 'drive', simplify=True)
地图绘制

之后采用plot_graph方法绘制出图片。

ox.plot_graph(city)

在这里插入图片描述
每次都选择重新绘制图片是非常慢的,很好的是,osmnx为我们提供了保存和加载数据到磁盘的方法load_graphml/save_graphml

地图的保存和加载

保存数据

ox.save_graphml(city, 'shanghai.xml')

之后就可以使用

当然我们可以通过更改node_size等参数把图画的更好看,还可以设置是否保存图片等等。

ox.plot_graph(G, node_size=8, save=True, filepath="shanghai.png", dpi=300)

在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值