ggmap으로 지도에 표시하기
2019. 5. 6. 19:19ㆍR/Basic
요즘 공공 데이터로 다양한 자료들을 쉽게 접할 수 있다.
그 중에는 수치형 데이터 뿐 아니라 위치 기반형도 존재하는데, ggmap 패키지와 Google map API를 활용하면 R에서 간편하게 위치를 표시할 수 있다.
서울의 3개 프로구단이 홈구장으로 사용중인 고척 스카이돔과 잠실 야구장의 위치를 표시해 보자
우선, 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 |