获取 WaveWatch3 数据。
项目描述
Python 中的 WAVEWATCH III 数据
关于
bmi_wavewatch3 Python包提供命令行界面和编程界面,用于下载和处理WAVEWATCH III数据。
bmi_wavewatch3提供对以下栅格数据源的访问,
30 年浪潮后报第一阶段
30 年浪潮后报第 2 阶段
生产后报Singlegrid
生产后报Multigrid
所有数据源都提供全球和区域网格。
安装
bmi_wavewatch3可以通过运行pip install bmi-wavewatch3安装。它需要 Python >= 3.8 才能运行。
如果你实在等不及最新版本,可以 直接从 GitHub安装bmi_wavewatch3 ,
$ pip install git+https://github.com/csdms/bmi-wavewatch3
bmi_wavewatch3也可通过conda、 conda install bmi-wavewatch3 -c conda - forge 获得。
用法
首先,您可以使用ww3命令按日期下载WAVEWATCH III数据(使用ww3 –help打印简短消息),
$ ww3 fetch "2010-05-22"
你也可以通过 Python 做到这一点,
>>> from bmi_wavewatch3 import WaveWatch3
>>> WaveWatch3.fetch("2010-05-22")
bmi_wavewatch3包提供WaveWatch3类,用于下载数据并将其呈现为xarray Dataset。
>>> from bmi_wavewatch3 import WaveWatch3
>>> ww3 = WaveWatch3("2010-05-22")
>>> ww3.data
<xarray.Dataset>
...
使用inc方法逐月推进时间,
>>> ww3.date
'2010-05-22'
>>> ww3.inc()
'2010-06-22'
>>> ww3.data.time
<xarray.DataArray 'time' ()>
array('2010-06-01T00:00:00.000000000', dtype='datetime64[ns]')
...
这将根据需要下载新数据集并将新数据加载到数据属性中。
例子
从命令行绘制数据
从命令行运行以下命令将绘制 来自 WAVEWATCH III at_4m网格的可变有效波高。请注意,一天中的时间(在本例中为 15:00)用T与日期分开(即时间可以给出为YYYY-MM-DDTHH)
$ ww3 plot --grid=at_4m --data-var=swh "2010-09-15T15"
从 Python 绘制数据
此示例与前面的示例类似,但使用bmi_wavewatch3 Python 接口。
>>> from bmi_wavewatch3 import WaveWatch3
>>> ww3 = WaveWatch3("2009-11-08")
可以通过data属性将数据作为xarray 数据集进行访问。
>>> ww3.data
<xarray.Dataset>
Dimensions: (step: 241, latitude: 311, longitude: 720)
Coordinates:
time datetime64[ns] 2009-11-01
* step (step) timedelta64[ns] 0 days 00:00:00 ... 30 days 00:00:00
surface float64 1.0
* latitude (latitude) float64 77.5 77.0 76.5 76.0 ... -76.5 -77.0 -77.5
* longitude (longitude) float64 0.0 0.5 1.0 1.5 ... 358.0 358.5 359.0 359.5
valid_time (step) datetime64[ns] dask.array<chunksize=(241,), meta=np.ndarray>
Data variables:
dirpw (step, latitude, longitude) float32 dask.array<chunksize=(241, 311, 720), meta=np.ndarray>
perpw (step, latitude, longitude) float32 dask.array<chunksize=(241, 311, 720), meta=np.ndarray>
swh (step, latitude, longitude) float32 dask.array<chunksize=(241, 311, 720), meta=np.ndarray>
u (step, latitude, longitude) float32 dask.array<chunksize=(241, 311, 720), meta=np.ndarray>
v (step, latitude, longitude) float32 dask.array<chunksize=(241, 311, 720), meta=np.ndarray>
Attributes:
GRIB_edition: 2
GRIB_centre: kwbc
GRIB_centreDescription: US National Weather Service - NCEP
GRIB_subCentre: 0
Conventions: CF-1.7
institution: US National Weather Service - NCEP
history: 2022-06-08T16:08 GRIB to CDM+CF via cfgrib-0.9.1...
step属性指向数据中的当前时间片(即自月初以来的三个小时增量),
>>> ww3.step
56
>>> ww3.data.swh[ww3.step, :, :].plot()
学分
开发主管
埃里克·赫顿 (@mcflugen)
贡献者
还没有。为什么不成为第一?
发行说明
0.2.0 (2022-06-17)
新的功能
向ww3命令行程序 添加了一个新的子命令plot 。ww3 plot with download(如果数据文件尚未缓存)并创建请求数据的图。(#13)
Bug修复
修复了由无效数据时间字符串导致的错误报告中的错误。(#13)
0.1.1 (2022-06-10)
其他更改和添加
0.1.1b1 (2022-06-09)
新的功能
添加了ww3命令行界面,可按日期、地区和数量(显着波高、风速等)下载 WaveWatch III 数据。(#1)
添加了 WaveWatch3类,这是该软件包用户的主要访问点。此类下载 WaveWatch III 数据文件(如果尚未缓存)并以 xarray 数据集的形式提供数据视图。然后,用户可以逐月浏览数据,并根据需要下载其他数据。( #3 )
添加了删除缓存数据文件的ww3 clean子命令。( #4 )
添加了 BMIWaveWatch3类,为 wavewatch3包提供基本模型接口。(#5)
添加了额外的 WaveWatch III 数据源,用户可以从中获取数据。( #6 )
为 WaveWatch3添加了fetch方法以模仿命令行程序 ww3 fetch。( #7 )
添加了从中检索数据的其他数据源。现在可用的数据源包括:Phase 1、Phase 2、Multigrid、Multigrid-extended 和 Multigrid-thredds。( #7 )
添加了ww3 info命令以打印有关数据源的信息(例如可用的网格、数量等)。( #7 )
为WaveWatch3添加了一个step属性来跟踪数据立方体的当前时间片。此属性也是可设置的,以便用户可以使用它来推进数据(根据需要在后台下载其他数据)。( #8 )
现在可以将日期指定为 iso 格式的日期/时间字符串。例如,“1944-06-06T06:30”。( #8 )
将包重命名为bmi_wavewatch3。这遵循其他 CSDMS 数据组件使用的约定。( #9 )
文档增强
在文档中添加了包描述、安装、使用和示例。( #8 )