提问人:NissesDream 提问时间:11/3/2023 最后编辑:ClimateUnboxedNissesDream 更新时间:11/3/2023 访问量:36
不能在 xarray 中选择坐标的子区域
Cant select subregion of coordinates in xarray
问:
我正在尝试将天气文件从 转换为 然后缩小这些文件所覆盖的区域。grib
netcdf
dsgrib = xr.open_dataset("infile", engine = "cfgrib")
dsgrib.to_netcdf("outfile.nc)
转换本身有效。但是,如果我尝试减小 netcdf 文件中的面积,我要么会丢失变量,要么会丢失纬度和经度值。
ds = xr.open_dataset("outfile.nc")
ds = ds.sel(lon=slice(lonmin, lonmax), lat=slice(latmin, latmax))
ds.to_netcdf("newarea.nc")
但是当我尝试从命令行使用 CDO 查看文件的竞争时
cdo sinfon newarea.nc
我收到以下错误:
subset.to_netcdf("new.nc")
File "/home/guest/Desktop/MetOcean/dev3.8/lib/python3.8/site-packages/xarray/core/dataset.py", line 1912, in to_netcdf
return to_netcdf( # type: ignore # mypy cannot resolve the overloads:(
File "/home/guest/Desktop/MetOcean/dev3.8/lib/python3.8/site-packages/xarray/backends/api.py", line 1232, in to_netcdf
dump_to_store(
File "/home/guest/Desktop/MetOcean/dev3.8/lib/python3.8/site-packages/xarray/backends/api.py", line 1279, in dump_to_store
store.store(variables, attrs, check_encoding, writer, unlimited_dims=unlimited_dims)
File "/home/guest/Desktop/MetOcean/dev3.8/lib/python3.8/site-packages/xarray/backends/common.py", line 270, in store
self.set_variables(
File "/home/guest/Desktop/MetOcean/dev3.8/lib/python3.8/site-packages/xarray/backends/common.py", line 308, in set_variables
target, source = self.prepare_variable(
File "/home/guest/Desktop/MetOcean/dev3.8/lib/python3.8/site-packages/xarray/backends/netCDF4_.py", line 488, in prepare_variable
nc4_var = self.ds.createVariable(
File "src/netCDF4/_netCDF4.pyx", line 2962, in netCDF4._netCDF4.Dataset.createVariable
File "src/netCDF4/_netCDF4.pyx", line 4299, in netCDF4._netCDF4.Variable.__init__
File "src/netCDF4/_netCDF4.pyx", line 2029, in netCDF4._netCDF4._ensure_nc_success
RuntimeError: NetCDF: Invalid argument
在将文件转换为文件之前,我还尝试选择处于初始状态的区域并收到以下错误grib
netcdf
> Warning (cdf_check_variables): Number of time steps undefined, skipped
> variable u10! Warning (cdf_check_variables): Number of time steps
> undefined, skipped variable v10! Warning (cdfInqContents): No data
> arrays found!
答:
1赞
ClimateUnboxed
11/3/2023
#1
这不是一个 xarray 解决方案,但如果你愿意,你可以使用 cdo 包在一行中做到这一点:
from cdo import Cdo
cdo=Cdo()
cdo.sellonlatbox(lonmin,lonmax,latmin,latmax,input="in.grb",output="out.nc",options="-f nc4")
用于 netcdf4,或仅用于 netcdf3 输出。nc4
nc
评论