young
is this it
young
전체 방문자
오늘
어제
  • 분류 전체보기 (143)
    • 웹_프론트엔드 (1)
      • 로드맵 챌린지 (73)
      • Svelte (2)
      • React (6)
      • JavaScript (8)
      • TypeScript (2)
      • HTML+CSS (5)
    • 웹_백엔드 (0)
      • Django (0)
    • 빅데이터 (33)
      • R (30)
      • Python (2)
    • 기타 (11)
      • git (3)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 구글맵api
  • 태스크러너
  • 보안취약점
  • owasp
  • vcs
  • 버전관리
  • 웹보안
  • form
  • 암호화
  • rstudio지도정보
  • css네이밍
  • Regex
  • css후처리기
  • 공개키
  • ggmap()
  • 인증
  • 대칭키
  • ssl
  • ggplot
  • bem

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
young

is this it

[R]  고급시각화 분석 - ggmap 패키지, 구글맵 지도 정보 이용하기
빅데이터/R

[R] 고급시각화 분석 - ggmap 패키지, 구글맵 지도 정보 이용하기

2019. 12. 11. 20:19
반응형

지도 공간 기법으로 시각화하는 ggmap 패키지는 Google Maps, Stamen Maps, 네이버 맵, 등의 다양한 온라인 소스로부터 가져온 정적인 지도 위에 특별한 데이터나 모형을 시각화하는 함수들을 제공한다.

 

ggmap 패키지의 주요 함수

함수 기능 비고
geocode() 거리주소 또는 장소 이름을 이용하여 이용 지도 정보(위도, 경도) 획득 Geolocation API 지원
get_googlemap() 구글 지도 서비스(Google Static Maps) API에 접근하여 정적 지도 다운로드 지원과 지도에 marker 등을 삽입하고 자신이 원하는 줌 레벨과 center를 지정하여 지도 정보 생성 Google Static Maps API 지원
get_map() 지도 서비스 관련 서버(Google Maps, OpenStreetMap, StamenMapsor, 네이버 맵)에 관련된 질의어를 지능형으로 인식하여 지도 정보 생성 Google Maps, 네이버 맵 등 API 지원
get_navermap() 네이버 지도 서비스(Naver Static Maps) API에 접근하여 정적 지도 다운로드 지원 네이버 Static Maps API 지원
ggimage() ggplot2 패키지의 이미지와 동등한 수준으로 지도 이미지 생성 ggplot2 지원
ggmap() get_map 함수에 의해서 생성된 픽셀 객체를 지도 이미지로 시각화 legend 속성
ggmapplot() fullpage 속성
qmap() ggmap() 함수와 get_map() 함수의 통합 기능 통합 지원
qmplot() ggplot2 패키지의 qplot()와 동등한 수준으로 빠르게 지도 이미지 시각화 ggplot2 지원

 

구글맵 지도 정보 함수 get_googlemap()을 사용하려면 구글맵 API Key가 필요하다. 아래 URL에 접속하여 프로젝트를 생성하고 개인 API Key를 얻을 수 있다. 단, 결제정보를 요구하므로 해외거래이용이 가능한 신용카드가 필요하다.

https://cloud.google.com/maps-platform/

 

Geolocation API  |  Google Maps Platform  |  Google Cloud

Google Maps Platform을 선택하면 정확한 실시간 데이터 및 동적 이미지로 몰입형 위치정보 활용 환경을 만들고 더 나은 비즈니스 의사결정을 내릴 수 있습니다.

cloud.google.com

 

get_googlemap() 함수

1
2
3
4
5
6
library(ggmap)
register_google(key = '구글맵 API Key 입력')
gc <- geocode(enc2utf8("모투에카")) # 뉴질랜드의 소도시 '모투에카'의 위도와 경도 획득
gc
cen <- as.numeric(gc) # gc 값(경도 및 위도)를 숫자로 변환
cen # 출력 결과: 173.00098 -41.12405
 

gc의 출력 결과는 아래와 같다. lon은 Longitude (경도)를 의미하며, lat은 Latitude (위도)를 의미한다.

한글로 지명을 입력하려면 enc2utf8() 함수를 이용해 인코딩을 바꿔야 한다.

1
2
3
4
# A tibble: 1 x 2
    lon   lat
  <dbl> <dbl>
