def maskin(data, mask, x=None, y=None): """ Maskin data by polygons - NaN values of elements inside polygons. :param data: (*array_like*) Array data for maskout. :param mask: (*list*) Polygon list as maskin borders. :param x: (*array_like*) X coordinate array. :param y: (*array_like*) Y coordinate array. :returns: (*array_like*) Maskined data array. """ if mask is None: return data elif isinstance(mask, MIArray): r = ArrayMath.maskin(data.array, mask.array) if isinstance(data, DimArray): return DimArray(r, data.dims, data.fill_value, data.proj) else: return MIArray(r) if x is None or y is None: if isinstance(data, DimArray): x = data.dimvalue(data.ndim - 1) y = data.dimvalue(data.ndim - 2) else: return None if not isinstance(mask, (list, ArrayList)): mask = [mask] r = ArrayMath.maskin(data.array, x.array, y.array, mask) if isinstance(data, DimArray): return DimArray(r, data.dims, data.fill_value, data.proj) else: return MIArray(r)
def maskin(self, mask): ''' Maskin data by polygons - the elements inside polygons will be set as NaN. :param mask: (*list*) Polygon list as mask borders. :returns: (*DimArray*) Maskined data. ''' if isinstance(mask, MIArray): r = ArrayMath.maskin(self.asarray(), mask.asarray()) return DimArray(r, self.dims, self.fill_value, self.proj) else: x = self.dimvalue(1) y = self.dimvalue(0) if not isinstance(mask, (list, ArrayList)): mask = [mask] r = ArrayMath.maskin(self.array, x.array, y.array, mask) r = DimArray(r, self.dims, self.fill_value, self.proj) return r