我已经在R和RStudio中使用了光线着色器软件包,并且已经产生了一些很好的2D和3D图像。
我通常使用下拉框直接从RStudio查看面板导出图像,然后选择所需的格式,即pdf或png。这似乎适用于由光线着色器plot_map()函数生成的2D图像。
但是,对于plot_3d()函数,图像会在rgl查看器中显示几秒钟,然后消失,然后重新出现在RStudio查看面板中。查看面板中的图像相当小,然后当我尝试导出图像时,如上面所示,它们的质量相当差。
render_snapshot()函数应该能够保存文件,但是到目前为止,我还没能让它工作。感谢您的帮助。
那么,对于如何将由Rayshader生成的非常高质量的图像直接保存到我的工作目录中,有人有什么建议吗?
我到目前为止一直在使用的代码如下。
library(dplyr)
library(ggplot2)
library(raster)
library(rgdal)
library(scales)
library(rgeos)
library(sp)
library(ggspatial)
library(sf)
library(rayshader)
dem1<- getData("SRTM",lat=34.5,lon=33)
dem2<- getData("SRTM",lat=34.5,lon=36)
dem3<- getData("SRTM",lat=36,lon=33)
dem4<- getData("SRTM",lat=36,lon=36)
dem <- merge(dem1,dem2, dem3, dem4)
#Create polygon to crop the elevation data file
Ps1 = as(extent(34.5, 35, 31.5, 32), 'SpatialPolygons')
crs(Ps1) = "+proj=longlat +datum=WGS84 +no_defs"
#crop the elevation data using the polygon
dem = crop(dem, Ps1, snap= 'out')
#Create input matrix for Rayshader plot
elev_matrix <- matrix(
raster::extract(dem, raster::extent(dem), buffer = 1000),
nrow = ncol(dem), ncol = nrow(dem)
)
elev_matrix[is.na(elev_matrix)] = 0
#Produce 3D map - remember that the y axis for render_label is in -ve direction
elev_matrix %>%
sphere_shade(texture = "imhof2") %>%
add_water(detect_water(elev_matrix), color = "desert") %>%
add_shadow(ray_shade(elev_matrix, zscale = 3), 0.5) %>%
add_shadow(ambient_shade(elev_matrix), 0) %>%
plot_3d(elev_matrix, zscale = 30, fov = 0, theta = 335, zoom = 0.75, phi = 25, windowsize = c(10000, 10000))
Sys.sleep(0.2)
render_snapshot(clear = TRUE)发布于 2020-09-10 13:19:50
您需要在render_snapshot()中添加一个参数,说明输出图像的文件路径和名称。
render_snapshot("FILENAME.png", clear = TRUE)同时,该函数渲染的图像的分辨率受到显示器分辨率的限制。这是目前已知的限制。
https://stackoverflow.com/questions/62391098
复制相似问题