Using rasterMath with 3d block or 2d block

Test notebook to validate code.

Import librairies

from museotoolbox.processing import RasterMath,image_mask_from_vector
from museotoolbox import datasets
from matplotlib import pyplot as plt
import numpy as np

Load HistoricalMap dataset

raster,vector = datasets.load_historical_data()

Initialize rasterMath with raster

# Set return_3d to True to have full block size (not one pixel per row)
# Create raster mask to only keep pixel inside polygons.

image_mask_from_vector(vector,raster,'/tmp/mask.tif',invert=True)

import time
t0=time.time()
for return_3d in [True,False]:

    rM = RasterMath(raster,in_image_mask='/tmp/mask.tif',return_3d=return_3d)

    rM.custom_block_size(128,128) # block of  128x128

    x = rM.get_block()

    # Returns with only 1 dimension
    returnFlatten = lambda x : x[...,0]

    # Returns 3x the original last dimension
    addOneBand = lambda x : np.repeat(x,3,axis=x.ndim-1)
    # Add functions to rasterMath
    rM.add_function(addOneBand,'/tmp/x_repeat_{}.tif'.format(str(return_3d)))
    rM.add_function(returnFlatten,'/tmp/x_flatten_{}.tif'.format(str(return_3d)))

    rM.run()
print(time.time()-t0)

from osgeo import gdal
dst = gdal.Open('/tmp/x_flatten_True.tif')
arr = dst.GetRasterBand(1).ReadAsArray()
plt.imshow(np.ma.masked_where(arr == np.min(arr), arr))
rasterMath testBlockSize 3d andNBands

Out:

Total number of blocks : 15
Total number of blocks : 45
Using datatype from numpy table : uint8.
Detected 9 bands for function <lambda>.
No data is set to : 0.
Using datatype from numpy table : uint8.
Detected 1 band for function <lambda>.
No data is set to : 0.
Batch processing (45 blocks using 10Mo of ram)

rasterMath... [........................................]1%

rasterMath... [........................................]2%

