如何在lidR包中将LAS点云生成的DTM保存为TIFF文件?
解决plot_dtm3d绘图后savePlot报错“no such device”的问题
plot_dtm3d()是lidR基于rgl包实现的3D交互式绘图,它使用的是rgl专属的3D绘图设备,而savePlot()仅支持R基础绘图系统的设备(比如常规的png、tiff绘图窗口),两者设备不兼容,因此会抛出“no such device”错误。
你可以用rgl包提供的专用函数来保存3D绘图,具体方法如下:
方法1:用rgl.snapshot保存位图格式(png/tiff等)
library(lidR) library(rgl) # 生成DTM并绘制3D图 dtm1_tin <- rasterize_terrain(las1, res = 1, algorithm = tin()) plot_dtm3d(dtm1_tin, bg = "white") # 保存为PNG rgl.snapshot("dtm1_tin.png") # 保存为TIFF(需确保已安装tiff包) install.packages("tiff") rgl.snapshot("dtm1_tin.tiff")
方法2:用rgl.postscript保存矢量格式(pdf/eps等)
如果需要可缩放的矢量图,使用该方法:
# 绘制3D图后执行 rgl.postscript("dtm1_tin.pdf", fmt = "pdf") # 保存为EPS格式 rgl.postscript("dtm1_tin.eps", fmt = "eps")
注意事项
- 确保已安装并加载rgl包,lidR调用
plot_dtm3d()时会自动依赖,但手动加载能避免潜在的设备调用问题 rgl.snapshot()会捕获当前rgl窗口的实时画面,保存前确保窗口处于正常显示状态
内容的提问来源于stack exchange,提问作者Tahir Saeed
相关产品推荐
相关产品推荐

