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

QGIS中无属性表栅格的植被密度类覆盖占比查询求助

QGIS大栅格植被密度类别占比计算方案

针对你提到的大栅格无属性表、无法用直方图/矢量融合方法统计的问题,以下是几个高效可行的解决方案:

方法1:使用GRASS工具r.stats(最适合超大栅格)

这是GRASS GIS内置的轻量级统计工具,无需导出大量数据,直接统计栅格类别像素数:

  • 打开QGIS顶部菜单栏的「处理」→「工具箱」,搜索r.stats并打开
  • 参数配置:
    • 输入栅格:选择你的植被密度栅格图层
    • 勾选「Count cells」选项,开启像素数量统计
    • 输出可选择「Save to file」保存为文本,或直接在「Log」面板查看结果
  • 运行完成后,结果会按每个数值区间输出对应像素数,用**类别像素数 ÷ 栅格总像素数(宽×高)×100%**即可算出占比

方法2:PyQGIS脚本直接计算(无需中间文件)

通过Python脚本批量遍历类别区间,直接输出占比,避免导出数据:

  • 打开QGIS的「Python控制台」(底部面板或菜单栏「Plugins」→「Python Console」)
  • 粘贴以下代码,替换layer_name为你的栅格图层名称后运行:
# 替换为你的栅格图层名称
layer_name = "植被密度栅格"
layer = QgsProject.instance().mapLayersByName(layer_name)[0]

# 定义5个植被密度类别区间
classes = [
    ("<0.2%", -float('inf'), 0.2),
    ("0.2%-0.4%", 0.2, 0.4),
    ("0.4%-0.6%", 0.4, 0.6),
    ("0.6%-0.8%", 0.6, 0.8),
    ("0.8%-0.9%", 0.8, 0.9)
]

# 计算栅格总像素数
total_pixels = layer.width() * layer.height()

# 统计并输出结果
print("=== 植被密度类别占比统计 ===")
for class_name, min_val, max_val in classes:
    # 构建栅格筛选表达式
    if class_name == "<0.2%":
        expr = f'"{layer_name}" < {max_val}'
    else:
        expr = f'"{layer_name}" >= {min_val} AND "{layer_name}" < {max_val}'
    
    # 生成临时筛选栅格
    temp_raster = processing.run("qgis:rastercalculator", {
        'INPUT_A': layer,
        'BAND_A': 1,
        'FORMULA': expr,
        'OUTPUT': 'TEMPORARY_OUTPUT'
    })['OUTPUT']
    
    # 统计当前类别像素数
    band_stats = temp_raster.dataProvider().bandStatistics(1, QgsRasterBandStats.All)
    class_pixel_count = band_stats.count - band_stats.noDataCount
    
    # 计算并打印占比
    percentage = (class_pixel_count / total_pixels) * 100
    print(f"{class_name}: {percentage:.2f}% (像素数:{class_pixel_count})")

方法3:重分类+区域统计(适合有研究区边界的场景)

如果你有指定的研究区矢量边界,可先对栅格重分类再统计:

  1. 栅格重分类:
    • 在工具箱搜索Reclassify by table,打开后设置:
      • 输入栅格:你的植被密度栅格
      • 重分类表:按你的5个区间映射为整数(例如<0.2%→1,0.2-0.4%→2,以此类推)
      • 输出保存为临时栅格
  2. 区域统计:
    • 搜索Zonal Statistics,设置:
      • 输入矢量图层:研究区边界
      • 输入栅格图层:重分类后的栅格
      • 勾选「Count」统计项
    • 运行后,矢量属性表会新增每个类别的像素数,再结合总像素数计算占比

为什么之前的方法失效?

栅格转矢量再融合的方式,会因大栅格的拓扑复杂度导致精度丢失、运算崩溃,且无法保证类别映射准确,因此不推荐用于超大栅格的统计需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 06:22:45