SW/R

R : ggmap-특정 지역 지도 보기 (개념 및 예제)

얇은생각 2019. 3. 7. 12:30
반응형

개요

구글맵 API 기능을 이용하여 구글지도상에 정보를 표시할 수 있습니다. 실습 전에 필요한 패키지가 있습니다. ggmap과 ggplot을 설치해주세요. ggmap은 구글맵과 연동을 위해 필요합니다. ggplot2은 구글맵 위에 그래프를 출력하기 위해 설치합니다. 아래 그림을 참고해주세요.


ggmap



ggmap 오류 해결법

최근 google map 시용 환경의 변화에 따라 현재 설치된 ggmap 패키지로는 구글 지도 서비스 이용이 안됩니다. 주소를 좌표로 바꾸는 함수, 지도를 가져오는 함수가 작동하지 않습니다. 이제부터는 반드시 구글 API 키를 이용하도록 강제하기 때문입니다.


해결책은 현재 ggmap과 관련된 패키지를 삭제하고 최신버전을 새로 설치합니다. 그 이후 API 키를 발급받아 사용해야 합니다.


아래 명령어로 먼저 old version 을 삭제합니다. R 패키지 폴더에 가서 삭제되었는지 확인하세요. 삭제가 안되었으면 직접 삭제하시면 됩니다.


remove.packages("ggmap")

remove.packages("tibble")



아직 정식 오픈이 안되어서 일반적인 패키지 설치 방법 대신 다음 방법을 따릅니다. 


install.packages('devtools')

library('devtools')

install_github('dkahle/ggmap', ref="tidyup")

library('ggmap')



구글에 로그인하여 https://cloud.google.com/maps-platform/#get-started 에 접속합니다. 


ggmap



그리고 프로젝트를 생성하거나 기존 프로젝트를 선택합니다.


ggmap



API 서비스는 무료이나 결제 계정을 등록해야 합니다. 


ggmap



API KEY를 받기 위해 다음을 진행해주세요.


ggmap



필요한 정보를 입력하시면 됩니다.


ggmap



다음을 눌러줍니다.


ggmap



부여된 키를 복사합니다.


ggmap


발급받은키로 아래 예제를 진행해봅니다.

library('ggmap')
register_google(key='발급받은키') # 부여받은 키 등록
names <- c("용두암","성산일출봉","정방폭포",
"중문관광단지","한라산1100고지","차귀도")
addr <- c("제주시 용두암길 15",
"서귀포시 성산읍 성산리",
"서귀포시 동홍동 299-3",
"서귀포시 중문동 2624-1",
"서귀포시 색달동 산1-2",
"제주시 한경면 고산리 125")
gc <- geocode(enc2utf8(addr))

gc
# A tibble: 6 x 2
# lon lat
# <dbl> <dbl>
# 1 127. 33.5
# 2 127. 33.5
# 3 127. 33.3
# 4 126. 33.3
# 5 126. 33.4
# 6 126. 33.3


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=10,
size=c(640,640),
marker=gc)
ggmap(map)


결과가 아래와 같이 나온다면 잘 작동한 것입니다.


ggmap



예제 실습

geocode로 지역명을 경위도로 변환합니다. 그리고 as.numeric로 데이터 타입을 바꿔줍니다. get_googlemap은 해당된 위치의 구글 지도를 가져옵니다. 



library(ggmap)

gc <- geocode(enc2utf8("용인")) # Longitude of the Branch

cen <- as.numeric(gc) # in numbers

map <- get_googlemap(center=cen) # Creating a map

ggmap(map) # on the map


ggmap


get_googlemap 함수 

Parameter 

 설명

 center 

 지도의 중심좌표

 the central coordinates of a map

 zoom 

 지도의 확대크기로서 3(대륙)~21(빌딩).

 기본값은 10 (도시)

 Default value 10 (city)

 size 

 지도의 가로와 세로 픽셀 크기.

 기본값은 640 x 640 (c(640,640))

 The horizontal and vertical pixel size of the map.

 The default is ((640,640 c)). 640 640

 maptype 

 출력될 지도유형

 기본값은 "terrain"

 roadmap, terrain, stellite, hybrid 선택

 Types of maps to be output

 Default value is "terrain"


예제 실습 2


library(ggmap)

gc <- geocode(enc2utf8("설악산")) # 지점의 경도위도

cen <- as.numeric(gc) # 경도위도를 숫자로

map <- get_googlemap(center=cen,

zoom=8,

size=c(640,480),

maptype="hybrid")

ggmap(map) # 지도 화면에 보이기


ggmap



경도와 위도 값을 알 때

경도 -118.233248, 위도 34.085015는 LA의 위치입니다. 경도 위도 값을 통해 원하는 위치의 지도를 표현할 수 있습니다. 구글 지도를 이용하여 특정 지역의 경도, 위도를 알 수 있습니다. 

cen <- c(-118.233248, 34.085015) # set center

map <- get_googlemap(center=cen) # create map

ggmap(map) # on the map


ggmap

반응형