2015-10-18 37 views
0

我正在尝试构建自己的使用OSMSharp的路由系统,并最终将部署到Azure的完整网站前端。不过,如果我想要找到长途路线(例如纽约州 - >加州),我认为我有一个严重的问题。它看起来像OSMSharp中的路由器只接受一个osm数据流,但即使二进制格式(.osm.pbf)也是roughly 10gb of data。这似乎是一个巨大的性能问题。长途OSM路由,如何处理所有的数据?

要么我需要在内存中保存那个巨大的文件,谁知道Azure要为此收取多少费用,或者OSMSharp/CLR要如何处理它;或者需要将其分解并存储在数据库中以进行即时加载。

任何人都可以提供任何有关如何通常处理的见解吗?我的个人项目离开了我的联盟吗?也许我应该只支持一个美国国家?

+0

我不能说osmsharp,但是graphhopper允许你导入一个pbf相对内存高效和快速,总是有可能使用内存映射配置来进一步减少使用的RAM(但导入会更慢)。这同样适用于查询:GraphHopper可以利用大量的RAM来进行快速查询,或者只是将它配置为使用内存映射,而且RAM的使用率要低得多。另一种方法是使用托管(OSM)路由服务......提示提示;) – Karussell

+0

是的,我认为,但我想运行我自己的自定义路由算法。我认为这完全排除了托管服务。我会看看graphhopper,谢谢! –

回答

2

直接处理pbf文件将是非常低效的,因为它只包含原始数据。此文件格式未针对其运​​行查询进行优化。您需要预处理此文件,计算路由图,删除不感兴趣的数据,然后将其存储在某种数据库或类似的有效格式中。

对于真正的远距离考虑使用contraction hierarchies。它们被许多流行的OSM路由器使用,如graphhopperOSRM

它也有助于看看各种不同的online routersoffline routers OSM为了得到一些想法。

+0

如果我没有错,osmsharp也使用收缩层次结构 – Karussell

+0

是的,我相信当加载PBF时,OsmSharp会进行预处理。 –

相关问题