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

基于Python實現(xiàn)批量讀取大量nc格式文件并導出全部時間信息

 更新時間:2024年01月02日 09:06:05   作者:瘋狂學習GIS  
這篇文章主要為大家詳細介紹了如何基于Python語言,逐一讀取大量.nc格式的多時相柵格文件并導出其中所具有的全部時間信息的方法,需要的可以參考下

本文介紹基于Python語言,逐一讀取大量.nc格式的多時相柵格文件,導出其中所具有的全部時間信息的方法。

.nc是NetCDF(Network Common Data Form)文件的擴展名,表示一種常用的科學數(shù)據(jù)存儲格式。NetCDF是一種自描述的、可移植的二進制文件格式,用于存儲科學和工程領(lǐng)域的大型數(shù)據(jù)集;由于其自身的特性,.nc數(shù)據(jù)被廣泛應用于氣象學、海洋學、地球科學、氣候研究、大氣科學、地理信息系統(tǒng)等領(lǐng)域。

首先,明確一下本文的需求?,F(xiàn)在有一個文件夾,其中具有大量的.nc格式的柵格文件,如下圖所示。

其中,每一個.nc格式的文件都具有多個時相(或者說是多個維度),而不僅僅只是一個時相。我們希望,讀取這個文件夾中的全部.nc格式文件,并獲取其所表示的每一個時相。

明確了需求后,我們就可以開始具體的操作。首先,本文所需用到的代碼如下。

# -*- coding: utf-8 -*-
"""
Created on Sun Dec 31 20:28:03 2023

@author: fkxxgis
"""

import os
import netCDF4
from netCDF4 import Dataset

def list_nc_dates(folder_path):
    nc_dates = []

    for file_name in os.listdir(folder_path):
        if file_name.endswith(".nc"):
            file_path = os.path.join(folder_path, file_name)
            try:
                dataset = Dataset(file_path)
                time_var = dataset.variables["time"]
                time_values = time_var[:]
                time_units = time_var.units
                time_calendar = time_var.calendar

                dates = []
                for value in time_values:
                    date = netCDF4.num2date(value, units=time_units, calendar=time_calendar)
                    dates.append(date.strftime("%Y-%m-%d %H:%M:%S"))

                nc_dates.append((file_name, dates))
            except Exception as e:
                print(f"Error reading file {file_name}: {str(e)}")

    return nc_dates

folder_path = "F:/Data_Reflectance_Rec/soil_1"
nc_dates = list_nc_dates(folder_path)

for nc_file, dates in nc_dates:
    for date in dates:
        print(date)

這段代碼整體思路也很明確。

首先,我們導入所需的模塊。在這里,需要導入Python的os模塊,用于處理文件和文件夾路徑操作;同時導入netCDF4庫,并接著從netCDF4庫中導入Dataset類,用于打開和讀取.nc文件。在這里,如果需要配置netCDF4庫,大家可以參考文章Anaconda下Python中h5py與netCDF4模塊下載與安裝方法。

接下來,我們定義了一個名為list_nc_dates的函數(shù),接受一個文件夾路徑作為參數(shù)。在函數(shù)中,首先創(chuàng)建一個空列表nc_dates,用于存儲每個.nc文件及其對應的日期列表;隨后,使用os.listdir()函數(shù)遍歷文件夾中的所有文件,通過檢查文件名是否以.nc結(jié)尾來篩選出.nc文件。緊接著,對于篩選出來的.nc文件,使用os.path.join()函數(shù)構(gòu)建其完整路徑。

其次,使用Dataset類打開.nc文件,并將打開的文件對象賦值給dataset變量;隨后,獲取.nc文件的時間,在本文的.nc數(shù)據(jù)中,也就是名為time的變量,并將時間變量的值讀取到time_values變量中。接下來,分別獲取時間變量的單位與時間類型。

隨后,我們創(chuàng)建一個空列表dates,用于存儲日期字符串。遍歷時間變量的每個值,使用netCDF4.num2date()函數(shù)將時間值轉(zhuǎn)換為日期對象。緊接著,將日期對象轉(zhuǎn)換為指定格式的字符串,并將其添加到dates列表中。此外,這里還將.nc文件名和對應的日期列表作為元組添加到nc_dates列表中,方便我們后期對日期的核對。函數(shù)的最后,返回包含每個.nc文件及其對應日期的列表。

在函數(shù)外部,我們設(shè)置文件夾路徑,隨后即可調(diào)用list_nc_dates函數(shù),將文件夾路徑傳遞給它,并將返回的結(jié)果賦值給nc_dates變量。最后,通過循環(huán),打印每個日期即可。

