[Python활용 공간분석] GoogleMaps로 geocode 지역 시각화

Hyejin Beck·2023년 12월 11일

Python

목록 보기
6/23

기초셋팅

############################################

# OS환경 : Mac OS
# VS coda -> Jupyter lab 

############################################ 초기셋팅
import os
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from matplotlib import font_manager, rc
import platform
import matplotlib

import warnings
warnings.filterwarnings('ignore')

############################################ 여기서 Matplotlib 코드를 사용하여 그래프 생성 및 표시
%matplotlib inline

############################################ 시각화 셋팅 
import matplotlib.font_manager as fm
import matplotlib.pyplot as plt
## 폰트 설정 및 마이너스 부호 설정
plt.rc('font', family='NanumSquare') #나눔 글꼴로 설정
#plt.rc('font', family='Malgun Gothic') #맑은 고딕으로 설정
plt.rc('font', family='AppleGothic') #맥
plt.rcParams['axes.unicode_minus'] = False #부호

############################################ Google Maps 설치  
# !pip install googlemaps

Google Cloude API키

API키는 메모장에 몰래 적어놨다가, 복사 붙혀넣기
절대 외부에 공유하지 말 것!

############################################ Google Cloud API 키 
google_map_key = 'AIzaSy어쩌구저쩌구이러쿵저러쿵' 
# googlemaps 패키지 
import googlemaps 

# maps 객체 생성 
maps = googlemaps.Client(key = google_map_key)

위도/경도 좌표 구하기

# 지역명칭 직접 입력해서, 위도/경도 좌표계 구하기 
results = maps.geocode('관악역')
results

이렇게 되면 Json 형태로 위도/경도를 구할 수 있습니다.

# geometry 키 값 가져오기
results[0]['geometry']

# geometry 키 값 가져오기
results[0]['geometry']['location']

# 또는 
# results 로부터 위/경도 데이터 추출
for result in results : 
    print(result['geometry']['location'])
    break

위의 두 가지 방식중 어떤 코드를 입력해도 동일하게 출력됩니다.

# 위/경도 데이터 추출값을 변수에 저장 
lat , lng = result['geometry']['location']['lat'], result['geometry']['location']['lng']

추출한 위도/경도를 지도에 시각화

# Folium 지도 시각화 
import folium 

m = folium.Map(                 # 지도 생성 
    location=[lat, lng],  
    zoom_start = 17, 
    width=800,
    height=400, 
)

folium.Marker(                  # 위/경도 위치 지정 
    [lat,lng], 
    popup='관악역',
    tooltip='관악역 위치'
).add_to(m)                     # 그러고 지도에 대입 

m

위도/경도 좌표 구하기 (함수로)

# import folium
# import googlemaps  

# # Google Maps API 키 설정
# gmaps = googlemaps.Client(key='AIzaSyD9xCEQh7LbV5rWQioXMeZXiKbcbSt0wmk')

def viz_map(place):
    # Google Maps API로 장소 정보 가져오기
    results = gmaps.geocode(place)

    lat, lng = None, None

    # 모든 결과 확인
    for result in results:
        location = result['geometry']['location']
        lat, lng = location['lat'], location['lng']
        print(f'위도 {lat:.3f}, 경도 {lng:.3f}')
        break

    if lat is None:
        return '검색 결과를 찾을 수 없습니다.'

    m = folium.Map(
        location=[lat, lng],
        zoom_start=17,
        width=800,
        height=400,)

    folium.Marker([lat, lng], popup=place).add_to(m)
    return m

viz_map('평촌역')


스타벅스로 겁색하면 안나오는데,
스타벅스 00점으로 검색하면 나온다.
신기하다.

profile
데이터기반 스토리텔링을 통해 인사이트를 얻습니다.

0개의 댓글