R + ETC (잡동사니)

R + rayshader 지도 데이터(tif, tiff ; raster) 2D 3D로 시각화하기

구렁이 알(Python/R) 2020. 2. 24. 16:40

필요패키지

  • library(tidyverse)

  • library(av)

  • library(rayshader)

 

 

 

"rayshader"지도그래프2D 혹은 3D로 시각화하는 패키지(package) 입니다

 

 

저도 모든 기능을 아는것은 아니고 rayshader를 쓸만한 일이 많지 않아

간단히 실습만 이 페이지에서 하겠습니다

 

자세한 기능 및 code가 필요하신 분은 아래 2곳을 추천합니다

https://www.rayshader.com/

 

Create Maps and Visualize Data in 2D and 3D

Uses a combination of raytracing and multiple hill shading methods to produce 2D and 3D data visualizations and maps. Includes water detection and layering functions, programmable color palette generation, several built-in textures for hill shading, 2D and

www.rayshader.com

https://github.com/tylermorganwall/rayshader

 

tylermorganwall/rayshader

R Package for 2D and 3D mapping and data visualization - tylermorganwall/rayshader

github.com

 

 

#### 지도 데이터(tif, tiff ; raster) 2D 3D 시각화하기

dem <- raster("D:/GIS/dem_01.tif") 

 

## raster형태로 읽어오는 패키지 입니다. 개인적으로 가지고있는 tif파일이 없어 예시 파일을 쓰겠습니다

 

 

파일평태를 한번 살펴봅시다 (typeof, class, View함수를 이용하면 데이터 형태를 유추할 수 있습니다)

extent(dem)

x축 y축 데이터의 최대-최소값이 나옵니다

 

 

일단 plot으로 그려봅시다

plot(dem)

matrix형태로 바꾸어 줍시다

dem_mat <- matrix(extract(dem, extent(dem), buffer = 1000), nrow = ncol(dem), ncol = nrow(dem))

 

 

dem_ambmat <- dem_mat %>% ambient_shade()

 

그럼 plot을 그려봅시다

dem_plot <- dem_mat %>%  
  sphere_shade(sunangle = 60, texture = "imhof1") %>%

## sunangle은 태양의 조사 각도, texture는 지도의 질감 옵션입니다 "?sphere_shade" 명령어로 살펴봅니다
  add_water(detect_water(dem_mat), color = "imhof1") %>% 
  add_shadow(ray_shade(dem_mat, zscale = 3, maxsearch = 300), 0.5) %>% 
  add_shadow(dem_ambmat, 0.5) %>% 
  plot_3d(dem_mat, zscale = 10, fov = 0, theta = 135, zoom = 0.75, phi = 45, windowsize = c(1000, 800))



 

Rstudio가 다른창을 활성화 하면서 3D그래프를 볼수 있습니다

(우와ㅡㅡㅡㅡㅡㅡ!)

raster로 불러올 수 있는 파일(예 : .tif , .tiff)이면 모두 가능합니다

 

 

 

 

저 창이 활성화된 상태에서!!(중요)

render_snapshot()를 실행합니다

render_snapshot()

Rstudio의 plots탭으로 그래프가 이동하였습니다. 이제 자유롭게 저장할 수 있습니다

 

 

 

이를 mp4파일로 뽑아내봅시다

Rstudio가 다른창이 활성화 한 상태에서 명령어를 실행합니다!!(중요)

render_movie(filename = "dem_plo",  
                   type = "orbit",                      ## 가장 많이 사용하는 "orbit" 옵션을 써보겠습니다
                   phi = 45,  
                   theta = 60)

 

mp4를 확인합시다

getwd()를 실행하면 mp4파일이 저장된 곳을 알 수 있습니다

dem_plot.mp4
0.73MB

동영상 첨부가 안되네요;;

파일 첨부하겠습니다