欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python中的netCDF4批量處理NC文件的操作方法

 更新時間:2022年03月21日 15:01:38   作者:skypanxh  
這篇文章主要介紹了python的netCDF4批量處理NC格式文件的操作方法,使用python批量提取所有數(shù)據(jù),查看數(shù)據(jù)屬性,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

一、使用ArcMap提取出第一期數(shù)據(jù)

1.使用工具箱中的“Make NetCDF Raster Layer”工具,提取出一個數(shù)據(jù)

可以發(fā)現(xiàn)該數(shù)據(jù)有正確的像元大小、坐標系等

2.導(dǎo)出該數(shù)據(jù)作為標準數(shù)據(jù)

二、使用python批量提取所有數(shù)據(jù)

1. 查看數(shù)據(jù)屬性

from netCDF4 import Dataset,num2date
infile = "../01Data/Runoff1992-2014/GRUN_v1_GSWP3_WGS84_05_1902_2014.nc"
data_set = Dataset(infile) # 讀取nc文件信息
print(data_set)

輸出為

<class 'netCDF4._netCDF4.Dataset'>
root group (NETCDF3_CLASSIC data model, file format NETCDF3):
    title: GRUN
    version: GRUN 1.0
    meteorological_forcing: GSWP3
    temporal_resolution: monthly
    spatial_resolution: 0.5x0.5
    crs: WGS84
    proj4: +proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs
    EPSG: 4326
    references: Ghiggi et al.,2019. GRUN: An observation-based global gridded runoff dataset from 1902 to 2014. ESSD, doi: https://doi.org/10.5194/essd-2019-32
    authors: Gionata Ghiggi; Lukas Gudmundsson
    contacts: gionata.ghiggi@gmail.com; lukas.gudmundsson@env.ethz.ch
    institution: Land-Climate Dynamics, Institute for Atmospheric and Climate Science, ETH Zürich
    institution_id: IAC ETHZ
    dimensions(sizes): X(720), Y(360), time(1356)
    variables(dimensions): float64 X(X), float64 Y(Y), float64 time(time), float32 Runoff(time, Y, X)
    groups: 

可以看到variables變量X、Y為經(jīng)緯度,time為時間,Runoff為需要的結(jié)果

2.批量導(dǎo)出結(jié)果

from osgeo import gdal
from netCDF4 import Dataset,num2date
import numpy as np

def WriteTiff(im_data,inputdir, path):
    raster = gdal.Open(inputdir)
    im_width = raster.RasterXSize #柵格矩陣的列數(shù)
    im_height = raster.RasterYSize #柵格矩陣的行數(shù)
    im_bands = raster.RasterCount #波段數(shù)
    im_geotrans = raster.GetGeoTransform()#獲取仿射矩陣信息
    im_proj = raster.GetProjection()#獲取投影信息
    
    if 'int8' in im_data.dtype.name:
        datatype = gdal.GDT_Byte
    elif 'int16' in im_data.dtype.name:
        datatype = gdal.GDT_UInt16
    else:
        datatype = gdal.GDT_Float32
    if len(im_data.shape) == 3:
        im_bands, im_height, im_width = im_data.shape
    elif len(im_data.shape) == 2:
        im_data = np.array([im_data])
        im_bands, (im_height, im_width) = 1, im_data.shape
        # 創(chuàng)建文件
    driver = gdal.GetDriverByName("GTiff")
    dataset = driver.Create(path, im_width, im_height, im_bands, datatype)
    if (dataset != None):
        dataset.SetGeoTransform(im_geotrans)  # 寫入仿射變換參數(shù)
        dataset.SetProjection(im_proj)  # 寫入投影
    for i in range(im_bands):
        dataset.GetRasterBand(i + 1).WriteArray(im_data[i])
    del dataset
