0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于OSMnx的TransCAD路网模型快速构建

TransCAD和TransModeler交通软件 来源:TransCAD和TransModeler交通软件 2025-01-03 10:33 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

开源数据对交通模型贡献与日俱增。就道路网络建模而言,随着数据质量的提升,开源OpenStreetMap矢量数据已经具备较强的可用性。首先,OpenStreetMap矢量数据更新速度较快,且具备较为准确的几何线形信息,自带路名、路名和等级等信息,使其具备了较好的基本条件;其次,采用通用的WGS84坐标系,可以更方便的与其它开源数据源协同利用。不过,OpenStreetMap矢量数据文件是xml格式,直接用于建模也存在不同程度的障碍,尤其是网络拓扑存在普遍的问题。本文探讨基于Python + OSMnx软件包的OpenStreetMap矢量数据在TransCAD交通规划模型软件中的路网建模方法,发掘开源数据利用新路径。

1 OSMnx简介及路网数据提取方法

1.1 OSMnx简介及安装

OSMnx 是南加州大学的Geoff Boeing助理教授开发的一个 Python 软件包,可以用于从OpenStreetMap下载、拓扑处理、分析和可视化街道网络和其他地理要素。只需一行代码,就能下载步行、驾车或骑车网络并建立模型,然后对其进行分析和可视化。OSMnx还可以轻松处理城市设施/兴趣点、建筑占地面积、公交站点、高程数据、街道方向、速度/旅行时间和路线。本文着重介绍怎样基于OSMnx构造交通模型的道路网络,关于其它功能详见OSMnx官网。

OSMnx的安装方法之一是可以在Anaconda环境下运行以下命令:

conda create -n ox -c conda-forge --strict-channel-priority osmnx

Anaconda是一个功能强大的数据科学平台,可安装、管理Python相关包的软件,自带Python、Jupyter Notebook、Spyder等工具。其自带Python解释器,用户可以方便地进行Python编程。当然,也可以使用pip安装,不过Anaconda软件安装说明文档提示这不属于官方支持做法。

1.2 OSMnx在线路网下载和拓扑处理

OSMnx 提供5种方式下载在线路网,本文主要介绍多边形面域和矩形框两种,其他具体详见使用手册的函数参数说明。

序号 方式 函数
1 地址 graph_from_address()
2 矩形框 graph_from_bbox()
3 位置 graph_from_place()
4 坐标点 graph_from_point()
5 多边形 graph_from_polygon()

(1)多边形面域graph_from_polygon()

OSMnx可以获取OpenStreetMap自带的行政边界,用作选择范围的面域。当然,也可以通过外部读入面域图形的shp文件作为边界。以下以北京海淀区范围为例演示通过多边形面域构建图网络。

6aabce50-c84d-11ef-9310-92fbcf53809c.png

6af273e6-c84d-11ef-9310-92fbcf53809c.png

6b2a12f6-c84d-11ef-9310-92fbcf53809c.png

6b535c2e-c84d-11ef-9310-92fbcf53809c.png

注意运行以上操作需要有对国外网站的访问权限,生成的gpkg文件是GeoPackage的文件格式,可以用QGIS打开看到包含edges和nodes两个图层,分别对应线层和点层。将这两个图层分别导出为shp文件,即可作为TransCAD建模的路网输入文件。

6b6bceee-c84d-11ef-9310-92fbcf53809c.png

需要说明的是面域文件可以使用外部读入权威的shp文件替代,考虑到OpenStreetMap自带行政边界缺少权威性,建议使用自定义边界以避免产生不必要的争议。

6b8f135e-c84d-11ef-9310-92fbcf53809c.png

(2)矩形框graph_from_bbox()

矩形框操作和多边形面域类似,使用graph_from_bbox()函数,通过元组数据指定边界范围即可,使用海淀区的坐标范围所得小汽车网络见下图。

6bad1bf6-c84d-11ef-9310-92fbcf53809c.png

1.3 离线osm文件的获取、切割和OSMnx拓扑处理

OSMnx还提供基于osm文件的离线建模方式,不受网络下载的限制。但一般而言可直接获取的数据是一个包含全中国的范围的osm文件,数据量很大。因此在使用前需要对osm文件根据需要的范围进行切割。

