【问题标题】:Is there an offline geocoding framework, library, or database for iOS?是否有适用于 iOS 的离线地理编码框架、库或数据库?
【发布时间】:2011-05-21 09:33:51
【问题描述】:

是否有适用于 iOS 的(离线)地理编码框架、库或数据库?从哪里获取数据?

我需要能够将全球(或至少在美国)城市中的街道地址地理编码为纬度和经度,以便计算日出和日落。

信息必须采用适用于 iPhone 操作系统的格式。 (数据库文件或用 C/Objective-C 编写)

【问题讨论】:

    标签: iphone location geocoding


    【解决方案1】:

    我会推荐什么:

    • 从 Open Street Maps 获取数据,许可证只是暗示您提及来源。有一些针对某些国家/地区的 OSM 提取物,我不知道是否已经为某些城市制作了一些,但我认为这可以在您这边实现。

    [编辑] 例如,您可以从 http://www.openstreetmap.org 下载数据,只需单击导出选项卡,选择 Open Street Map XML Data 格式,然后导出数据:您将获得所选边界框的 OSM 数据。 更多数据可以从 cloudmade 下载:http://downloads.cloudmade.com/

    • 然后将此数据导入到 sqlite DB 中。然后从这个 sqlite DB 中创建一个空间索引,其中包含地理信息:可以使用spatialite 来实现这样的事情(sp​​atialite 是 Sqlite 的一个非常好的 GIS 扩展)

    [编辑] Spatialite 提供了一个 GUI 工具,用于从各种数据源格式创建空间数据库。该工具可以从这里以二进制形式下载:http://www.gaia-gis.it/spatialite-2.4.0-4/binaries.html (spatialite_gui) 我正在链接到 2.4.0 测试版,因为那是最支持 .osm 文件的版本。

    另一个很好的资源是 QGis,用于可视化 OSM 数据/创建空间数据库。它是免费/开源的并且非常成熟: http://www.qgis.org/

    • 完成此操作后,您将能够实现一个基本的地理编码器,因为 spatialite 实现了诸如“给我这个 GPS 坐标最近的线”(基本 GIS 功能)之类的功能。

    这些是非常粗略的线条。如果您对这种方法感兴趣,我可以提供更深入的细节:我已经实现了这一点。我知道如何为 iOS 编译 spatialite(这花了我一些时间......)以及如何导入 OSM 数据并为其创建空间索引。

    【讨论】:

    • 请多解释,我将不胜感激。具体来说,我如何/从哪里下载 Open Street Maps 数据?另外,请解释如何进行数据库导入和空间操作。谢谢!
    • 我添加了更多细节。如果你觉得我的回答很有趣,请投票! ;)
    • 添加了对 QGis 的引用。我刚刚下载并试用了1.6.0版本,对OSM的支持得到了改进,spatialite也是如此。
    • 您是否与 GEOS 和 Proj.4 一起构建了 Spatialite?我现在有针对 iOS 构建的裸 Spatialite,但是当我查看 GEOS 源时,它变得可怕。 :)
    • 对于所有感兴趣的人,这里是我最后两个 cmets 的答案:groups.google.com/group/spatialite-users/browse_thread/thread/…
    【解决方案2】:

    我不确定如何做你想做的事情,但这里有一些框架:

    http://code.google.com/apis/maps/documentation/geocoding/(在线) http://www.gisgraphy.com/(我认为是离线)

    此链接也可能对您有所帮助:

    How to convert an address to a latitude/longitude?

    希望这有帮助:)

    编辑:

    这也可能对您有所帮助:) http://www.geonames.org/export/

    在寻找答案时,我发现有些人声称这是资源密集型的,我认为他们可能是对的 :) 所以在创建应用程序时考虑一下;)

    【讨论】:

    • 这就是我想做的,但我需要离线进行。
    【解决方案3】:

    我认为没有可用的现有框架。但是,您可以比联系这个骗子的作者做得更糟:Reverse Geocoding Without Web Access

    【讨论】:

    • 是否至少有任何地方可以从中获取数据?
    • 如何将数据作为 sql 或 sqlite 文件获取?
    • 我认为您必须自己构建它或转到另一个线程。
    【解决方案4】:

    这个答案可能会有所帮助: How to convert an address to a latitude/longitude?

    你可能需要做一些额外的工作。

    【讨论】:

      【解决方案5】:

      世界上每个地方(或美国)的所有地址...这占用了大量空间,超出了普通 iOS 设备的处理能力。所以,绝对不是离线版本。

      但是,您可以简单地使用 Open Street Maps,它可以帮助您获取一些数据,将其存储在某种缓存中(例如,仅存储 5 英里半径内的所有内容)并在您离开该区域时刷新此缓存。

      【讨论】:

        【解决方案6】:

        如果开发人员正在搜索 OpenStreetMaps 路径的教程,我强烈推荐这个教程:

        http://shikii.net/blog/offline-maps-in-ios-using-openstreetmap-and-route-me/

        这是一个简单的教程,可帮助您开始使用使用 Route-me github 存储库的 Open Street Maps。这是github上的示例应用程序:

        https://github.com/Label305/iOS-OfflineMaps-Example

        希望对你有帮助

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-12-08
          • 2012-01-29
          • 1970-01-01
          • 2013-01-13
          • 1970-01-01
          • 2013-09-25
          • 2012-01-27
          相关资源
          最近更新 更多