1  173. -41.1

이번엔 위의 cen 값과 get_googlemap() 함수를 이용해 지도를 그려보자.

1
2
3
4
5
map <- get_googlemap(center = cen, # 지도 중심점 좌표
                     zoom = 15,    # 지도 확대 정도: 숫자가 클수록 확대 3~21
                     size = c(640,640), # 지도 크기
                     maptype = 'hybrid') # 지도 유형
ggmap(map)

뉴질랜드 "모투에카" 구글맵 지도

 

 

get_googlemap() 함수의 주요 속성

속성 설명
center 지도 중심지역(위도와 경도로 표현)
zoom 확대비율(수치가 작을수록 중심지역을 기준으로 확대)
size 지도 이미지의 가로와 세로 픽셀 수
scale 지도 크기 지정 (예: size = c(640, 640)이고, scale = 2의 경우 1280 X 1280 픽셀 적용)
format 지도 이미지 형식("png8" ,"gif", "jpg", "jpg-baseline")
maptype 지도 유형("terrain", "satellite", "roadmap", "hybrid")
language 언어와 국가 코드("ko=Kr", "en=EN")
color 지도 색상 - c("color", "bw")
sensor 사용자 위치를 판단하기 위한 센서 사용 여부 지정 
markers 지도 위에 표시될 마커(marker = gc)
path 마커 연결 표시

 

ggmap 패키지는 '+' 기호를 사용하여 아래 그림처럼 여러 개의 레이어를 겹치는 방식으로 지도 서비스 관련 서버에서 다운로드한 정적 지도 이미지 위에 포인트나 텍스트 등을 추가하여 지도 이미지를 제작할 수 있다. 따라서 geom_text() 함수로 지도 위에 텍스트를 추가하고, geom_point() 함수로 지도 위에 원을 그려넣어 보자.

 

 

구글맵 지도에 텍스트(이름)와 마커 추가하기

1
2
3
4
5
6
7
8
9
10
11
12
13
14
names <- c("북한산국립공원","설악산국립공원","오대산국립공원","치악산국립공원","태백산국립공원")
gc <- geocode(enc2utf8(names))
df <- data.frame(name = names, lon = gc$lon, lat = gc$lat) # 지명이름, 경도, 위도가 포함된 데이터프레임 생성
cen <- c(mean(df$lon), mean(df$lat))
map <- get_googlemap(center = cen,
                     maptype = 'roadmap',
                     zoom = 8,
                     markers = gc)                # 지도 위에 각 위치마다 마커 표시
gmap <- ggmap(map)
gmap +                                            # '+' 기호를 이용하여 geom_text() 함수를 추가
    geom_text(data = df,
              aes(x = lon, y = lat),
              size = 5,
              label = df$name)                    # 지명 이름으로 라벨링
 

 

 

구글맵 지도에 데이터에 상응하는 크기의 원 추가하기

1
2
3
4
5
6
gmap <- ggmap(map)
gmap +
  geom_point(data = df,
             aes(x = lon, y = lat, size = spd), # 원의 크기는 df 데이터 안의 spd 변수로 지정함
             alpha = 0.5, color = 'navy') +        # 투명도 0.5
  scale_size_continuous(range=c(1,14)) #원 크기 조절, 생략 가능

반응형

'빅데이터 > R' 카테고리의 다른 글

[R] 비정형 데이터 처리 - 워드클라우드(wordcloud) 패키지 사용 예시 [텍스트 마이닝]  (0) 2019.12.11
[R] symbols() 함수 사용 예시  (0) 2019.12.10
[R] treemap() 함수 사용 예시  (0) 2019.12.10
[R] RStudio에서 read.csv 후 한글 깨짐 현상 해결 방법 (영문 OS)  (0) 2019.12.10
[R] 고급 시각화 분석 - ggplot() 함수 사용 예시  (0) 2019.12.09
    '빅데이터/R' 카테고리의 다른 글
    • [R] 비정형 데이터 처리 - 워드클라우드(wordcloud) 패키지 사용 예시 [텍스트 마이닝]
    • [R] symbols() 함수 사용 예시
    • [R] treemap() 함수 사용 예시
    • [R] RStudio에서 read.csv 후 한글 깨짐 현상 해결 방법 (영문 OS)
    young
    young

    티스토리툴바