2016-04-07 14 views
1

Ich berechne Breiten- und Längengrade aus der Postleitzahl.Geopy zeigt keine korrekte Ausgabe an

habe ich installiert geopy

pip install geopy 

In meinem Code:

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 

Als ich oben Methode aufrufen und ich gebe Postleitzahl von Lahore, Pakistan, die 54000.

get_lat_lng(54000) 
ist

Der Längen- und Breitengrad ist

(46.975033, 31.994583) 

Tatsächliche Breite und Länge von Lahore sind

31.5546° N, 74.3572° E 

Und auf Druck der Lage Ich habe:

Mykolaiv, Mykolaivs'ka oblast, Ukraine, 54000 

Was Problem sein kann?

Antwort

2

Die einzige Art, wie ich es an die Arbeit konnte, war die Komponenten-Schlüsselwort Führen eines dict von Ländercode und Ort zu verwenden:

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)) 

Welche Ausgänge:

Lahore, Pakistan 
(31.55460609999999, 74.3571581) 

Die andere Möglichkeit ist, Versuchen Sie das region= Schlüsselwort und/oder übergeben Sie die Domäne explizit etwas anderes als der Standard maps.google.com.

Auch exactly_one auf False setzen:

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)) 

Keinerlei Spiel nicht zurück.

[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/de/1.10.0/ Diese Dokumentation ist auch hilfreich für Breiten- und Längengrad auf der Basis der Stadt. –