plot4gmns:面向通用建模网络范式(GMNS)的快速可视化【v0.1.1】

news2024/11/26 11:38:11

一款面向通用建模网络范式(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()

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/181017.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python图像处理(中值滤波)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 中值滤波和均值滤波的区别,有点像中位数收入和平均收入的区别。比如有三个人,年收入分别是10万、1万和1千,那么他们的平均收入就是(10+1+0.1)/3,平均数是3.3万左右,但是中位数…

《真象还原》读书笔记——第二章 编写 MBR 主引导记录

2.1 计算机的启动过程 开机后运行的第一个程序是 BIOS 。 BIOS 搬运 MBR 并 跳转运行 MBR… 2.2 软件接力第一棒 BIOS 全名 基本输入输出系统。 2.2.1 实模式下的 1MB 内存分布 2.2.2 BIOS 是如何苏醒的 BIOS本身不需要修改,于是被写入了ROM中,被映…

更换新电脑,如何将旧电脑数据/文件传输到新电脑?

最好的数据迁移工具提供了一种简单的解决方案,可将您的数据从一台 PC 传输到另一台 PC。 如果您以前没有做过,那么数据迁移的整个过程可能看起来很吓人。无论您是企业用户还是家庭用户,尝试将所有文​​件和文件夹从一台计算机迁移到另一台计…

CCPC2022(桂林)

题目链接:https://codeforces.com/gym/104008 G Group Homework 题目大意:在树上选出两条链,使得在两条链选中的点中,只被一条链选中的点的点权和最大。 题解:显然两条链要么不相交,要么只相交于一个点。…

WhiteHole Base beta版本正式发布!

体验 当前版本为基础测试版本,测试效果可以前往演示视频查看:https://www.bilibili.com/video/BV18Y411D7sA/?spm_id_from333.999.0.0&vd_source641e71dfd1a118fb834c4a5d156688d5 在线体验地址为: http://47.100.239.95 数据将保存~ …

BGP基础实验

1.先配置好IP和环回 [R1]interface GigabitEthernet 0/0/0 [R1-GigabitEthernet0/0/0]ip add 12.1.1.1 24 [R1-GigabitEthernet0/0/0]int l 0 [R1-LoopBack0]ip add 1.1.1.1 24 其他同理 2.在R2,R3,R4上配置OSPF ospf 1 area 0.0.0.0 network 3.3.3.3…

线段树(原理,模板)

文章目录线段树线段树代码(单点修改、区间查询)懒惰标记与区间修改树状数组与区间修改线段树 线段树是用来维护 区间信息 的数据结构 它可以在 O(log⁡n)O(\log n)O(logn) 的时间复杂度内实现单点修改、区间修改、区间查询(区间求和,求区间最大值&…

Reasoning Through Memorization: Nearest Neighbor Knowledge Graph Embeddings论文阅读

研究问题 将基于记忆的方法与预训练语言模型相结合,以完成知识图谱补全任务 背景动机 传统模型无法处理未见实体记忆增强神经网络的相关进展,即在传统的计算模块之外添加单独的记忆存储模块 模型方法 首先使用预训练语言模型构建实体的知识库&#…

计算机网络第一章 计算机网络与因特网

1.0 目录[TOC]1.1 什么是Internet?1.1.1 最细微:图(Graph)Internet由结点Node和边Edge组成结点Node分为主机结点和交换结点边Edge分为接入网链路Access和主干链路Backbone结构图如下:1.1.2 网络的网络(Netw…

【Python】数值计算基础

note scipy和numpy库可以便捷地进行科学计算,如线性代数、常微分方程数值求解、信号处理、图像处理、稀疏矩阵等。 文章目录note一、多项式基础1. 1 多项式表示和拟合1.2 多项式插值二、微积分计算2.1 数值积分2.2 符号积分三、矩阵运算3.1 线性方程组的求解3.2 矩…

PHP代码审计之MVC与ThinkPHP简介

今天继续给大家介绍渗透测试相关知识,本文主要内容是PHP代码审计之MVC与ThinkPHP简介。 免责声明: 本文所介绍的内容仅做学习交流使用,严禁利用文中技术进行非法行为,否则造成一切严重后果自负! 再次强调:严…

文化向技术投降

《技术垄断:文化向技术投降》泼斯曼 技术发展三个阶段 1,工具使用文化 2,技术统治文化 3,技术垄断文化 趣讲大白话:科技是一把双刃剑 泛滥的信息已经把人给弄懵了 *********** 广义上来讲,公司是技术公司 才有可能有更…

Windows压缩工具 “ Bandizip 与 7-zip ”

前言 📜“作者 久绊A” 专注记录自己所整理的Java、web、sql等,IT技术干货、学习经验、面试资料、刷题记录,以及遇到的问题和解决方案,记录自己成长的点滴 目录 前言 一、什么是压缩 二、Bandizip的简介 1、大概介绍 2、详细…

Acwing---1238.日志统计

日志统计1.题目2.基本思想3.代码实现1.题目 小明维护着一个程序员论坛。现在他收集了一份”点赞”日志,日志共有 NNN 行。 其中每一行的格式是: ts id 表示在 tststs 时刻编号 ididid 的帖子收到一个”赞”。 现在小明想统计有哪些帖子曾经是”热帖…

一起自学SLAM算法:9.3 SVO算法

连载文章,长期更新,欢迎关注: 下面将从原理分析、源码解读和安装与运行这3个方面展开讲解SVO算法。 9.3.1 SVO原理分析 前面已经说过,SVO算法是半直接法的典型代表。因此在下面的分析中,首先介绍一下半直接法的基本原…

网络攻防中监控某个IP的流量和数据分析

网络攻防中监控某个IP的流量和数据分析。 Windows 可以使用 tcpview 工具监控某个IP的流量信息,Linux 可以使用iftop 工具。 新版本的 tcpview 带过滤功能,可以对 IP 进行过滤。最后两列显示的是对应程序发送和接收的字节数。 tcpview 工具下载地址&am…

【Quicker】您的指尖工具箱

在日常学习和工作中我们常常用到各种各样的小工具,比如:截图并编辑、取色、文字识别、公式识别等等.   倘若这每一项功能都下载一个程序,则会显得非常冗杂。因此,用一个工具箱将这些功能集合起来,则是一个不错的解决…

机器自动翻译古文拼音 - 十大宋词 - 满江红 怒发冲冠 南宋·岳飞

满江红 怒发冲冠 南宋岳飞 怒发冲冠,凭栏处,潇潇雨歇。 抬望眼,仰天长啸,壮怀激烈。 三十功名尘与土,八千里路云和月。 莫等闲,白了少年头,空悲切。 靖康耻,犹未雪。臣子恨&#x…

点云 3D 分割 - RangeNet++(IROS 2019)

点云 3D 分割 - RangeNet(IROS 2019)摘要1. 引言2. 相关工作3. 我们的方法A. 距离图像点云代理表示B. 完全卷积语义分割C. 基于距离图像的点云重建D. 高效点云后处理4. 实验评价A. RangeNet相对于最新技术的性能B. 消融研究C. 后处理影响D. 运行时5. 结论…

JavaWeb | 预编译SQL及PreparedStatement讲解

本专栏主要是记录学习完JavaSE后学习JavaWeb部分的一些知识点总结以及遇到的一些问题等,如果刚开始学习Java的小伙伴可以点击下方连接查看专栏 本专栏地址:🔥JDBC Java入门篇: 🔥Java基础学习篇 Java进阶学习篇&#x…