国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

NCDC氣象數(shù)據(jù)的提取與處理(四):python批量讀取、寫入nc數(shù)據(jù)經(jīng)緯度格點數(shù)值

這篇具有很好參考價值的文章主要介紹了NCDC氣象數(shù)據(jù)的提取與處理(四):python批量讀取、寫入nc數(shù)據(jù)經(jīng)緯度格點數(shù)值。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

1.問題描述:

2.思路:

3.實現(xiàn)過程:

3.1格點位置匹配

3.2寫入表格

4.運行效果

4.1打包站點信息

4.2讀取nc文件列表

4.3提取對應(yīng)格點的nc數(shù)據(jù)

4.4數(shù)據(jù)寫入


1.問題描述:

NCDC的站點數(shù)據(jù)處理在之前三節(jié)里已經(jīng)介紹過了,但是NCDC的就那么幾種數(shù)據(jù)可能不能滿足日常使用,比如說輻射數(shù)據(jù)他就沒有。這時候我們找到其他類型數(shù)據(jù)要和它原有數(shù)據(jù)融合,比如本例找的nc格式數(shù)據(jù)。

2.思路:

本例所用數(shù)據(jù)集是網(wǎng)格化的面尺度數(shù)據(jù),之前處理的NCDC是點數(shù)據(jù),最簡單的處理方法就是把對應(yīng)站點所在經(jīng)緯度找到,再與nc格式數(shù)據(jù)的格點位置匹配,提取對應(yīng)位置的nc數(shù)據(jù),放入表格。

3.實現(xiàn)過程:

3.1格點位置匹配

def matching(lat_value,lon_value,data): # 文件編碼方式[lats,lons],data:需要輸入xr.open_dataset()
    '''
    經(jīng)緯度與格點位置匹配
    輸入經(jīng)緯度,nc數(shù)據(jù)
    輸出所在格點位置對應(yīng)索引值 lon_idx:經(jīng)度 lat_idx:緯度
    '''
    # 獲取經(jīng)度和緯度的坐標(biāo)值
    lons = data['lon'].values
    lats = data['lat'].values
    
    # 獲取經(jīng)緯度坐標(biāo)的索引值
    lat_idx = np.abs(lats - lat_value).argmin()
    lon_idx = np.abs(lons - lon_value).argmin()
    
    return lat_idx,lon_idx

上述函數(shù)要求輸入站點所在的經(jīng)度、緯度,以及要讀的nc文件

3.2寫入表格

我直接放完整示例代碼上來,大家按需修改。

# 讀取站點經(jīng)緯度。將對應(yīng)格點數(shù)值寫入dataframe
import xarray as xr
import netCDF4 as nc
import numpy as np
import pandas as pd
import os
import openpyxl


# 定義函數(shù)
def matching(lat_value,lon_value,data): # 文件編碼方式[lats,lons],data:需要輸入xr.open_dataset()
    '''
    經(jīng)緯度與格點位置匹配
    輸入經(jīng)緯度,nc數(shù)據(jù)
    輸出所在格點位置對應(yīng)索引值 lon_idx:經(jīng)度 lat_idx:緯度
    '''
    # 獲取經(jīng)度和緯度的坐標(biāo)值
    lons = data['lon'].values
    lats = data['lat'].values
    # 獲取經(jīng)緯度坐標(biāo)的索引值
    lat_idx = np.abs(lats - lat_value).argmin()
    lon_idx = np.abs(lons - lon_value).argmin()    
    return lat_idx,lon_idx


# 輸入站點列表
stations = pd.read_excel('../../Desktop/YellowRiver_station_ID.xlsx') # 站點列表位置,這句按自己需求修改***************
station_code_list = [str(x)[:6] for x in stations["STATION_ID"]]  # 沒看懂的復(fù)習(xí)一下     NCDC氣象數(shù)據(jù)的提取與處理(二)
LAT_list = [x for x in stations["LAT"]]
LON_list = [x for x in stations["LON"]]
station_data = zip(station_code_list,LAT_list,LON_list)
station_data = list(station_data)     # 包含每個站點的編號、緯度、經(jīng)度,如coordinate[0]為站點編號


