구글 지도를 이용한 시각ㅎ

library(readxl)
stat <- read_excel("F:/work/2019/강의/빅데이터시각화/station_list.xls")
## New names:
## * `` -> ...2
## * `` -> ...3
## * `` -> ...4
## * `` -> ...5
stat <- as.data.frame(stat)
dim(stat)
## [1] 398   5

대기오염 관측소의 위치를 시각화 하기 위해 에어코리아에 접속하여 대기관측소의 위치자료를 다운 받았다.

xls 파일로 자료가 제공되어 readxl 팩키지의 read_excel함수를 통해 자료를 불러왔다.

불러온 자료의 대기오염관측소의 수는 398곳이나 주소가 제공되어 관측소의 위도, 경도의 지리적 정보를 확인할 수 없다.

이 경우 위도 경도를 어떻게 구할 수 있을까?

ggmap 패키지로 구글 지도 API를 이용한 데이터 시각화

ggmap 패키지의 get_map()함수와 ggmap()함수를 이용하여 여러 종류의 지도를 불러올 수 있다.

또한 geocode()함수와 mutate_geocode() 함수를 통해 주소의 위도와 경도를 받을 수 있다.

하지만 구글 지도 API를 등록해야 사용할 수 있다.

본 수업시간에는 구글지도 API를 등록하는 방법과 사용하는 방법을 다룬다.

google map 인증키 발급 받기

  1. Google maps platform에 접속한 후 시작하기를 누릅니다.
  • 모두 선택한 후 계속을 누릅니다.
  1. 새 프로젝트를 선택한 후 이름을 넣어줍니다. 예) Rvisualization

  2. 결재하기

2018년부터 Google은 지도를 이용하는 양에따라 돈을 받고 있어, 카드 결재를 해야만 이용할 수 있습니다.

하지만 매달 $200 free gift가 있으므로 적은 양을 사용하는 사용자에게 불이익은 없습니다.

수업의 편리성을 위해 제 key를 사용하겠습니다.

library(ggmap)
## Loading required package: ggplot2
## Google's Terms of Service: https://cloud.google.com/maps-platform/terms/.
## Please cite ggmap if you use it! See citation("ggmap") for details.
register_google("AIzaSyB_DV5gxNj4NpdwfZL9zJbZL-kySQfg2fc") #다음주까지만 사용 가능합니다. 

geocode("대구대학교")
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=%EB%8C%80%EA%B5%AC%EB%8C%80%ED%95%99%EA%B5%90&key=xxx-kySQfg2fc
## # A tibble: 1 x 2
##     lon   lat
##   <dbl> <dbl>
## 1  129.  35.9
data.frame(geocode(stat$...3[3:10])) # 주소를 위도와 경도로
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=%EC%84%9C%EC%9A%B8+%EA%B0%95%EB%82%A8%EA%B5%AC+%ED%95%99%EB%8F%99%EB%A1%9C+426+%EA%B0%95%EB%82%A8%EA%B5%AC%EC%B2%AD+%EB%B3%84%EA%B4%80+1%EB%8F%99&key=xxx-kySQfg2fc
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=%EC%84%9C%EC%9A%B8+%EA%B0%95%EB%8F%99%EA%B5%AC+%EA%B5%AC%EC%B2%9C%EB%A9%B4%EB%A1%9C+42%EA%B8%B8+59+%EC%B2%9C%ED%98%B81%EB%8F%99+%EC%A3%BC%EB%AF%BC%EC%84%BC%ED%84%B0&key=xxx-kySQfg2fc
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=%EC%84%9C%EC%9A%B8+%EA%B0%95%EB%B6%81%EA%B5%AC+%EC%82%BC%EC%96%91%EB%A1%9C+139%EA%B8%B8+49+%EC%9A%B0%EC%9D%B4%EB%8F%99+%EC%A3%BC%EB%AF%BC%EC%84%BC%ED%84%B0&key=xxx-kySQfg2fc
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=%EC%84%9C%EC%9A%B8+%EA%B0%95%EC%84%9C%EA%B5%AC+%EA%B0%95%EC%84%9C%EB%A1%9C+45+%EB%8B%A4%EA%B8%B8+71+%ED%99%94%EA%B3%A13%EB%8F%99+%ED%91%B8%EB%A5%B8%EB%93%A4%EC%B2%AD%EC%86%8C%EB%85%84%EB%8F%84%EC%84%9C%EA%B4%80&key=xxx-kySQfg2fc
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=%EC%84%9C%EC%9A%B8+%EA%B4%80%EC%95%85%EA%B5%AC+%EC%8B%A0%EB%A6%BC%EB%8F%99%EA%B8%B8+14+%EC%8B%A0%EB%A6%BC%EB%8F%99+%EC%A3%BC%EB%AF%BC%EC%84%BC%ED%84%B0&key=xxx-kySQfg2fc
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=%EC%84%9C%EC%9A%B8+%EA%B4%91%EC%A7%84%EA%B5%AC+%EA%B4%91%EB%82%98%EB%A3%A8%EB%A1%9C+571+%EA%B5%AC%EC%9D%98%EC%95%84%EB%A6%AC%EC%A0%95%EC%88%98%EC%84%BC%ED%84%B0&key=xxx-kySQfg2fc
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=%EC%84%9C%EC%9A%B8+%EA%B5%AC%EB%A1%9C%EA%B5%AC+%EA%B0%80%EB%A7%88%EC%82%B0%EB%A1%9C+27%EA%B8%B8+45+%EA%B5%AC%EB%A1%9C%EA%B3%A0%EB%93%B1%ED%95%99%EA%B5%90&key=xxx-kySQfg2fc
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=%EC%84%9C%EC%9A%B8+%EA%B8%88%EC%B2%9C%EA%B5%AC+%EA%B8%88%ED%95%98%EB%A1%9C21%EA%B8%B8+20+%EC%8B%9C%ED%9D%A55%EB%8F%99+%EC%A3%BC%EB%AF%BC%EC%84%BC%ED%84%B0&key=xxx-kySQfg2fc
##        lon      lat
## 1 127.0480 37.51754
## 2 127.1368 37.54498
## 3 127.0119 37.64789
## 4 126.8354 37.54458
## 5 126.9271 37.48735
## 6 127.0925 37.54718
## 7 126.8901 37.49826
## 8 126.9083 37.45235
DU <- get_map(location="대구대학교",
              zoom=14,
              maptype="roadmap",
              source="google")
## Source : https://maps.googleapis.com/maps/api/staticmap?center=%EB%8C%80%EA%B5%AC%EB%8C%80%ED%95%99%EA%B5%90&zoom=14&size=640x640&scale=2&maptype=roadmap&language=en-EN&key=xxx-kySQfg2fc
## Source : https://maps.googleapis.com/maps/api/geocode/json?address=%EB%8C%80%EA%B5%AC%EB%8C%80%ED%95%99%EA%B5%90&key=xxx-kySQfg2fc
ggmap(DU)

ggmap(DU) + geom_point(aes(x=128.85, y=35.901), color="blue", size=15)

위의 내용을 참고하여 아래 과제를 수행하세요.

과제

  1. 경상북도 대학목록의 대학과 전문대학의 위도와 경도를 생성하세요.

  2. google 지도를 다운 받아, 대학과 전문대학의 위치를 지도위에 시각화 하세요.(전문대학과 대학의 색을 다르게 하세요)

  3. stat_density_2d를 이용하여 학교의 밀도를 지도에 표시하세요.