使用masked_array时如何保持降水数据中的相同单位?

问题描述 投票:0回答:1

我正在尝试使用一个nc文件创建一个降水图,类似于我发现here的NWS示例。

不过,就我而言,我的降水量数据已经在mm中。如何保持相同的单位?我确实阅读了以下内容,

创建带有附件的numpy.ma.MaskedArray。这很薄numpy.ma.masked_array()周围的包装器,可确保单位正确地附加到结果上(否则单位会静默丢失)。单位是从data_units参数中获取的,或者如果为None,使用数据单位。

我遵循给出的参数(masked_array(data, data_units=None, **kwargs))用于我的文件,但

  1. 未定义kwargs和
  2. 当我不包括kwarg时,我得到

“” AttributeError:'MaskedArray'对象没有属性'units'“。

我是初学者,请保持温柔。感谢您的指导!这是我的代码...

from netCDF4 import Dataset as NetCDFFile
import matplotlib.pyplot as plt
import numpy as np
import cartopy
import cartopy.crs as ccrs
import cartopy.feature as cf
import matplotlib.colors as mcolors
from metpy.units import masked_array, units

nc_data = NetCDFFile(r'C:\Users\Jocelyn\Desktop\TRMM_daily_prcp_data\3B42_Daily.19980601.7.nc4', 'r')

print (nc_data)
print(nc_data.variables.keys()) 

prcp = nc_data.variables['precipitation']
data = masked_array(prcp[:], prcp_units=None, **kwargs)
lat = nc_data.variables['lat']
lon = nc_data.variables['lon']
netcat units-of-measurement masked-array metpy
1个回答
0
投票

我不熟悉NetCDFFile,因此我尝试使用此代码在您的代码中重复该过程:

https://unidata.github.io/netcdf4-python/netCDF4/index.html#section4

您是否正确创建了根组,组,尺寸,变量等?我认为必须正确创建这些对象才能访问netCDF变量中的数据(即上述链接中的步骤1-5)。这可能就是为什么面罩有问题。

此外,我认为使用numpy来调用掩码;因此呼叫为data = np.ma.masked_array。您可能还需要在库导入中先输入import numpy.ma as ma

无论如何,我将首先检查使用NetCDFFile设置数据对象,以确保您实际上正在与数据对象进行交互。当您打印出prcp变量(即数字或其他值)时,是否看到数据?

© www.soinside.com 2019 - 2024. All rights reserved.