Python 3.x 在docker容器中加载openstreetmap.osm的最佳方法

Python 3.x 在docker容器中加载openstreetmap.osm的最佳方法,python-3.x,xml,simulation,openstreetmap,docker-container,Python 3.x,Xml,Simulation,Openstreetmap,Docker Container,我的意图: 事实上,我打算: 将车辆作为集装箱来实施 在基于.osm贴图的道路上模拟/移动这些容器 我对这个问题的看法: 我已经加载了基于XML的.osm文件,并使用XML.dom在python中对其进行了处理。但是我对加载.osm文件的性能不满意,因为稍后,我将不得不添加/创建更多的车辆作为模拟在同一条道路上的集装箱 需要的建议: 这是我第一次解决与地图有关的问题。事实上,我需要关于如何继续的建议,记住这组要求的性能/效率。我们将非常感谢关于执行的建议。提前谢谢 我想,通过并行运行大量do

我的意图:

事实上,我打算:

  • 将车辆作为集装箱来实施
  • 在基于.osm贴图的道路上模拟/移动这些容器
我对这个问题的看法:

我已经加载了基于XML的
.osm
文件,并使用
XML.dom
在python中对其进行了处理。但是我对加载
.osm
文件的性能不满意,因为稍后,我将不得不添加/创建更多的车辆作为模拟在同一条道路上的集装箱

需要的建议:
这是我第一次解决与地图有关的问题。事实上,我需要关于如何继续的建议,记住这组要求的性能/效率。我们将非常感谢关于执行的建议。提前谢谢

我想,通过并行运行大量docker容器来模拟大量车辆可能会起作用。也许你正在初始化同一个图像,不同的起始位置等作为环境变量传入?作为一种进行代理模拟的实用方法,我觉得这听起来有点过分,但作为一个有趣的docker实验,它可能是有意义的

也许你需要一个中心的东西来保持和共享状态(其他车辆的位置),并将其反馈给多个代理

将.osm文件加载到某种数据库或内部映射表示中的挑战似乎并不是最困难的部分,因为它可能在初始化时完成一次,想象一下,这并不是性能最关键的部分


我认为您可能希望通过道路网络进行“路由”(考虑单程等),为您的代理提供一条有目的的路径,以到达目的地。如果您想对与其他代理的交互进行建模,这将变得更加复杂。例如,您可能想对陷入流量中的情况进行建模,因为其他代理正在以相同的方式运行,甚至可能会因为流量而决定重新路由,因此您可能需要一个非常灵活的路由系统,可能是自编码的

但是有很多开源的路由系统使用OSM数据,至少可以从中得到启发。请参见以下列表:

像这样的流行选择被设计成可以扩展到国家大小,甚至可以扩展到全球openstreetmap数据,但我想这对你来说太过分了(你可能正在考虑在城市道路网络中进行模拟?)。即便如此。可能很容易在docker容器中工作

或者你可能会发现一些轻量级的东西,比如docker镜像中的代码更容易嵌入和定制(尽管我看到它使用了一个名为“JGraphT”的库)


然后从计算出的路线向后工作,您可以计算沿该路径的插值步数,这将允许您的模拟代理在每次迭代(模拟移动)中迈出一步。

通过并行运行大量docker容器模拟大量车辆?那么您正在初始化同一个图像,并使用不同的起始位置等作为环境变量传入?听起来像是一个有趣的docker实验(但可能没有其他理由),你有一个保持和分享状态(其他车辆的位置)的中心吗?将.osm文件加载到某种数据库或内部映射表示中似乎不是最复杂或性能最关键的部分。@HarryWood,感谢您的回复。是的,模拟并行的容器。是的,我将通过在地图上选择一个随机位置[纬度,经度]来使用起始/目的地位置(这将是一个从具有不同位置的数组中选择的位置)。是的,我会有一个中央数据库,每辆车在每个特定的时间间隔后都必须更新其当前位置。是的,实际上你在加载.osm文件方面是对的。我最近见过福利姆,@HarryWood,有没有办法在下一个位置[纬度,纬度]生成车辆,使其保持在道路上。(我的意思是说如何使车辆保持在道路上的轨道上)。我想您可能会希望通过道路网络进行“路由”(考虑单程等),为您的代理提供一条有目的的路径以到达目的地。与基于国家/地区的服务器系统相比,您可能会发现一些轻量级的东西,比如JOSM路由插件的代码更有用。然后从一条经过计算的路线向后走,你可以找到沿着这条路线的插值步骤。是的,@HarryWood先生,这(路线)正是我想要做的。我肯定会喜欢搜索JOSM路由插件。你的评论真的很有帮助,如果你发布了答案,我打算以接受和投票的形式给予你一些信任。我真的很感谢你的支持。非常感谢。将来,我会发布更多与此相关的问题。事实上,我正在为Linux基金会的社区开发一个项目/蓝图,命名为Akraino!!!谢谢你的回复。是的,模拟并行的容器。是的,我将通过在地图上选择一个随机位置[纬度,经度]来使用起始/目的地位置(这将是一个从具有不同位置的数组中选择的位置)。是的,我会有一个中央数据库,每辆车在每个特定的时间间隔后都必须更新其当前位置。是的,实际上你在加载.osm文件方面是对的。我最近看过福利姆。是的,哈利伍德先生,这正是我想要做的。我肯定会喜欢搜索JOSM路由插件。你的评论真的很有帮助,如果你发布了答案,我打算以接受和投票的形式给予你一些信任。我真的很感谢你的支持。非常感谢。在未来,我将发布更多与此stuf相关的问题