plot4gmns:面向通用建模网络范式(GMNS)的快速可视化【v0.1.1】
创始人
2024-05-19 22:19:20
0

一款面向通用建模网络范式(GMNS)的快速可视化工具

目录

  • 1. 标准数据框架
  • 2. 标准数据框架下的生态
    • 2.1 数据解析
    • 2.2 数据处理
    • 2.3 数据可视化
  • 3. 标准数据框架下的可视化
    • 3.1 基础语法
    • 3.2 进阶语法

1. 标准数据框架

制定一套标准的数据框架,可实现不同类型的交通基础设施在同一张网上进行可视化及建模、促进多样化运输服务数据的整合,为综合交通底层数据库构建与上层网络设计提供支撑。在OpenStreetMap(OSM)地图服务与Python第三方依赖包的支持下,用户可快速获取基于通用建模网络范式(GMNS)的多模式交通网络数据,开展更深层次的交通科研工作。关于表述数据框架的介绍,建议阅读下边这篇文章:
通用数据范式助力交通融合发展【结尾彩蛋附交通网络数据集】

2. 标准数据框架下的生态

目前通用建模网络范式(GMNS)下的生态产品包括但不限于以下几个层面:

2.1 数据解析

osm2gmns
功能: 导出多类型交通网络数据
作者: Jiawei Lu, Xuesong (Simon) Zhou
主页: https://pypi.org/project/osm2gmns/
osm2rail
功能: 导出铁路网络数据
作者: Jiawei Lu, Qian Fu, Zanyang Cui, Dr. Junhua Chen
主页: https://pypi.org/project/osm2rail/

2.2 数据处理

grid2demand
功能: 基于路网上或研究范围内的活动点生成小区间的出行需求
作者: AjLi, ASU Trans+AI Lab
主页: https://pypi.org/project/grid2demand/
path4gmns
功能: 在多模式交通网络中寻找最短路,执行交通分配
作者: jdlph, xzhou99
主页: https://pypi.org/project/path4gmns/

2.3 数据可视化

NeXTA4GMNS
功能: 据根据个体出行路径实现交通仿真模拟
作者: xzhou99
主页: https://github.com/asu-trans-ai-lab/NeXTA4GMNS/tree/gh-pages/release
plot4gmns
功能: 针对上述工具导出数据提供快速可视化方案
作者: Dr. Junhua Chen, Zanyang Cui, Xiangyong Luo
主页: https://pypi.org/project/plot4gmns/

3. 标准数据框架下的可视化

目前plot4gmns更新到了v0.1.1版本,为用户提供针对osm2gmns和grid2demand的快速可视化功能。关于osm2gmns和grid2demand的教程可参考以下文章:

【上新了】出行需求从哪来?Grid2demand六行代码帮你搞定!

【神器】你想要的交通网络数据,三行代码搞定!

这里以grid2demand的输出文件为例,介绍由plot4gmns提供的快速可视化方案。在开始前应准备好以下文件(grid2demand的输出文件夹):

在这里插入图片描述

3.1 基础语法

Step 1:安装

pip install plot4gmns

Step 2:读取并生成多模式交通网络

import plot4gmns as p4g
mnet = p4g.generate_multi_network_from_csv(r'./datasets')

参数说明:

  • input_dir:必传参数,网络数据文件路径;

返回值:

  • MultiNet:多模式网络实例,用于后续绘图。同时,在当前工作路径生成一个名为 ‘p4g_fig_results’的文件夹,并保存了一个html文件,该文件是基于 ‘keplergl’ 的web端可视化文件,双击打开后用户可探索更多操作。

在这里插入图片描述

Step 3:显示不同模式网络数据

cf = p4g.show_network_by_modes(mnet=mnet)
cf.show()

网络模式类型:‘bike’, ‘walk’, ‘auto’, ‘railway’

参数说明:

  • ment:必传参数,多模式网络实例(Step2的返回值);
  • modes:可选参数,需要展示的网络模式集合,以list形式传入,默认值为 ‘all’,表示展示所有网络模式;
  • fig_obj:可选参数,绘图画板,用于堆叠绘图,默认为 ‘None’(后续介绍具体用法);
  • isSave2png:可选参数,是否保存绘图结果,more为 ‘True’。

返回值:

  • Figure:matplotlib的figure实例,可调用show函数显示绘图结果,也可作为参数传入,用于堆叠绘图;同时,绘图结果将以png文件保存在‘p4g_fig_results’文件夹中。

bike
walk
在这里插入图片描述

Step 4:选择性展示网络node

cf = p4g.show_network_by_node_types(mnet=mnet,osm_highway=['traffic_signals','crossing'])
cf.show()

