2016-04-07 14 views
1

私は郵便番号から緯度と経度を計算しています。私は私のコードではgeopyが正しい出力を表示しない

pip install geopy 

geopyをインストールしている

from geopy.geocoders import GoogleV3 
def get_lat_lng(zip_code): 
    lat, lng = False, False 
    geocoder = GoogleV3() 
    location = geocoder.geocode(query=str(zip_code)) 
    if location: 
     print location 
     lat, lng = location.latitude, location.longitude 
    return lat, lng 

私は法の上に呼び出すと、私は54000.

get_lat_lng(54000) 
あるラホール、パキスタンの郵便番号を与えています

緯度経度は:

です。
(46.975033, 31.994583) 

ラホールの実際の緯度と経度が

31.5546° N, 74.3572° E 

と場所のプリントにしている私が得た:

Mykolaiv, Mykolaivs'ka oblast, Ukraine, 54000 

問題となることがありますか?

答えて

2

私は仕事にそれを得ることができる唯一の方法は、コンポーネントを使用していた国コードと地域の辞書を渡すキーワード:

from geopy.geocoders import GoogleV3 
def get_lat_lng(zip_code): 
    geocoder = GoogleV3() 
    location = geocoder.geocode(query=str(zip_code),components={"country": "PK","locality":"lahore"}) 
    if location: 
     print location._address 
     lat, lng = location.latitude, location.longitude 
    return lat, lng 

print(get_lat_lng(54000)) 

出力する:

Lahore, Pakistan 
(31.55460609999999, 74.3571581) 

を、他のオプションがにありますregion=キーワードを試してください。ドメインに明示的にデフォルトのmaps.google.com以外のものを渡してください。

でもFalseにexactly_oneを設定:

from geopy.geocoders import GoogleV3 
def get_lat_lng(zip_code): 
    lat, lng = False, False 
    geocoder = GoogleV3() 
    location = geocoder.geocode(query=str(zip_code), exactly_one=False) 
    if location: 
     print [loc.address for loc in location] 
print(get_lat_lng(54000)) 

はどんな試合を返しません。

[u"Mykolaiv, Mykolaivs'ka oblast, Ukraine, 54000", u'54000 Nancy, France', u'54000, Thailand', u'Kampung Datuk Keramat, 54000 Kuala Lumpur, Federal Territory of Kuala Lumpur, Malaysia', u'Tlalnepantla Centro, 54000 Tlalnepantla, M\xe9x., Mexico', u'54000, Broken Bow, OK 74728, USA', u'54000, Oklahoma, USA'] 
+0

https://geopy.readthedocs.org/ja/1.10.0/このドキュメントは、都市の緯度と経度にも役立ちます。 –

関連する問題