(1)OSM文件下载

通过https://download.geofabrik.de/网站,可以下载全国的osm文件,点击Asia然后选择子区域中的China。原始文件大小约2G,解压缩后约22.6G。

6c0b4cf8-c84d-11ef-9310-92fbcf53809c.png

6c2f6fb6-c84d-11ef-9310-92fbcf53809c.png

(2)使用osmosis工具切割OSM文件

切割OSM文件需要用到osmosis工具。osmosis是一个基于Java的开源osm文件切割工具,当前最新版为0.49.2,下载链接:

https://github.com/openstreetmap/osmosis/releases/download/0.49.2/osmosis-0.49.2.zip

osmosis切割osm同样提供矩形框和面域两种形式。对于矩形框而言操作较为简单,以前文的北京市海淀区为例,其命令为:

osmosis--read-xml file=f:china-latest_20240518.osm --bounding-boxtop="40.173" left="116.059" bottom="39.871"right="116.398" clipIncompleteEntities=true--wx file=f:haidian.osm

通过上下左右的坐标来指定矩形范围,特别需要注意的是clipIncompleteEntities需要设置为true,否则OSMnx在读入文件构建图网络时会提示节点信息不完整出错。

osmosis同样提供面域切割的模式,面域文件后缀为“.poly”。根据shp文件生成“.poly”建议使用QGIS的插件osmploy_export。安装完成后,选择面域,点击菜单图标6c565ae0-c84d-11ef-9310-92fbcf53809c.png,指定字段作为面域名称即可生成“.poly”文件。注意面域需要包含字符型字段才可以作为面域“.poly”文件的面域标签。

6c6e2ab2-c84d-11ef-9310-92fbcf53809c.png

基于面域“.poly”文件的osm文件切割命令如下:

osmosis--read-xml file=f:china-latest_20240518.osm --bounding-polygonfile="f:Haidian.poly" clipIncompleteEntities=true --wxfile=f:Haidian_poly.osm

(3)离线osm文件拓扑处理

使用OSMnx对离线osm文件拓扑处理过程如下:

6c891f3e-c84d-11ef-9310-92fbcf53809c.png

从上图不难发现离线osm文件的要素远比直接在线地图建模的内容要丰富,主要是因为前文在线地图中只包含小汽车通行的网络,而在离线osm建模结果包含了铁路、地铁、小汽车、步行等所有网络信息。相对在线下载的osm文件,遗憾的是未能在离线osm文件找到通行权选择集参数。因此如采用离线osm文件得到的结果作为后续交通模型输入需要通过选择集做进一步筛选和清洗。

上图为多边形切割后的建模结果,网络冗余明显减少。因此,考虑后续处理的工作量,建议采用多边形切割代替矩形框。

2 基于OSMnx数据的TransCAD路网建模

2.1 gpkg数据导出

OSMnx生成的图网络保存gpkg,对应生成edges和nodes两个图层。gpkg文件可以直接用QGIS打开,分别将这两个文件导出保存为shp备用。为了防止shp文件中文字段的乱码,需要针对不同的TransCAD版本选择不同编码方式,下面的例子是选择UTF-8编码方式。顺便说一下,使用QGIS保存shp文件为不同编码方式,可以解决TransCAD早期版本对一些特定编码的shp文件显示为乱码的问题。

6cd8aa68-c84d-11ef-9310-92fbcf53809c.png

6cf602f2-c84d-11ef-9310-92fbcf53809c.png

2.2 shp文件导入TransCAD

TransCAD支持带有拓扑关系的点和线两个图层同时导入,也支持双向的道路双线要素格式转换为单线要素格式,并用AB/BA字段表示双向的不同属性,较为灵活。参见:TransCAD导入常用交通规划软件网络数据。

在TransCAD通过File菜单,Open找到edges.shp文件,并按下图设置(包括nodes.shp文件),待完成后即可生成TransCAD模型路网。

6d136360-c84d-11ef-9310-92fbcf53809c.png

6d2d93fc-c84d-11ef-9310-92fbcf53809c.png

6d3d8bf4-c84d-11ef-9310-92fbcf53809c.png

