4

我正在编写一个 Python 脚本,它将纬度和经度传递给模块并执行反向地理编码功能以返回该位置的地址。我一直在使用 Google 的 PyGeoCoder 来执行此操作,但它需要访问 Internet。我需要类似于 PyGeoCoder 但开源且完全离线的东西。

4

2 回答 2

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'}]

在内部,它使用 geonames 数据库中的位置和 kd 树来查找最近的邻居。

于 2014-07-22T12:35:52.537 回答
6

您是否考虑过使用 OpenStreetMap?如果您只需要特定区域,您可以下载整个数据库(“行星”)或其中一个提取物。之后,您可以过滤掉所有地址并使用结果数据进行地理编码。OSM有多种搜索引擎,最受欢迎的是Nominatim。它用于主网站,可以进行地理编码和反向地理编码。因此,这可能是您完成任务的一个很好的起点。

于 2013-09-14T16:09:49.260 回答