osm数据导入mysql_mysql – 如何从.osm文件在数据库中构建“道路”图

要求的结果:

具有两个表,“边缘”和“节点”的数据库,可用于生成表示某个区域(例如城市)中所有可行驶道路(高速公路)的图形.数据集是从.osm文件解析的.

背景:

我要第二次尝试创建一个包含两个表的数据库 – 节点和边,可用于对其进行不同的最短路径计算.

首先,我尝试手动将不同的数据提取到数据库中(php脚本):

>将.osm文件中的所有节点解析为“节点”表

>将所有边缘解析到’edge’表中(即解析方法并生成边缘(由起始节点和目标节点组成),同时将标记添加到边缘;

>从边缘表中删除所有带有黑名单标签(不是高速公路)的边缘;

>从节点表中删除边表中不存在的所有节点.

问题是这个序列非常不可靠,它只能在小型数据集上运行“如此”,例如数千个节点,而不是数百万个.

问题:

对于由数百万个节点和边缘组成的数据库,道路提取(例如,基于某个标签过滤器生成边缘)非常慢.

可能的方法:

我这次要做的事情:

>设置PostgreSQL rdbms;

>使用OSM现成脚本解析.osm文件,以获取完整的节点,方式和关系表;

>使用某些标签(例如“高速公路”)将所有边缘从路径表中提取到新的“边缘”表中;

>将edge表中存在的所有节点提取到新的graph_nodes表中;

>之后我可能会从’edges’和’graph_nodes’表生成一个’道路’图表.

题:

如何正确地将.osm文件解析为数据库以使“边”和“节点”表成为结果?

如何从.osm中仅将可行驶的道路提取到数据库中?

我该如何快速完成(我的意思是为数百万个节点和边缘表运行数小时的脚本,而不是数周)?

我应该考虑到关系吗?

如果是的话,我该怎么做?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值