错误:当从geocode_url中提取lat时,Geopy中的“没有JSON对象可以被解码”

时间:2013-02-25 22:30:33

标签: python json geocoding geopy

我使用以下代码:

from geopy import geocoders   

def main():
    gn = geocoders.GeoNames()
    city = 'roman'
    place, (lat, lng) = gn.geocode_url('http://www.geonames.org/advanced-search.html?q='+city+'&country=FR&featureClass=A&continentCode=&fuzzy=0.6')
    location, (lat, lon) = geocodes[0]
    print lat, lon

我想打印一个城市的Geopy网站返回的第一个结果,给定特定的URL配置(在法国,feature = A,fuzzy = .6)

但是,我仍然从上面的代码中得到“无JSON对象可以解码”的错误。有什么问题?

1 个答案:

答案 0 :(得分:1)

您应该使用JSON网络服务:

url = 'http://ws.geonames.org/searchJSON?q=%s&country=FR&featureClass=A&continentCode=&fuzzy=0.6'
gn.geocode_url(url % city)

添加更多参数的正确方法是使用urlencode,网址geocode使用:

from urllib import urlencode
params = {
    'q': 'roman',
    'featureClass': 'A',
    'fuzzy': '0.6',
    'country': 'FR'
}
gn.geocode_url(gn.url % urlencode(params))