【问题标题】:Offline geocoding and reverse geocoding for android [closed]android的离线地理编码和反向地理编码[关闭]
【发布时间】:2014-11-27 16:38:04
【问题描述】:

我正在开发一个无法使用互联网并且需要处理地图和定位的安卓应用程序。

下载 OpenStreetMaps 数据被视为离线访问地图信息的良好解决方案。但是,我需要在手机本地运行一些基本算法,例如地理编码和反向地理编码。

有没有人知道一个可以使用离线openstreetmap数据并在手机上提供地理编码和反向地理编码的android库?

【问题讨论】:

  • 您可以使用 gps 或 wifi 定位来获取坐标,还是不允许这样做?您可以使用 IP 查找来粗略估计用户的位置(并不总是准确),但这也需要互联网访问。
  • 我可以使用 GPS,所以我当前的坐标没有问题。我需要的是,给定坐标,找出我在哪条街道。
  • 感谢您的提示,但这些是最终用户应用程序。我实际上需要开发和使用您推荐的帖子中列出的一些功能的应用程序。星期四,我需要图书馆之类的东西。
  • 您可以使用 GraphHopper 从 GPS 点查找街道名称,但不能相反

标签: android geocoding openstreetmap offline reverse-geocoding


【解决方案1】:

对于地理编码,您可以使用这种方法:

  1. 将地址索引创建为 sqlite/spatialite 数据库,据我所知,它可以在 android 应用程序中使用。
  2. 在这个索引中搜索是否使用全文搜索扩展,我不能说哪个会更好。您还可以使用 spatialite 扩展来创建人类可读的坐标文本。

您可以通过以下方式之一创建索引:

  • 使用 OSM Nominatim 的本地实例。它会在你的本地 PostGIS 数据库中创建他自己的索引版本,之后,你可以将它转储到 sqlite 中。
  • 您可以使用https://github.com/kiselev-dv/gazetteer,它可以为您生成json或csv中的此类索引,因此您可以将其转换为sqlite db。

如果你想要更强大的SDK,请查看http://developer.skobbler.com/?source=scout#tour

【讨论】:

  • 原始文本搜索不足以完成(反向)地理编码等复杂任务。
  • @scai 您可以查看这些项目之一的来源 Pelias NominatimOsmand 对于地理编码,所有这些项目都使用文本搜索。对于反向地​​理编码,他们使用相当简单的地理空间查询来获取某个半径和封闭边界内的高速公路。当然,您可以创建更复杂的解决方案。无论如何,如果你想要离线地理编码器,首先你需要索引,第二你需要文本查询,第三空间查询。你可以做得更多,但并非最不重要。
猜你喜欢
  • 2011-07-03
  • 1970-01-01
  • 2013-09-19
  • 2013-01-13
  • 1970-01-01
  • 1970-01-01
  • 2010-10-03
  • 2015-10-31
相关资源
最近更新 更多