不难发现,导入后的网络link属性中路名、道路等级等属性比较完整,但车道数、自由流车速等指标存在缺失。这是由于OpenStreetMap地图数据本身的缺陷。要用于交通模型,还需要通过标准化属性赋值来弥补这一缺陷的方法。下面介绍标准化属性赋值方法。

2.3 道路属性配置

考虑OpenStreetMap数据车道和自由流车速缺失的问题。经对osm地图数据的梳理,发现车行道的linktype约有89种。结合道路等级和连接属性,进一步分成22类,分别对于每一类道路的车道数和自由流车速进行初始化。相关参数见下表。

NO linktype type lanes speed
1 motorway 1 3 120
2 trunk 2 4 70
3 primary 3 3 50
4 secondary 4 2 40
5 tertiary 5 1 30
6 residential 6 1 20
7 living_street 7 1 15
8 road 8 1 20
9 unclassified 8 1 20
10 busway 9 1 40
11 escape 10 1 10
12 motorway_link 11 2 60
13 trunk_link 12 2 40
14 primary_link 13 1 30
15 secondary_link 14 1 25
16 tertiary_link 15 1 20
17 ['motorway', 'motorway_link'] 21 1 30
18 ['motorway_link', 'motorway'] 21 1 30
19 ['primary', 'motorway'] 21 1 30
20 ['secondary', 'motorway'] 21 1 30
21 ['trunk', 'motorway'] 21 1 25
22 ['trunk_link', 'motorway'] 21 1 25
23 ['motorway_link', 'primary_link'] 22 1 25
24 ['motorway_link', 'tertiary'] 22 1 25
25 ['motorway_link', 'unclassified'] 22 1 25
26 ['primary', 'motorway_link'] 22 1 25
27 ['residential', 'motorway_link'] 22 1 25
28 ['secondary', 'motorway_link'] 22 1 25
29 ['secondary_link', 'motorway_link'] 22 1 25
30 ['tertiary_link', 'motorway_link', 'tertiary'] 22 1 25
31 ['tertiary_link', 'motorway_link'] 22 1 25
32 ['trunk', 'motorway_link'] 22 1 25
33 ['trunk_link', 'motorway_link'] 22 1 25
34 ['unclassified', 'motorway_link'] 22 1 25
35 ['primary', 'trunk', 'primary_link'] 23 1 20
36 ['primary', 'trunk'] 23 1 20
37 ['secondary', 'secondary_link', 'trunk'] 23 1 20
38 ['secondary', 'trunk', 'trunk_link', 'unclassified'] 23 1 20
39 ['secondary', 'trunk'] 23 1 20
40 ['secondary_link', 'trunk', 'secondary'] 23 1 20
41 ['secondary_link', 'trunk'] 23 1 20
42 ['trunk', 'primary_link'] 23 1 20
43 ['trunk', 'tertiary'] 23 1 20
44 ['trunk', 'trunk_link'] 23 1 20
45 ['primary', 'trunk_link'] 24 1 20
46 ['residential', 'trunk_link'] 24 1 20
47 ['secondary', 'trunk_link'] 24 1 20
48 ['secondary_link', 'trunk_link'] 24 1 20
49 ['trunk_link', 'primary_link'] 24 1 20
50 ['trunk_link', 'tertiary'] 24 1 20
51 ['trunk_link', 'unclassified'] 24 1 20
52 ['primary', 'primary_link'] 25 1 20
53 ['primary', 'tertiary'] 25 1 20
54 ['primary', 'tertiary_link'] 25 1 20
55 ['primary_link', 'tertiary'] 25 1 20
56 ['residential', 'primary'] 25 1 20
57 ['residential', 'primary_link'] 25 1 20
58 ['secondary', 'primary', 'tertiary'] 25 1 20
59 ['secondary', 'primary'] 25 1 20
60 ['secondary', 'primary_link'] 25 1 20
61 ['tertiary', 'primary_link'] 25 1 20
62 ['unclassified', 'primary_link'] 25 1 20
63 ['residential', 'secondary'] 26 1 15
64 ['secondary', 'living_street'] 26 1 15
65 ['secondary', 'secondary_link'] 26 1 15
66 ['secondary', 'tertiary'] 26 1 15
67 ['secondary', 'tertiary_link', 'tertiary'] 26 1 15
68 ['secondary', 'tertiary_link'] 26 1 15
69 ['secondary', 'unclassified'] 26 1 15
70 ['secondary_link', 'secondary', 'tertiary'] 26 1 15
71 ['secondary_link', 'secondary'] 26 1 15
72 ['secondary_link', 'tertiary'] 26 1 15
73 ['secondary_link', 'tertiary_link', 'tertiary'] 26 1 15
74 ['secondary_link', 'tertiary_link'] 26 1 15
75 ['secondary_link', 'unclassified'] 26 1 15
76 ['living_street', 'tertiary'] 27 1 15
77 ['living_street', 'unclassified'] 27 1 15
78 ['residential', 'living_street', 'unclassified'] 27 1 15
79 ['residential', 'living_street'] 27 1 15
80 ['residential', 'road'] 27 1 15
81 ['residential', 'tertiary'] 27 1 15
82 ['residential', 'tertiary_link'] 27 1 15
83 ['residential', 'unclassified', 'tertiary'] 27 1 15
84 ['residential', 'unclassified'] 27 1 15
85 ['road', 'residential'] 27 1 15
86 ['road', 'unclassified'] 27 1 15
87 ['tertiary_link', 'tertiary'] 27 1 15
88 ['tertiary_link', 'unclassified'] 27 1 15
89 ['unclassified', 'tertiary'] 27 1 15

