Analyze Changes Using CCDC (Image Analyst)

Available with Image Analyst license.


Evaluates changes in pixel values over time using the Continuous Change Detection and Classification (CCDC) method and generates a multidimensional raster containing the model results.

Learn more about how Analyze Changes Using CCDC works


  • The Continuous Change Detection and Classification (CCDC) algorithm is a method for identifying change in pixel values over time. It was originally developed for a time series of multiband Landsat imagery and is used to detect change and classify land cover before and after the change occurred. This tool can be used with imagery from supported sensors and can also be used to detect change in single band rasters. For example, this tool can be used to detect changes in a time series of NDVI rasters to identify deforestation events.

  • The input multidimensional raster must have at least 12 slices, spanning at least 1 year.

  • It is recommended that you remove cloud and cloud shadow mask using a QA band before running this tool.

  • To explore the changes calculated in the output change analysis raster, create a temporal profile chart. Generate graphs for various locations in the change analysis raster to see when changes have occurred. For pixels that have changed, the graph will show breaks in the model where the harmonic regression model for the pixel values over time shifted to a new model, indicating a change. You can hover the pointer over the points on the graph to identify the date the model changed.

  • The output change analysis raster is a multidimensional raster in which each slice is a multiband raster composed of the time series model coefficients, root mean square error (RMSE), and the observed changes. The number of slices in the output matches the number of slices in the input. It can be used as the input to the Detect Change Using Change Analysis Raster tool, which generates a raster containing change information for each pixel.

  • The output change analysis raster can also be used for classification. Run this tool to generate a change analysis raster. Then create training samples with a time field to indicate the time at which the sample represents land cover. Next, run a training tool to generate a classifier definition file (.ecd). Finally, run the Classify Raster tool with the .ecd file and the change analysis raster as inputs to generate a multidimensional classified raster.

  • The Bands for Temporal Masking parameter specifies the bands to use for cloud, cloud shadow, and snow masking. Because cloud shadow and snow show up very dark in the shortwave infrared (SWIR) band, and clouds and snow are very bright in the green band, it is recommended that the band indexes for the SWIR and green bands are masked.

  • The Updating Fitting Frequency (in years) parameter defines how often the time series model will be updated with new observations. Updating a model frequently can be computationally costly and the benefit can be minimal. For example, if there are 365 slices or clear observations per year in the multidimensional raster, and the updating frequency is for every observation, the processing will be 365 times more computationally expensive compared to updating once per year, but the accuracy may not be higher.

  • This tool may take a long time to run and requires significant disk space to store the results. To improve processing time and reduce the amount of storage space, the following steps are recommended:

    • Turn off the Pyramid environment. Uncheck the Build Pyramids box in the Environment pane or set the environment to NONE in Python.
    • Set the Compression environment to LERC and set Max error to 0.000001.
    • If you expect to run the Detect Change Using Change Analysis Raster tool on the output of this tool multiple times, it is recommended that you build a multidimensional transpose on the result.

  • This tool produces a multidimensional raster dataset in Cloud Raster Format (CRF). Currently, no other output formats are supported.


AnalyzeChangesUsingCCDC(in_multidimensional_raster, {bands}, {tmask_bands}, {chi_squared_threshold}, {min_anomaly_observations}, {update_frequency})
ParameterExplanationData Type

The input multidimensional raster dataset.

Raster Dataset; Raster Layer; Mosaic Dataset; Mosaic Layer; Image Service

The band IDs to use for change detection. If no band IDs are provided, all the bands from the input raster dataset will be used.


The band IDs to be used in the temporal mask (Tmask). It is recommended that you use the green band and the SWIR band. If no band IDs are provided, no masking will occur.


The chi-square statistic change probability threshold. If an observation has a calculated change probability that is above this threshold, it is flagged as an anomaly, which is a potential change event. The default value is 0.99.


The minimum number of consecutive anomaly observations that must occur before an event is considered a change. A pixel must be flagged as an anomaly for the specified number of consecutive time slices before it is considered a true change. The default value is 6.


The frequency, in years, at which to update the time series model with new observations. The default value is 1.


Return Value

NameExplanationData Type

The output Cloud Raster Format (CRF) multidimensional raster dataset.

The output change analysis raster containing model information from the CCDC analysis.


Code sample

AnalyzeChangesUsingCCDC example 1 (Python window)

This example performs continuous change detection on 30 years of monthly NDVI rasters. Only one band is used in the change detection and the chi-squared probability threshold is 0.90.

# Import system modules
import arcpy
from arcpy.ia import *

# Check out the ArcGIS Image Analyst extension license

changeAnalysisRaster = arcpy.ia.AnalyzeChangesUsingCCDC(
	"Monthly_NDVI_30_years.crf", [0], [], 0.90, 6, 1); 

# Save output"C:\data\NDVI_ChangeAnalysis.crf")
AnalyzeChangesUsingCCDC example 2 (stand-alone script)

This example performs continuous change detection on a time series of Landsat 7 images, with bands 3 and 7 (indexed at 2 and 6) used for a snow, cloud, and cloud shadow mask.

# Import system modules
import arcpy
from arcpy.ia import *

# Check out the ArcGIS Image Analyst extension license

# Define input parameters
in_multidimensional = r"C:\data\Landsat_time_series.crf"
change_bands = [0,1,2,3,4,5,6]
tmask_bands = [2,6]
chi_sq_threshold = 0.99
min_consecutive_observations = 3
update_frequency = 1

# Execute
changeAnalysisRaster = arcpy.ia.AnalyzeChangesUsingCCDC(
	in_multidimensional, change_bands, tmask_bands, chi_sq_threshold, 
	min_consecutive_observations, update_frequency) 

# Save output"C:\data\Landsat_ChangeAnalysis.crf")

Licensing information

  • Basic: Requires Image Analyst
  • Standard: Requires Image Analyst
  • Advanced: Requires Image Analyst

Related topics