Scheint, kann es relativ leicht tun. Ein Beispiel aus der documentation angenommen:
>>> import geopy
>>> from geopy.geocoders import Nominatim
>>> gl = Nominatim()
>>> l = gl.geocode("Georgetown, TX")
# now we have l = Location((30.671598, -97.6550065012, 0.0))
>>> l.address
[u'Georgetown', u' Williamson County', u' Texas', u' United States of America']
# split that address on commas into a list, and get the last item (i.e. the country)
>>> l.address.split(',')[-1]
u' United States of America'
Wir haben es! Nun testen Sie es auf anderen Standorten
>>> l = gl.geocode("Santa Fe, New Mexico")
l.address.split(',')[-1]
u' United States of America'
>>> l = gl.geocode("Nuremberg")
>>> l.address.split(',')[-1]
u' Deutschland'
>>> l = gl.geocode("Haarbergstr. 67 D-99097 Erfurt")
>>> l.address.split(',')[-1]
u' Europe'
So könnte man die Liste in einem Skript automatisieren:
import geopy
from geopy.geocoders import Nominatim
geolocator = Nominatim()
list_of_locations = "Georgetown, TX" , "Santa Fe, New Mexico", "Nuremberg", "Haarbergstr. 67 D-99097 Erfurt"
for loc in list_of_locations:
location = geolocator.geocode(loc)
fulladdress = location.address
country = fulladdress.split(',')[-1]
print '{loc}: {country}'.format(loc=loc, country=country)
Ausgang:
Georgetown, TX: United States of America
Santa Fe, New Mexico: United States of America
Nuremberg: Deutschland
Haarbergstr. 67 D-99097 Erfurt: Europe
Hoffnung, das hilft.
Geopy funktioniert in den meisten Fällen nicht, zum Beispiel Breite: "A.J. Tuck Co. Brookfield, Ct USA 06804-1814". Definitiv ist und USA-Adresse, aber das Ergebnis ist keine; Es funktioniert, wenn ich den Firmennamen und die Nummer entferne, aber es hilft mir nicht, weil ich kein klares Muster habe, um Zeichenfolgen wie Firmennamen von der Adresse – user3541631
zu entfernen. Für das Beispiel, das bereits das Land in der Zeichenfolge hat, könnte Sie extrahieren nur das Land aus der Zeichenfolge? Verwenden Sie String-Parsing oder eine Regex? – davedwards
1) Ja, aber das bedeutet, dass ich mir eine Liste von Ländern und deren Namensvarianten zusammenstellen muss; - Ich kann pycountry dafür verwenden, aber -> 2) wenn ich das Land aus der Zeichenfolge entferne, bekomme ich auch keine, also 1) ist nicht das Hauptproblem, ist nur ein Beispiel; 3) die Probleme sind nicht mit dem Paket selbst, aber mit den Dienstleistungen - ich habe mehr von ihnen probiert und jeder von ihnen hat verschiedene Probleme und verschiedene Namen für Land, so dass es schwieriger ist, durch mehr von ihnen zu recyceln; 4) Nominatim ist die beste Antwortzeit, mit GoogleV3 und Yahoo habe ich eine Menge Zeitüberschreitung erhalten. – user3541631