You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Terra::writeRaster导出栅格栈在Unity显示空白,求R内解决方案

问题:Terra导出的GeoTIFF在Unity中显示空白,求R内导出PNG或兼容Unity的方案

我用Terra的writeRaster导出栅格栈,文件在ArcGIS/QGIS里能正常查看,但作为多通道图像导入Unity后完全空白。目前只能通过QGIS导出渲染图像临时解决,想找在R内直接完成导出的办法,或者直接导出为PNG格式。

当前导出代码:

raster_stack  <-  stack(speed_raster,  dir_raster)
raster_stack <- brick(raster_stack)

terra::writeRaster(raster_stack, "D:/Wind/RasterStacks/RasterStack.tif", filetype = "GTIFF",overwrite = TRUE)

解决方法

方案1:导出兼容Unity的GeoTIFF

Unity对GeoTIFF的格式有特定要求,需要是8位无符号整数(0-255)、通道顺序正确,且不能有过多冗余地理元数据。调整writeRaster参数即可:

# 1. 将栅格值归一化到0-255范围(针对连续数值型栅格)
speed_norm <- terra::rescale(speed_raster, to = c(0, 255))
dir_norm <- terra::rescale(dir_raster, to = c(0, 255))

# 2. 转为8位无符号整数
speed_norm <- terra::as.int(speed_norm)
dir_norm <- terra::as.int(dir_norm)

# 3. 创建栅格栈并导出,指定兼容参数
raster_stack <- terra::c(speed_norm, dir_norm)
terra::writeRaster(raster_stack, 
                   "D:/Wind/RasterStacks/RasterStack_Unity.tif", 
                   filetype = "GTIFF",
                   datatype = "INT1U",  # 8位无符号整数
                   overwrite = TRUE,
                   options = c("PROFILE=BASELINE", "PHOTOMETRIC=RGB"))  # 基础TIFF配置,适配图像读取逻辑

方案2:直接导出为PNG格式

可以用两种方式在R内导出PNG:

方式A:通过plotRGB导出(适合需要RGB映射的场景)

# 先归一化并转为8位整数
speed_norm <- terra::rescale(speed_raster, to = c(0, 255)) %>% terra::as.int()
dir_norm <- terra::rescale(dir_raster, to = c(0, 255)) %>% terra::as.int()

# 导出PNG
png("D:/Wind/RasterStacks/RasterStack.png", width = ncol(raster_stack), height = nrow(raster_stack))
# 根据需求调整RGB通道映射,示例用speed做红/蓝通道,dir做绿通道
terra::plotRGB(terra::c(speed_norm, dir_norm), r=1, g=2, b=1)  
dev.off()

方式B:直接用writeRaster导出PNG

# 确保栅格值已归一化到0-255并转为8位整数(步骤同上)
raster_stack <- terra::c(speed_norm, dir_norm)

terra::writeRaster(raster_stack, 
                   "D:/Wind/RasterStacks/RasterStack.png", 
                   filetype = "PNG",
                   datatype = "INT1U",
                   overwrite = TRUE)

原因说明

Unity读取GeoTIFF时更偏向普通图像的规范,而GIS导出的TIFF会携带大量地理空间元数据,且常使用浮点型数据,导致Unity无法正确解析。转为8位整数+基础TIFF配置,或者直接导出PNG,就能适配Unity的图像读取逻辑。

内容的提问来源于stack exchange,提问作者ZArmstrong

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 11:30:29