我正在编写一个Python脚本,它将纬度和经度传递给模块,并执行反向地理编码功能以返回该位置的地址。我一直在使用谷歌的PyGeoCoder来做这件事,但它需要访问互联网。我需要类似于PyGeoCoder的东西,但开源并完全脱机。
答案 0 :(得分:6)
你考虑过使用OpenStreetMap吗?如果您只需要特定区域,则可以下载整个database (the "planet")或其中一个extracts。之后,您可以filter将addresses全部用完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树中的位置来查找最近的邻居。