I am quite new as I only use google earth engine for a couple weeks. So if I missed anything feel free to advise

The goal want to achieved is to perform time series classification on Google Earth Engine (GEE). So far, I have only seen per image classification in the documents. I also found that you can fit a regression with image collection from Time Series Analysis in Earth Engine By Google Earth. But I can't find a way to combine these two together (I know regression and classification is two different things, but maybe I can extract model from time series analysis and use them with classification?)

If using image based classification alone, it lose the phonological pattern which can indicate plants signature overtime.

Is there a way to perform time series supervised classification on GEE?

Update 1 30/08/19

I have found a way around this by extracting time-series features by first extract interval mean in different range as different bands (From Foyou Tian, et al. ). And then use the aggregated image to classify. However this method did not fully utilize full-extent of timeseries information, and I am looking toward an alternative solution soon

For more complex model, I might use tensorflow based on slide that I have found by Chris Brown from EEIA 2019 here

If I found anything else useful I will keep update, And if anyone have a suggestion, I would gladly accepted

Update 24/12/20

I have recently got back to GEE and I decided to make linear interpolation by answering Smoothing/interpolating across images in an ImageCollection to remove missing data. So with a little bit of modification, I made a simple (pixel-wise) time-series classification of CDL using smile random forest model by flatten all interpolated time-series values into bands of single image. This method, however ignore the time invariant aspect of time-series classification, a better method would be sliding window method.


  • Just for baseline benchmark, I’ve got about 70% in class accuracy and 75% in area accuracy (validation) within the same year and region over 34 classes (I think this is not too bad)
  • I have tested a correlation between time-series interpolated using savitzky-golay vs linear interpolation in python. The result show high correlation (about 0.89), so I think for most application linear interpolation is sufficient


Classifed output Classifed output

The code is available here

  • I am trying to do the same thing as you here, and coming across the same problem. Do you have the GEE script you used to do the method by Foyou Tian et al.? Thanks for any help
    – Sarah
    Jun 17 '20 at 13:29
  • Sure, but it is very barebone though just the percentile feature extraction. A better method would be to use google AI platform, you can run TensorFlow model with it. Here is the code pastebin.com/VTkfUBmZ. From the paper, the number of features is very large, and it might cause GEE to timeout, so I recommended you select a subset of features by trained RFClassifier and base your decision on its feature importance. Hope this is helpful Jun 17 '20 at 14:37
  • I stumpled accross the same limitation. I am working on seasonal ice features in a high mountain environment which can best be detected using a time series (aka seasonality approach) and the percentile / median workarounds do not work for. Have you stumbled accross a solution for the problem? Sep 4 '20 at 12:53
  • There are several methods for time series classification, non of which can be used directly in GEE. The problem for the model on the platform is they accept only accept a single image as an input, but there can be multiple bands. So I created a simple script to aggregate time series images into a single image. Foe example 5 time steps image with 5 bands each will create 25 bands image. Then I convert the 25 bands image back to 5*5 images in python model using ee.Model.fromAiPlatformPredictor before feed into more complex model. It is not the best method, but I couldn't find a better method Sep 4 '20 at 13:12
  • I have no solution to aggregate more than a few time steps though, as it is an expensive computation. So I would recommend either trying to reduce image bands in each time step by using a feature extraction method (e.g. mean, median, SD, etc.) or train model on a small region offline and use tree-based classifier to see its feature importance score. P.S. I don't think ee. Model. fromAiPlatformPredictor require models to be a deep learning based. So you might be able to get away with a template matching method such as dynamic time wrapping (DTW) Sep 4 '20 at 13:22

Browse other questions tagged or ask your own question.