시스템에서 다음 코드를 테스트하려고하는데 올바른 출력을 얻을 수 없습니다.
- 이 코드가
geopy
를GoogleV3
와 함께 사용하는 데 맞습니까? - 그렇다면 국가 및 대륙 이름을 반환하려면 어떻게해야합니까?
import subprocess from geopy.geocoders import GoogleV3 def set_proxy(proxy_addr): cmd = "set HTTPS_PROXY=" + proxy_addr call = subprocess.call(cmd, shell=True) cmd = "set HTTP_PROXY=" + proxy_addr call = subprocess.call(cmd, shell=True) set_proxy("my.proxy") api_key = "my key" geolocator = GoogleV3(api_key) location = geolocator.reverse("52.509669, 13.376294", timeout = 10) #would like to return just country and continent name
댓글
답변
외부 명령을 사용하여 프록시를 설정하지 마십시오. Windows와 프록시는 이미 인터넷 옵션에 설정되어 있습니다. “스크립트에서 설정하지 않아도됩니다. 프록시가 이미 설정되어 있지 않은 경우”가 자동 감지됩니다.
, 프록시를 지오 코더 로 직접 전달할 수 있습니다.
geolocator = GoogleV3(api_key, proxies={"http": proxy_addr, "https": proxy_addr})
또는 외부 명령없이 프록시를 환경 변수로 설정할 수 있습니다.
os.environ["HTTP_PROXY"] = proxy_addr os.environ["HTTPS_PROXY"] = proxy_addr geolocator = GoogleV3(api_key)
그런 다음 다음과 같이 반환 된 주소에 액세스 할 수 있습니다.
location = geolocator.reverse([52.509669, 13.376294], timeout = 10, exactly_one=True) print location.longitude,location.latitude,location.address
출력 :
13.3756952 52.5102143 Potsdamer Platz 4, 10785 Berlin, Germany
국가 이름과 우편 번호를 추출하려면 location.raw
사전. 응답 구성 요소는 Google API 문서 에 지정되어 있습니다.
from geopy.geocoders import GoogleV3 ################################################## # Some dummy values just so the script is # self contained and runnable api_key=None rows=[{"avg_lat":52.509669, "avg_lon":13.376294}] ################################################## def get_component(location, component_type): for component in location.raw["address_components"]: if component_type in component["types"]: return component["long_name"] geolocator = GoogleV3(api_key) for row in rows: location = geolocator.reverse((row["avg_lat"], row["avg_lon"]), timeout = 10, exactly_one=True) post_code = get_component(location, "postal_code") country = get_component(location, "country") print location.longitude,location.latitude,location.address print post_code,country
참고-이는 GoogleV3 지오 코더에만 적용되며 Google이 API를 변경하면 손상 될 수 있습니다 …
참고-Google은 반환되지 않는 것 같습니다. 대륙 이름입니다.
댓글
- 도움을 주셔서 감사합니다.이 작업을 몇 주 동안 시도했습니다.
- Luke, 원시 구성 요소에 액세스하기위한 문서는 어디에 있습니까?
- @dustin geopy.readthedocs.org 에서
raw
사전 - 그곳을 찾고 있었지만 ' 내가 이해할 수있을만큼 상세하지 않았습니다. ' 우편 번호 (우편 번호) 나 가능한 경우 액세스하는 방법에 대해 많이 찾지 않습니다.
- '는 는 t의 원래 응답입니다. 그는 서버를 파이썬 사전으로 파싱했습니다. 각 지오 코딩 API의 응답은 다릅니다. 표준 Python 기술을 사용하여 검사 할 수 있습니다. 예 :
print
,location.raw.keys()
,dir(location.raw)
등 …
location
의 값은 무엇입니까? 즉 역 지오 코드가 있습니다. 성공 했습니까?