我正在尝试使用一个nc
文件创建一个降水图,类似于我发现here的NWS示例。
不过,就我而言,我的降水量数据已经在mm
中。如何保持相同的单位?我确实阅读了以下内容,
创建带有附件的
numpy.ma.MaskedArray
。这很薄numpy.ma.masked_array()
周围的包装器,可确保单位正确地附加到结果上(否则单位会静默丢失)。单位是从data_units参数中获取的,或者如果为None
,使用数据单位。
我遵循给出的参数(masked_array(data, data_units=None, **kwargs)
)用于我的文件,但
“” 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']
我不熟悉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变量(即数字或其他值)时,是否看到数据?