最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python實現(xiàn)批量讀取HDF多波段柵格數(shù)據(jù)并繪制像元直方圖

 更新時間:2023年03月01日 15:51:43   作者:瘋狂學(xué)習(xí)GIS  
這篇文章主要為大家詳細介紹了如何基于Python語言gdal模塊,實現(xiàn)多波段HDF柵格圖像文件的讀取、處理與像元值可視化(直方圖繪制)等操作,需要的可以參考一下

本文介紹基于Python語言gdal模塊,實現(xiàn)多波段HDF柵格圖像文件的讀取、處理像元值可視化(直方圖繪制)等操作。

另外,基于gdal等模塊讀取.tif格式柵格圖層文件的方法可以查看Python批量繪制遙感影像數(shù)據(jù)的直方圖,讀取單波段.hdf格式柵格圖層文件的方法可以查看Python GDAL讀取柵格數(shù)據(jù)并基于質(zhì)量評估波段QA對指定數(shù)據(jù)加以篩選掩膜。

本文期望實現(xiàn)的需求為:現(xiàn)有一存放.tif格式的全球LAI產(chǎn)品柵格數(shù)據(jù)的路徑,需將這一路徑下的全部LAI產(chǎn)品柵格數(shù)據(jù)依據(jù)另一路徑下存放的全球MODIS植被覆蓋類型產(chǎn)品柵格數(shù)據(jù)進行像元分類,并繪制全球每一種植被類型對應(yīng)的LAI數(shù)值直方圖。在這里,由于有前述兩篇博客作為鋪墊,本文對代碼的講解就著重于多波段HDF柵格圖像文件的讀取部分;其它內(nèi)容由于在本文開頭提及的前期兩篇博客中已經(jīng)詳細介紹,這里就不再贅述~

首先將本文所需代碼展示如下:

# -*- coding: utf-8 -*-
"""
Created on Tue Jul 20 11:05:31 2021

@author: fkxxgis
"""

import os
import numpy as np
from osgeo import gdal
import matplotlib.pyplot as plt

lai_file_path="G:/Postgraduate/LAI_Glass_RTlab/Test_DRT/h20v09.tif"
mcd_file_path="G:/Postgraduate/LAI_Glass_RTlab/Test_DRT/MCD12Q1.A2018001.h20v09.006.2019199233851.hdf"
pic_save_path="G:/Postgraduate/LAI_Glass_RTlab/Test_DRT/"

for veg_type in range(9):

    mcd_raster=gdal.Open(mcd_file_path)
    mcd_sub_dataset=mcd_raster.GetSubDatasets()
    hdf_band_num=len(mcd_sub_dataset)
    # for sub_dataset in mcd_sub_dataset:
    #     print(sub_dataset[1])
    # print(mcd_sub_dataset[2][1])
    mcd_sub_type=gdal.Open(mcd_sub_dataset[2][0])
    mcd_raster_array=mcd_sub_type.ReadAsArray()
    
    lai_raster=gdal.Open(lai_file_path)
    lai_raster_array=lai_raster.ReadAsArray()
    non_veg_type_lai_array=np.where(mcd_raster_array==veg_type+1,lai_raster_array,np.nan)
    plt.hist(non_veg_type_lai_array)
    plt.savefig(pic_save_path+"DRT_"+str(veg_type+1)+".png", dpi=300)
    plt.clf()
    plt.cla()

我們直接講解多波段HDF柵格圖像文件讀取部分的代碼:首先,多波段.hdf格式文件的讀取在一開始與單波段.hdf格式文件或.tif格式文件的讀取一致,即通過gdal.Open()函數(shù)實現(xiàn);但隨后,需要額外借助len()函數(shù)獲取HDF文件對應(yīng)的波段數(shù)量。

因為我們讀取的HDF文件是多波段,因此hdf_band_num肯定是大于1的,那么剛剛讀取進來的mcd_sub_dataset其實就是一個列表(List);其中,這個列表的元素個數(shù)就是對應(yīng)的多波段HDF文件波段數(shù),列表的每一個元素則都是一個元組(tuple);同時,每一個元組都有兩個元素,其每一個元素都是一個字符串;其中第一個元素為當(dāng)前HDF文件的當(dāng)前波段對應(yīng)的文件路徑與部分提示信息,第二個元素作為當(dāng)前HDF文件的當(dāng)前波段對應(yīng)的文件像素行列數(shù)、名稱與數(shù)據(jù)類型。

這么說可能不太明白,我們用一個實例來講解。例如,通過上述代碼讀取一景具有六個波段的MODIS LAI產(chǎn)品——MCD15A3H產(chǎn)品,其第一個波段為FPAR數(shù)據(jù),第二個波段為LAI數(shù)據(jù)。那么讀取其后,得到的mcd_sub_dataset長這個樣子:

可以看到,是一個具有6個元素的列表。

點開列表,可以看到6個元素每一個都是一個具有2個元素的元組:

再點開第一個元組,可以看到其具有2個字符串格式的元素:

其第二個元素包含了該波段對應(yīng)的數(shù)據(jù)行數(shù)與列數(shù)(即[2400×2400])、數(shù)據(jù)名稱(即Fpar)、數(shù)據(jù)空間分辨率(即500m)、數(shù)據(jù)產(chǎn)品簡稱(即MOD_Grid_MCD15A3H),以及數(shù)據(jù)格式(即8-bit unsigned integer);而第一個字符串沒有顯示完畢,我們可以點擊打開看看:

