Compute a spectral index or an expression without defining a sensor

This example shows how to compute an expression or an index in a time series (or at one acquisition) without defining a sensor.

Use sample from Sentinel2 level 3A syntheses (from Theia)

from museopheno.time_series import expression_manager
from museopheno import datasets

X,dates = datasets.Sentinel2_3a_2018(return_dates=True,return_random_sample=True)

print(X.shape)

Out:

Total number of blocks : 1
(55842, 70)

We have to define the band order and the number of compenent (i.e. number of band per date)

bands_order = ['2','3','4','8','5','6','7','8A','11','12']

As our raster has 10 bands per date, let’s check the number of columns of X array divided by the numver of bands per date

print('Image contains {} dates.'.format(int(X.shape[1]/len(bands_order))))

Out:

Image contains 7 dates.

Let’s create an expression

expression = 'B8/(B2+1)'

result = expression_manager(X,bands_order=bands_order,expression=expression)

print(result)

Out:

[[29.15     31.653631 28.006369 ... 21.634285 23.138159 11.891509]
 [26.018072 32.120804 28.919708 ... 23.013699 24.86508  12.335052]
 [28.894365 37.02362  30.872    ... 20.8125   20.554745 10.108571]
 ...
 [24.484848 35.560974 24.670807 ... 18.333334 17.838888  8.68    ]
 [27.095238 37.45299  24.62264  ... 18.994566 18.543478  9.601626]
 [32.585365 41.92233  26.326666 ... 18.347368 18.052357  9.585657]]

Plot result

from matplotlib import pyplot as plt
from datetime import datetime
dateToDatetime = [datetime.strptime(str(date),'%Y%m%d') for date in dates]
plt.plot_date(dateToDatetime,result.T[:,:100],'-o')
computeIndex

Out:

