14

我正在开发一个应用程序,其中一个要求是我能够基于 GPS 数据执行实时反向地理编码操作。特别是,我必须能够确定纬度、经度对映射到的州/省,并检测我们何时从一个州/省移动到另一个州/省。

到目前为止,我有几个想法,但想知道是否有人对以下任何一个有任何想法:

  • 以有效方式解决此问题的最佳方法是什么?
  • 哪里是查找的好地方以及北美州/省边界的适当格式是什么

首先,我有两个主要想法:

  1. 将北美划分为一个网格,网格中的每个矩形都映射到特定的州省。根据纬度和经度(反之亦然)在此表上进行查找(您希望越精确,该表增长得越快)。
  2. 为每个状态定义多边形并进行某种计算以确定纬度/经度对位于哪个多边形中。我不确定该怎么做。HTML 图像地图作为定义州/省边界的一种方式浮现在脑海中。

我正在为感兴趣的人或那些可能有他们想建议的好图书馆的人工作。

需要明确的是......我没有可用的网络访问权限,因此在运行时不能选择使用现有的反向地理编码服务

4

6 回答 6

8

我为国家/地区创建了一个离线反向地理编码模块: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'}]

我会看看我是否可以为状态添加数据。

于 2014-07-22T12:38:55.493 回答
6

我建议使用您的第一个想法的变体:使用空间索引。空间索引是从矩形构建的数据结构,将纬度/经度映射到有效负载。在这种情况下,您可能会将矩形映射到州-省对。R-tree可能是一个不错的选择。这是一个R-tree python 包。您可以通过比较连续搜索的结果来检测漫游。

于 2009-09-15T05:46:24.340 回答
4

我不会从头开始实施您自己的解决方案。这是一项艰巨的任务,并且已经有工具可以做到这一点。如果您正在寻找一种开源方法(阅读:免费),请查看这篇博文: 使用 PostGIS 来反向地理编码

于 2009-09-15T05:45:16.560 回答
1

如果您可以将状态边界视为多边形(例如,通过 OpenStreetMap),那么确定当前状态只是多边形中的点测试。

如果您需要地址数据,离线解决方案是使用 Microsoft Mappoint。

于 2009-09-15T05:53:00.723 回答
1

您可以从开放的街道地图中获取整个美国的数据,然后可以将您需要的数据(例如城市或州的位置)提取为最适合您的应用程序的格式。请注意,尽管数据质量很好,但不能保证完全准确,因此如果您需要完全准确,您可能需要寻找其他地方。

于 2009-10-19T20:43:17.177 回答
0

我有一个包含所有这些数据和一些访问工具的数据库。我是根据人口普查老虎数据制作的。我想这基本上是将我的数据库导出到 sqlite 和一些代码翻译。

于 2009-09-15T05:38:49.787 回答