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