python编程练习:基于gdal库,批量汇总栅格文件的统计特征


系列文章目录: ArcGIS自定义脚本编程


一、功能描述

读取栅格文件,批量统计栅格的文件名、计数、最小值、最大值、总和、平均值、中位数、标准差。并将统计结果保存为表格(.csv)文件。表格文件样式如下:
在这里插入图片描述


二、代码

def gdal_analysis(in_path,out_csv):
    """
    读取栅格文件,批量统计栅格的文件名、计数、最小值、最大值、总和、平均值、中位数、标准差。并将统计结果保存为表格(.csv)文件。
    in_path:待统计的栅格所在的文件夹
    out_csv:生成的表格.csv文件所存放的位置
    """
    from osgeo import gdal
    import pandas as pd
    import numpy as np
    import os
    tifs = [os.path.join(in_path,i) for i in os.listdir(in_path) if i.endswith(".tif")]
    res = []
    for in_tif in tifs:
        bname = os.path.basename(in_tif)
        fname = os.path.splitext(bname)[0]
        rds = gdal.Open(in_tif)  # type:gdal.Dataset
        if rds.RasterCount != 1:
            print("Warning, RasterCount > 1")
        band = rds.GetRasterBand(1)  # type:gdal.Band
        ndv = band.GetNoDataValue() # nodata value

        # 读取栅格至大小为n*1的数组中
        values = np.array(band.ReadAsArray()).ravel() 
        # 排除空值区
        values = values[values != ndv]
        temp = [fname,values.size,np.min(values),np.max(values),np.sum(values),np.mean(values),np.median(values),np.std(values)]
        res.append(temp)
    res = pd.DataFrame(res)
    res.columns = ["fileName","count","min","max","sum","mean","median","std"]
    res.to_csv(out_csv)

三、使用例

3.1、问题描述

将由MOD13数据集经过预处理得到的NDVI栅格进行批量统计分析,其中NDVI栅格并未乘以缩放因子。以黄土高原的2001全年16day的NDVI栅格为例。
在这里插入图片描述

3.2、代码示例

path1 = r"H:\scriptTest\input" # 输入:待统计栅格所在的文件夹
csv1 = r"H:\scriptTest\input\result.csv" # 输出:包含统计结果的表格文件
gdal_analysis(path1,csv1)

3.3、运行结果

在这里插入图片描述
在这里插入图片描述


  • 6
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Salierib

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值