【问题标题】:Use map data offline with osmdroid使用 osmdroid 离线使用地图数据
【发布时间】:2017-10-06 07:40:51
【问题描述】:

我的最终目标是拥有地图数据(离线,因为我会自己定制)并将其显示在应用程序(Android)中。我可以让 osmdroid 工作以在线加载地图,我试图弄清楚如何下载和显示离线地图。我下载了 MOBAC (Mobile Atlas Creator) 并将数据导出为 SQLite 格式,当我查看它时,我意识到瓷砖是以图像格式 (PNG) 保存的。

我想做的是将数据导入手机,以便以后在搜索引擎或路由算法等算法中使用它,所以我需要“节点”和“方式”(因为我从原始 OSM XML),将它们导入手机并将其可视化,以便稍后将这些数据用于我想要开发的算法。基本上,MAPS.ME 是做什么的。我认为将 XML 转换为 SQLite 并不难,因为一个简单的脚本就可以做到,但是,如何从这个自定义 SQLite 数据库生成图块?或者,有没有一种方法可以让我以更合适的方式下载数据来做我打算做的事情?

谢谢。

【问题讨论】:

    标签: osmdroid


    【解决方案1】:

    从原始 Openstreetmap 数据渲染应用程序中的图块将计算繁重且效率低下。我建议使用您导出的图像图块进行视觉表示。

    除了磁贴之外,您还应该导出应用程序中所需功能所需的数据集。您不需要来自 Openstreetmap 的所有数据,因此您应该确定您需要什么并构建您的自定义导出(有用于处理和过滤 Openstreetmap 数据的工具和库。我使用pyosmium 进行一些过滤和处理,但还有其他的。 ) 例如,您可以使用要搜索的 POI 构建自定义数据库。

    路由是另一章。您可以自己实现它,但这是一项非常复杂的任务。有java library called Graphopper 可以为您进行数据提取(来自Openstreetmap)和离线路由。他们也有一个在线 API,但可以让它完全离线工作(我是为一个应用程序做的)。尝试查看源代码,因为您可以看到主题路由有多复杂。最后说明:从 Graphhopper 导出的数据包含有关沿线某些 POI 的信息。可能可以通过它的 java API 搜索一些东西,但我还没有调查过。

    【讨论】:

    • 有趣。我没有考虑过将数据库与磁贴结合起来,将另一个数据库与 POI 结合起来。关于路由,你觉得有多难?不就是简单地实现一个像 A* 这样的算法吗?
    • @kuonb 我认为挑战将是从 openstreetmap 数据构建得分图。可以肯定地做到这一点,但需要对 osm 数据结构有深入的了解(可能会影响路由的tags)。评分本身可能很棘手。这基本上就是 Graphhopper 库所做的。但如果你真的喜欢它,我想你可以试一试。我认为这在经济上不可行,但这取决于您的具体项目和限制。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多