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

  本文介绍基于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技术站

(0)
上一篇 2023年3月31日
下一篇 2023年3月31日

相关文章

  • 多变量两两相互关系联合分布图的Python绘制

      本文介绍基于Python中seaborn模块,实现联合分布图绘制的方法。   联合分布(Joint Distribution)图是一种查看两个或两个以上变量之间两两相互关系的可视化图,在数据分析操作中经常需要用到。一幅好看的联合分布图可以使得我们的数据分析更加具有可视性,让大家眼前一亮。   那么,本文就将用seaborn来实现联合分布图的绘制。seab…

    Python开发 2023年3月31日
    00
  • Python导入Excel表格数据并以字典dict格式保存

      本文介绍基于Python语言,将一个Excel表格文件中的数据导入到Python中,并将其通过字典格式来存储的方法。   我们以如下所示的一个表格(.xlsx格式)作为简单的示例。其中,表格共有两列,第一列为学号,第二列为姓名,且每一行的学号都不重复;同时表格的第一行为表头。   假设我们需要将第一列的学号数据作为字典的键,而第二列姓名数据作为字典的值。…

    Python开发 2023年3月31日
    00
  • Python GDAL库在Anaconda环境中的配置

      本文介绍在Anaconda环境下,安装Python中栅格、矢量等地理数据处理库GDAL的方法。   需要注意的是,本文介绍基于conda install命令直接联网安装GDAL库的方法;这一方法有时不太稳定,且速度较慢。因此,如果有需要,大家可以参考Anaconda环境GDAL库基于whl文件的配置方法这篇文章中的方法,可以更快速地配置GDAL库。   …

    python 2023年4月18日
    00
  • Python修改柱状图边缘柱子与图边界的距离

      本文介绍基于Python中matplotlib.pyplot模块,修改柱状图、条形图最两侧的柱子与图像边缘之间距离的方法。   最近,绘制了一个水平的柱状图,但是发现图的上、下边距(不是柱子与柱子相互之间的间距,而是最上方与最下方柱子各自与图边缘的距离)相对较大,非常影响美观。同时需要说明的是,本文这里的柱状图纵坐标变量是代表变量名称的不同的字符串,而不…

    Python开发 2023年3月31日
    00
  • 基于遗传算法的地图四色原理绘图上色的Python代码

      本文介绍利用Python语言,实现基于遗传算法(GA)的地图四色原理着色操作。 1 任务需求   首先,我们来明确一下本文所需实现的需求。   现有一个由多个小图斑组成的矢量图层,如下图所示。   我们需要找到一种由4种颜色组成的配色方案,对该矢量图层各图斑进行着色,使得各相邻小图斑间的颜色不一致,如下图所示。   在这里,我们用到了四色定理(Four …

    Python开发 2023年3月31日
    00
  • Python TensorFlow深度学习回归代码:DNNRegressor

      本文介绍基于Python语言中TensorFlow的tf.estimator接口,实现深度学习神经网络回归的具体方法。 目录 1 写在前面 2 代码分解介绍 2.1 准备工作 2.2 参数配置 2.3 原有模型删除 2.4 数据导入与数据划分 2.5 Feature Columns定义 2.6 模型优化方法构建与模型结构构建 2.7 模型训练 2.8 模…

    Python开发 2023年3月31日
    00
  • Python pydot与graphviz库在Anaconda环境的配置

      本文介绍在Anaconda环境中,安装Python语言pydot与graphviz两个模块的方法。   最近进行随机森林(RF)的树的可视化操作,需要用到pydot与graphviz模块;因此记录一下二者具体的安装方法。   相关环境的版本信息:Anaconda Navigator:1.10.0;Python 3.8.5。   话不多说,我们开始下载与安…

    Python开发 2023年3月31日
    00
  • Python实现随机森林RF并对比自变量的重要性

      本文介绍在Python环境中,实现随机森林(Random Forest,RF)回归与各自变量重要性分析与排序的过程。   其中,关于基于MATLAB实现同样过程的代码与实战,大家可以点击查看MATLAB实现随机森林(RF)回归与自变量影响程度分析这篇文章。   本文分为两部分,第一部分为代码的分段讲解,第二部分为完整代码。 1 代码分段讲解 1.1 模块…

    Python开发 2023年3月31日
    00
合作推广
合作推广
分享本页
返回顶部