如何在服务器上对地址进行地理编码

时间:2012-10-02 20:10:35

标签: python geocoding google-geocoding-api

我正在使用python使用Google App Engine编写应用程序,我正在将一个大型维基百科列表转换为电子表格,然后将列表行输入到位置。例如:http://en.wikipedia.org/wiki/List_of_North_Carolina_state_parks我需要将每个公园的名称变成一个地址,我想它们不会是准确的,但只要它们几乎是正确的就可以了。

有什么办法可以在服务器端使用python来做到这一点?我知道谷歌的地理编码服务,但它都是用javascript完成的,并且速率有限。

有没有可以做到这一点的服务?

更新: geopy正是我所寻找的。我想知道处理多个结果的最佳方法是什么。这是我的尝试:

        try:
             place, (lat, lng) = g.geocode(title+", North Carolina")
        except ValueError:
             geocodespot = g.geocode(title+", North Carolina", exactly_one=False)
             place, (lat, lng) = geocodespot[0]

它运作得很好,但我想知道是否有更好的想法。

2 个答案:

答案 0 :(得分:4)

geopy library

示例(来自getting started page):

from geopy import geocoders

g = geocoders.Google()
place, (lat, lng) = g.geocode("10900 Euclid Ave in Cleveland")
print "%s: %.5f, %.5f" % (place, lat, lng)
    10900 Euclid Ave, Cleveland, OH 44106, USA: 41.50489, -81.61027  

答案 1 :(得分:1)

Google地理编码不需要任何密钥即可使用。

可以找到有关最新版本的所有信息:

https://developers.google.com/maps/documentation/geocoding/#ReverseGeocoding

您所要做的就是提出以下要求:

(实施例) http://maps.googleapis.com/maps/api/geocode/json?latlng=40.714224,-73.961452&sensor=false

然后使用urllib

import urllib
// pull lat and lng from your parks database and construct a url like:
url = 'http://maps.googleapis.com/maps/api/geocode/json?latlng=40.714224,-73.961452&sensor=false'

resp = urllib.urlopen(url)
resp.read() // json string convert to python dict

速度有限,但它是免费服务。绝对不是所有用javascript完成的。如果只是对nc公园的静态列表进行地理编码,那么为什么它的速率有限呢?