2016-06-15 2 views
1

나는 올바른 도시를위한 위도와 경도를 얻고 싶습니다. 예를 들어 호주에는 시드니가 있고 캐나다에는 시드니가 있습니다. 이도시 및 국가를 지오 코드로 전달하는 방법

for d in listofobjs: 
    location = geolocator.geocode(d['city']) 
    d2 = { 
     'username': d['username'], 
     'latitude': location.latitude, 
     'longitude': location.longitude 
    } 
    listofobjs2.append(d2) 

잘 작동하지만

AttributeError: 'list' object has no attribute 'latitude' 

인가 locatoion에서 위도를 읽으려고 할 때 나는 오류가 발생이 대신

location = geolocator.geocode(d['city'],d['country']) 

같은 위치를하려고하면 오류가 발생합니다 도시와 국가 모두 지오 코딩을 전달할 수 있습니까?

답변

0

문서에서 geolocator.geocode가 0,1 이상의 값을 반환 할 수 있다고 명시되어 있습니다. 메서드는 목록을 반환 할 수 있으므로 단일 구조 요소로 액세스하려고하면 오류 메시지가 반환됩니다. 또는 목록을 반복하여 필요한만큼 listofobjs2에 추가하십시오.

정확히 일치하는 위치를 정확히 하나씩 가져올 수는 없습니다. 하지만 왜 2 개의 매개 변수를 전달합니까? 나는 문서 예제와 같은 문자열로 그들을 결합 할 것이다 :

"some address NYC". 따라서이 같은 요청을 넣으면 :

D [ '도시'] + ""+ D [ '국가']

IT는 예를 들어 당신이 훨씬 더

https://geopy.readthedocs.io/en/1.10.0/

+0

을 일치합니다 오른쪽, 그것은 목록을 반환합니다. 그러나 모든 가능한 위치의 목록. [위치 (밴쿠버, 그레이터 밴쿠버 지역 지구, 브리티시 컬럼비아, 캐나다, (49.2608944, -123.1139382, 0.0)), 위치 (밴쿠버, 클락 카운티, 워싱턴, 미국, (45.6306954, -122.6744556, 0.0) (뱅쿠버, 샌 안토니오 델 Tequendama, Cundinamarca, 콜롬비아, (4.585473, -74.3518472, 0.0)), .... (밴쿠버, 클락 카운티, 워싱턴, 미국, (45.6306954, -122.6744556, 추가 처리가 필요합니다. 다른 쉬운 방법은 없습니까? – jas

+0

문서에는 다음 예제가 있습니다. location = geolocator.geocode ("175 5th Avenue NYC"). geolocator API를 모르지만 geolocator.geocode (d [ 'city'] + "d"country '])가 작동 할 것이라고 가정합니다 (city + country 대신 2 개의 매개 변수 호출 대신 1 개의 문자열을 사용할 수 없습니다. 문서에서 일치) –

+0

예, 작동 중입니다. – jas