0

我正在使用以下代码:

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 配置(在法国,特征 = A,模糊 = .6)

但是,我从上面的代码中不断收到“无法解码 JSON 对象”错误。有什么问题?

4

2 回答 2

1

您应该使用 JSON 网络服务:

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

添加更多参数的正确方法是使用urlencode和 urlgeocode使用:

from urllib import urlencode
params = {
    'q': 'roman',
    'featureClass': 'A',
    'fuzzy': '0.6',
    'country': 'FR'
}
gn.geocode_url(gn.url % urlencode(params))
于 2013-02-25T22:43:30.840 回答
0

我不直接熟悉 geopy 或 GeoNames 数据库,但您的意思是从他们的网络服务请求某些东西吗?您提供的 URL 似乎返回的是普通网页,而不是 JSON 响应,除非发生了一些棘手的事情。

API 似乎有类似的论点,尽管它确实需要用户名/帐户。也许你的意思是:

http://api.geonames.org/searchJSON?q=paris&country=FR&featureClass=A&continentCode=&fuzzy=0.6&maxRows=10&username=demo
于 2013-02-25T22:42:31.650 回答