我正在开发一个应用程序,其中一个要求是我能够基于GPS数据执行实时反向地理编码操作。特别是,我必须能够确定纬度,经度对映射的状态/省,并检测我们何时从一个州/省迁移到另一个州/省。
到目前为止,我有几个想法,但想知道是否有人对以下任何一个有任何想法:
作为首发,以下是我的两个主要想法:
我正在python中为感兴趣的人或那些可能有他们想建议的好库的人工作。
要明确......我没有网络访问权限,因此在运行时不能使用现有的反向地理编码服务
答案 0 :(得分:6)
我建议使用您的第一个想法的变体:使用spatial index。空间索引是从矩形构建的数据结构,将lat / long映射到有效载荷。在这种情况下,您可能会将矩形映射到州 - 省对。 R-tree可能是个不错的选择。这是一个R-tree python package。您可以通过比较连续搜索的结果来检测漫游。
答案 1 :(得分:5)
我为各个国家/地区创建了一个离线反向地理编码模块:https://bitbucket.org/richardpenman/reverse_geocode
>>> import reverse_geocode
>>> coordinates = (-37.81, 144.96), (31.76, 35.21)
>>> reverse_geocode.search(coordinates)
[{'city': 'Melbourne', 'code': 'AU', 'country': 'Australia'},
{'city': 'Jerusalem', 'code': 'IL', 'country': 'Israel'}]
我将看看是否可以为状态添加数据。
答案 2 :(得分:4)
我将不再从头开始实施您自己的解决方案。这是一项相当大的工作,已经有工具可以做到这一点。如果您正在寻找开源方法(阅读:免费),请查看此博客文章:Using PostGIS to Reverse Geocode。
答案 3 :(得分:1)
如果您可以将状态边界保持为多边形(例如,通过OpenStreetMap),则确定当前状态只是一个多边形点测试。
如果您需要地址数据,离线解决方案将使用Microsoft Mappoint。
答案 4 :(得分:1)
您可以从open street map获取整个美国的数据。然后,您可以将所需的数据(例如城市或州位置)提取到最适合您应用的格式。请注意,虽然数据质量良好,但不能保证完全准确,因此如果您需要完全准确,则可能需要查看其他地方。
答案 5 :(得分:0)
我有一个包含所有这些数据和一些访问工具的数据库。我用人口普查老虎的数据制作了我的。我想它基本上是我的数据库导出到sqlite和一些代码翻译。