R, 사진따오기 및 지도 출력하기

코딩 공부/R-전산 통계학 2020. 2. 17. 18:48
반응형

개요

필자와 14학번의 KTS선배가 R-ggplot2 에서는 사진을 불러오는 것이 아닌,

인터넷에 있는 사진을 출력하는 것이 가능할까? 라는 고찰에서 찾아낸 네트워크 이미지 출력 방법입니다

download.file("https://www.nemopan.com/files/attach/images/6294/611/551/013/6036e29e176d339366e265b07bd85395.jpg", "y.jpg", quiet=TRUE, mode="wb")

jj <- jpeg::readJPEG("y.jpg",native=TRUE)

plot(c(0,7/8),c(0,1),type="n",ann=FALSE,axes=FALSE)

rasterImage(jj,0,0,1,1)


출처 : https://jjeongil.tistory.com/371

 

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

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

jjeongil.tistory.com

개요

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

 

 

 

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 에 접속합니다. 

 

 

 

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

 

 

 

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

 

 

 

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

 

 

 

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

 

 

 

다음을 눌러줍니다.

 

 

 

부여된 키를 복사합니다.

 

 

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

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)

 

 

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

 

 

 

예제 실습

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

 

 

 

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) # 지도 화면에 보이기

 

 

 

 

경도와 위도 값을 알 때

경도 -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

 

 

 

TAG