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

时间:2019-07-01 16:09:05

标签: python-3.x large-data python-xarray netcdf4

我在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。

1 个答案:

答案 0 :(得分:1)

xr.where()将始终返回您提供它的相同大小的数组。您是否尝试将其可视化?它应将条件为假的所有索引设置为NA。您也可以将其手动设置为所需的任何内容:

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