Python模块,用于从美国城市名称中获取纬度和经度

Python模块,用于从美国城市名称中获取纬度和经度,python,geolocation,geopy,Python,Geolocation,Geopy,我正在寻找一个python模块,它可以将城市名称作为输入,并返回输入的纬度和经度。请看一看。在“入门”文档中,它显示: >>> from geopy import geocoders >>> gn = geocoders.GeoNames() >>> print gn.geocode("Cleveland, OH 44106") (u'Cleveland, OH, US', (41.4994954, -81.6954088)) >

我正在寻找一个python模块,它可以将城市名称作为输入,并返回输入的纬度和经度。

请看一看。在“入门”文档中,它显示:

>>> from geopy import geocoders  
>>> gn = geocoders.GeoNames()

>>> print gn.geocode("Cleveland, OH 44106")
(u'Cleveland, OH, US', (41.4994954, -81.6954088))

>>> gn.geocode("Cleveland, OH", exactly_one=False)[0]
(u'Cleveland, OH, US', (41.4994954, -81.6954088))
例如:

from geopy.geocoders import Nominatim
geolocator = Nominatim(user_agent='myapplication')
location = geolocator.geocode("Chicago Illinois")
print(location.address)
可用信息:

>>> location.raw
{u'display_name': u'Chicago, Cook County, Illinois, United States of America', u
'importance': 1.0026476104889, u'place_id': u'97957568', u'lon': u'-87.6243706',
 u'lat': u'41.8756208', u'osm_type': u'relation', u'licence': u'Data \xa9 OpenSt
reetMap contributors, ODbL 1.0. http://www.openstreetmap.org/copyright', u'osm_i
d': u'122604', u'boundingbox': [u'41.6439170837402', u'42.0230255126953', u'-87.
9401016235352', u'-87.5239791870117'], u'type': u'city', u'class': u'place', u'i
con': u'http://nominatim.openstreetmap.org/images/mapicons/poi_place_city.p.20.p
ng'}

我必须在中创建一个帐户,为我的帐户启用免费web服务,并发布
gn=geocoders.GeoNames(username='account\u username')
我已经寻找了很长一段时间,但还没有找到“启用免费web服务”的步骤。知道这在网站上的什么地方吗?编辑:找到了。这有点违反直觉,它是登录和密码框下面的一个链接(看起来好像你需要登录,但实际上它发生在外面),给了我一个错误:使用默认的“geopy/1.17.0”
user\u agent
是非常不鼓励的,因为它违反了Namingm的ToS,可能会导致403和429个HTTP错误。请使用
提名(user\u agent=“my application”)
或通过覆盖默认的
user\u agent
geopy.geocoders.options.default\u user\u agent=“my application”