2015-05-29 48 views
14

導入名稱的GoogleMaps我使用下面的代碼來獲得一個地址的緯度&經度:不能在python

from googlemaps import GoogleMaps 
gmaps = GoogleMaps(api_key) 
address = 'Constitution Ave NW & 10th St NW, Washington, DC' 
lat, lng = gmaps.address_to_latlng(address) 
print lat, lng 

但我得到以下

File "C:/Users/Pavan/PycharmProjects/MGCW/latlong6.py", line 1, in <module> 
    from googlemaps import GoogleMaps 
ImportError: cannot import name GoogleMaps 

錯誤我已經看到了另一個問題與此類似,但該解決方案對我無效。

回答

6

使用geopy代替,不需要API密鑰。

從他們的例子:

from geopy.geocoders import Nominatim 
geolocator = Nominatim() 
location = geolocator.geocode("175 5th Avenue NYC") 
print(location.address) 
print((location.latitude, location.longitude)) 

打印:

Flatiron Building, 175, 5th Avenue, Flatiron, New York, NYC, New York, 10010, United States of America 
(40.7410861, -73.9896297241625) 
+1

此代碼工作正常單個位置&當我通過多個位置獲取所有緯度和經度相同.. –

+1

這似乎現在工作..無論如何,我需要找到44,000個位置..將嘗試把它們放在一個文件中,並將通過它們.. –

+0

@PavanChakravarthy我不太熟悉庫,但他們似乎有很好的文檔https://geopy.readthedocs .org/en/1.10.0/ – Scott

3

我認爲你在找什麼是Client類不是GoogleMaps

如果你想叫它GoogleMaps如下導入:

from googlemaps import Client as GoogleMaps

+1

這樣做,現在和我得到這個錯誤 文件 「C:/Users/Pavan/PycharmProjects/MGCW/latlong6.py」,2號線,在 gmaps =谷歌地圖( api_key) NameError:name'api_key'is沒有定義 –

+0

@PavanChakravarthy這是因爲你需要一個API。改用geopy。 – Scott

+0

您是否定義了名稱api_key?看來你沒有。 –

4

另一種選擇是從photon.komoot.de解析JSON。例如:

import requests, json 

url = 'http://photon.komoot.de/api/?q=' 
addresses = ['175 5th Avenue NYC', 'Constitution Ave NW & 10th St NW, Washington, DC'] 

for address in addresses: 
    resp = requests.get(url=url+address) 
    data = json.loads(resp.text) 
    print data['features'][0]['geometry']['coordinates'] 

打印:

[-76.1438449, 40.229888] 
[-77.046567, 38.8924587] 

這些在經度,緯度給出。第二個是約1英里的一點點。似乎街道交叉口很困難。