建议在shp文件导入TransCAD之前完成数值初始化,这样双向的属性更容易一次性操作。

3结语

总体来说通过OpenStreetMap来构建交通模型网络虽然还存在一定缺陷,特别是道路等级、车道数和自由流车速的问题。但无疑这是一种高效的交通网络建模方法,再配合公交模型数据库自动创建工具,能够快速完成基础交通网络模型的开发,是一种值得推广的工作模式。当然,网络数据的可靠性对模型的精度也会有直接的影响,在条件允许的情形下,其他高质量的输入数据仍然是交通建模的首选(例如导航地图矢量数据)。

OSMnx不仅可以作为道路网络的建模工具,还有其他一些重要的功能,包括k最短路分析、距离计算等。这些功能具有广泛的应用场景。骑行、步行网络也能够直接支持开展城市骑行和步行网络的研究工作。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 交通网络
    +关注

    关注

    0

    文章

    10

    浏览量

    7190
  • 路网
    +关注

    关注

    0

    文章

    8

    浏览量

    6714

原文标题:基于OSMnx的TransCAD路网模型快速构建

文章出处:【微信号:TransCADTransModeler,微信公众号:TransCAD和TransModeler交通软件】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    航空运维大模型智能系统平台软件:构建全生命周期智慧保障体系

    AI模型
    北京华盛恒辉科技
    发布于 :2026年05月11日 22:55:44

    AI大模型小龙虾-OpenClaw-0基础从入门到实战

    的合同摘要或营销话术。这种场景下,OpenClaw 是完美的“业务提效利器”。 二、 垂直领域个人知识库的快速构建与问答场景 随着大模型能力的普及,越来越多的人希望拥有一个懂自己、懂自己专业知识
    发表于 05-06 16:04

    小鹏汽车正式发布世界模型X-World技术报告

    近日,小鹏汽车正式发布世界模型X-World技术报告,从数据、模型、训练、验证及应用等多层面详解X-World的构建与使用。
    的头像 发表于 04-02 10:27 2580次阅读
    小鹏汽车正式发布世界<b class='flag-5'>模型</b>X-World技术报告

    【2025夏季班正课】大模型Agent智能体开发实战 课分享

    通过拼凑零散的提示词、复制网上的代码片段以及盲目调用各种工具库来构建智能体。这种“积木式”的开发方式虽然在初期能够快速产出演示原型,但在面对复杂的业务场景、严苛的生产环境以及高并发的用户请求时,往往显得
    发表于 03-29 16:12

    NVIDIA开放模型助力构建下一代数字健康智能体

    NVIDIA Nemotron 系列开放模型和 NVIDIA NeMo 库正在为临床医生、研究人员和开发者提供开放权重和方法,使他们能够在自有的基础设施上构建和部署定制化的数字健康智能体。
    的头像 发表于 03-25 09:46 562次阅读

    如何构建适合自动驾驶的世界模型

    [首发于智驾最前沿微信公众号]世界模型经历了系统动力学阶段(1960年~2000年)、认知科学阶段(2001年~2017年)、深度学习阶段(2018年至今),但将其应用到自动驾驶汽车上,还是近几年才
    的头像 发表于 02-18 08:14 1.1w次阅读
    如何<b class='flag-5'>构建</b>适合自动驾驶的世界<b class='flag-5'>模型</b>?

    解锁谷歌FunctionGemma模型的无限潜力

    在智能体 AI 领域,工具调用能力是将自然语言转化为可执行软件操作的关键。此前,我们发布了专门针对函数调用而特别优化的 Gemma 3 270M 模型版本 FunctionGemma。该模型旨在协助开发者构建响应
    的头像 发表于 02-04 11:30 508次阅读
    解锁谷歌FunctionGemma<b class='flag-5'>模型</b>的无限潜力

    什么是大模型,智能体...?大模型100问,快速全面了解!

    一、概念篇1.什么是大模型?大模型是指参数规模巨大(通常达到数十亿甚至万亿级别)、使用海量数据训练而成的人工智能模型。2.什么是大语言模型(LLM)?大语言
    的头像 发表于 02-02 16:36 1195次阅读
    什么是大<b class='flag-5'>模型</b>,智能体...?大<b class='flag-5'>模型</b>100问,<b class='flag-5'>快速</b>全面了解!

    湖南电信携手华为完成京广高铁湖南段全线路网络升级

    近日,中国电信湖南公司(以下称“湖南电信”)携手华为完成京广高铁湖南段全线路网络升级,通过部署广角MetaAAU打造“2.1G+3.5G”双层网,成功将5G覆盖率从95.1%提升至97.7%,平均
    的头像 发表于 01-07 09:53 709次阅读

    构建CNN网络模型并优化的一般化建议

    通过实践,本文总结了构建CNN网络模型并优化的一般化建议,这些建议将会在构建高准确率轻量级CNN神经网络模型方面提供帮助。 1)避免单层神经网络:我们清楚神经网络本身是需要不断抽象出
    发表于 10-28 08:02

    构建适用于三维集成系统的互连线长分布模型

    在三维集成电路设计中,TSV技术通过垂直互连显著优化了互连线长分布特性。基于伦特定律的经典分析框架,可构建适用于三维集成系统的互连线长分布模型
    的头像 发表于 08-21 10:41 1435次阅读
    <b class='flag-5'>构建</b>适用于三维集成系统的互连线长分布<b class='flag-5'>模型</b>

    Cognizant加速AI模型企业级开发

    全新解决方案旨在帮助企业快速且大规模地构建、微调和实施AI模型。 Cognizant 凭借其作为数据与AI模型训练合作伙伴的深厚经验,继服务于部分领先的数字原生企业后
    的头像 发表于 07-31 17:25 867次阅读

    摩尔线程率先支持腾讯混元-A13B模型

    中的卓越兼容性与快速响应能力——MUSA架构的高易用性设计,能够显著减少开发者在模型适配迁移过程中的技术投入,大幅提升开发效率,为AI创新成果的快速工程化落地构建了坚实的底层技术支撑。
    的头像 发表于 07-04 14:10 1071次阅读

    超低延时重构AI推理体验!白山云发布“大模型API”产品

    优势,打造超低延时、超稳定、简单易用的API接口服务,降低大模型应用成本和开发门槛,助力企业和个人用户快速开启AI创新之旅。专注边缘推理,构建“云边端”算力协同新范
    的头像 发表于 07-02 17:26 1330次阅读
    超低延时重构AI推理体验!白山云发布“大<b class='flag-5'>模型</b>API”产品

    瑞芯微模型量化文件构建

    模型是一张图片输入时,量化文件如上图所示。但是我现在想量化deepprivacy人脸匿名模型,他的输入是四个输入。该模型训练时数据集只标注了人脸框和关键点,该模型的预处理是放到
    发表于 06-13 09:07