Skip to content
← Back to Remote Sensing
remote-sensingBeginner· 13 min read

Remote Sensing Time Series: Composites, Gaps, Phenology and Trends Explained

How a stack of satellite images becomes a curve for every place: what a time series needs, how monthly composites are made, what to do about cloud gaps, how to read a seasonal curve, and why one year is not a trend.

What is a time series?

A time series is a set of measurements of the same thing, taken at different times and kept in time order. In remote sensing the thing is a place, and each measurement is an image of it or a number taken from the image.

A raster time series is a stack of images of the same area on the same grid, in date order. You can look at it in two ways. As a stack of maps, it shows how the whole area changes from one date to the next. As a curve, it shows one cell through time: the value of that cell on the first date, the second, and so on up to the last. Most of the work with a series moves between these two views.

Why it matters

A single image says what a place looks like on one day. A series says how it behaves. That difference answers questions that one image cannot:

  • Which fields are growing a crop, and when it was sown and harvested.
  • Whether this year's vegetation is greener or drier than usual.
  • When a lake filled, a flood receded or a forest was cleared.
  • Which surfaces look alike on one date and part ways on another. A lawn and a wheat field can both be green in February, and only the wheat field is bare in May.

What a series needs

A set of images is not yet a time series. The values on different dates must mean the same thing, and the cells must line up.

NeedWhy
The same gridCell number 500 on every date must be the same ground. This means one CRS, one cell size and one extent
Comparable valuesUse surface reflectance, the same index on every date, and the same sensor or sensors that have been matched
Clouds and bad cells removedA cloud has an NDVI that has nothing to do with the field under it
Dates in orderThe order is the whole point, so keep the date next to every image

Where the images come from

SourceCell sizeHow often it sees a placeUse in a series
Sentinel-210 m for the main bands10 days for each satellite, about 5 days for the pair when the viewing conditions are the sameFields and small places
Landsat 8 and 930 m16 days for each satellite, 8 days togetherA long record and a steady archive
MODIS250 m to 1 kmAlmost dailyVery large areas and regions, where the cells are too coarse for single fields
Sentinel-1 radarAbout 10 mSeveral days, by the number of satellites in serviceCloudy seasons, because radar sees through cloud, but it measures structure and moisture and not greenness

The revisit on paper is the best case. In the monsoon, the number of clear views is far lower than the number of passes. The note on Earth observation satellites explains orbits and revisit in more detail.

How a series is built

Make the images comparable

Work from surface reflectance, check the scale factor and offset that the provider documents, and mask what you cannot trust. For Sentinel-2 the scene classification layer marks no data, saturated cells, cloud shadow, cloud, thin cirrus and snow. Then calculate the same index on every date, as the note on spectral indices describes.

Make a composite

On a single date much of the area may be under cloud. A composite combines the clear views from a window of time into one image, for example one month. For each cell it takes one value from the clear observations:

  • The median is the middle value of the sorted list. One bad value that escaped the mask barely moves it. It is a safe default.
  • The maximum NDVI keeps the greenest value. It was designed to push through haze and cloud edges, but it favours the high end and can overstate vegetation.

The length of the window is a trade. A long window gives more clear views and fewer gaps, and it blurs fast change. A short window keeps the timing and leaves more gaps.

A composite also lowers the peaks. A field that is greening up or turning brown during the month gives a median that sits between its early and late values. The tutorials on this site show it with real numbers. A rice and wheat field near Jagraon reached an NDVI of 0.95 on 13 March in a single clear image, and its monthly value for March is 0.85.

Deal with gaps

Even a composite can have holes. The cause is plain in cloud-prone regions: in the Indian monsoon, thick cloud can cover the sky for long stretches, and methods that remove cloud from an image fail over thick cloud. Your choices are:

  1. Leave the gap as missing, and make every calculation skip it. This is the most honest choice.
  2. Widen the window for that period, if you can accept the lower time precision.
  3. Fill the gap from the neighbouring dates, with a straight line or with a smooth curve fitted to the whole series. The Savitzky-Golay filter is a standard choice for NDVI.
  4. Bring in another source, such as radar, which sees through cloud. Research on Indian rice fields does this.

Every fill is an estimate. A straight line from July to September cannot know that a rice crop is still bare in July and green in August. In the Jagraon tutorial, filling August at one site gives 0.45, against a real value of 0.74. Say in your report which values are measured and which are filled.

Smoothing is related but not the same. It reduces noise, and it also lowers peaks and raises troughs. With only twelve values a year, smoothing removes more than it helps.

Read the curve

The curve of a crop usually has a shape, and a few numbers describe it:

MeasureWhat it is
PeakThe highest value, and the date it happens
TroughThe lowest value
Swing, or amplitudeThe peak minus the trough. It is large where vegetation changes a lot, and small in towns, water and evergreen forest
Start and end of seasonWhen the curve rises above and falls below a level, often a share of the swing
Length of seasonThe time between the start and the end
Area under the curveA rough measure of the total greenness over the season

Programs such as TIMESAT calculate these from a smoothed curve. With a few simple steps you can get far: the highest value of a cell in a season window, the swing, and the season in which a cell is green.

Once you have several years, you can ask whether a place is different from usual. The usual value for a month is the climatology: the average of that month over the years. The anomaly is the value in one year minus the climatology. A negative anomaly in a crop month can point to drought or a late sowing.

A trend asks a harder question: is the place changing in one direction over the years? That needs a longer record, the same month compared across years, and a method such as the Theil-Sen slope or the Mann-Kendall test. A change of sensor, a different window or a different cloud year can all fake a trend. One year, however well made, shows a pattern and not a trend.

Example: a rice and wheat town in Punjab

The two tutorials on this site build 12 monthly NDVI rasters for 2023 for a 10 km square around Jagraon, Punjab. The table gives the monthly NDVI at three places in it.

SiteWhat it isPeakLowestSwing
AA field with two crops0.86 in February0.06 in June0.81
BThe town0.16 in September0.06 in May0.10
CA field that stays moderately green0.65 in December0.42 in June0.23

Site A has two peaks, a winter one and a monsoon one, which fits the rice and wheat calendar of the region. The town is flat, and C changes little. Across the square, about six in ten cells are above 0.6 in both February or March and August or September. The tutorials show how to get these numbers by hand in QGIS and by code in Python.

The twelve maps are below. Click a month to open it full screen, or switch to Play the year.

Fields turn green twice a year. The town in the middle never does.
Monthly NDVI, 2023, a 10 km square around Jagraon, Punjab. Click a month to open it full screen.
0 bare soil, roofs0.30.60.9 dense green crop
Same colour scale on every map. 10 m Sentinel-2, monthly median. Contains modified Copernicus Sentinel data 2023.

The curves of the three places are in the next chart. Hover a month, and click a name to hide a line.

Field A turns green twice a year. The town never does.
Monthly NDVI in 2023 at three places near Jagraon. Hover a month for all three. Click a name to hide it.
Winter windowMonsoon window0.000.250.500.751.00JanFebMarAprMayJunJulAugSepOctNovDecABC
The shaded bands are the two windows used in the seasons map: February and March, August and September.
Show the numbers as a table
MonthABC
Jan0.670.110.56
Feb0.860.110.52
Mar0.850.090.44
Apr0.350.090.56
May0.120.060.44
Jun0.060.070.42
Jul0.100.070.49
Aug0.740.110.57
Sep0.790.160.60
Oct0.720.100.64
Nov0.130.070.46
Dec0.430.080.65

And the map of which cells are green in which season:

Six in ten cells are green in both seasons
A cell counts as green when its NDVI is above 0.6. Winter means February or March, monsoon means August or September.
Map of the square around Jagraon coloured by the season in which each cell is green
Both seasons58.7%
586,625 cells
Monsoon only (Aug or Sep)19.3%
192,711 cells
Winter only (Feb or Mar)2.5%
25,435 cells
Never above 0.619.5%
195,229 cells
The numbers are the same as in the QGIS tutorial (Cell statistics and the Raster calculator) and in the Python tutorial. These shares describe NDVI curves and are not a crop map. Contains modified Copernicus Sentinel data 2023.

A workflow you can trust

  1. Decide the question, the area and the period. They set the cell size, the revisit you need and the index.
  2. Collect surface reflectance from one source, on one grid.
  3. Mask cloud, shadow, snow and bad cells with the quality layer.
  4. Calculate the same index for every image.
  5. Build composites for a window that suits the question. Record how many scenes went into each one.
  6. Check the gaps: for each period, the share of cells that have a value.
  7. Decide what to do with the gaps, and write it down.
  8. Stack the composites in date order, and check the order with a place you know.
  9. Read the curves at a few places you can judge, and compare them with a crop calendar or with single images.
  10. Calculate the summaries, such as the peak, the swing and the season, and report how they were made.

Common mistakes

  • Comparing maps that use different colour scales.
  • Stacking the images in the wrong order.
  • Mixing sensors or processing versions without matching them.
  • Treating a filled value as a measurement.
  • Reading a trend from one or two years.
  • Reading a crop name from a curve that nobody checked in the field.
  • Forgetting that a monthly composite hides what happens inside the month.
  • Taking the mean of a raster that still holds a NoData number such as -9999.

Glossary

TermMeaning
Time seriesMeasurements of one thing at different times, kept in order
Raster time seriesA stack of images of the same area on the same grid in date order
CompositeOne image made from the clear observations of a window of time
MedianThe middle value of a sorted list, not moved much by one bad value
GapA cell and date for which no clear observation exists
PhenologyThe timing of seasonal events in plants, such as green-up, peak and senescence
SwingThe highest value of the year minus the lowest
ClimatologyThe average value of a period, such as a month, over many years
AnomalyA value minus the climatology of the same period

Practise it

The tutorial Raster time series with NDVI in QGIS builds the series, plays it, reads curves and maps the swing and the seasons with menus. The tutorial Raster time series with Python does the same steps in code, and adds gap filling and smoothing.

Test yourself

1. Why is a median a safer composite than a single image?

A single image may be hit by cloud or haze that the mask missed. The median of several clear views is the middle value, so one bad value hardly moves it.

2. A fill gives a value of 0.45 where the real NDVI was 0.74. What does this tell you?

A straight-line fill cannot see fast changes, such as a crop going from bare to green in a month. A filled value is an estimate, and it can be well off.

3. Why is a year of monthly data not enough to show a trend?

A trend is a change in one direction over several years. One year shows a seasonal pattern. Another year may differ in rain, sowing dates or cloud, so you cannot tell a trend from a normal difference between years.

Quick quiz

1. What must be true of the images in a raster time series?
2. Why does a monthly composite lower the peaks of a crop curve?
3. What does the swing of a cell measure?
0 of 3 answered

Key takeaways