본문 바로가기
  • 데이터에 가치를 더하다, 서영석입니다.
도전 : 더 나은 사람으로/GIS 아이템 최적화 프로젝트

구글 API 연결 ('Geocoding API'로 좌표 추출하기)

by 꿀먹은데이터 2022. 3. 14.

구글 Geocoding API로 도로명 주소를 좌표값으로 받으려고 한다.

그러려면 Google Cloud에서 API Key를 발급받아야 한다.

1. 구글 API 발급 받기

https://cloud.google.com/

 

클라우드 컴퓨팅 서비스  |  Google Cloud

데이터 관리, 하이브리드 및 멀티 클라우드, AI와 머신러닝 등 Google의 클라우드 컴퓨팅 서비스로 비즈니스 당면 과제를 해결하세요.

cloud.google.com

1. 상단 측에 있는 콘솔을 클릭

2. 위 상단의 My project 부분에서 새 프로젝트를 만들어준다.

3. API 개요로 이동

4. 검색창에 Geocoding API 입력 후 사용신청 누르기

참고로 유료 API도 많지만, 무료로 제공되는 API도 많으니 여러 API를 사용할 수 있다.

5. 카드등록 하기 (API 오류 방지)

console.cloud.google.com/project/_/billing/enable

에서 카드 등록을 해주는 것은 '필수'이다. 

그렇지 않으면 API 요청할 때 REQUEST_DENIED라는 에러가 난다.

 

이제 데이터를 추출해보면,

import pandas as pd
df = pd.read_excel('../서울특별시 가로쓰레기통 현황_202106.xlsx')
df.head()

여기서 '발급 받은 키' 부분에 자신이 발급받은 API Key를 적어주면 된다.

필자의 경우 AIzaSyDeC28v5SGx9Y6UMUsbgoUvx---- 이런식으로 있어 이 부분을 적어주었다.

import googlemaps

gmaps = googlemaps.Client(key='발급 받은 키')
geocode_result = gmaps.geocode(df['세부 위치(상세 주소)'][0], language='ko')
geocode_result

데이터 전처리

df['도로전체명']='서울특별시 '+df['자치구명'].astype(str)+' '+df['세부 위치(상세 주소)'].astype(str)
address=df['도로전체명']
address

위와 같이 도로명 주소를 구글 API를 통하여 활용할 수 있도록 변경해주었다.

df['위도']='-'
df['경도']='-'

gmaps = googlemaps.Client(key='발급 받은 키')
geocode_result = gmaps.geocode(address[159], language='ko')
geocode_result

데이터 전처리 이후, 도로명 주소로 좌표값을 받는 것을 볼 수 있고, 이를 시각화까지 하는 코드를 진행했다.

import folium
import pandas as pd

x=[]
y=[]
for i in range(len(df['위도'])):
    if df['위도'][i]==0.0 or df['경도'][i]==0.0:
        pass
    else:
        x.append(df['위도'][i])
        y.append(df['경도'][i])
print(len(x))
map_osm = folium.Map(lacation=[x[13],y[13]],zoom_start=14)
for i in range(len(x)):
    folium.Marker([x[i],y[i]],popup='강서구CCTV_%d'%i,icon=folium.Icon(color='red',icon='info-sign')).add_to(map_osm)
folium.CircleMarker(location=[x[13],y[13]],popup='강서구 CCTV',radius=300).add_to(map_osm)

map_osm.save('서울특별시 강서구.html')

마지막으로 '서울특별시 강서구'라는 html로 저장해주었다. 

시각화는 아래와 같다.

 

관련 github code

https://github.com/rootofdata/Gangseo-gu_contest.git

 

GitHub - rootofdata/Gangseo-gu_contest

Contribute to rootofdata/Gangseo-gu_contest development by creating an account on GitHub.

github.com