본문 바로가기
Python/Pandas

구글 맵 API - Geocoding API 설정하는 방법

by healingmau 2022. 5. 4.

구글 맵 API - Geocoding API 설정하는 방법

 

웹사이트 개발 또는 앱 개발을 할때

위치 기반 서비스를 받기 위해

구글 맵 API를 설정해야 할 때가 있습니다.

그 방법을 알아보도록 하겠습니다.

 

1. 아나콘다에 구글맵스 라이브러리 설치

 

먼저 구글 클라우드의 API를

사용하기 위해 내 컴퓨터에 설치된

아타콘다3에  googlemaps 라이브러리를

설치해 줍니다.

 

내컴퓨터 검색창(돋보기)을 클릭하고

Anaconda를 입력하면 메뉴가 쭉 뜨는데요.

그중에서 Anaconda Prompt를 클릭합니다.

 

아나콘다 프롬프트 창이 뜨면!

pip install googlemaps 를 입력후

[Enter] 키를 눌러줍니다.

 

끝에 [Yes] 라고 하면 된다는데~

저는 그런부분은 나오질 않더라구요.

설치가 완료되었습니다.

 

 

2. 구글 사이트 들어가기

 

사이트!!

https://cloud.google.com/maps-platform/?apis=maps

 

구글 클라우드의 MAPS API 페이지로

이동하여 API 키를 생성합니다.

 

 

90일간 $300 크레딧으로

Google cloud를 실제 작업에

무료로 활용할 수 있습니다.

 

무료 체험판 종료후

업그레이드를 통해

유료로 전환할수 있구요.

 

신청할때 결제정보가 등록되어야

승인을 받을수 있는데!

 

무료 체험판 종료후

자동 청구되지 않는다고

안내에 써있어요.

(결제정보가 필요한 이유는

무분별하게 생성하는 것을 막기위해

결제정보를 확인한다고 합니다.)

 

등록이 완료되면 개인 API키를 받게 되는데요.

이건 내 작업을 할때인증으로 써야 합니다.

 

 

Geocoding API를 선택합니다.

 

 

3. 파이썬 코딩하기

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# ------------------------------------------------------------------------------ #
 
# 호출
import googlemaps
 
gmaps_key = "xxxxxx-xxxxxx_xxxxxx" # 자신의 key를 사용합니다.
gmaps = googlemaps.Client(key=gmaps_key)
 
# API 호출(API CALL), API 호출은 네트워크를 통해서~
# (이런형태로 주고받는걸 제이슨(Jasom) 이라 한다.)
gmaps.geocode('서울중부경찰서', language='ko')
 
>> [결과]
[{'address_components': [{'long_name''27',
    'short_name''27',
    'types': ['premise']},
   {'long_name''수표로',
    'short_name''수표로',
    'types': ['political''sublocality''sublocality_level_4']},
   {'long_name''을지로동',
    'short_name''을지로동',
    'types': ['political''sublocality''sublocality_level_2']},
   {'long_name''중구',
    'short_name''중구',
    'types': ['political''sublocality''sublocality_level_1']},
   {'long_name''서울특별시',
    'short_name''서울특별시',
    'types': ['administrative_area_level_1''political']},
   {'long_name''대한민국',
    'short_name''KR',
    'types': ['country''political']},
   {'long_name''100-032',
    'short_name''100-032',
    'types': ['postal_code']}],
  'formatted_address''대한민국 서울특별시 중구 을지로동 수표로 27',
  'geometry': {'location': {'lat'37.5636465'lng'126.9895796},
   'location_type''ROOFTOP',
   'viewport': {'northeast': {'lat'37.56499548029149,
     'lng'126.9909285802915},
    'southwest': {'lat'37.56229751970849'lng'126.9882306197085}}},
  'place_id''ChIJc-9q5uSifDURLhQmr5wkXmc',
  'plus_code': {'compound_code''HX7Q+FR 대한민국 서울특별시',
   'global_code''8Q98HX7Q+FR'},
  'types': ['establishment''point_of_interest''police']}]
 
# 1. 정확한 지명으로 바꿔서 API를 호출해야 합니다.
# 관서명 컬럼에 있는 값들을 가져와서
# 왼쪽에는 '서울' 이라고 붙이고, 오른쪽에는 '경찰서'라고 붙인다.
 
# ------------------------------------------------------------------------------ #
cs

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
32
33
34
35
36
37
38
39
40
# ------------------------------------------------------------------------------ #
 
