Mục tiêu
Đây là bài thực hành vẽ bản đồ địa hình 2D với gói ggplot2. Việc sử dụng gói này giúp chúng ta dễ dàng hiệu chỉnh bản đồ theo ý muốn. Sau đó sẽ chuyển đổi sang dạng 3D với gói rayrender
Gọi các gói lệnh cần sử dụng
library(raster)
library(ggplot2)
library(viridis)
library(rayshader)Mở file DEM
Mở bản đồ địa hình của ô mẫu nghiên cứu. Sau đó chuyển sang dạng bảng với các cột kinh độ, vĩ độ và cao độ của từng điểm trên raster bằng hàm rasterToPoints(). Vì để vẽ với ggplot() ta cần bảng ở định dạng này.
#library(raster)
myplot_DEM <- raster("https://github.com/nlxbach/data/raw/main/myplot.tif")
df_myplot_DEM <- data.frame(rasterToPoints(myplot_DEM))
colnames(df_myplot_DEM) <- c("Longitude","Latitude","Elevation")
head(df_myplot_DEM)## Longitude Latitude Elevation
## 1 214467.5 1337231 1745
## 2 214559.0 1337231 1766
## 3 214650.5 1337231 1770
## 4 214742.1 1337231 1744
## 5 214833.6 1337231 1651
## 6 214925.1 1337231 1614
Vẽ bản đồ 2D
Chúng ta vẽ bản đồ raster ở dạng 2D với gói ggplot2 như sau:
#library(ggplot2)
gg <- ggplot(df_myplot_DEM, aes(x = Longitude, y = Latitude, fill = Elevation)) +
geom_raster() + coord_fixed() + theme_bw()
ggCó thể thay đổi màu sắc cho đẹp hơn:
gg <- ggplot(df_myplot_DEM, aes(x = Longitude, y = Latitude, fill = Elevation)) +
geom_raster() +
scale_fill_gradientn("Elevation", colours = terrain.colors(10)) +
coord_fixed() + theme_bw()
ggHay với bộ màu magma của gói viridis
#library(viridis)
gg <- ggplot(df_myplot_DEM,aes(x = Longitude, y = Latitude, fill = Elevation)) +
geom_tile() +
scale_fill_viridis(option = "magma", direction = -1) +
coord_fixed() + theme_bw()
ggChuyển đổi từ bản đồ 2D sang 3D
Để chuyển đổi, ta có thể sử dụng hàm plot_gg() của gói rayshader
#library(rayshader)
plot_gg(gg, width = 5, height = 3, scale = 200, windowsize = c(1400, 800), zoom = 0.6)