参数说明:

  • ment:同上;
  • osm_highway:必传参数,需要展示的网络节点类型集合,以list形式传入;
  • fig_obj:同上;
  • isSave2png:同上。

返回值:

  • 同上,不再赘述

在这里插入图片描述

Step 5:选择性展示网络link

cf = p4g.show_network_by_link_types(mnet=mnet,link_types=['secondary','footway'])
cf.show()

参数说明:

  • ment:同上;
  • link_types:必传参数,需要展示的网络弧类型集合,以list形式传入;
  • fig_obj:同上;
  • isSave2png:同上。

返回值:

  • 同上,不再赘述

在这里插入图片描述

Step 6:展示特定长度的网络弧

cf = p4g.show_network_by_link_length(mnet=mnet,min_length=10,max_length=50)
cf.show()

参数说明:

  • ment:同上;
  • min_length:必传参数,需要展示的最短网络弧,以int形式传入;
  • max_length:必传参数,需要展示的最长网络弧,以int形式传入;
  • fig_obj:同上;
  • isSave2png:同上。

返回值:

  • 同上,不再赘述

在这里插入图片描述

Step 7:展示特定自由流速度的网络弧

cf = p4g.show_network_by_link_free_speed(mnet=mnet,min_free_speed=10,max_free_speed=40)
cf.show()

参数说明:

  • ment:同上;
  • min_free_speed:必传参数,需要展示的网络弧最小行驶速度,以int形式传入;
  • max_free_speed:必传参数,需要展示的网络弧最大行驶速度,以int形式传入;
  • fig_obj:同上;
  • isSave2png:同上。

返回值:

  • 同上,不再赘述

在这里插入图片描述

Step 8:展示特定车道数的网络弧


cf = p4g.show_network_by_link_lanes(mnet=mnet,min_lanes=2,max_lanes=4)
cf.show()

参数说明:

  • ment:同上;
  • min_lanes:必传参数,需要展示的网络弧最少车道数,以int形式传入;
  • max_lanes:必传参数,需要展示的网络弧最多车道数,以int形式传入;
  • fig_obj:同上;
  • isSave2png:同上。

返回值:

  • 同上,不再赘述
    在这里插入图片描述

Step 9:展示网络弧车道数分布


cf = p4g.show_network_by_link_lane_distribution(mnet=mnet)
cf.show()

参数说明:

  • ment:同上;
  • fig_obj:同上;
  • isSave2png:同上。

返回值:

  • 同上,不再赘述

在这里插入图片描述

Step 10:展示网络弧容量分布


cf = p4g.show_network_by_link_capacity_distribution(mnet=mnet)
cf.show()

参数说明:

  • ment:同上;
  • fig_obj:同上;
  • isSave2png:同上。

返回值:

  • 同上,不再赘述
    在这里插入图片描述

Step 11:展示网络弧自由流速度分布

cf = p4g.show_network_by_link_free_speed_distribution(mnet=mnet)
cf.show()

参数说明:

  • ment:同上;
  • fig_obj:同上;
  • isSave2png:同上。

返回值:

  • 同上,不再赘述
    在这里插入图片描述

Step 12:展示特定的POI类型


cf = p4g.show_network_by_poi_types(mnet=mnet,poi_type=['public','industrial'])
cf.show()

参数说明:

  • ment:同上;
  • poi_type:必传参数,需要展示的POI集合,以 str/list 形式传入;
  • fig_obj:同上;
  • isSave2png:同上。

返回值:

  • 同上,不再赘述
    在这里插入图片描述

Step 13:展示网络POI需求吸引量分布

cf = p4g.show_network_by_poi_attraction_distribution(mnet=mnet)
cf.show()

参数说明:

  • ment:同上;
  • fig_obj:同上;
  • isSave2png:同上。

返回值:

  • 同上,不再赘述

在这里插入图片描述

Step 14:展示网络POI需求发生量分布

cf = p4g.show_network_by_poi_production_distribution(mnet=mnet)
cf.show()

参数说明:

  • ment:同上;
  • fig_obj:同上;
  • isSave2png:同上。

返回值:

  • 同上,不再赘述

在这里插入图片描述

Step 15:展示网络OD需求矩阵

cf = p4g.show_network_demand_matrix_heatmap(mnet)
cf.show()

参数说明:

  • ment:同上;
  • annot:可选参数,是否显示数据标签,默认为 ‘False’;;
  • isSave2png:同上。

返回值:

  • 同上,不再赘述

在这里插入图片描述

Step 16:展示网络OD需求分布

cf = p4g.show_network_by_demand_OD(mnet=mnet,load_network=True)
cf.show()

参数说明:

  • ment:同上;
  • load_zone:可选参数,是否显示网格化交通小区,默认为 ‘True’;
  • load_network:可选参数,是否显示交通网络,默认为 ‘False’;
  • isSave2png:同上。