執(zhí)行上述代碼,即可出現(xiàn)如下圖所示的結(jié)果(結(jié)果很長,就截取一部分)。由于在本文中,每一個.nc格式文件的每一個維度(即每一個時相)都是精確到天的,所以下圖天數(shù)后的時、分、秒都是00。當然,如果大家的.nc格式文件維度很多,時相打印出來的話也不好完全顯示,所以可以考慮將時間信息導出為表格文件等;例如,可以將每一個date都放在DataFrame中,隨后導出為.csv文件。

至此,大功告成。

到此這篇關(guān)于基于Python實現(xiàn)批量讀取大量nc格式文件并導出全部時間信息的文章就介紹到這了,更多相關(guān)Python讀取nc格式文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • OpenCV圖像修復cv2.inpaint()的使用

    OpenCV圖像修復cv2.inpaint()的使用

    這篇博客將介紹如何通過OpenCV中圖像修復的技術(shù)——cv2.inpaint() 去除舊照片中的小噪音、筆劃等。并提供一個可交互式的程序,感興趣的可以了解一下
    2021-08-08
  • python 數(shù)據(jù)庫查詢返回list或tuple實例

    python 數(shù)據(jù)庫查詢返回list或tuple實例

    這篇文章主要介紹了python 數(shù)據(jù)庫查詢返回list或tuple實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • Python判斷字符串與大小寫轉(zhuǎn)換

    Python判斷字符串與大小寫轉(zhuǎn)換

    這篇文章主要介紹了Python判斷字符串與大小寫轉(zhuǎn)換的方法,有需要的小伙伴可以參考下。
    2015-06-06
  • 使用PyTorch實現(xiàn)限制GPU顯存的可使用上限

    使用PyTorch實現(xiàn)限制GPU顯存的可使用上限

    從?PyTorch?1.4?版本開始,引入了一個新的功能,可以允許用戶為特定的?GPU?設(shè)備設(shè)置進程可使用的顯存上限比例,下面我們就來看看具體實現(xiàn)方法吧
    2024-03-03
  • 如何使用python3獲取當前路徑及os.path.dirname的使用

    如何使用python3獲取當前路徑及os.path.dirname的使用

    這篇文章主要介紹了如何使用python3獲取當前路徑及os.path.dirname的使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-12-12
  • Django models文件模型變更錯誤解決

    Django models文件模型變更錯誤解決

    這篇文章主要介紹了Django models文件模型變更錯誤解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-05-05
  • 分享2個方便調(diào)試Python代碼的實用工具

    分享2個方便調(diào)試Python代碼的實用工具

    這篇文章主要介紹了分享方便調(diào)試Python代碼的2個實用工具,可以方便展示我們調(diào)試代碼的中間狀態(tài),提升大家的編碼效率,詳細的介紹需要的小伙伴可以參考一下下面文章內(nèi)容
    2022-05-05
  • python變量的存儲原理詳解

    python變量的存儲原理詳解

    這篇文章主要介紹了python變量的存儲原理詳解,對于python而言,python的一切變量都是對象,變量的存儲,采用了引用語義的方式,存儲的只是一個變量的值所在的內(nèi)存地址,而不是這個變量的只本身,需要的朋友可以參考下
    2019-07-07
  • Python利用腳本實現(xiàn)自動發(fā)送電子郵件

    Python利用腳本實現(xiàn)自動發(fā)送電子郵件

    這篇文章主要為大家詳細介紹了Python如何利用腳本實現(xiàn)自動發(fā)送電子郵件功能,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2025-01-01
  • Python實現(xiàn)的概率分布運算操作示例

    Python實現(xiàn)的概率分布運算操作示例

    這篇文章主要介紹了Python實現(xiàn)的概率分布運算操作,涉及Python概率運算與圖形繪制相關(guān)操作技巧,需要的朋友可以參考下
    2017-08-08

最新評論

元氏县| 九龙城区| 孟村| 奎屯市| 徐州市| 陵川县| 清水县| 若羌县| 云阳县| 普陀区| 江安县| 棋牌| 龙口市| 仙游县| 根河市| 德昌县| 郧西县| 北票市| 大姚县| 金阳县| 徐汇区| 饶河县| 肥乡县| 东辽县| 武功县| 扶风县| 云梦县| 苏尼特左旗| 隆安县| 竹北市| 清流县| 仙游县| 仙游县| 石阡县| 西昌市| 万荣县| 全椒县| 利辛县| 吉木萨尔县| 庆阳市| 东光县|