Analyze Changes Using CCDC (Image Analyst)

Available with Image Analyst license.

Summary

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

Learn more about how Analyze Changes Using CCDC works

Usage

  • 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 output from this tool is model information in a change analysis raster in which each pixel stores a suite of model information that describes that pixel's history over time. The change analysis raster is a multidimensional raster in which each slice is a multiband raster composed of the model coefficients, the root mean square error (RMSE), and the observed changes. 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 number of slices in the output matches the number of slices in the input.

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

  • This tool extracts changes in an observed feature, so the ideal input multidimensional imagery should capture a consistent observation throughout time and should not include atmospheric or sensor interference, clouds, or cloud shadow. The best practice is to use data that has been normalized and can be masked using a QA band—for example, Landsat Collection 1 Surface Reflectance products with a cloud mask.

  • 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 occurred. For pixels that have changed, the graph will show breaks where the fitted 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 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 that will be used for cloud, cloud shadow, and snow masking. Because cloud shadow and snow appear dark in the shortwave infrared (SWIR) band, and clouds and snow are bright in the green band, it is recommended that you mask the band indexes for the SWIR and green bands.

  • 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 intensive 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 intensive 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.

Parameters

LabelExplanationData Type
Input Multidimensional Raster

The input multidimensional raster dataset.

Raster Dataset; Raster Layer; Mosaic Dataset; Mosaic Layer; Image Service
Bands for Detecting Change
(Optional)

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.

Long
Bands for Temporal Masking
(Optional)

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.

Long
Chi-squared Threshold for Detecting Changes
(Optional)

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.

Double
Minimum Consecutive Anomaly Observations
(Optional)

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.

Long
Updating Fitting Frequency (in years)
(Optional)

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

Double

Return Value

LabelExplanationData Type
Output CCDC Analysis Raster

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

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

Raster

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

The input multidimensional raster dataset.

Raster Dataset; Raster Layer; Mosaic Dataset; Mosaic Layer; Image Service
bands
[bands,...]
(Optional)

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.

Long
tmask_bands
[tmask_bands,...]
(Optional)

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.

Long
chi_squared_threshold
(Optional)

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.

Double
min_anomaly_observations
(Optional)

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.

Long
update_frequency
(Optional)

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

Double

Return Value

NameExplanationData Type
out_ccdc_result

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

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

Raster

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
arcpy.CheckOutExtension("ImageAnalyst")


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

# Save output
changeAnalysisRaster.save(r"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
arcpy.CheckOutExtension("ImageAnalyst")

# 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
changeAnalysisRaster.save(r"C:\data\Landsat_ChangeAnalysis.crf")

Related topics