0

我正在使用 Openstreetmap 开发自定义路由应用程序。为此,我必须使用诸如 Overpass 之类的 Openstreetmap API 读取(至少)某个边界框中的节点和边。之后,我将处理节点和边并应用我的路由算法。我的主要问题是确定这个边界框的大小。

一种方法是读取一个包含源节点和目标节点的大边界框,并处理其中的所有节点和边,但这似乎过多,并且需要很长时间从 API 加载。此外,这并不能保证我们拥有所有需要的道路。

另一种方法是读出源节点周围的一个小边界框,从那里启动路由算法(比如 Dijkstra),并在需要时读取/处理地图的新部分。这种方法必须对 API 服务器进行多次调用,这也可能需要时间。

您知道这两种方法中的一种在 OSM 路由应用程序中是否常用,还是另一种方法更可取?

4

1 回答 1

1

您的方法非常不寻常,不推荐。通常你有一个 OSM 数据库的本地副本。要么是整个星球,要么是一个提取物,例如一个国家。

即时获取这些数据是一个非常糟糕的主意,您会遇到很多问题。API 并没有真正准备好支持如此繁重的查询。对于长距离,您将不得不处理数百兆字节的数据。此外,如果您希望能够快速计算路线,则有必要对原始数据进行预处理。

如果您决定安装本地数据库,那么我建议您阅读switch2osm。有一个关于构建可以使用的 tile 服务器的指南,只需跳过安装 Mapnik、mod_tile、renderd 等。

于 2014-02-17T07:27:17.683 回答