Note
Click here to download the full example code
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))
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)