# 設(shè)置輸入文件列表
in_rootdir = r"E:\China_station_Srad" # 設(shè)置輸入根目錄, 這句按自己需求修改********************************************
file_list = [] 
for root, dirs, files in os.walk(in_rootdir):           # 獲取輸入根目錄下所有文件
    for file in files:                                  # 遍歷所有文件名
        if os.path.splitext(file)[-1] == '.nc':         # 獲取所有nc文件絕對路徑列表
            file_list.append(os.path.join(root, file))   # 拼接出 絕對路徑 并放入列表
            
# 坐標(biāo)匹配
print("*"*15,"坐標(biāo)匹配","*"*15)       # 繪制分割線
data = xr.open_dataset(file_list[0])
coord_idx_list = []
for coordinate in station_data:      # coordinate[i],i=0,1,2;依次表示站點編號、緯度、經(jīng)度
    coordinate_index = matching(lat_value=coordinate[1],lon_value=coordinate[2],data=data)
    coord_idx_list.append((coordinate[0],coordinate_index))       # 形如:[('534630', (258, 418)),…]
print("*"*15,"匹配完成","*"*15)      # 繪制分割線


# 讀取nc數(shù)據(jù),寫入xlsx文件
for file_name in file_list:          
    data = nc.Dataset(file_name)
    times = nc.num2date(data["time"][:],data["time"].units)       # 時間的格式轉(zhuǎn)換,得到一個數(shù)組
    dt = [times[i].strftime() for i in range(data["time"].size)] # 獲取時間序列

    # 創(chuàng)建一個新dataframe
    df = pd.DataFrame(columns=['Date','srad'])                # 這句按自己需求修改***************************************
    df['Date'] = pd.to_datetime(dt)
    df = df.set_index('Date')

    # 設(shè)置輸出路徑
    out_rootdir = r"E:\Srad_TEST_2"        # 設(shè)置輸出根目錄 ,這句按自己需求修改*****************************************
    workbook = openpyxl.Workbook()       # 創(chuàng)建Workbook對象
    moy = os.path.splitext(file_name)[0][-6:]                # 獲取年和月moy:month of year
    print("-"*25,moy,"-"*25)             # 繪制分割線,年月
    outfile_dir = f'{out_rootdir}\\test{moy}.xlsx'
    workbook.save(outfile_dir)           # 保存空的xlsx文件

    for idx in coord_idx_list:     # idx[0]表示站點編號、idx[1][0],idx[1][1]分別表示緯度、經(jīng)度
        print("*"*15,idx[0],"*"*15) # 繪制分割線,站點代號
        location = idx[1] # 獲得格點坐標(biāo)location,包含(緯度,經(jīng)度)
        tempfile = []
        for i in range(data["time"].size):         
            tempfile.append(data["srad"][i][location])        # 獲得對應(yīng)格點的屬性值,并存入列表
        df["srad"] = tempfile                                 # 對應(yīng)格點的屬性值存入dataframe
        srad_mean = df.resample('d').mean()                   # mean:取屬性值的日均值
        writer = pd.ExcelWriter(outfile_dir, engine='openpyxl',mode='a') # 將excel寫入對象writer
        """
        將各站點的數(shù)據(jù)表寫入Excel中的
        sheet1、sheet2、sheet3……,
        sheet以站點編號命名
        """
        srad_mean.to_excel(writer, sheet_name=idx[0])  # idx[0]為站點編號
        writer.save()                   # 保存讀寫的內(nèi)容
    wb = openpyxl.load_workbook(outfile_dir)      
    del wb['Sheet']                     # 刪除新建Excel時默認(rèn)的空表
    wb.save(outfile_dir)    

4.運行效果

4.1打包站點信息

首先我有一個xlsx文件,名為“YellowRiver_station_ID.xlsx',之前文章出現(xiàn)過,存放的是NCDC對應(yīng)站點的代號和經(jīng)緯度,(還有高程,這里用不到)形式如下:

氣象nc數(shù)據(jù),數(shù)據(jù)處理,CDS,python,數(shù)據(jù)分析,經(jīng)驗分享

?我這邊用了一次 list() 和 zip() 函數(shù)的套用,總之最后打包效果就是[(a1, b1,c1 ),?(a2, b2,c2?), …],abc分別表示站點代號,經(jīng)度,緯度。

