我正在尝试使用rayshader
包函数呈现文本render_label
。
我在 WGS84 UTM 中的栅格:
localtif = raster::raster("G:\\My Drive\\Dem_12m.tif")
高程矩阵:
elmat = matrix(raster::extract(localtif,raster::extent(localtif),buffer=1000),
nrow=ncol(localtif),ncol=nrow(localtif))
我的 rgl 渲染:
elmat %>%
sphere_shade(texture = "desert") %>%
add_water(detect_water(elmat), color="desert") %>%
add_shadow(ray_shade(elmat,zscale=3,maxsearch = 300),0.5) %>%
add_shadow(ambmat,0.5) %>%
plot_3d(elmat,zscale=10,fov=0,theta=135,zoom=0.75,phi=45, windowsize = c(1000,800))
从 x 和 y utm 坐标获取行号和列号:
xy<-rowColFromCell(localtif, extract(localtif,SpatialPoints(cbind( 678349.471, 9197957.733)), cellnumbers=TRUE)[1])
渲染文本:
render_label(elmat,x=xy[2],y=xy[1], z=4000,zscale=50,
text = "El Pico del Diablo",textsize = 10,linewidth = 5, freetype = F)
文本出现在 DEM 模型中的错误位置。我得到了这些 xy 值:
> xy
row col
[1,] 611 278
使用试错法,我发现正确的值为 row = 180 和 col = 278。我也收到此警告:
Warning message:
In rgl.texts(x = 278L, y = 103.72, z = -611L, text = "El Pico del Diablo", :
"bitmap" family only supports cex = 1