快速计算城市道路距离的方法

时间:2015-07-28 19:19:50

标签: python postgresql gis pgrouting

所以我在一个城市(比如房屋或住宅)有一套积分,我想找到这些积分与商店的一组候选点之间的最短距离。我正在寻找最好的商店位置,以尽量减少到集合中所有房屋的距离。因此,我将迭代地移动候选商店点,然后重新计算每个商店和房屋之间的距离(再次使用Djikstra算法)。由于计算量很大,我无法在优化算法的每次迭代中不断访问数据库。

我已经多次使用了pgrouting,这会起作用,但是由于点数很多而且每次都必须搜索磁盘这一点太慢了。

是否有工具可以在内存中加载一些小的Open Street Maps城市地图,然后计算内存中的最短路径?我需要快速的东西,所以最好用C或python?但只要有效,任何语言都可以。

2 个答案:

答案 0 :(得分:1)

在python中,您可以使用networkx进行图形工作。 它具有广度优先的搜索功能。

https://networkx.github.io/

答案 1 :(得分:1)

继承人和想法。获得房子和所有商店的latlongs。 以最大精度(12)计算所有点(房屋和商店)的地理位置,并检查任何商店的地理位置是否与房屋的地理位置匹配。如果没有,请以较低的精度计算geohash(11),然后冲洗并重复,直到你得到一个商店(可能是多个Ill进入之后)与房子的geohash相匹配。

这是模糊距离计算。这将很有效,并且处理时间最短。但是如果你得到两个或更多具有相同geohash且具有一定精度的商店,这将失败。所以这就是我建议你做的事情

  1. geohash循环,精度下降。当商店的地理位置与房屋的混乱相匹配时休息
  2. IF(多个疮匹配)转到普通距离计算并找到最近的商店并将其返回
  3. ELSE返回匹配geohash的一个商店
  4. 此方法的优点:将严格要求更改为模糊概率问题。如果你得了一个疼痛,那很好。如果你至少没有减少距离计算的候选人数

    此方法的缺点:如果所有商店都位于同一个地理位置,该怎么办?我们在这里介绍了相同的复杂性。

    您将不得不依赖于并非所有(或大多数)商店都属于同一个地理位置的机会。实际上,缺点只是在角落情况下的缺点。总的来说,你应该提高性能提升