xrspatial.multispectral.ndvi

xrspatial.multispectral.ndvi(nir_agg: xarray.core.dataarray.DataArray, red_agg: xarray.core.dataarray.DataArray, name='ndvi')[source]

Computes Normalized Difference Vegetation Index (NDVI). Used to determine if a cell contains live green vegetation.

Parameters
  • nir_agg (xr.DataArray) – 2D array of near-infrared band data.

  • red_agg (xr.DataArray) – 2D array red band data.

  • name (str default='ndvi') – Name of output DataArray.

Returns

ndvi_agg – 2D array of ndvi values. All other input attributes are preserved.

Return type

xarray.DataArray of same type as inputs

References

Examples

import matplotlib.pyplot as plt
from xrspatial.multispectral import ndvi
from xrspatial.datasets import get_data

# Open Example Data
data = get_data('sentinel-2')

nir = data['NIR']
red = data['Red']

# Generate NDVI Aggregate Array
ndvi_agg = ndvi(nir_agg = nir,
                red_agg = red)

# Plot NIR Band
nir.plot(cmap = 'Greys', aspect = 2, size = 4)
plt.title("NIR Band")
plt.ylabel("latitude")
plt.xlabel("longitude")

# Plot Red Band
red.plot(cmap = 'Greys', aspect = 2, size = 4)
plt.title("Red Band")
plt.ylabel("latitude")
plt.xlabel("longitude")

# Plot NDVI
ndvi_agg.plot(cmap = 'Greys', aspect = 2, size = 4)
plt.title("NDVI")
plt.ylabel("latitude")
plt.xlabel("longitude")
../../_images/xrspatial-multispectral-ndvi-1_00.png

(png, hires.png, pdf)

../../_images/xrspatial-multispectral-ndvi-1_01.png

(png, hires.png, pdf)

../../_images/xrspatial-multispectral-ndvi-1_02.png

(png, hires.png, pdf)

>>> print(ndvi_agg[100:103, 100: 102])
<xarray.DataArray 'ndvi' (y: 3, x: 2)>
array([[0.06746311, 0.06177197],
       [0.065     , 0.05064194],
       [0.06709957, 0.04431737]])
Coordinates:
  * x        (x) float64 6.01e+05 6.01e+05
  * y        (y) float64 4.699e+06 4.699e+06 4.699e+06
    band     int32 ...
Attributes: (12/13)
    transform:                [ 1.00000e+01  0.00000e+00  6.00000e+05  0.0000... # noqa
    crs:                      +init=epsg:32719
    res:                      [10. 10.]
    is_tiled:                 1
    nodatavals:               nan
    scales:                   1.0
    ...                       ...
    instrument:               Sentinel-2
    Band:                     07
    Name:                     NIR
    Bandwidth (µm):           115
    Nominal Wavelength (µm):  0.842
    Resolution (m):            10