背景
我正在尝试通过 xarray 和 OPeNDAP 下载 GFS 天气数据 netcdf4 文件。非常感谢Vorticity0123之前的帖子,这使我能够对 python 脚本的框架进行排序(如下所示)。
问题
事实是,GFS 数据集有 195 个数据变量,但我不需要大多数,我只需要其中的 10 个。
请求帮助
我已经浏览了 xarray readthedocs 页面和其他地方,但我无法找到一种方法将我的数据集缩小到仅十个数据变量。有谁知道如何缩小数据集中的变量列表?
Python脚本
import numpy as np
import xarray as xr
# File Details
dt = '20201124'
res = 25
step = '1hr'
run = '{:02}'.format(18)
# URL
URL = f'http://nomads.ncep.noaa.gov:80/dods/gfs_0p{res}_{step}/gfs{dt}/gfs_0p{res}_{step}_{run}z'
# Load data
dataset = xr.open_dataset(URL)
time = dataset.variables['time']
lat = dataset.variables['lat'][:]
lon = dataset.variables['lon'][:]
lev = dataset.variables['lev'][:]
# Narrow Down Selection
time_toplot = …Run Code Online (Sandbox Code Playgroud) 我正在尝试从THREDDS提供的三角形网格模型中获取数据的子集.我希望能够指定一个LAT/LON边界框,并从该框中获取数据.数据网址是:
http://www.smast.umassd.edu:8080/thredds/dodsC/FVCOM/NECOFS/Forecasts/NECOFS_MET_FORECAST.nc
使用网格化数据,可以很容易地从THREDDS服务器对数据进行子集化.有谁知道最好的方法是获得由THREDDS服务的三角形网格的子域?
对于网格数据,我使用Ferret作为我的OPeNDAP客户端,我可以编写下载过程的脚本.虽然我可以使用Matlab,Python或其他工具,但我想在这里做类似的事情.
谢谢,
史蒂夫
测量海浪周期的变量的“单位”属性以“秒”为单位。这不是日期时间字段,但 xarray 会自动将此变量提取为 timedelta64。由于单位不是“自...以来的秒数”,我认为 xarray 应该将其视为普通的 float32 数据数组,但显然并非如此。有没有办法让我告诉 xarray 将波浪周期变量作为 float32 摄取,或者在摄取后将它们从 timedelta64 转换回原始值?我仍然希望它将“时间”变量转换为 timedelta64,所以我不想关闭整个数据集的翻译,而只是针对特定变量(Tper、sper、wper)。
以下是我在 TDS 服务器中的波浪预测中使用的基本 OPeNDAP URL:
建议?谢谢!
您可以使用此处的 OPeNDAP 页面查看类似“ncdump”的输出:
或者您可以在 OPeNDAP URL 上运行 ncdump,如下所示:
结果如下:
netcdf WaveWatch_III_Hawaii_Regional_Wave_Model_best {
dimensions:
lat = 101 ;
lon = 141 ;
time = 54453 ;
z = 1 ;
variables:
float lon(lon) ;
lon:units = "degrees_east" ;
lon:long_name = "longitude" ;
lon:standard_name = "longitude" ;
lon:short_name = "lon" ;
lon:axis = "x" ;
lon:_CoordinateAxisType …Run Code Online (Sandbox Code Playgroud)