溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python如何實現(xiàn)批量繪制遙感影像數(shù)據(jù)的直方圖

發(fā)布時間:2023-02-27 13:56:46 來源:億速云 閱讀:101 作者:iii 欄目:開發(fā)技術

這篇文章主要介紹“Python如何實現(xiàn)批量繪制遙感影像數(shù)據(jù)的直方圖”,在日常操作中,相信很多人在Python如何實現(xiàn)批量繪制遙感影像數(shù)據(jù)的直方圖問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Python如何實現(xiàn)批量繪制遙感影像數(shù)據(jù)的直方圖”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

首先,明確一下本文需要實現(xiàn)的需求:現(xiàn)需對多幅柵格數(shù)據(jù)文件進行依據(jù)其像元數(shù)值的直方圖繪制,具體繪制內(nèi)容即各柵格圖像像素數(shù)值的分布情況;所有柵格數(shù)據(jù)都保存在同一目標路徑下,且均為.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()函數(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ù)轉換為Array形式,這一部分具體可以參考文章Python GDAL讀取柵格數(shù)據(jù)并基于質(zhì)量評估波段QA對指定數(shù)據(jù)加以篩選掩膜,本文就不再贅述;最后,利用plt.hist()函數(shù)進行直方圖的繪制即可。

最后,通過plt.savefig(pic_save_path, dpi=300)這句代碼,將設置了圖像清晰度的繪圖結果保存在指定路徑,從而大功告成。

到此,關于“Python如何實現(xiàn)批量繪制遙感影像數(shù)據(jù)的直方圖”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關知識,請繼續(xù)關注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI