Unit 20 - MODIS

There are two satellites, Aqua and Terra which carry the MODIS sensor as payload. The Moderate Resolution Imaging Spectroradiometer (MODIS) is a 36-channel from visible to thermal-infrared sensor that was launched as part of the Terra satellite payload in December 1999 and Aqua satellite (May 2002). The Terra satellite passes twice a day (at about 10:30am, and 22:30pm local time), also the Aqua satellite passes twice a day (at about 01:30am, and 13:30pm local time). (source: GRASS Wiki)

Our area of interest, Norway, is covered by two tiles (see MODLAND grid):

  • h18v02
  • h18v03

Download and import

Data are provided in 3 projections (Sinusoidal, Lambert Azimuthal Equal-Area, and Geographic). For our purpose, data will be reprojected to ETRS89 / UTM 32N EPSG:25832.

Create a new GRASS mapset called modis and install i.modis addons extension (more about installing addons in Unit 18) for downloading and importing MODIS data (note that you have to install also pyMODIS Python Library).

pip install pymodis
g.extension extension=i.modis

Note

i.modis including dependecies is already installed on tailored virtual machine.

GRASS MODIS addon consists of two modules:

Let’s download desired tiles (h18v02 and h18v03) for year 2017 by i.modis.download. We are interested about LST products (both Aqua and Terra satellites).

Note

Already downloaded MODIS can be found in sample dataset in modis/h18v02_03 folder.

i.modis.download settings=modis.txt folder=geodata/modis/h18v02_03 \
tiles=h18v02,h18v03 product=lst_aqua_eight_1000,lst_terra_eight_1000 \
startday=2017-01-01 endday=2017-12-31

Note

Output folder (geodata/modis in this case) must exists, otherwise the module will fail.

File settings.txt contains two lines: username and password for accessing MODIS download service.

Please read carefully how to register and set up your account on pyModis documentation.

Data are imported by i.modis.import including reprojection into target location.

i.modis.import -mw files=geodata/modis/h18v02_03/listfileMOD11A2.006.txt \
spectral='( 1 0 0 0 1 0 0 0 0 0 0 0 )' outfile=geodata/modis/tlist-mod.txt

i.modis.import -mw files=geodata/modis/h18v02_03/listfileMYD11A2.006.txt \
spectral='( 1 0 0 0 1 0 0 0 0 0 0 0 )' outfile=geodata/modis/tlist-myd.txt

If -m flag is given mosaics from input tiles is created automatically, see Fig. 111.

Note

The command was run twice, once for Aqua data than for Terra data.

../_images/modis-mosaics.png

Fig. 111 Mosaics created from h18v02 and h18v03 tiles.

LST

In this section Land Surface Temperature (LST) analysis will be perfmored for Norway.

Mask based on Norway administrate border is set by r.mask based on data imported in Unit 03. Don’t forget that a mask is created in the current computation region. Computation extent needs to be set based on Fylke vector map and computational grid aligned input data by g.region.

g.region vector=Fylke align=MOD11A2.A2017001_mosaic_LST_Day_1km
r.mask vector=Fylke

Let’s check range values of our LST data (by r.info module or from Layer Manager).

../_images/raster-metadata.png

Fig. 112 Raster map metadata.

r.info -r map=MOD11A2.A2017001_mosaic_LST_Day_1km
min=0
max=14015

The values do not appear to be temperature. In order to determine LST from input data, digital values (DN) must be converted into Celsius or Kelvin scale.

C = DN * 0.02 - 273.15

Conversion to Celsium scale can be done by r.mapcalc (see Unit 05 - Simple computation for basic information about map algebra in GRASS). It’s also suitable to replace zero values with no-data value (NULL values in GRASS terminology).

Example (replace tile with real map name):

r.mapcalc expression="MOD11A2.A2017001_mosaic_LST_Day_1km_celsius = \
if(MOD11A2.A2017001_mosaic_LST_Day_1km != 0, MOD11A2.A2017001_mosaic_LST_Day_1km * 0.02 - 273.15, null())"

Let’s check range values of new LST data

r.info -r map=MOD11A2.A2017001_mosaic_LST_Day_1km_celsius
min=-45.09
max=6.05000000000001
../_images/lst-c.png

Fig. 113 LST reconstruction for Norway in Celsius scale (color table celsius applied).