3

我正在使用 python 使用 Google App Engine 编写一个应用程序,我正在将一个大型维基百科列表转换为电子表格,然后将列表行输入到 Locations 中。例如这个: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]

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

4

2 回答 2

4

geopy图书馆

示例(来自入门页面):

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  
于 2012-10-02T20:19:50.567 回答
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 公园的静态列表进行地理编码,那么如果速率限制有什么关系呢?

于 2012-10-02T20:28:07.323 回答