一种OSM地图数据自动生成城市路网的方法与流程
未命名
10-08
阅读:195
评论:0

一种osm地图数据自动生成城市路网的方法
技术领域
1.本发明涉及道路交通图形处理技术领域,具体涉及一种osm地图数据自动生成城市路网的方法。
背景技术:
2.openstreetmap简称为osm,是一款免费面向大众的开放、可编辑的地图服务。相对于其他的空间地理数据,osm具有数据免费、更新及时和在欠发达及敏感地区数据的可获得性等优点,且在位置准确性、专题准确性、一致性及完整性方面符合一定的质量规范。在交通领域,可下载该数据并导入进交通仿真系统快速生成对应路网。
3.但是下载的osm数据没有交叉口交点、线路、路口等概念,导致下载的数据无法直接形成城市的路网。另外在交通领域,大多数是下载osm数据并导入交通仿真系统生成对应的路网,这对基础导入数据格式要求很高,而且生成的路网扩展性差。具体的,生成的路网扩展性差主要体现在:路口渠化绘制的完整性;路口与信号机、检测器等设备的绑定;路况信息绑定等功能的扩展应用,这些都是道路交通系统研究中重要的组成部分。
4.中国发明专利cn201710856548.x,专利名称为一种osm地图数据中路网交叉口节点自动合并方法,具体公开了一种osm地图数据中路网交叉口节点自动合并方法,该方法利用osm地图数据文件生成节点数据库和路段数据库,从两数据库中提取需要合并的交叉口节点;将符合某些要求的交叉口的多个节点进行合并,提升道路网络分析计算速度,避免由于交叉口进出口道连线未进行禁行处理可能会产生的错误。该方法只是对osm数据中交叉口之间的节点进行处理,合并结果不能直接运用于道路交通领域;运用交通仿真技术生成的路网方法也不够方便。
5.中国发明专利cn201710870496.1,专利名称为一种快速提取osm数据中指定行政区内路网的方法,具体公开了一种快速提取osm数据中指定行政区内路网的方法,该方法对由osm提供的指定行政区边界轮廓进行扩展和简化,把在这个扩展和简化后的区域外的节点和路段进行删除,最终得到指定行政区内的osm路网数据。该方法得到的最终还是osm基础数据,没有体现出交叉口交点、线路、路口这些基本的路网组成要素;结果也不能直接运用于道路交通领域,衍生功能扩展性差。
6.中国发明专利cn201710861141.6,专利名称为一种保留已有路网数据并利用osm数据进行路网扩展的方法,具体公开了一种保留已有路网并利用osm数据进行路网扩展的方法,该方法由用户自定义选择需要扩展的路网范围,自动从osm数据中提取扩展路网信息后与已有路网数据进行合并,用户仅需手动添加已有路网和扩展路网边界的节点和路段就能完成计算机网络扩展工作。该方法扩展得到的路网数据还需要应用交通仿真技术来完成数据展示,并且应用于道路交通领域的扩展性差。
7.由此可见,现有的技术方案仍然存在以下三点缺陷:
8.1、没有一套完整的osm数据生成路网的解决方案。目前对osm数据处理都是节点信息,ways中的部分属性信息进行整体或单独的应用,这样得到的路网数据展示出来一眼看
不出来点、线、面之间的关联关系,要素之间的属性信息也不能直观的展示,对处理一个城市的完整路网情况来说非常不方便。
9.2、数据处理方式依赖仿真技术。osm数据本身并没有交叉口交点、线路、路口这些概念,传统的对osm数据的处理还需要借助交通仿真技术来展示数据,这种方法交互性很差,并不能直接让交通相关部门的工作人员操作路网;同时还需要工作人员拥有一定的专业知识,这一定程度上会增加工作时间、人力和财力。
10.3、功能扩展性差。传统方法得到的路网应用于道路交通领域,功能单一。线路的更新调整;路口渠化编辑;地图图层叠加;路口与信号机,路口与检测器等设备的绑定;实时路况信息绑定等功能的扩展应用,这些都是道路交通系统研究中重要的组成部分。传统方法并不能便捷的完成这些功能的扩展。
11.因此,依托下载的osm基础数据,如何提供一种更直接更便捷更快速地生成城市路网中的节点、线路和路口等信息,以及对生成的路网可以进行路口、道路、路况、设备信息等功能进行扩展的方法仍然值得研究。
技术实现要素:
12.为了解决上述技术问题,本发明提供了一种osm地图数据自动生成城市路网的方法,包括以下步骤:
13.s1、osm数据下载并入库:从openstreetmap网站导出目标城市的地图数据文件,建立pgsql数据库,将预处理的.osm后缀文件导入所述数据库;
14.s2、初始化节点、线路:给出一个经纬度范围,后端接收到所述经纬度范围条件后,根据经纬度返回整体wkt,由wkt作为条件查询pgsql相关的数据表的内容,得到一组ways内容;
15.s3、采集线路信息,完善路网:完善和调整线路信息,保证路网使用的准确性;
16.s4、初始化rid:查询所述数据库中的数据,获得所有ways之间的相交点,存放到集合中,查询所有的waynodes信息存放到集合中,按照way_id对结果集合分组,遍历way_id分组集合,再遍历way_id每个分组中的ways的node_seq的node信息,与相交点集合中node比较,最终得到一条rid信息,存入到rid集合中,所述数据库中创建一张新的表,插入所述rid集合,即完成rid的初始化;
17.s5、初始化路口:查询rid表,根据相交的点进行空间聚合,得到聚合类的集合,以类别对得到的集合进行分组,遍历每一组下面的集合进行计算得到一组经纬度,所述经纬度转化的wkt就是聚合得到的路口地理信息,存入集合中,创建表格,插入路口集合的相关信息,即完成路口初始化。
18.s6、初始化路口属性信息:包括计算路口名称、路口id、行政区域代码、车道信息。
19.进一步的,所述s1具体包括:
20.s11、打开下载的目标城市的osm数据文件,找到node/way/relation开头的部分,添加时间戳后替换原文,保存数据更改文件后缀名为.osm格式;
21.s12、应用osmosis命令导入.osm格式的目标城市的osm数据文件到新建的数据库中。
22.进一步的,所述s2中的一组ways内容包括节点id组字符串nodeids、节点id数组
nodeidsarr、way断点waysplitid、way的wkt内容。
23.进一步的,所述s4具体包括:
24.s41、联合查询way_tags/way_nodes/nodes表,获得ways中node重复次数超过2次及以上的nodeid,即为相交点,nodeid和对应的wkt结果对象存入集合;
25.s42、查询way_nodes表,获得结果对象存入集合,由wayid对该集合分组成wayid的map;
26.s43、遍历所述wayid的map,再遍历每一个wayid对应的node集合,建立rid对象集合,比较所述wayid中的nodeid和相交点集合中的nodeid,如果所述wayid中的nodeid在相交点集合中,则从开始顺序到相交点顺序的node组合即是rid,给rid对象的相应属性赋值;
27.s44、创建t_s_rid_nodes表,多线程批量插入所述rid对象集合,同时更新rid编号;
28.s45、将上述数据转为rid结构数据,创建dwd_tfc_bas_rdnet_rid_info表,批量插入rid结构数据,更新角度,lnglat_seq,rid_type字段信息。
29.进一步的,所述s5具体包括:
30.s51、创建t_s_cross_node表;
31.s52、根据相交点进行空间聚类分析:联合查询dwd_tfc_bas_rdnet_rid_info表和nodes表,应用st_clusterdbscan()函数、st_x()函数、st_y()函数、st_astext()函数,得到路口node相关的聚类结果集合,包含nodeid,cid,node_lat,node_lon,wkt信息,空间聚类函数st_clusterdbscan(geom,eps,minpoints),使用所需的距离(eps)和密度(minpoints)参数来构建每个集群,其中geom表示目标geometry对象,eps表示所需的最小距离,minpoints表示成为核心对象所需的邻域内最小对象数;
32.s53、建立路口对象集合:聚类结果按照类cid进行分组,遍历每一类的集合,计算聚合的中心点mainnode,计算经纬度lng,lat;判断路口节点是否有人为修改,若有,则该路口节点属于干预路口节点;将计算结果mainnode,lng,lat填入路口对象,插入到路口对象集合中;批量更新数据到所述t_s_cross_node表。
33.进一步的,所述s6具体包括:
34.s61、创建dwd_tfc_bas_rdnet_cross_info表;联合查询
35.t_s_cross_node/dwd_tfc_bas_rdnet_cross_info表,将查询结果集按照crossid分组map,建立dwd_tfc_bas_rdnet_cross_info表对象集合、全局路口名称集合,遍历map,新建dwd_tfc_bas_rdnet_cross_info表对象,计算部分路口属性信息name,lng,lat,nodes,wkt,将所述属性信息插入到表对象中,name插入到全局路口名称集合中用于判断是否有重名;插入表对象到表对象集合,批量集合数据更新到表中,同时更新所述dwd_tfc_bas_rdnet_rid_info表中的路口信息;
36.s62、更新路口的行政区划及id;
37.s63、更新路口的等级和路口形状:查询所述dwd_tfc_bas_rdnet_rid_info表中数据,以end_cross_id的个数总和来判断路口形状和道路等级,并更新表信息。
38.与现有技术相比,本发明具有如下有益效果:
39.1、本发明直接下载开源的osm地图数据,按照方法流程图完成城市路网搭建,生成的路网完全独立,不受其他功能约束,即osm数据直接生成完整城市路网。
40.2、本方法生成的路网对每一条线路,每一个路口及其之间的关系、各自的属性信息都能清晰的展示,还拥有各种基础的路网编辑功能,对操作人员来说上手方便、操作性强,即本方法生成的路网可直接应用于智能交通服务。
41.3、道路交通在有了路网的基础上会进行一系列的功能操作来满足日常工作需要。如信号机、视频检测器、电警、卡口等设备信息,这些信息必须同步到每一路口的分支或车道上才能发挥出设备的功能作用,以本方法生成的完善的城市路网为基准,可以非常方便的进行二次功能扩展开发,不会破坏整个路网的完整性,原有的部分可以独立处理,不会出现功能混乱,即生成的路网应用功能的扩展性强。
附图说明
42.图1为本发明的流程图;
具体实施方式
43.为使本发明的技术方案和技术效果更加清楚,下面将结合实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。
44.术语解释:
45.rid:路段是指交通网络上相邻两个结点之间的交通线路,具体来说是以起始点与终止点为节点,并且具有若干连接点的有序点集。一条道路按照路口或拓扑连接点打断成很多部分而形成路段,每个路段描述的属性信息不尽相同。属性信息主要有路段编号(路段的唯一标示符)、所属的道路名称、道路等级、起始道路、终止道路以及弧段集合等。由于路段在节点处被打断成很多弧段,故路段是由很多弧段组成。此外,路段的属性还包括动态交通信息和静态交通信息。
46.地图图层:将空间信息按其几何特征及属性划分成的专题数据。可分为“矢量图层(vector layer)”和“栅格图层(raster layer)”。
47.道路渠化:一种采取设置交通岛或者交通标线、设立标志来疏导、引导道路交通流,并使交通流畅,达到提高道路通行能力,行车安全,确保过路行人安全的目的。
48.如图1所示,本发明提供了一种osm地图数据自动生成节点、线路、路口的城市路网的方法,具体步骤如下:
49.步骤一:osm数据下载并入库。
50.1、进入openstreetmap官网,输入城市名称,下载该城市的文件名为osm数据。
51.2、打开下载的文件,找到node/way/relation开头的部分,添加时间戳后替换原文;保存数据更改文件后缀名为.osm格式。
52.3、新建pgsql数据库,并创建扩展;新建
53.actions/users/nodes/node_tags/ways/way_nodes/way_tags/relations/relation_memb ers/relation_tags/schema_info表格。
54.4、应用osmosis命令导入.osm格式的城市地图文件到建好的数据库中。
55.步骤二:初始化节点、线路。
56.1、给出一个经纬度范围(start_lat,start_lon)、(end_lat,end_lon),然后根据
经纬度返回整体wkt。
57.2、将wkt作为参数条件,联合查询ways/way_nodes/nodes表,得到一组ways相关的信息集合,包括节点id组字符串nodeids、节点id数组nodeidsarr、way断点waysplitid、way的wkt等内容。
58.步骤三:采集线路信息,完善路网。
59.1、比如增加/删除节点、线路,修改线路名称、方向,立交桥线路相交线,辅道等要素之间关系调整。
60.2、提供了绘制、切割、反转、平行、合并点、合并线、合并节点到线、拆开路径、查找、删除、编辑属性信息、切换地图等一系列的功能来完善路网。
61.步骤四:初始化rid。
62.1、联合查询way_tags/way_nodes/nodes表,获得ways中node重复次数超过2次及以上的nodeid,即为相交点,nodeid和对应的wkt结果对象存入集合。
63.2、查询way_nodes表,获得结果对象存入集合;由wayid对集合分组成wayid的map.
64.3、遍历wayid的map,再遍历每一个wayid对应的node集合,建立rid对象集合,比较wayid中的nodeid和相交点集合中nodeid,如果wayid中的nodeid在相交点集合中,则从开始顺序到相交点顺序的node组合即是rid,给rid对象的相应属性赋值。
65.4、创建t_s_rid_nodes表,多线程批量插入rid对象集合,同时更新rid编号。
66.5、将数据转为rid结构数据,创建dwd_tfc_bas_rdnet_rid_info表,批量插入rid结构数据,更新角度,lnglat_seq,rid_type等字段信息。
67.步骤五:初始化路口。
68.1、创建t_s_cross_node表。
69.2、根据相交点进行空间聚类分析。联合查询dwd_tfc_bas_rdnet_rid_info表和nodes表,应用st_clusterdbscan()函数,st_x()函数,st_y()函数,st_astext()函数,得到路口node相关的聚类结果集合,包含nodeid,cid,node_lat,node_lon,wkt信息。空间聚类函数st_clusterdbscan(geom,eps,minpoints),它不需要指定簇数,而是使用所需的距离(eps)和密度(minpoints)参数来构建每个集群,其中geom表示目标geometry对象,eps表示所需的最小距离,minpoints表示成为核心对象所需的邻域内最小对象数。
70.3、建立路口对象集合,聚类结果按照类cid进行分组,遍历每一类的集合,计算聚合的中心点mainnode,计算经纬度lng,lat;判断路口节点是否有人为修改,如果有,则该路口节点属于干预路口节点;将计算结果mainnode,lng,lat填入路口对象,插入到路口对象集合中;批量更新数据到t_s_cross_node表。
71.步骤六:初始化路口属性信息。
72.1、创建dwd_tfc_bas_rdnet_cross_info表。联合查询
73.t_s_cross_node/dwd_tfc_bas_rdnet_cross_info表,将查询结果集按照crossid分组map。建立dwd_tfc_bas_rdnet_cross_info表对象集合、全局路口名称集合。遍历map,新建dwd_tfc_bas_rdnet_cross_info表对象,计算部分路口属性信息name,lng,lat,nodes,wkt,将属性信息插入到表对象中,name插入到全局路口名称集合中用于判断是否有重名;插入表对象到表对象集合,批量集合数据更新到表中,同时更新
74.dwd_tfc_bas_rdnet_rid_info表中的路口信息。
75.2、更新路口的行政区划及id(雪花算法创建id)。
76.3、更新路口的等级和路口形状。依据《道路交通信号控制系统通用技术要求》国家标准gb/t 39900-2021中附录a数据规范a18属性代码的a18.1交叉口形状属性代码和a18.2交叉口属性等级代码要求,查询dwd_tfc_bas_rdnet_rid_info表中数据,以end_cross_id的个数总和来判断路口形状和道路等级,并更新表信息。
77.本发明提供的osm地图数据自动生成节点、线路、路口的城市路网的方法可以直接应用不同城市的道路交通,作为基础的路网服务;也可以在此基础上扩展功能应用,满足道路交通的要求。另外本发明生成的路网完整性、准确性和交互性都非常高,应用十分方便,可以大大节省工作成本提高效率。
78.尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。
技术特征:
1.一种osm地图数据自动生成城市路网的方法,其特征在于,包括以下步骤:s1、osm数据下载并入库:从openstreetmap网站导出目标城市的地图数据文件,建立pgsql数据库,将预处理的.osm后缀文件导入所述数据库;s2、初始化节点、线路:给出一个经纬度范围,后端接收到所述经纬度范围条件后,根据经纬度返回整体wkt,由wkt作为条件查询pgsql相关的数据表的内容,得到一组ways内容;s3、采集线路信息,完善路网:完善和调整线路信息,保证路网使用的准确性;s4、初始化rid:查询所述数据库中的数据,获得所有ways之间的相交点,存放到集合中,查询所有的waynodes信息存放到集合中,按照way_id对结果集合分组,遍历way_id分组集合,再遍历way_id每个分组中的ways的node_seq的node信息,与相交点集合中node比较,最终得到一条rid信息,存入到rid集合中,所述数据库中创建一张新的表,插入所述rid集合,即完成rid的初始化;s5、初始化路口:查询rid表,根据相交的点进行空间聚合,得到聚合类的集合,以类别对得到的集合进行分组,遍历每一组下面的集合进行计算得到一组经纬度,所述经纬度转化的wkt就是聚合得到的路口地理信息,存入集合中,创建表格,插入路口集合的相关信息,即完成路口初始化。s6、初始化路口属性信息:包括计算路口名称、路口id、行政区域代码、车道信息。2.根据权利要求1所述的osm地图数据自动生成城市路网的方法,其特征在于,所述s1具体包括:s11、打开下载的目标城市的osm数据文件,找到node/way/relation开头的部分,添加时间戳后替换原文,保存数据更改文件后缀名为.osm格式;s12、应用osmosis命令导入.osm格式的目标城市的osm数据文件到新建的数据库中。3.根据权利要求1所述的osm地图数据自动生成城市路网的方法,其特征在于,所述s2中的一组ways内容包括节点id组字符串nodeids、节点id数组nodeidsarr、way断点waysplitid、way的wkt内容。4.根据权利要求1所述的osm地图数据自动生成城市路网的方法,其特征在于,所述s4具体包括:s41、联合查询way_tags/way_nodes/nodes表,获得ways中node重复次数超过2次及以上的nodeid,即为相交点,nodeid和对应的wkt结果对象存入集合;s42、查询way_nodes表,获得结果对象存入集合,由wayid对该集合分组成wayid的map;s43、遍历所述wayid的map,再遍历每一个wayid对应的node集合,建立rid对象集合,比较所述wayid中的nodeid和相交点集合中的nodeid,如果所述wayid中的nodeid在相交点集合中,则从开始顺序到相交点顺序的node组合即是rid,给rid对象的相应属性赋值;s44、创建t_s_rid_nodes表,多线程批量插入所述rid对象集合,同时更新rid编号;s45、将上述数据转为rid结构数据,创建dwd_tfc_bas_rdnet_rid_info表,批量插入rid结构数据,更新角度,lnglat_seq,rid_type字段信息。5.根据权利要求1所述的osm地图数据自动生成城市路网的方法,其特征在于,所述s5具体包括:s51、创建t_s_cross_node表;s52、根据相交点进行空间聚类分析:联合查询dwd_tfc_bas_rdnet_rid_info表和
nodes表,应用st_clusterdbscan()函数、st_x()函数、st_y()函数、st_astext()函数,得到路口node相关的聚类结果集合,包含nodeid,cid,node_lat,node_lon,wkt信息,空间聚类函数st_clusterdbscan(geom,eps,minpoints),使用所需的距离(eps)和密度(minpoints)参数来构建每个集群,其中geom表示目标geometry对象,eps表示所需的最小距离,minpoints表示成为核心对象所需的邻域内最小对象数;s53、建立路口对象集合:聚类结果按照类cid进行分组,遍历每一类的集合,计算聚合的中心点mainnode,计算经纬度lng,lat;判断路口节点是否有人为修改,若有,则该路口节点属于干预路口节点;将计算结果mainnode,lng,lat填入路口对象,插入到路口对象集合中;批量更新数据到所述t_s_cross_node表。6.根据权利要求1所述的osm地图数据自动生成城市路网的方法,其特征在于,所述s6具体包括:s61、创建dwd_tfc_bas_rdnet_cross_info表;联合查询t_s_cross_node/dwd_tfc_bas_rdnet_cross_info表,将查询结果集按照crossid分组map,建立dwd_tfc_bas_rdnet_cross_info表对象集合、全局路口名称集合,遍历map,新建dwd_tfc_bas_rdnet_cross_info表对象,计算部分路口属性信息name,lng,lat,nodes,wkt,将所述属性信息插入到表对象中,name插入到全局路口名称集合中用于判断是否有重名;插入表对象到表对象集合,批量集合数据更新到表中,同时更新所述dwd_tfc_bas_rdnet_rid_info表中的路口信息;s62、更新路口的行政区划及id;s63、更新路口的等级和路口形状:查询所述dwd_tfc_bas_rdnet_rid_info表中数据,以end_cross_id的个数总和来判断路口形状和道路等级,并更新表信息。
技术总结
本发明提供一种OSM地图数据自动生成城市路网的方法,包括以下步骤:S1、OSM数据下载并入库;S2、初始化节点、线路;S3、采集线路信息,完善路网;S4、初始化Rid;S5、初始化路口;S6、初始化路口属性信息。本发明提供的OSM地图数据自动生成节点、线路、路口的城市路网的方法可以直接应用不同城市的道路交通,作为基础的路网服务;也可以在此基础上扩展功能应用,满足道路交通的要求。另外本发明生成的路网完整性、准确性和交互性都非常高,应用十分方便,可以大大节省工作成本提高效率。以大大节省工作成本提高效率。以大大节省工作成本提高效率。
技术研发人员:汪恒 荣光泽 李鹏飞
受保护的技术使用者:安徽科力信息产业有限责任公司
技术研发日:2023.07.03
技术公布日:2023/10/5
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/