返回值:

  • 同上,不再赘述

在这里插入图片描述

3.2 进阶语法

‘MultiNet’ 一定程度上支持用户根据自己的需要对图像尺寸、node、link、poi等相关绘图属性进行设置。具体参数如下表。

另外默认条件下node,link,poi都会被绘制,用户也可通过设置以下参数来取消某些网络元素,以突出感兴趣的部分:
在这里插入图片描述

Step 17:隐藏网络node

mnet.node_loaded = False
cf = p4g.show_network_by_link_lane_distribution(mnet=mnet)
cf.show()

在这里插入图片描述

Step 18:堆叠绘图


mnet.node_loaded = False
mnet.POI_loaded = False
cf = p4g.show_network_by_link_lane_distribution(mnet=mnet)
mnet.link_loaded = False
mnet.POI_loaded = True
cf = p4g.show_network_by_poi_attraction_distribution(mnet,fig_obj=cf)
cf.show()

在这里插入图片描述

Step 19:自定义绘图属性

mnet.style.node_style.size = 3
mnet.style.link_style.linecolor = 'blue'
mnet.style.poi_style.facecolor = 'yellow'
cf = p4g.show_network_by_modes(mnet=mnet)
cf.show()

在这里插入图片描述

相关内容

热门资讯

今晚的月亮作文 今晚的月亮作文精选10篇  在我们平凡的日常里,大家都有写作文的经历,对作文很是熟悉吧,借助作文人们...
90后的我们优秀作文 90后的我们优秀作文  在日常学习、工作或生活中,许多人都写过作文吧,作文是由文字组成,经过人的思想...
写月亮的作文 写月亮的作文15篇  在日常生活或是工作学习中,大家总免不了要接触或使用作文吧,作文要求篇章结构完整...
留在心底的风景作文 留在心底的风景作文留在心底的风景公园的湖泊旁,一直都有一把褐黄色的秋千椅,春天,会有柳枝攀在她的链索...
网购,让生活更精彩作文 网购,让生活更精彩作文  记得商场打折时人头攒动的拥挤场面吗?记得妈妈和店老板为了几块钱互不让步的尴...
秋之韵作文 秋之韵作文精选10篇  在学习、工作乃至生活中,大家最不陌生的就是作文了吧,作文是人们把记忆中所存储...
写给二十年后的自己的一封信作... 写给二十年后的自己的一封信作文(精选12篇)  无论是在学校还是在社会中,大家都经常看到书信的身影吧...
榜样的作文600字 榜样的作文600字五篇  在日常学习、工作和生活中,许多人都写过作文吧,借助作文人们可以反映客观事物...
我爱科学作文400字 我爱科学作文400字(精选25篇)  在平平淡淡的日常中,大家都写过作文,肯定对各类作文都很熟悉吧,...
跳蚤书市作文 跳蚤书市作文  在平时的学习、工作或生活中,大家都写过作文吧,作文是人们以书面形式表情达意的言语活动...
成长经历作文400字 成长经历作文400字(通用41篇)  在日常生活或是工作学习中,大家都写过作文,肯定对各类作文都很熟...
人生值得品味作文 人生值得品味作文我欣赏香气四溢的茉莉;我喜爱高贵典雅的百合;我惊叹一现而过而又美丽无比的昙花。然而,...
保护环境作文1000字:维护... 保护环境作文1000字:维护生态和平  在日常学习、工作和生活中,大家都尝试过写作文吧,借助作文可以...
游览的作文 关于游览的作文三篇  关于游览的作文1  国庆期间,爸爸妈妈带我到厦门旅游,我玩得可开心啦!特别令我...
北京故宫景点介绍作文200字 北京故宫景点介绍作文200字(精选12篇)  在学习、工作、生活中,大家对作文都不陌生吧,作文要求篇...
擦玻璃作文 擦玻璃作文5篇  篇一:擦玻璃作文  今天,姐姐提出要擦玻璃。  我听完以后很想参加,可是作业还没写...
祖父的园子作文 祖父的园子作文  在我们平凡的日常里,大家都有写作文的经历,对作文很是熟悉吧,作文是从内部言语向外部...
假如我是一朵云 -作文 假如我是一朵云 -作文漫漫暑日,余晖终于消失在茫茫黑夜中,却带不走难熬的酷暑,假如我是一朵云。无边无...
失而复得的作文 失而复得的作文  在日常学习、工作或生活中,大家都经常看到作文的身影吧,通过作文可以把我们那些零零散...
拜年作文 拜年作文200字(精选14篇)  在平平淡淡的日常中,大家一定都接触过作文吧,作文要求篇章结构完整,...