如何使用python处理nc数据制作Mike风场文件--以ERA5数据为例
@如何使用python處理nc數據制作Mike風場文件
NetCDF(network Common Data Form)網絡通用數據格式是一種面向數組型并適于網絡共享的數據的描述和編碼標準。nc格式文件被廣泛應用于氣象、海洋、環境、地質等專業。目前可下載的大氣再分析風場數據,如CCMP、ERA5、NCEP等均提供此格式的數據。本次我們以ERA5再分析數據為例演示如何通過python制作mike的dfs2風場文件。
1. ERA5風場數據得下載
ERA5數據下載的網站為https://cds.climate.copernicus.eu/cdsapp#!/dataset/reanalysis-era5-single-levels?tab=form,變量我們選擇其中的10m u-component of wind、10m v-component of wind、Surface pressure下載,下載時間、空間范圍根據實際需求自定義。
2. python讀取nc數據
首先導入需要用到的模塊,其中前面3個為制作Mike文件相關的模塊,Dataset為讀取nc文件的模塊,datetime為時間處理模塊。
from mikeio import Dfs2 from mikeio.eum import ItemInfo, EUMUnit from mikeio.eum import EUMType import numpy as np from netCDF4 import Dataset import datetime as dt讀取文件代碼如下:
file = Dataset('.\\2015uvp.nc') #文件路徑及名稱 time =file['time'][:] #讀取時間信息 lon = file['longitude'][:] #讀取經度信息 lat = file['latitude'][:] #讀取緯度信息 u = file['u10'][:] #讀取東西風速u v = file['v10'][:] #讀取南北風速v p = file['sp'][:] #讀取表面壓強值得注意的是,根據現有文獻,在海陸交界處的ERA5風速偏小,因此研究近海的朋友們可對風場數據適當方法,例如:
u=u*1.1 #將風速放大1.1倍 v=v*1.13. 處理時間信息
nc文件中的時間信息往往是自某一時刻以來的多少小時(或者天、月)的形式來表達,如下圖所示,此時很難直觀地感受具體時間。
因此使用daatetime模塊的timedelta函數對時間進行處理:
處理后的時間time_dt如下圖所示:
4. 制作dfs2文件
接下來就是最后的dfs2的制作過程,首先做一些準備工作:
dfsfilename = '2015uvp_for_fm.dfs2' #給定文件名#設置dfs2文件左下角的坐標原點,在ERA5文件中,經度排列方式為從東向西,緯度排列方式為從北向南,#因此原點的經度為lon的第1個點,原點的緯度為lat的最后一個點 x0=lon[0] y0=lat[-1] coordinate = ['LONG/LAT',x0,y0,0] #設置原點 dx=0.25 #設置網格間距,ERA5默認網格間距均為0.25度 dy=0.25 time0 = time_dt[0] #設置其實時間,用到了上一步的時間處理 delta_t = 3600 #設置時間間隔,ERA5數據時間間隔為1h,3600s制作dfs2:
#創建變量, EUMType.Wind_Velocity說明變量類型為風速, EUMUnit.meter_per_sec說明變量單位為m/s items = [ItemInfo("u", EUMType.Wind_Velocity, EUMUnit.meter_per_sec),ItemInfo("v", EUMType.Wind_Velocity, EUMUnit.meter_per_sec),ItemInfo("p", EUMType.Pressure, EUMUnit.pascal)] d = [u,v,p] #將要輸出至dfs2的數組打包 dfs = Dfs2() #實例化一個dfs變量 dfs.write(filename=dfsfilename,data=d,start_time=time0,dt=delta_t,items=items,coordinate=coordinate,dx=dx,dy=dy) #輸出變量最后讓我們來看一下制作好的dfs2文件:
并與nc文件的數據進行一下比較:
顯然,dfs2文件的數據是合理的,可以應用于Mike21、Mike3的水動力模塊、譜波模塊,其中,水動力模塊需要u、v、p三個變量,譜波模塊只需要u、v兩個變量。
總結
以上是生活随笔為你收集整理的如何使用python处理nc数据制作Mike风场文件--以ERA5数据为例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ffmpeg教程 如何输出任务日志?用于
- 下一篇: 急需能临时发邮件的临时邮箱 临时邮箱怎么