可以看到第一個元素則包含了該波段對應(yīng)的數(shù)據(jù)路徑、文件全稱,以及部分與第二個元素重復(fù)的幾個數(shù)據(jù)信息參數(shù)。

有了上面的分析就比較清楚了,接下來再一次利用gdal.Open()函數(shù)讀取我們需要的波段,mcd_sub_dataset[2][0]表示第三個波段;其中,第三個波段卻用[2]來表示,是因為波段數(shù)量(也就是mcd_sub_datasetIndex)是從0開始計算的;而后面的[0]則表示元組中的第一個參數(shù),也就是上面一幅圖中顯示的該波段對應(yīng)的數(shù)據(jù)路徑。

隨后,再利用.ReadAsArray()函數(shù)將其讀取為Array即可。接下來的操作與本文開頭提及的那兩篇博客就一致,這里不再贅述~

到此這篇關(guān)于Python實現(xiàn)批量讀取HDF多波段柵格數(shù)據(jù)并繪制像元直方圖的文章就介紹到這了,更多相關(guān)Python讀取HDF多波段柵格數(shù)據(jù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python pip配置國內(nèi)鏡像源的方法(永久和臨時)

    python pip配置國內(nèi)鏡像源的方法(永久和臨時)

    在使用 pip 安裝 Python 模塊時,默認的國外鏡像源可能會導(dǎo)致下載速度緩慢甚至超時,為了解決這個問題,可以使用國內(nèi)的鏡像源來加速下載,以下是常用的國內(nèi)鏡像源以及臨時和永久的配置方法,需要的朋友可以參考下
    2025-04-04
  • Python實現(xiàn)二維數(shù)組輸出為圖片

    Python實現(xiàn)二維數(shù)組輸出為圖片

    下面小編就為大家分享一篇Python實現(xiàn)二維數(shù)組輸出為圖片,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • python Pool常用函數(shù)用法總結(jié)

    python Pool常用函數(shù)用法總結(jié)

    在本篇內(nèi)容里小編給大家整理的是一篇關(guān)于python Pool常用函數(shù)用法總結(jié)內(nèi)容,有需要的朋友們可以學(xué)習(xí)下。
    2021-04-04
  • Scrapy框架中的Pipeline使用詳解

    Scrapy框架中的Pipeline使用詳解

    這篇文章主要介紹了Scrapy框架中的Pipeline使用詳解,Scrapy 中的 Pipeline 為我們提供了處理數(shù)據(jù)的功能,在實際開發(fā)中我們經(jīng)常使用它來清洗/驗證數(shù)據(jù)、去重和數(shù)據(jù)保存,需要的朋友可以參考下
    2023-10-10
  • 一篇文章徹底搞懂Python類屬性和方法的調(diào)用

    一篇文章徹底搞懂Python類屬性和方法的調(diào)用

    對python?調(diào)用類屬性的方法詳解測試時候類的調(diào)用是經(jīng)常會用到的,下面這篇文章主要給大家介紹了關(guān)于Python類屬性和方法的調(diào)用的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-06-06
  • python發(fā)送郵件示例(支持中文郵件標(biāo)題)

    python發(fā)送郵件示例(支持中文郵件標(biāo)題)

    python發(fā)送中文郵件示例,支持中文郵件標(biāo)題和中文郵件內(nèi)容。支持多附件。根據(jù)用戶名推測郵件服務(wù)器提供商
    2014-02-02
  • Pygame?transform模塊入門介紹

    Pygame?transform模塊入門介紹

    pygame.transform模塊允許您對加載、創(chuàng)建后的圖像進行一系列操作,比如調(diào)整圖像大小、旋轉(zhuǎn)圖片等操作,感興趣的可以了解一下
    2022-08-08
  • 如何利用飾器實現(xiàn) Python 函數(shù)重載

    如何利用飾器實現(xiàn) Python 函數(shù)重載

    這篇文章主要介紹了如何利用飾器實現(xiàn) Python 函數(shù)重載,需要的朋友可以參考下面文章內(nèi)容,希望能幫助到你
    2021-09-09
  • 如何用python抓取B站數(shù)據(jù)

    如何用python抓取B站數(shù)據(jù)

    今天介紹一個獲取B站數(shù)據(jù)的Python擴展庫-bilibili_api,對此感興趣的同學(xué),可以實驗一下
    2021-05-05
  • paramiko使用tail實時獲取服務(wù)器的日志輸出詳解

    paramiko使用tail實時獲取服務(wù)器的日志輸出詳解

    這篇文章主要給大家介紹了關(guān)于paramiko使用tail實時獲取服務(wù)器的日志輸出的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12

最新評論

浑源县| 宝应县| 阳信县| 大邑县| 获嘉县| 开江县| 东兴市| 丹凤县| 张家港市| 安陆市| 乌拉特后旗| 玉林市| 五华县| 商河县| 安宁市| 丰县| 朔州市| 彭水| 梧州市| 广河县| 福贡县| 嵊泗县| 高淳县| 新田县| 青河县| 鸡泽县| 鄂托克前旗| 平湖市| 巴马| 宽城| 固安县| 汨罗市| 抚顺县| 漳平市| 望城县| 远安县| 清水河县| 阳原县| 铜川市| 重庆市| 泾阳县|