울릉도는 경상북도 군으로 행정구역상 울릉군이다. 국토정보플랫폼 웹사이트에서 울릉도 역사지도 대동여지도에서 울릉도를 다운로드 받아 살펴보자.
library(rayshader)
library(sp)
library(raster)
library(scales)
library(magick)
ulleung <- image_read("data/dokdo/(N02면)GM10333IH0014_001.jpg")
ulleung_img <- ulleung %>%
image_resize("10%") %>%
image_crop(geometry = "300x200+110+400") %>%
image_resize("200%")
ulleung_img국토정보플랫폼에서 공개DEM에서 독도와 울릉도를 선택하여 지도신청을 통해 독도 xyz 데이터를 얻을 수 있다.
library(tidyverse)
library(raster)
dokdo_xzy <- read_delim("data/dokdo/독도_DEM/37116.xyz", delim = " ", col_name = FALSE) %>%
set_names(c("x", "y", "elevation"))
dokdo_raster <- rasterFromXYZ(dokdo_xzy)
plot(dokdo_raster)국토정보플랫폼에서 요청하여 전달받은 항공사진을 PDF 파일 형태로 다운로드 받아 PDF 파일에 포함된 이미지를 pdfimager 팩키지의 도움으로 쉽게 추출해낸다.
library("pdfimager") # remotes::install_github("sckott/pdfimager")
dokdo_pdf <- pdimg_images("data/dokdo/dokdo-aerial.pdf")
dokdo_aerial_photo_path <- dokdo_pdf[[1]] %>%
select(path) %>%
pull()
dokdo_aerial_photo_path[1] "C:/Users/STATKC~1/AppData/Local/Temp/RtmpCELDKh/dokdo-aerial/img-000.ppm"
dokdo_aerial_photo <- image_read(dokdo_aerial_photo_path) %>%
image_resize("20%") %>%
image_crop(geometry = "269x150+10+50") %>%
image_resize("500%")
dokdo_aerial_photo library(tidyverse)
library(raster)
dokdo_xzy <- read_delim("data/dokdo/독도_DEM/37116.xyz", delim = " ", col_name = FALSE) %>%
set_names(c("x", "y", "elevation")) %>%
filter(x > 631500,
x < 632700,
y < 527250,
y > 526400)
dokdo_g <- dokdo_xzy %>%
ggplot(aes(x = x, y = y, fill = elevation)) +
geom_tile() +
geom_contour(aes(z = elevation), color = "black") +
scale_x_continuous("X", expand = c(0,0)) +
scale_y_continuous("Y",expand = c(0,0)) +
scale_fill_gradientn("Z", colours = terrain.colors(10)) +
coord_fixed()
dokdo_g등고선 그림을 rayshader 3D 그래픽으로 재현해보자.
dokdo_g %>%
plot_gg(
multicore = TRUE,
raytrace = TRUE,
width = 7,
height = 4,
scale = 300,
windowsize = c(1400, 866),
zoom = 0.6,
phi = 30,
theta = 30
)
render_movie("fig/movie_dokdo.mp4", frames = 260, fps=30, zoom=1, fov = 30)데이터 프레임에서 3D 렌더링을 하면 시간이 많이 걸려 형렬로 변환시킨 후에 sphere_shade() 함수를 사용하면 빠르게 결과를 확인할 수 있다.
library(av)
dokdo_matrix <- dokdo_xzy %>%
pivot_wider(names_from = x, values_from = elevation) %>%
select(-y) %>%
as.matrix()
dokdo_matrix %>%
sphere_shade() %>%
plot_3d(dokdo_matrix, zscale = 3)
render_movie("fig/movie_dokdo_mat.mp4", frames = 520, fps=30, zoom=1, fov = 45)데이터 과학자 이광춘 저작
kwangchun.lee.7@gmail.com