Python中的离线反向地理编码

时间:2013-09-14 15:51:02

标签: python geocoding offline

我正在编写一个Python脚本,它将纬度和经度传递给模块,并执行反向地理编码功能以返回该位置的地址。我一直在使用谷歌的PyGeoCoder来做这件事,但它需要访问互联网。我需要类似于PyGeoCoder的东西,但开源并完全脱机。

2 个答案:

答案 0 :(得分:6)

你考虑过使用OpenStreetMap吗?如果您只需要特定区域,则可以下载整个database (the "planet")或其中一个extracts。之后,您可以filteraddresses全部用完search engines并使用生成的数据进行地理编码。 OSM有几个Nominatim可用,最受欢迎的是{{3}}。它在主网站上使用,可以进行地理编码和反向地理编码。所以这可能是你任务的一个很好的起点。

答案 1 :(得分:6)

我创建了一个完全相同的模块: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'}]

在内部,它使用地理名称数据库和k-d树中的位置来查找最近的邻居。