You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

QGIS中无No-Data信息的栅格为何显示无数据区域?如何设透明?

栅格影像QGIS无数据显示问题排查与解决

问题背景

我有一幅栅格影像,执行gdalinfo -stats命令后得到如下输出:

Band 1 Block=256x256 Type=Float32, ColorInterp=Gray
  Description = NDVI
  Min=-0.768 Max=0.859
  Minimum=-0.768, Maximum=0.859, Mean=0.481, StdDev=0.276
  Metadata:
    STATISTICS_MAXIMUM=0.85948675870895
    STATISTICS_MEAN=0.48063077916281
    STATISTICS_MINIMUM=-0.76842105388641
    STATISTICS_STDDEV=0.27639616295944
    STATISTICS_VALID_PERCENT=72.98

该影像无alpha通道,也无显式No-Data信息,但在QGIS中打开后,通过「属性->透明度->将无数据显示为」选择颜色时,影像外围区域会显示所选颜色。按逻辑无No-Data信息不应出现此类着色区域,请问原因是什么?又该如何让这些无数据部分实现透明?

原因分析

  • gdalinfo输出的STATISTICS_VALID_PERCENT=72.98可知,影像仅72.98%的像素是有效值,剩余27.02%为未初始化的空像素(比如影像创建时预留的外围区域,未写入实际数据)。这类像素虽未被标记为NoData,但QGIS的渲染引擎会检测到它们是无效的空值(对于Float32类型,通常是NaN),因此会被当作无数据处理。
  • 由于影像未显式设置NoData值,gdalinfo不会主动标注,但QGIS能识别出这类无效像素,所以在设置"将无数据显示为"颜色时会对其着色。

解决方法

方法一:临时渲染设置(不修改原文件)

  1. 打开影像属性面板,切换到「透明度」选项卡
  2. 在「附加的NoData值」中输入NaN,针对Float32类型的空像素进行识别
  3. 或者直接在「将无数据显示为」的颜色选择器中,把颜色的透明度调整为100%(完全透明)

方法二:永久设置NoData值(修改影像文件)

使用GDAL的gdal_translate命令,将空像素(NaN)标记为正式的NoData:

gdal_translate -a_nodata nan 你的输入影像.tif 输出影像.tif

执行命令后生成的新影像会把NaN像素标记为NoData,后续在QGIS中打开时,这些区域会自动被识别为无数据,可直接设置透明显示。

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

火山引擎 最新活动