Python实现批量绘制遥感影像数据的直方图
作者:疯狂学习GIS 发布时间:2023-09-04 10:35:53
本文介绍基于Python中gdal
模块,实现对大量栅格图像批量绘制直方图的方法。
首先,明确一下本文需要实现的需求:现需对多幅栅格数据文件进行依据其像元数值的直方图绘制,具体绘制内容即各栅格图像像素数值的分布情况;所有栅格数据都保存在同一目标路径下,且均为.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)
这句代码,将设置了图像清晰度的绘图结果保存在指定路径,从而大功告成。
来源:https://www.cnblogs.com/fkxxgis/p/17159133.html
猜你喜欢
- 前言:1、上几次讨论右键禁止等问题的时候,有网友问那里有键值表KeyCode,我今天写了一个javascript,以飨各位有需要者。2、适用
- 今天,在在使用 pycharm 的使用,进行创建 python的时候,发现使用默认的创建的选项使用的python 3环境 。而我系统默认的p
- 如何在数据库中限制检索行数?为了照顾显示器屏幕的大小,使检索结果更整齐明了一些,请问,可以控制数据库的检索行数吗? &
- 当来自应用程序的第一个连接控制锁而第二个连接需要相冲突的锁类型时,将发生阻塞。其结果是强制第二个连接等待,而在第一个连接上阻塞。不管是来自同
- 我们在使用ASP 内置的ADO组件进行数据库编程时,通常是在脚本的开头打开一个连接,并在脚本的最后关闭它,但是就较大脚本而言,在多数情况下连
- What's more important to your web site: pictures or text? If you h
- 阅读上一篇:成为一个顶级设计师的第一准则限制你的色彩成为一个顶级设计师的7个简单原则的第二部分限制使用你的色彩。好象上个准则是让你限制用你的
- Web应用的发展,使得客户端存储使用得也越来越多,而实现客户端存储的方式则是多种多样。最简单而且兼容性最佳的方案是Cookie,但是作为真正
- 在Web上使用菜单可以极大地节约页面的空间,同时也比较的符合用户从Windows上继承下来的UI操作体验。在以往的Web页菜单设计中,我们普
- 在实际的项目中,我们一般都会建立三个环境:开发、测试和生产环境,这三种环境会使用不同的配置组合,为了能方便地切换配置,我们可以为不同的环境创
- (1)查看日期函数拓展phpinfo()<?phpphpinfo();打开上述页面之后,可以看到以下,证明已经安装日期拓展 浏览器输入
- 在PHP中,我们不能用const直接定义数组常量,但是const可以定义字符串常量,结合eval()函数使字符串常量能执行。所以,我们可以用
- 在命令行输入以下代码:pythonimport cv2cv2.__version__来源:https://blog.csdn.net/dlh
- 用css属性选择器可以有选择性地对链接样式进行控制,如让所有的外部链接都加一个小图标来标识其是一外部链接。但用css有弊端: 1、只支持Fi
- 本文实例讲述了PHP实现登录,注册及密码修改功能的方法。分享给大家供大家参考,具体如下:这里介绍注册,登录,修改密码的界面布局与功能实现:1
- 大概在2004年初的时候,我第一次买了一本很厚的书,名字或许叫《Dreamweaver MX从入门到精通》,很认真看着书并实践操作大约三分之
- 黑体是视觉设计师常用的一款字体,特别是针对广告的 Banner 等。根据 * 的相关介绍,有关黑体的定义可以认为:黑體与白体
- 最近 全栈数据工程师养成攻略 的微信群已经将近500人,开了二群之后为了打通不同微信群之间的消息,花了点时间做了个消息同步机器人,在任意群收
- 对方用<script language="javascript"> var location="&
- 代码如下:< % Set fso=Server.CreateObject("Scripting