亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

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

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

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

2.導(dǎo)出該數(shù)據(jù)作為標(biāo)準(zhǔn)數(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為時(shí)間,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)  # 寫(xiě)入仿射變換參數(shù)
        dataset.SetProjection(im_proj)  # 寫(xiě)入投影
    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"][:]  # 獲取時(shí)間一列
units = data_set.variables["time"].units # 獲取第一期時(shí)間
#讀取樣本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)

!注意事項(xiàng)

1.使用時(shí)候請(qǐng)自行修改修改輸入輸出文件路徑與變量名稱

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

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

相關(guān)文章

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

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

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

    Python實(shí)現(xiàn)一鍵改變r(jià)aw格式照片風(fēng)格

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

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

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

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

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

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

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

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

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

    Python 自動(dòng)喚醒窗口截圖腳本

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

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

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

    基于Python編寫(xiě)一個(gè)詞云制作程序

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

    詳解Python中math和decimal模塊的解析與實(shí)踐

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

最新評(píng)論