name_series = '서울' + df['관서명'].str[ : -2+1+ '경찰서'
name_series
 
>> [결과]
0      서울중부경찰서
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     서울수서경찰서
Name: 관서명, dtype: object
 
# ------------------------------------------------------------------------------ #
cs

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
# ------------------------------------------------------------------------------ #
 
# station_names 리스트에 있는, 경찰서명칭을, 구글맵 API에 넣어서 호출한다.
station_address = []
for name in station_name : # name = '서울중부경찰서'
    # 구글로 네트워크를 통해 보내서 호출해서 받은값을 변수로 저장
    result = gmaps.geocode(name, language='ko'
    
    if len(result) != 0 :
        station_address.append( result[0]['formatted_address'] )
 
station_address
 
>> [결과]
['대한민국 서울특별시 중구 수표로 27',
 '대한민국 서울특별시 종로구 종로1.2.3.4가동 율곡로 46',
 '대한민국 서울특별시 중구 한강대로 410',
 '대한민국 서울특별시 서대문구 통일로 113',
 '대한민국 서울특별시 종로구 창경궁로 112-16',
 '대한민국 서울특별시 용산구 백범로 329',
 '대한민국 서울특별시 성북구 삼선동 보문로 170',
 '대한민국 서울특별시 동대문구 약령시로21길 29',
 '대한민국 서울특별시 마포구 마포대로 183',
 '대한민국 서울특별시 영등포구 당산동3가 국회대로 608',
 '대한민국 서울특별시 성동구 행당동 왕십리광장로 9',
 '대한민국 서울특별시 동작구 노량진로 148',
 '대한민국 서울특별시 광진구 구의동 자양로 167',
 '대한민국 서울특별시 은평구 녹번동 177-15',
 '대한민국 서울특별시 강북구 오패산로 406',
 '대한민국 서울특별시 금천구 시흥대로73길 50',
 '대한민국 서울특별시 중랑구 묵2동 249-2',
 '대한민국 서울특별시 강남구 테헤란로114길 11',
 '대한민국 서울특별시 관악구 관악로5길 33',
 '대한민국 서울특별시 강서구 화곡6동 980-27',
 '대한민국 서울특별시 강동구 성내로 57',
 '대한민국 서울특별시 구로구 가마산로 235',
 '대한민국 서울특별시 서초구 서초3동 반포대로 179',
 '대한민국 서울특별시 양천구 목동동로 99',
 '대한민국 서울특별시 송파구 중대로 221',
 '대한민국 서울특별시 노원구 하계동 노원로 283',
 '대한민국 서울특별시 서초구 동작대로 204',
 '대한민국 서울특별시 은평구 불광동 연서로 365',
 '대한민국 서울특별시 도봉구 노해로 403',
 '대한민국 서울특별시 강남구 개포로 617']
 
# 주소가 구글에 없어서 에러발생, 수작업으로 써줌
station_address.insert(21'대한민국 서울특별시 성북구 하월곡동 27-5')
 
station_address
 
>> [결과]
['대한민국 서울특별시 중구 수표로 27',
 '대한민국 서울특별시 종로구 종로1.2.3.4가동 율곡로 46',
 '대한민국 서울특별시 중구 한강대로 410',
 '대한민국 서울특별시 서대문구 통일로 113',
 '대한민국 서울특별시 종로구 창경궁로 112-16',
 '대한민국 서울특별시 용산구 백범로 329',
 '대한민국 서울특별시 성북구 삼선동 보문로 170',
 '대한민국 서울특별시 동대문구 약령시로21길 29',
 '대한민국 서울특별시 마포구 마포대로 183',
 '대한민국 서울특별시 영등포구 당산동3가 국회대로 608',
 '대한민국 서울특별시 성동구 행당동 왕십리광장로 9',
 '대한민국 서울특별시 동작구 노량진로 148',
 '대한민국 서울특별시 광진구 구의동 자양로 167',
 '대한민국 서울특별시 은평구 녹번동 177-15',
 '대한민국 서울특별시 강북구 오패산로 406',
 '대한민국 서울특별시 금천구 시흥대로73길 50',
 '대한민국 서울특별시 중랑구 묵2동 249-2',
 '대한민국 서울특별시 강남구 테헤란로114길 11',
 '대한민국 서울특별시 관악구 관악로5길 33',
 '대한민국 서울특별시 강서구 화곡6동 980-27',
 '대한민국 서울특별시 강동구 성내로 57',
 '대한민국 서울특별시 성북구 하월곡동 27-5',
 '대한민국 서울특별시 구로구 가마산로 235',
 '대한민국 서울특별시 서초구 서초3동 반포대로 179',
 '대한민국 서울특별시 양천구 목동동로 99',
 '대한민국 서울특별시 송파구 중대로 221',
 '대한민국 서울특별시 노원구 하계동 노원로 283',
 '대한민국 서울특별시 서초구 동작대로 204',
 '대한민국 서울특별시 은평구 불광동 연서로 365',
 '대한민국 서울특별시 도봉구 노해로 403',
 '대한민국 서울특별시 강남구 개포로 617']
 
# ------------------------------------------------------------------------------ #
cs

댓글