4.2讀取nc文件列表

我這邊還有一個文件夾,名為“China_station_Srad”。里面存放著這次要讀的nc文件

氣象nc數(shù)據(jù),數(shù)據(jù)處理,CDS,python,數(shù)據(jù)分析,經(jīng)驗分享

?我這里做了一個 file_list ,把文件夾里所有nc格式文件的絕對路徑存進去了

對于每一條絕對路徑,做如下操作

4.3提取對應(yīng)格點的nc數(shù)據(jù)

創(chuàng)建一個dataframe,形式如下:

氣象nc數(shù)據(jù),數(shù)據(jù)處理,CDS,python,數(shù)據(jù)分析,經(jīng)驗分享

4.4數(shù)據(jù)寫入

將各站點的數(shù)據(jù)表寫入xlsx中的sheet1、sheet2、sheet3……,sheet以站點編號命名

氣象nc數(shù)據(jù),數(shù)據(jù)處理,CDS,python,數(shù)據(jù)分析,經(jīng)驗分享

?最后,?文件名稱以 年月 命名,形如 201812

如有錯漏希望各位大佬不吝指教。文章來源地址http://www.zghlxwxcb.cn/news/detail-755014.html

到了這里,關(guān)于NCDC氣象數(shù)據(jù)的提取與處理(四):python批量讀取、寫入nc數(shù)據(jù)經(jīng)緯度格點數(shù)值的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Python讀取寫入數(shù)據(jù)到Excel文件

    Python讀取寫入數(shù)據(jù)到Excel文件

    【Linux干貨教程】Ubuntu Linux 換源詳細教程 大家好,我是洲洲,歡迎關(guān)注,一個愛聽周杰倫的程序員。關(guān)注公眾號【程序員洲洲】即可獲得10G學(xué)習(xí)資料、面試筆記、大廠獨家學(xué)習(xí)體系路線等…還可以加入技術(shù)交流群歡迎大家在CSDN后臺私信我! Hello,各位看官老爺們好,洲洲已

    2024年02月12日
    瀏覽(97)
  • python&Pandas二:數(shù)據(jù)讀取與寫入

    Pandas提供了各種函數(shù)和方法來實現(xiàn)數(shù)據(jù)讀取和寫入的操作。下面我將詳細介紹Pandas中常用的數(shù)據(jù)讀取和寫入的方法。 數(shù)據(jù)讀?。?從CSV文件讀?。嚎梢允褂?pd.read_csv() 函數(shù)來讀取CSV文件,并將其轉(zhuǎn)換為DataFrame對象。 從Excel文件讀取:可以使用 pd.read_excel() 函數(shù)來讀取Excel文件,

    2024年02月03日
    瀏覽(17)
  • python讀取、寫入以及刪除es數(shù)據(jù)

    最近這段時間被es所困擾,慶幸最終學(xué)會了python操作es,怕以后忘記了,把代碼放出來: 1.python讀取es數(shù)據(jù) 2.python刪除es數(shù)據(jù): 3.python讀取txt文檔,再寫入數(shù)據(jù):

    2024年02月12日
    瀏覽(24)
  • 常見氣象數(shù)據(jù)獲取方式及批量下載代碼匯總

    氣象數(shù)據(jù)獲取因其數(shù)據(jù)源多、請求規(guī)則不一,格式復(fù)雜、體積龐大,所以經(jīng)常成為氣象小白的噩夢。這里收集了一些常用氣象數(shù)據(jù)下載方法及下載的代碼,供大家參考 目錄 1. 中國氣象數(shù)據(jù)網(wǎng)(這是最官方的數(shù)據(jù)平臺) 2. NOAA 全球地面站觀測數(shù)據(jù) 3. 全球探空數(shù)據(jù) 4. 全國空氣質(zhì)

    2024年01月24日
    瀏覽(40)
  • python如何操作excel,在excel中讀取和寫入數(shù)據(jù)

    python如何操作excel,在excel中讀取和寫入數(shù)據(jù)

    Excel 是 Microsoft 為使用 Windows 和 Apple Macintosh 操作系統(tǒng)的電腦編寫的一款電子表格軟件。直觀的界面、出色的計算功能和圖表工具,再加上成功的市場營銷,使 Excel 成為最流行的個人計算機數(shù)據(jù)處理軟件。在 1993 年,作為 Microsoft Office 的組件發(fā)布了5.0版之后, Excel 就開始成為

    2024年02月03日
    瀏覽(22)
  • “AI Earth”人工智能創(chuàng)新挑戰(zhàn)賽:助力精準(zhǔn)氣象和海洋預(yù)測Baseline[1]、NetCDF4使用教學(xué)、Xarray 使用教學(xué),針對氣象領(lǐng)域.nc文件讀取處理

    比賽官網(wǎng):https://tianchi.aliyun.com/specials/promotion/aiearth2021?spm=a2c22.12281976.0.0.4d0d19efK2FngK 聚焦全球大氣海洋研究前沿方向,將人工智能技術(shù)應(yīng)用到天氣氣候預(yù)測領(lǐng)域中,提高極端災(zāi)害性天氣的預(yù)報水平,已成為整個行業(yè)研究的熱點方向。發(fā)生在熱帶太平洋上的厄爾尼諾-南方濤動

    2024年02月08日
    瀏覽(22)
  • python自動化辦公——定制化讀取Excel數(shù)據(jù)并寫入到word表格

    python自動化辦公——定制化讀取Excel數(shù)據(jù)并寫入到word表格

    最近到了畢業(yè)設(shè)計答辯的時候,老師讓我?guī)彤厴I(yè)生寫一段畢業(yè)設(shè)計的功能就是提供一個 學(xué)士學(xué)位授予申請表 ,根據(jù)定制化需求,編寫定制化代碼。 docx格式的word如下圖。 再提供一個Excel表格,要求可以直接讀取表格里的對應(yīng)內(nèi)容,填入到word表格里的對應(yīng)位置。表格是我自己

    2024年02月10日
    瀏覽(26)
  • SpringBoot集成Milo庫實現(xiàn)OPC UA客戶端:連接、遍歷節(jié)點、讀取、寫入、訂閱與批量訂閱

    SpringBoot集成Milo庫實現(xiàn)OPC UA客戶端:連接、遍歷節(jié)點、讀取、寫入、訂閱與批量訂閱

    前面我們搭建了一個本地的 PLC 仿真環(huán)境,并通過 KEPServerEX6 讀取 PLC 上的數(shù)據(jù),最后還使用 UAExpert 作為OPC客戶端完成從 KEPServerEX6 這個OPC服務(wù)器的數(shù)據(jù)讀取與訂閱功能。在這篇文章中,我們將通過 SpringBoot 集成 Milo 庫實現(xiàn)一個 OPC UA 客戶端,包括連接、遍歷節(jié)點、讀取、寫入

    2024年02月09日
    瀏覽(27)
  • Python讀取指定的TXT文本文件并從中提取指定數(shù)據(jù)的方法

    Python讀取指定的TXT文本文件并從中提取指定數(shù)據(jù)的方法

    ??本文介紹基于 Python 語言,遍歷文件夾并從中找到文件名稱符合我們需求的多個 .txt 格式文本文件,并從上述 每一個文本文件 中,找到 我們需要的指定數(shù)據(jù) ,最后得到 所有文本文件中 我們 需要的數(shù)據(jù)的合集 的方法。 ??首先,我們來明確一下本文的具體需求?,F(xiàn)有

    2024年02月14日
    瀏覽(96)
  • Python讀取.nc數(shù)據(jù)并提取指定時間、經(jīng)緯度維度對應(yīng)的變量數(shù)值

    Python讀取.nc數(shù)據(jù)并提取指定時間、經(jīng)緯度維度對應(yīng)的變量數(shù)值

    ??本文介紹基于 Python 語言的 netCDF4 庫,讀取 .nc 格式的數(shù)據(jù)文件,并提取指定維(時間、經(jīng)度與緯度)下的變量數(shù)據(jù)的方法。 ??我們之前介紹過 .nc 格式的數(shù)據(jù),其是 NetCDF (Network Common Data Form)文件的擴展名,是一種常用的科學(xué)數(shù)據(jù)存儲格式,多用于存儲科學(xué)和工程領(lǐng)

    2024年03月08日
    瀏覽(35)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包