使用逻辑可视化和过滤大型 NetCDF 文件

Visualize and filter large NetCDF file using logic

我在 NetCDF 文件中有一个非常大的数据集。

RZSC = xr.open_dataset('/home/chandra/data/RZSC_250m_SA.nc')
RZSC = RZSC.Band1
RZSC
[Output]:
<xarray.DataArray 'Band1' (lat: 32093, lon: 20818)>
[668112074 values with dtype=float32]
Coordinates:
  * lat      (lat) float64 -58.36 -58.36 -58.35 -58.35 ... 13.71 13.71 13.71
  * lon      (lon) float64 -81.38 -81.37 -81.37 -81.37 ... -34.63 -34.63 -34.62
Attributes:
    long_name:     GDAL Band Number 1
    grid_mapping:  crs
########################
Treecover = xr.open_dataset('/home/chandra/data/Treecover_MOD44B_2000_250m_AMAZON.nc')
Treecover = Treecover.Band1
Treecover
[Output]:
<xarray.DataArray 'Band1' (lat: 32093, lon: 20818)>
[668112074 values with dtype=float64]
Coordinates:
  * lat      (lat) float64 -58.36 -58.36 -58.35 -58.35 ... 13.71 13.71 13.71
  * lon      (lon) float64 -81.38 -81.37 -81.37 -81.37 ... -34.63 -34.63 -34.62
Attributes:
    long_name:     GDAL Band Number 1
    grid_mapping:  crs
####
np.nanmax(Treecover[:,:])
[Output]: 85.0625
np.nanmin(Treecover[:,:])
[Output]: 0.0

我既无法使用 RZSC[:,:].where(Treecover[:,:] > 1000).shape 之类的任何命令来可视化数据集或过滤数据集,这非常令人沮丧(因为输出为 (32093, 20818),与原始数组大小相同)。

有人对此有什么建议吗? 我无法共享数据,因为 netcdf 文件的大小 > 6 GB。

xr.where() 将始终 return 与您提供的相同大小的数组。你试过想象它吗?它应该将条件为假的所有索引设置为 NA。您也可以手动将其设置为您想要的任何值:

RZSC.where(Treecover > 1000, Treecover, np.NaN)