Python实现批量绘制遥感影像数据的直方图

 更新时间:2023年02月27日 11:40:09   作者:疯狂学习GIS  
这篇文章主要为大家详细介绍了如何基于Python中gdal模块,实现对大量栅格图像批量绘制直方图,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下

本文介绍基于Pythongdal模块,实现对大量栅格图像批量绘制直方图的方法。

首先,明确一下本文需要实现的需求:现需对多幅栅格数据文件进行依据其像元数值的直方图绘制,具体绘制内容即各栅格图像像素数值的分布情况;所有栅格数据都保存在同一目标路径下,且均为.tif格式;而目标路径下具有其它非.tif格式的文件,以及不需要进行直方图绘制的.tif格式文件,因此需要在绘制前对目标路径下的文件列表加以筛选,只保留需要绘制直方图的栅格文件。

知道了需求,我们便开始代码的书写。具体代码如下:

# -*- coding: utf-8 -*-
"""
Created on Tue Jul 20 12:17:05 2021

@author: fkxxgis
"""

import os
import numpy as np
import matplotlib.pyplot as plt
from osgeo import gdal

lai_file_path="G:/Postgraduate/LAI_Glass_RTlab/LAI_Difference_Global/"
pic_save_path="G:/Postgraduate/LAI_Glass_RTlab/LAI_histogram.png"

file_list=os.listdir(lai_file_path)
tif_list=[]
for file in file_list:
    if os.path.splitext(file)[1]==".tif":
        if file[0:3]!="MCD":
            tif_list.append(file)

sub_plot_num=1
for tif in tif_list:
    lai_algorithm=tif[0:3]
    print(lai_algorithm)
    lai_raster=gdal.Open(lai_file_path+tif)
    lai_raster_array=lai_raster.ReadAsArray()
    plt.subplot(2,2,sub_plot_num)
    plt.hist(lai_raster_array)
    sub_plot_num=sub_plot_num+1
plt.show()
plt.savefig(pic_save_path, dpi=300)

其中,lai_file_path为待处理栅格图层存放的路径,pic_save_path为后期程序得到直方图的保存路径。

首先,借助os.listdir()函数获取lai_file_path路径下的全部文件,此时获取的文件包括需要的.tif格式文件与其它不需要的文件;其次,通过os.path.splitext()函数将上述列表中的每一个文件file的文件名与文件拓展名分离,并选择".tif"进行处理;这一步是避免误将lai_file_path路径中非.tif格式文件一并选择。

随后,还需要将我们不需要的.tif栅格图像通过文件名筛选的方式去除。在这里,由于不需要绘图的.tif文件均以MCD开头,因此直接通过字符串截取的方式将其加以剔除即可;大家在上述代码的实际运用过程中按照个人需求进行筛选即可。

接下来,开始直方图的绘制。在这里我选择了将几幅直方图以子图的形式绘制在一个总图中,因此需要借助sub_plot_num进行循环;随后,对筛选后的图层进行读取,并将栅格数据转换为Array形式,这一部分具体可以参考文章Python GDAL读取栅格数据并基于质量评估波段QA对指定数据加以筛选掩膜,本文就不再赘述;最后,利用plt.hist()函数进行直方图的绘制即可。

最后,通过plt.savefig(pic_save_path, dpi=300)这句代码,将设置了图像清晰度的绘图结果保存在指定路径,从而大功告成。

到此这篇关于Python实现批量绘制遥感影像数据的直方图的文章就介绍到这了,更多相关Python绘制直方图内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 使用Python实现获取文件详细信息

    使用Python实现获取文件详细信息

    Python提供了丰富的内置模块和函数,获取和操作文件的各种属性信息,比如大小、修改时间、权限以及路径等,本文将通过详细的示例代码展示如何使用Python中的os和os.path模块来获取文件属性信息,需要的可以参考下
    2023-12-12
  • Python实现输入二叉树的先序和中序遍历,再输出后序遍历操作示例

    Python实现输入二叉树的先序和中序遍历,再输出后序遍历操作示例

    这篇文章主要介绍了Python实现输入二叉树的先序和中序遍历,再输出后序遍历操作,涉及Python基于先序遍历和中序遍历构造二叉树,再后序遍历输出相关操作技巧,需要的朋友可以参考下
    2018-07-07
  • python sorted函数的小练习及解答

    python sorted函数的小练习及解答

    这篇文章主要介绍了python sorted函数的小练习及解答,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09
  • python中opencv实现图片文本倾斜校正

    python中opencv实现图片文本倾斜校正

    图片有的时候需要矫正,本文主要介绍了python中opencv实现图片文本倾斜校正,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-06-06
  • python使用点操作符访问字典(dict)数据的方法

    python使用点操作符访问字典(dict)数据的方法

    这篇文章主要介绍了python使用点操作符访问字典(dict)数据的方法,涉及Python操作字典的技巧,需要的朋友可以参考下
    2015-03-03
  • python用Joypy绘制嵴线图实例

    python用Joypy绘制嵴线图实例

    大家好,本篇文章主要讲的是python Joypy绘制嵴线图实例,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-01-01
  • python调试模块ipdb详解

    python调试模块ipdb详解

    ipdb是用来python中用以交互式debug的模块,可以直接利用pip安装,这篇文章主要介绍了python调试模块ipdb详解,需要的朋友可以参考下
    2023-03-03
  • tensorflow之读取jpg图像长和宽实例

    tensorflow之读取jpg图像长和宽实例

    这篇文章主要介绍了tensorflow之读取jpg图像长和宽实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06
  • 深度学习TextRNN的tensorflow1.14实现示例

    深度学习TextRNN的tensorflow1.14实现示例

    这篇文章主要介绍了深度学习TextRNN的tensorflow1.14实现示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-01-01
  • Python实现接口自动化测试的方法详解

    Python实现接口自动化测试的方法详解

    Python接口自动化测试是一种高效、可重复的软件质量验证方法,尤其在现代软件开发中,它已经成为不可或缺的一部分,本文将深入探讨如何使用Python进行接口自动化测试,文中通过代码示例介绍的非常详细,需要的朋友可以参考下
    2024-08-08

最新评论