def compute(self, data):
is_integer_type = np.issubdtype(data.water.dtype, np.integer)
if not is_integer_type:
raise StatsProcessingError("Attempting to count bit flags on non-integer data. Provided data is: {}"
.format(data.water))
# 128 == clear and wet, 132 == clear and wet and masked for sea
# The PQ sea mask that we use is dodgy and should be ignored. It excludes lots of useful data
wet = ((data.water == 128) | (data.water == 132)).sum(dim='time')
dry = ((data.water == 0) | (data.water == 4)).sum(dim='time')
clear = wet + dry
with np.errstate(divide='ignore', invalid='ignore'):
frequency = wet / clear
if self.freq_only:
return xarray.Dataset({'frequency': frequency}, attrs=dict(crs=data.crs))
else:
return xarray.Dataset({'count_wet': wet,
'count_clear': clear,
'frequency': frequency}, attrs=dict(crs=data.crs))
评论列表
文章目录