【问题标题】:Using Osmosis library in JAVA application在 JAVA 应用程序中使用 Osmosis 库
【发布时间】:2014-10-19 18:07:41
【问题描述】:

我想做一个使用 OSM 数据文件(pbf 文件)的导航应用程序。

我想在我的 java 应用程序中使用 pbf 格式。

我正在寻找一种访问和读取 pbf 文件的方法,我发现它可以通过 osmosis 库进行访问。

不幸的是,我不知道如何使用该库,也没有文档。

【问题讨论】:

标签: java openstreetmap osmosis


【解决方案1】:

我对渗透的了解不够详细,如果它也做路由的话。但是,如果您只想阅读 OSM-PBF 文件以某种方式自己提取图表来进行路由,请查看https://github.com/scrosby/OSM-binary。这是 (iirc) osmosis 用于加载 pbf 文件的实际库。

另一种方法是使用 Graphhopper (https://graphhopper.com)。它是一个开源路由库,支持加载 OSM 数据,速度非常快,并且只为它所做的事情和必须处理的数据使用合理的内存量。

【讨论】:

  • 不,渗透无法路由。它只能处理 OSM 文件,以便将其转换为不同的格式、提取特定内容或将其转储到数据库中。
  • 我不希望它路由我只想从 obf 文件中提取信息,但我不知道该怎么做。
  • @Hani:嗯,你想提取什么信息? OSM 数据有大量信息,例如关于道路,建筑物,还有树木,邮箱,船舶路线等。还有,没有路线的导航应用程序?也许你应该提供更多的上下文,你的应用应该能够做什么,否则很难给出更具体的答案。
  • @Cello 我想做路由应用。但首先我想提取所需的信息,例如,如果我在给定的位置,我有使用手机中的 GPS 的经纬度,我想提取该位置的地址。然后如果用户要求餐厅或地点,我可以提取位置( long 和 lat )。然后能够提取从给定位置连接的道路,从而能够构建寻路算法。 (我希望建立自己的算法而不使用任何已经存在的算法)。
  • 你不能那样使用渗透。对于地理编码、路由和类似任务,您必须使用适当的数据库并对数据进行一些预处理。由于地址的复杂性,Osmosis 不能神奇地提取某个地址。同样,使用渗透搜索给定名称的餐厅将非常缓慢。查看已经存在的应用程序以了解从哪里开始,或询问有关此主题的新问题。请注意,从头开始开发路由和地理编码应用程序并非易事。
【解决方案2】:

从你在交叉帖子中的 cmets 来看,我相信这个链接就是你所追求的。

https://lists.openstreetmap.org/pipermail/dev/2011-February/021804.html

如果满足以下条件,所有任务都可以独立实例化和调用 你希望。命令行上可用的每个任务,例如 --read-xml, --read-pbf 等由可以在您自己的内部使用的类实现 代码。

所以有很多与osmosis相关的jar文件可以导入,然后里面的类就可以使用了。我建议使用命令行版本的文档作为参考,然后尝试通过查看这些文档和代码来构建您的应用程序。

祝你好运!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-16
    • 2015-04-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-24
    相关资源
    最近更新 更多