ggmap으로 지도에 표시하기

2019. 5. 6. 19:19R/Basic

요즘 공공 데이터로 다양한 자료들을 쉽게 접할 수 있다.

그 중에는 수치형 데이터 뿐 아니라 위치 기반형도 존재하는데, ggmap 패키지와 Google map API를 활용하면 R에서 간편하게 위치를 표시할 수 있다.

 

서울의 3개 프로구단이 홈구장으로 사용중인 고척 스카이돔과 잠실 야구장의 위치를 표시해 보자 


 

Google Cloud Platform

하나의 계정으로 모든 Google 서비스를 Google Cloud Platform을 사용하려면 로그인하세요.

accounts.google.com

우선, Google map의 데이터를 가져오기 위해서는 API를 발급 받아야 한다. 위 사이트에 가입을 하면 개인 학습 용도로는 무료로 사용가능한 사용권을 얻을 수 있다.
(가입 시 결제 정보를 기입해야 하지만, 실제 결제는 일어나지 않는다)

각 구장의 실제 주소는 아래와 같다

  • 잠실 야구장 : 서울 송파구 올림픽로 25

  • 고척 스카이돔 : 서울 구로구 경인로 430

Google map을 사용하기 위해서는 주소를 경도와 위도로 변환해야 하는데, ggmap 패키지 안에 있는 geocode 함수를 사용하면 된다. geocode에 주소를 넣으면 경도와 위도의 값을 반환 받을 수 있다.

library(tidyverse)
library(ggmap)

# Googke Map API 입력 (API가 없으면 geocode가 작동하지 않는다)
register_google(key='API키를 이 곳에 입력') 

# 주소 tibble 생성
address = c('서울 송파구 올림픽로 25', '서울 구로구 경인로 430') 
name = c('잠실', '고척')

list = cbind(name, address) %>% as.tibble

# geocode 함수로 경도 위도 데이터 생성
coordinate = list$address %>% enc2utf8() %>% geocode()
coordinate

# 주소와 경도 위도 값의 결합
geocoded = cbind(list, coordinate) %>% as.tibble
geocoded

이제 경도와 위도로 변환된 좌표를 구글 맵 위에 표시해보자. 구글 맵에 표시하기 위해서는 당연히 구글맵을 불러와야 한다. 두 야구장은 서울에 있으므로 서울의 지도를 불러와서 점으로 위치를 표시 해 보자

 

stadium = get_googlemap('seoul',
                        maptype = 'roadmap',
                        zoom = 11)
ggmap(stadium) +
  geom_point(data = geocoded, 
             aes(x = lon, y = lat), color = 'red', size = 3)

서울시 지도위에 정확히 야구장의 위치들이 표시 된다.

'R > Basic' 카테고리의 다른 글

시간형 자료를 lubridate로 관리하기  (0) 2019.05.06
Tidyr의 gather와 spread  (0) 2019.04.29
데이터를 클립보드에 읽고 쓰기  (0) 2019.04.28
폴더에서 파일 리스트 가져오기  (0) 2019.04.27
정규 표현식  (0) 2019.04.22