【问题标题】:How to create&sample routes using OSM如何使用 OSM 创建和采样路由
【发布时间】:2026-01-09 16:15:02
【问题描述】:

我希望使用 OSM(或基于 OSM 的开放式服务)在任意点之间“创建”路线,然后对这些路线进行无限时间的采样。获取 lan+lat 和各种其他信息(例如海拔、兴趣点...等)中的示例。

我一直在努力寻找可能对我有帮助的类似项目或文档。现在,我什至对如何在本地下载部分 OSM 架构的主题都非常不确定,这样我就不必通过 Web 使用 API 并向 OSM 服务器发送垃圾邮件。

可悲的是,我在网上找到的大多数资源都足够了,文档很少而且经常无人维护:/

如果我要将我需要学习的内容分成 3 个部分,那就是:

a) 获取世界上某个“区域”的 OSM 架构,下载并在本地运行,然后连接并控制它。

b) 弄清楚如何围绕两点之间的“路线”线创建一个实体(比如城市中的地址)。

c) 弄清楚如何查询所述实体以获取沿途的各种样本。

如果有更适合此的产品,则无需在 OSM 中完成此操作,但我必须使用开放的东西,而 OSM 似乎是迄今为止最大且维护良好的项目。

(我应该注意我是在 scala 中构建应用程序,但我对其他语言/语言不可知的文档很好,而且它实际上解释了一些东西并进入了细节,而不是仅仅抛出一些不完整的代码行在你)

【问题讨论】:

标签: java scala openstreetmap graphhopper


【解决方案1】:

Re 1:从http://planet.osm.org/ 获取 OSM 并通过 osmcut、osmosis、osmconvert 等提取您的区域。或使用预处理的提取物,例如来自geofabrik

Re 2:街道名称很简单,其他一切都很复杂。您将需要另一个预处理步骤,它为您提供每个城市/村庄的边界或一些猜测,然后将其提供给路由引擎。

Re 3:一旦将其存储在路由引擎中,查询和返回应该相当简单。

OSM 似乎是迄今为止最大且维护良好的项目。

也许这里有一个误解:OpenStreetMap 是一个数据库,所以它只是数据。现在它恰好是各种工具(如路由工具)的生态系统,请参阅标记的 GraphHopper 路由引擎 here 和其他 here

【讨论】: