Python實(shí)現(xiàn)批量繪制遙感影像數(shù)據(jù)的直方圖
本文介紹基于Python中gdal模塊,實(shí)現(xiàn)對(duì)大量柵格圖像批量繪制直方圖的方法。
首先,明確一下本文需要實(shí)現(xiàn)的需求:現(xiàn)需對(duì)多幅柵格數(shù)據(jù)文件進(jìn)行依據(jù)其像元數(shù)值的直方圖繪制,具體繪制內(nèi)容即各柵格圖像像素?cái)?shù)值的分布情況;所有柵格數(shù)據(jù)都保存在同一目標(biāo)路徑下,且均為.tif格式;而目標(biāo)路徑下具有其它非.tif格式的文件,以及不需要進(jìn)行直方圖繪制的.tif格式文件,因此需要在繪制前對(duì)目標(biāo)路徑下的文件列表加以篩選,只保留需要繪制直方圖的柵格文件。
知道了需求,我們便開(kāi)始代碼的書(shū)寫(xiě)。具體代碼如下:
# -*- 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()函數(shù)獲取lai_file_path路徑下的全部文件,此時(shí)獲取的文件包括需要的.tif格式文件與其它不需要的文件;其次,通過(guò)os.path.splitext()函數(shù)將上述列表中的每一個(gè)文件file的文件名與文件拓展名分離,并選擇".tif"進(jìn)行處理;這一步是避免誤將lai_file_path路徑中非.tif格式文件一并選擇。
隨后,還需要將我們不需要的.tif柵格圖像通過(guò)文件名篩選的方式去除。在這里,由于不需要繪圖的.tif文件均以MCD開(kāi)頭,因此直接通過(guò)字符串截取的方式將其加以剔除即可;大家在上述代碼的實(shí)際運(yùn)用過(guò)程中按照個(gè)人需求進(jìn)行篩選即可。
接下來(lái),開(kāi)始直方圖的繪制。在這里我選擇了將幾幅直方圖以子圖的形式繪制在一個(gè)總圖中,因此需要借助sub_plot_num進(jìn)行循環(huán);隨后,對(duì)篩選后的圖層進(jìn)行讀取,并將柵格數(shù)據(jù)轉(zhuǎn)換為Array形式,這一部分具體可以參考文章Python GDAL讀取柵格數(shù)據(jù)并基于質(zhì)量評(píng)估波段QA對(duì)指定數(shù)據(jù)加以篩選掩膜,本文就不再贅述;最后,利用plt.hist()函數(shù)進(jìn)行直方圖的繪制即可。
最后,通過(guò)plt.savefig(pic_save_path, dpi=300)這句代碼,將設(shè)置了圖像清晰度的繪圖結(jié)果保存在指定路徑,從而大功告成。
到此這篇關(guān)于Python實(shí)現(xiàn)批量繪制遙感影像數(shù)據(jù)的直方圖的文章就介紹到這了,更多相關(guān)Python繪制直方圖內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Python?ArcPy實(shí)現(xiàn)批量對(duì)大量遙感影像相減做差
- Python實(shí)現(xiàn)批量填補(bǔ)遙感影像的無(wú)效值NoData
- Python?ArcPy實(shí)現(xiàn)批量計(jì)算多時(shí)相遙感影像的各項(xiàng)元平均值
- Python?ArcPy批量掩膜、重采樣大量遙感影像的操作
- Python高光譜遙感影像處理問(wèn)題詳細(xì)分析講解
- 詳解Python修復(fù)遙感影像條帶的兩種方式
- Python 實(shí)現(xiàn)遙感影像波段組合的示例代碼
- 利用python GDAL庫(kù)讀寫(xiě)geotiff格式的遙感影像方法
- Python中使用OpenCV庫(kù)來(lái)進(jìn)行簡(jiǎn)單的氣象學(xué)遙感影像計(jì)算
- 基于Python批量鑲嵌拼接遙感影像/柵格數(shù)據(jù)(示例代碼)
相關(guān)文章
python反爬蟲(chóng)方法的優(yōu)缺點(diǎn)分析
在本篇文章里小編給大家整理的是一篇關(guān)于python反爬蟲(chóng)方法的優(yōu)缺點(diǎn)分析,需要的朋友們可以學(xué)習(xí)下。2020-11-11
Python實(shí)現(xiàn)圖書(shū)借閱管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)圖書(shū)借閱管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03
Python 讀取串口數(shù)據(jù),動(dòng)態(tài)繪圖的示例
今天小編就為大家分享一篇Python 讀取串口數(shù)據(jù),動(dòng)態(tài)繪圖的示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-07-07
pandas如何將dataframe中的NaN替換成None
這篇文章主要介紹了pandas如何將dataframe中的NaN替換成None問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08
python打開(kāi)文件并獲取文件相關(guān)屬性的方法
這篇文章主要介紹了python打開(kāi)文件并獲取文件相關(guān)屬性的方法,涉及Python操作文件的相關(guān)技巧,需要的朋友可以參考下2015-04-04
詳解pycharm自動(dòng)import所需的庫(kù)的操作方法
這篇文章主要介紹了pycharm自動(dòng)import所需的庫(kù)的操作方法,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-11-11