rasterMath... [#.......................................]3%

rasterMath... [#.......................................]4%

rasterMath... [##......................................]5%

rasterMath... [##......................................]6%

rasterMath... [###.....................................]7%

rasterMath... [###.....................................]8%

rasterMath... [####....................................]10%

rasterMath... [####....................................]11%

rasterMath... [####....................................]12%

rasterMath... [#####...................................]13%

rasterMath... [#####...................................]14%

rasterMath... [######..................................]15%

rasterMath... [######..................................]16%

rasterMath... [#######.................................]17%

rasterMath... [#######.................................]18%

rasterMath... [########................................]20%

rasterMath... [########................................]21%

rasterMath... [########................................]22%

rasterMath... [#########...............................]23%

rasterMath... [#########...............................]24%

rasterMath... [##########..............................]25%

rasterMath... [##########..............................]26%

rasterMath... [###########.............................]27%

rasterMath... [###########.............................]28%

rasterMath... [############............................]30%

rasterMath... [############............................]31%

rasterMath... [############............................]32%

rasterMath... [#############...........................]33%

rasterMath... [#############...........................]34%

rasterMath... [##############..........................]35%

rasterMath... [##############..........................]36%

rasterMath... [###############.........................]37%

rasterMath... [###############.........................]38%

rasterMath... [################........................]40%

rasterMath... [################........................]41%

rasterMath... [################........................]42%

rasterMath... [#################.......................]43%

rasterMath... [#################.......................]44%

rasterMath... [##################......................]45%

rasterMath... [##################......................]46%

rasterMath... [###################.....................]47%

rasterMath... [###################.....................]48%

rasterMath... [####################....................]50%

rasterMath... [####################....................]51%

rasterMath... [####################....................]52%

rasterMath... [#####################...................]53%

rasterMath... [#####################...................]54%

rasterMath... [######################..................]55%

rasterMath... [######################..................]56%

rasterMath... [#######################.................]57%

rasterMath... [#######################.................]58%

rasterMath... [########################................]60%

rasterMath... [########################................]61%

rasterMath... [########################................]62%

rasterMath... [#########################...............]63%

rasterMath... [#########################...............]64%

rasterMath... [##########################..............]65%

rasterMath... [##########################..............]66%

rasterMath... [###########################.............]67%

rasterMath... [###########################.............]68%

rasterMath... [############################............]70%

rasterMath... [############################............]71%

rasterMath... [############################............]72%

rasterMath... [#############################...........]73%

rasterMath... [#############################...........]74%

rasterMath... [##############################..........]75%

rasterMath... [##############################..........]76%

rasterMath... [###############################.........]77%

rasterMath... [###############################.........]78%

rasterMath... [################################........]80%

rasterMath... [################################........]81%

rasterMath... [################################........]82%

rasterMath... [#################################.......]83%

rasterMath... [#################################.......]84%

rasterMath... [##################################......]85%

rasterMath... [##################################......]86%

rasterMath... [###################################.....]87%

rasterMath... [###################################.....]88%

rasterMath... [####################################....]90%

rasterMath... [####################################....]91%

rasterMath... [####################################....]92%

rasterMath... [#####################################...]93%

rasterMath... [#####################################...]94%

rasterMath... [######################################..]95%

rasterMath... [######################################..]96%

rasterMath... [#######################################.]97%

rasterMath... [#######################################.]98%

rasterMath... [########################################]100%
Total number of blocks : 15
Total number of blocks : 45
Using datatype from numpy table : uint8.
Detected 9 bands for function <lambda>.
No data is set to : 0.
Using datatype from numpy table : uint8.
Detected 1 band for function <lambda>.
No data is set to : 0.
Batch processing (45 blocks using 10Mo of ram)

rasterMath... [........................................]1%

rasterMath... [........................................]2%

rasterMath... [#.......................................]3%

rasterMath... [#.......................................]4%

rasterMath... [##......................................]5%

rasterMath... [##......................................]6%

rasterMath... [###.....................................]7%

rasterMath... [###.....................................]8%

rasterMath... [####....................................]10%

rasterMath... [####....................................]11%

rasterMath... [####....................................]12%

rasterMath... [#####...................................]13%

rasterMath... [#####...................................]14%

rasterMath... [######..................................]15%

rasterMath... [######..................................]16%

rasterMath... [#######.................................]17%

rasterMath... [#######.................................]18%

rasterMath... [########................................]20%

rasterMath... [########................................]21%

rasterMath... [########................................]22%

rasterMath... [#########...............................]23%

rasterMath... [#########...............................]24%

rasterMath... [##########..............................]25%

rasterMath... [##########..............................]26%

rasterMath... [###########.............................]27%

rasterMath... [###########.............................]28%

rasterMath... [############............................]30%

rasterMath... [############............................]31%

rasterMath... [############............................]32%

rasterMath... [#############...........................]33%

rasterMath... [#############...........................]34%

rasterMath... [##############..........................]35%

rasterMath... [##############..........................]36%

rasterMath... [###############.........................]37%

rasterMath... [###############.........................]38%

rasterMath... [################........................]40%

rasterMath... [################........................]41%

rasterMath... [################........................]42%

rasterMath... [#################.......................]43%

rasterMath... [#################.......................]44%

rasterMath... [##################......................]45%

rasterMath... [##################......................]46%

rasterMath... [###################.....................]47%

rasterMath... [###################.....................]48%

rasterMath... [####################....................]50%

rasterMath... [####################....................]51%

rasterMath... [####################....................]52%

rasterMath... [#####################...................]53%

rasterMath... [#####################...................]54%

rasterMath... [######################..................]55%

rasterMath... [######################..................]56%

rasterMath... [#######################.................]57%

rasterMath... [#######################.................]58%

rasterMath... [########################................]60%

rasterMath... [########################................]61%

rasterMath... [########################................]62%

rasterMath... [#########################...............]63%

rasterMath... [#########################...............]64%

rasterMath... [##########################..............]65%

rasterMath... [##########################..............]66%

rasterMath... [###########################.............]67%

rasterMath... [###########################.............]68%

rasterMath... [############################............]70%

rasterMath... [############################............]71%

rasterMath... [############################............]72%

rasterMath... [#############################...........]73%

rasterMath... [#############################...........]74%

rasterMath... [##############################..........]75%

rasterMath... [##############################..........]76%

rasterMath... [###############################.........]77%

rasterMath... [###############################.........]78%

rasterMath... [################################........]80%

rasterMath... [################################........]81%

rasterMath... [################################........]82%

rasterMath... [#################################.......]83%

rasterMath... [#################################.......]84%

rasterMath... [##################################......]85%

rasterMath... [##################################......]86%

rasterMath... [###################################.....]87%

rasterMath... [###################################.....]88%

rasterMath... [####################################....]90%

rasterMath... [####################################....]91%

rasterMath... [####################################....]92%

rasterMath... [#####################################...]93%

rasterMath... [#####################################...]94%

rasterMath... [######################################..]95%

rasterMath... [######################################..]96%

rasterMath... [#######################################.]97%

rasterMath... [#######################################.]98%

rasterMath... [########################################]100%
0.37784433364868164

<matplotlib.image.AxesImage object at 0x7f7fdf8ab610>

Total running time of the script: ( 0 minutes 0.570 seconds)

Gallery generated by Sphinx-Gallery