울릉도는 경상북도 군으로 행정구역상 울릉군이다. 국토정보플랫폼 웹사이트에서 울릉도 역사지도 대동여지도에서 울릉도를 다운로드 받아 살펴보자.
library(rayshader)
library(sp)
library(raster)
library(scales)
library(magick)
image_read("data/dokdo/(N02면)GM10333IH0014_001.jpg")
ulleung <-
ulleung %>%
ulleung_img <- image_resize("10%") %>%
image_crop(geometry = "300x200+110+400") %>%
image_resize("200%")
ulleung_img
국토정보플랫폼에서 공개DEM에서 독도와 울릉도를 선택하여 지도신청을 통해 독도 xyz 데이터를 얻을 수 있다.
library(tidyverse)
library(raster)
read_delim("data/dokdo/독도_DEM/37116.xyz", delim = " ", col_name = FALSE) %>%
dokdo_xzy <- set_names(c("x", "y", "elevation"))
rasterFromXYZ(dokdo_xzy)
dokdo_raster <-plot(dokdo_raster)
국토정보플랫폼에서 요청하여 전달받은 항공사진을 PDF 파일 형태로 다운로드 받아 PDF 파일에 포함된 이미지를 pdfimager
팩키지의 도움으로 쉽게 추출해낸다.
library("pdfimager") # remotes::install_github("sckott/pdfimager")
pdimg_images("data/dokdo/dokdo-aerial.pdf")
dokdo_pdf <-
dokdo_pdf[[1]] %>%
dokdo_aerial_photo_path <- select(path) %>%
pull()
dokdo_aerial_photo_path
[1] "C:/Users/STATKC~1/AppData/Local/Temp/RtmpCELDKh/dokdo-aerial/img-000.ppm"
image_read(dokdo_aerial_photo_path) %>%
dokdo_aerial_photo <- image_resize("20%") %>%
image_crop(geometry = "269x150+10+50") %>%
image_resize("500%")
dokdo_aerial_photo
library(tidyverse)
library(raster)
read_delim("data/dokdo/독도_DEM/37116.xyz", delim = " ", col_name = FALSE) %>%
dokdo_xzy <- set_names(c("x", "y", "elevation")) %>%
filter(x > 631500,
< 632700,
x < 527250,
y > 526400)
y
dokdo_xzy %>%
dokdo_g <- 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_xzy %>%
dokdo_matrix <- 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