시스템에서 다음 코드를 테스트하려고하는데 올바른 출력을 얻을 수 없습니다.

  1. 이 코드가 geopyGoogleV3와 함께 사용하는 데 맞습니까?
  2. 그렇다면 국가 및 대륙 이름을 반환하려면 어떻게해야합니까?

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 

댓글

  • 어떤 결과를 얻고 있습니까? 오류 메시지가 표시됩니까?
  • @MaryBeth 해당 위도의 국가 및 대륙 (가능한 경우) 이름을 반환하고 싶습니다.
  • " 시스템에서 다음 코드를 테스트하려고하는데 올바른 출력을 얻을 수 없습니다. " 어떤 출력이 수신되고 있는지, 예상되는 출력은 무엇입니까? 오류가 발생하면 게시하십시오. 둘러보기 : 현재 직면 한 실제 문제에 대한 질문에 집중하세요. 시도한 작업과 수행하려는 작업에 대한 세부 정보를 포함합니다.
  • location의 값은 무엇입니까? 즉 역 지오 코드가 있습니다. 성공 했습니까?

답변

외부 명령을 사용하여 프록시를 설정하지 마십시오. 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) 등 …

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다