Exemple #1
0
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)
Exemple #2
0
    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