티스토리 뷰

반응형

우리는 구글 지오코딩 API를 활용해서 장소(ex_'강남', '해운대해수욕장', 황상동)를 보내면 위도와 경도를 받는 코드를 만들어 보자. 기본적으로 구글 클라우드를 가입한다. 그리고 프로젝트를 생성 후에 인증키를 받아둔다. 이 부분은 여기를 보고 오자. 여러 구글링을 통해 위의 단계를 마쳤다면 이제 아래의 방법을 따라오자.

 

우리는 구글 클라우드 플랫폼을 이용하여 간단히 장소를 적으면 위도, 경도를 받는 프로그램을 만들어 볼 것이다. 물론 ip로 받는 방법도 있다. ip로 위도와 경도를 아는 방법은 아래의 url을 참고하자.

 

han-py.tistory.com/235

 

python_ip를 통해 사용자 위치 파악하기

0. 들어가면서 빠르게 개발해야하는 개발자들을 위해 개념 설명없이 간단하게 핵심만 담았다. 방금 사용자의 ip를 알아내기를 구현했다. 이제 ip를 통해 사용자의 위치를 파악하는 것을 해보자.

han-py.tistory.com

 

첫번째

구글 클라우드 플랫폼을 사용하기 위해서는 API를 먼저 등록해야한다. 구글 클라우드 플랫폼에서 Geocoding API를 등록하러 가보자.

 

Geocoding API 를 검색하고 사용을 눌러주자. 그 후에 대시보드에 들어가서 스크롤을 내려 확인을 해보면 아래와 같이 Geocoding API가 확인이 될 것이다.

 

 

 

두번째

구글 클라우드 플랫폼에는 Geocoding API를 등록했으니, 이제 python의 라이브러리에 설치를 해주자.

$ pip install -U googlemaps

명령어를 활용하여 cmd나 gitbash나 상태창에 입력하여 설치하자.

 

 

 

세번째

바로 코드를 보자.

import googlemaps
import pandas as pd

my_key = "--구글클라우드플랫폼의 사용자인증정보에 있는 key를 복사해 넣어주자--(보안 필수)"
maps = googlemaps.Client(key=my_key)  # my key값 입력
lat = []  #위도
lng = []  #경도

# 위치를 찾을 장소나 주소를 넣어준다.
places = ["강남", "황상동", "해운대해수욕장"]

i=0
for place in places:   
    i = i + 1
    try:
        print("%d번 인덱스에서 %s의 위치를 찾고있습니다"%(i, place))
        geo_location = maps.geocode(place)[0].get('geometry')
        lat.append(geo_location['location']['lat'])
        lng.append(geo_location['location']['lng'])
        

    except:
        lat.append('')
        lng.append('')
        print("%d번 인덱스 위치를 찾는데 실패했습니다."%(i))


# 데이터프레임만들어 출력하기
df = pd.DataFrame({'위도':lat, '경도':lng}, index=places)
print(df)



'''
# output
1번 인덱스에서 강남의 위치를 찾고있습니다
2번 인덱스에서 황상동의 위치를 찾고있습니다
3번 인덱스에서 해운대해수욕장의 위치를 찾고있습니다
                위도          경도
강남       37.517236  127.047325
황상동      36.114955  128.440733
해운대해수욕장  35.158698  129.160384

'''

 

굉장히 빠르고 쉽게 반환이 된다. 만약 데이터프레임이 헷갈린다면 판다스 기초를 한번 읽고 오도록 하자. 간단하니 유용하게 사용하기 바란다.

 

 

네번째

좀 더 자세한 내용은 아래의 공식문서를 참고하자. 

developers.google.com/maps/documentation/geocoding/overview?hl=ko

 

Overview  |  Geocoding API  |  Google Developers

Geocoding converts addresses into geographic coordinates to be placed on a map. Reverse Geocoding finds an address based on geographic coordinates or place IDs.

developers.google.com

 

사실 KEY 확인 됐는지 확인하기 위해서는 아래의 내용을 참고해 보자.

 

 

YOUR_API_KEY 부분에 자신이 받은 키를 넣어서 주소창에 쳤을 때 아래와 같이 나온다면 KEY는 정상적인 것이고 JSON형태로 출력값을 받는다는 것을 알 수있다.

 

{
   "results" : [
      {
         "address_components" : [
            {
               "long_name" : "1600",
               "short_name" : "1600",
               "types" : [ "street_number" ]
            },
            {
               "long_name" : "Amphitheatre Parkway",
               "short_name" : "Amphitheatre Pkwy",
               "types" : [ "route" ]
            },
            {
               "long_name" : "Mountain View",
               "short_name" : "Mountain View",
               "types" : [ "locality", "political" ]
            },
            {
               "long_name" : "Santa Clara County",
               "short_name" : "Santa Clara County",
               "types" : [ "administrative_area_level_2", "political" ]
            },
            {
               "long_name" : "California",
               "short_name" : "CA",
               "types" : [ "administrative_area_level_1", "political" ]
            },
            {
               "long_name" : "United States",
               "short_name" : "US",
               "types" : [ "country", "political" ]
            },
            {
               "long_name" : "94043",
               "short_name" : "94043",
               "types" : [ "postal_code" ]
            }
         ],
         "formatted_address" : "1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA",
         "geometry" : {
            "location" : {
               "lat" : 37.4267861,
               "lng" : -122.0806032
            },
            "location_type" : "ROOFTOP",
            "viewport" : {
               "northeast" : {
                  "lat" : 37.4281350802915,
                  "lng" : -122.0792542197085
               },
               "southwest" : {
                  "lat" : 37.4254371197085,
                  "lng" : -122.0819521802915
               }
            }
         },
         "place_id" : "ChIJtYuu0V25j4ARwu5e4wwRYgE",
         "plus_code" : {
            "compound_code" : "CWC8+R3 Mountain View, California, United States",
            "global_code" : "849VCWC8+R3"
         },
         "types" : [ "street_address" ]
      }
   ],
   "status" : "OK"
}

 

만약 주소창이 아닌 python으로 딕셔너리로 위의 내용을 받고 싶다면, 주소창에 넣을 내용을 아래와 같이 작성해 보자.

 

import requests
a = requests.get('https://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&key=__키를넣는곳__')
b = a.json()
print(b)

json()을 활용하여 적용해주면 문자열이 아닌 딕셔너리로 확인이 가능하다.

 

 

 

 

 

반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함