def resize(self, block_size, order=0, mode='constant', cval=False, preserve_range=True):
        '''
        geo.resize(new_shape, order=0, mode='constant', cval=np.nan, preserve_range=True)

        Returns resized georaster
        '''
        if not cval:
            cval = np.nan
        raster2 = resize(self.raster.data, block_size, order=order, mode=mode,
                         cval=cval, preserve_range=preserve_range)
        mask = resize(self.raster.mask, block_size, order=order, mode=mode,
                      cval=cval, preserve_range=preserve_range)
        raster2 = np.ma.masked_array(raster2, mask=mask, fill_value=self.raster.fill_value)
        raster2[raster2.mask] = self.nodata_value
        raster2.mask = np.logical_or(np.isnan(raster2.data), raster2.data == self.nodata_value)
        geot = list(self.geot)
        [geot[-1],geot[1]] = np.array([geot[-1], geot[1]])*self.shape/block_size
        return GeoRaster(raster2, tuple(geot), nodata_value=self.nodata_value,\
                        projection=self.projection, datatype=self.datatype)