以前為了寫論文處理雷達數(shù)據(jù)的時候苦于國內(nèi)沒有合適的開源庫,而使用Google搜索的時候清一色基本都是國外的機構(gòu)和個人開發(fā)的雷達數(shù)據(jù)處理和可視化庫。 為了能夠利用這些功能強大的工具只能自行往這些庫中添加處理國內(nèi)雷達數(shù)據(jù)的接口。而這兩年不斷有一些國內(nèi)開發(fā)者開發(fā)的雷達庫開源了,比如PyCINRAD。 而現(xiàn)在,由南信大大氣物理學(xué)院專業(yè)雷達團隊開發(fā)的中國天氣雷達數(shù)據(jù)處理庫正式開源了!目前不僅支持處理多種國內(nèi)雷達數(shù)據(jù)格式,而且還提供了兼容主流雷達開源庫的橋梁接口,比如PyART,而PyART中包含了wradlib的橋梁,所以通過此庫也可以兼容wradlib。 目前只提供了通過github進行安裝的方式: git clone https://github.com/YvZheng/pycwr.git cd pycwr python setup.py install 或者
讀取接口及兼容測試 下面我們對pycwr庫的不同格式雷達數(shù)據(jù)處理接口以及PyART的橋梁接口兼容性進行簡單的測試。首先我們以常見的SA波段雷達數(shù)據(jù)進行測試: 下面是示例代碼: import numpy as np import pandas as pd import xarray as xr import matplotlib.pyplot as plt
from pycwr.io.auto_io import radar_io from pycwr.draw.SingleRadarPlot import RadarGraph from pycwr.draw.SingleRadarPlotMap import RadarGraphMap
filename = 'Z_RADR_I_Z9250_20190409022800_O_DOR_SA_CAP.bin'
basedata = radar_io(filename) PRD = basedata.ToPRD()
graph = RadarGraph(PRD) graph.plot(0, 'dBZ', continuously=True) 0.5度仰角第1層基本反射率 既然是由南信大的團隊負責(zé)開發(fā)的雷達庫,那當(dāng)然少不了WSR98D C波段雙偏振雷達的支持,下面是示例代碼:
和上述SA波段示例相比,我們使用了RadarGraphMap方法將雷達基本反射率疊加到中國地圖上。 注意:pycwr采用了cartopy作為地圖繪制工具,而且默認的海岸線精度為50m,因此在繪圖的時候需要下載海岸線數(shù)據(jù),在國內(nèi)速度可能會比較慢。 細心的同學(xué)可能注意到了上面我們在讀取兩種格式的雷達數(shù)據(jù)時,均是使用了 read_io 函數(shù),此方法是從 auto_io 模塊導(dǎo)入的函數(shù),可以自動分辨雷達格式。 當(dāng)然 io 模塊也包含了單獨處理雷達格式的函數(shù),比如 pycwr.io.SABFile,pycwr.io.WSR98DFile等。 pycwr的接口中提供了 ToPyartRadar 方法將對象轉(zhuǎn)換為 PyART 的 Radar 對象,從而可以借助 PyART已經(jīng)擁有的一些模塊或函數(shù)進行進一步的操作。 目前很多雷達功能庫都提供了PyART的兼容,比如用來進行雷達風(fēng)場反演的PyDDA、SingleDop等。 此外PyART也提供了wradlib的橋梁接口,轉(zhuǎn)換為PyART Radar對象后,也可以轉(zhuǎn)換為wradlib接受的格式,從而利用wradlib的一些功能函數(shù)。 下面是示例代碼: import pyart
radar = basedata.ToPyartRadar()
fig, ax = plt.subplots(figsize=(12, 9))
display = pyart.graph.radardisplay.RadarDisplay(radar) display.plot_ppi('reflectivity', 0, vmin=0, vmax=70)
ax.set_xlim([-100, 100]) ax.set_ylim([-100, 100])
plt.show() 更多功能大家可以自行探索,也可前往官方源查看詳細示例。 除了簡單的數(shù)據(jù)處理和可視化外,還提供了attenuation correct 等功能。下圖是目前支持的功能,以及未來可能會支持的功能。而且目前支持簡單的GUI潔面操作。 當(dāng)然對于新出現(xiàn)的庫而言總是會出現(xiàn)一些小的問題,比如目前的文檔還不是很完善,功能交互也有待改善。但對于國內(nèi)的用戶來說這些都是小問題,而且這些也都會逐漸改善。 對于不是專業(yè)搞雷達的,單獨處理雷達數(shù)據(jù)時,有很多小細節(jié)是很容易被忽略的。以前在添加雷達數(shù)據(jù)處理接口到PyART時也是出現(xiàn)各種小問題,都不知道如何解決。 現(xiàn)在終于有國內(nèi)的專業(yè)雷達團隊開源了中國天氣雷達的python庫,希望能夠為國內(nèi)的科研工作者、業(yè)務(wù)單位解決一些專業(yè)問題。 |
|
來自: LibraryPKU > 《科學(xué)計算》