infile = "../01Data/Runoff1992-2014/GRUN_v1_GSWP3_WGS84_05_1902_2014.nc"
data_set = Dataset(infile) # 讀取nc文件信息
time = data_set.variables["time"][:]  # 獲取時間一列
units = data_set.variables["time"].units # 獲取第一期時間
#讀取樣本tif文件的地理信息
intif = "../03ProcessData/runoff_example.tif"
for i in range(0,len(time)):
    yr = num2date(time[i],units).year # 提取年份
    mon = num2date(time[i],units).month    # 提取月份
    value_data = data_set.variables['Runoff'][i]
    # 將缺失值改為0
    data = value_data.data
    mask = value_data.mask
    data[np.where(mask == True)] = 0
    outputname = "../01Data/Runoff1992-2014/tif/" + str(yr) + str(mon).zfill(2) + ".tif"
    WriteTiff(data,intif , outputname)
    print(outputname)

!注意事項

1.使用時候請自行修改修改輸入輸出文件路徑與變量名稱

2.根據(jù)需要處理缺失值

到此這篇關(guān)于python的netCDF4批量處理NC格式文件的操作方法的文章就介紹到這了,更多相關(guān)python netCDF4處理NC格式文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • pandas按行按列遍歷Dataframe的幾種方式

    pandas按行按列遍歷Dataframe的幾種方式

    這篇文章主要介紹了pandas按行按列遍歷Dataframe的幾種方式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-10-10
  • Python實現(xiàn)一鍵改變raw格式照片風格

    Python實現(xiàn)一鍵改變raw格式照片風格

    這篇文章主要為大家詳細介紹了如何基于Python實現(xiàn)一鍵改變raw格式照片風格效果,文中的示例代碼講解詳細,具有一定的學習價值,需要的可以一起學習一下
    2023-05-05
  • python命令行參數(shù)argparse模塊基本用法詳解

    python命令行參數(shù)argparse模塊基本用法詳解

    argparse?是python自帶的命令行參數(shù)解析包,可以用來方便地讀取命令行參數(shù),這篇文章主要介紹了python命令行參數(shù)-argparse模塊基本用法,需要的朋友可以參考下
    2023-01-01
  • Python復(fù)數(shù)屬性和方法運算操作示例

    Python復(fù)數(shù)屬性和方法運算操作示例

    這篇文章主要介紹了Python復(fù)數(shù)屬性和方法運算操作,結(jié)合實例形式分析了Python復(fù)數(shù)運算相關(guān)操作技巧,代碼注釋備有詳盡說明,需要的朋友可以參考下
    2017-07-07
  • Python Paramiko實現(xiàn)SSHv2協(xié)議輕松管理遠程服務(wù)器

    Python Paramiko實現(xiàn)SSHv2協(xié)議輕松管理遠程服務(wù)器

    這篇文章主要為大家介紹了Python Paramiko實現(xiàn)SSHv2協(xié)議輕松管理遠程服務(wù)器,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2024-01-01
  • Python基礎(chǔ)中的列表你了解嗎

    Python基礎(chǔ)中的列表你了解嗎

    這篇文章主要為大家介紹了Python基礎(chǔ)中的列表列表,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • Python 自動喚醒窗口截圖腳本

    Python 自動喚醒窗口截圖腳本

    截圖的操作用途最為廣泛,你可以用它配合定時工具,定時檢測某個程序的運行情況,本文給大家講下如何使用 win32api 實現(xiàn)自動喚醒并截圖的操作,對Python窗口截圖腳本知識感興趣的朋友跟隨小編一起看看吧
    2022-02-02
  • Python調(diào)用C語言程序方法解析

    Python調(diào)用C語言程序方法解析

    這篇文章主要介紹了Python調(diào)用C語言程序方法解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-07-07
  • 基于Python編寫一個詞云制作程序

    基于Python編寫一個詞云制作程序

    這篇文章主要為大家詳細介紹了如何基于Python編寫一個簡單的詞云制作程序,文中的示例代碼講解詳細,具有一定的學習價值,感興趣的小伙伴可以了解一下
    2023-10-10
  • 詳解Python中math和decimal模塊的解析與實踐

    詳解Python中math和decimal模塊的解析與實踐

    在Python中,math?和?decimal?模塊是處理數(shù)學運算的重要工具,本文將深入探討這兩個模塊的基礎(chǔ)知識,并通過實際的代碼示例演示它們的用法,希望對大家有所幫助
    2024-02-02

最新評論