[<matplotlib.lines.Line2D object at 0x7f085bd88b90>, <matplotlib.lines.Line2D object at 0x7f085bd237d0>, <matplotlib.lines.Line2D object at 0x7f085bd885d0>, <matplotlib.lines.Line2D object at 0x7f0860400690>, <matplotlib.lines.Line2D object at 0x7f0860400a10>, <matplotlib.lines.Line2D object at 0x7f0860400ed0>, <matplotlib.lines.Line2D object at 0x7f0860400f90>, <matplotlib.lines.Line2D object at 0x7f0860400c50>, <matplotlib.lines.Line2D object at 0x7f0860400e50>, <matplotlib.lines.Line2D object at 0x7f0860400a90>, <matplotlib.lines.Line2D object at 0x7f085bdc4210>, <matplotlib.lines.Line2D object at 0x7f0860400910>, <matplotlib.lines.Line2D object at 0x7f0860400fd0>, <matplotlib.lines.Line2D object at 0x7f0860400f50>, <matplotlib.lines.Line2D object at 0x7f0860144b10>, <matplotlib.lines.Line2D object at 0x7f0860144b50>, <matplotlib.lines.Line2D object at 0x7f0860144890>, <matplotlib.lines.Line2D object at 0x7f0860144610>, <matplotlib.lines.Line2D object at 0x7f0860144850>, <matplotlib.lines.Line2D object at 0x7f0860144590>, <matplotlib.lines.Line2D object at 0x7f0860144950>, <matplotlib.lines.Line2D object at 0x7f08601442d0>, <matplotlib.lines.Line2D object at 0x7f08601440d0>, <matplotlib.lines.Line2D object at 0x7f0860144b90>, <matplotlib.lines.Line2D object at 0x7f0860144550>, <matplotlib.lines.Line2D object at 0x7f0860144050>, <matplotlib.lines.Line2D object at 0x7f0860144310>, <matplotlib.lines.Line2D object at 0x7f0860144e90>, <matplotlib.lines.Line2D object at 0x7f0860144290>, <matplotlib.lines.Line2D object at 0x7f0860144810>, <matplotlib.lines.Line2D object at 0x7f0860144510>, <matplotlib.lines.Line2D object at 0x7f0860144750>, <matplotlib.lines.Line2D object at 0x7f0863033f90>, <matplotlib.lines.Line2D object at 0x7f0863033110>, <matplotlib.lines.Line2D object at 0x7f0863033cd0>, <matplotlib.lines.Line2D object at 0x7f08600662d0>, <matplotlib.lines.Line2D object at 0x7f0860066cd0>, <matplotlib.lines.Line2D object at 0x7f0860066490>, <matplotlib.lines.Line2D object at 0x7f0860066110>, <matplotlib.lines.Line2D object at 0x7f0860066150>, <matplotlib.lines.Line2D object at 0x7f0860066910>, <matplotlib.lines.Line2D object at 0x7f0860066d90>, <matplotlib.lines.Line2D object at 0x7f0860066450>, <matplotlib.lines.Line2D object at 0x7f0860066390>, <matplotlib.lines.Line2D object at 0x7f0860066290>, <matplotlib.lines.Line2D object at 0x7f0860066ad0>, <matplotlib.lines.Line2D object at 0x7f08600666d0>, <matplotlib.lines.Line2D object at 0x7f0860066a90>, <matplotlib.lines.Line2D object at 0x7f0860066990>, <matplotlib.lines.Line2D object at 0x7f0860066f50>, <matplotlib.lines.Line2D object at 0x7f0860066610>, <matplotlib.lines.Line2D object at 0x7f086003fc10>, <matplotlib.lines.Line2D object at 0x7f086003fd90>, <matplotlib.lines.Line2D object at 0x7f086003f590>, <matplotlib.lines.Line2D object at 0x7f086003fc50>, <matplotlib.lines.Line2D object at 0x7f086003f790>, <matplotlib.lines.Line2D object at 0x7f086003f710>, <matplotlib.lines.Line2D object at 0x7f086003f350>, <matplotlib.lines.Line2D object at 0x7f086003f190>, <matplotlib.lines.Line2D object at 0x7f086003f810>, <matplotlib.lines.Line2D object at 0x7f086003fb50>, <matplotlib.lines.Line2D object at 0x7f086003fa10>, <matplotlib.lines.Line2D object at 0x7f086003f890>, <matplotlib.lines.Line2D object at 0x7f086003fd50>, <matplotlib.lines.Line2D object at 0x7f086003f2d0>, <matplotlib.lines.Line2D object at 0x7f086003f1d0>, <matplotlib.lines.Line2D object at 0x7f086003f6d0>, <matplotlib.lines.Line2D object at 0x7f086003fed0>, <matplotlib.lines.Line2D object at 0x7f085bddce10>, <matplotlib.lines.Line2D object at 0x7f085bddc690>, <matplotlib.lines.Line2D object at 0x7f085bddcbd0>, <matplotlib.lines.Line2D object at 0x7f085bddcad0>, <matplotlib.lines.Line2D object at 0x7f085bddc350>, <matplotlib.lines.Line2D object at 0x7f085bddc610>, <matplotlib.lines.Line2D object at 0x7f085bddc810>, <matplotlib.lines.Line2D object at 0x7f085bddc110>, <matplotlib.lines.Line2D object at 0x7f085bddc2d0>, <matplotlib.lines.Line2D object at 0x7f085bddc550>, <matplotlib.lines.Line2D object at 0x7f085bddcc90>, <matplotlib.lines.Line2D object at 0x7f085bddca90>, <matplotlib.lines.Line2D object at 0x7f085bddcb90>, <matplotlib.lines.Line2D object at 0x7f085bddc910>, <matplotlib.lines.Line2D object at 0x7f085bddc650>, <matplotlib.lines.Line2D object at 0x7f085bddc990>, <matplotlib.lines.Line2D object at 0x7f085bddc8d0>, <matplotlib.lines.Line2D object at 0x7f0860b1b110>, <matplotlib.lines.Line2D object at 0x7f0860b1bbd0>, <matplotlib.lines.Line2D object at 0x7f0860b1b410>, <matplotlib.lines.Line2D object at 0x7f0860b1bf90>, <matplotlib.lines.Line2D object at 0x7f086040b3d0>, <matplotlib.lines.Line2D object at 0x7f086040b590>, <matplotlib.lines.Line2D object at 0x7f086040b5d0>, <matplotlib.lines.Line2D object at 0x7f086040bc10>, <matplotlib.lines.Line2D object at 0x7f086040b710>, <matplotlib.lines.Line2D object at 0x7f086040b190>, <matplotlib.lines.Line2D object at 0x7f086040bf50>, <matplotlib.lines.Line2D object at 0x7f086040b950>, <matplotlib.lines.Line2D object at 0x7f086040bbd0>, <matplotlib.lines.Line2D object at 0x7f086040bd10>, <matplotlib.lines.Line2D object at 0x7f086040b450>]

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

Gallery generated by Sphinx-Gallery