Announcement: All noncommercial projects registered to use Earth Engine before April 15, 2025 must verify noncommercial eligibility to maintain Earth Engine access.
Stay organized with collections
Save and categorize content based on your preferences.
Runs breakpoint detection, similar to R's strucchange::breakpoints function.
Each pixel is fit by a piecewise linear/harmonic model, of the form
Y = A + B * t + C * cos(2 * pi * season(t)) + D * sin(2 * pi * season(t)) + E * cos(4 * pi * season(t)) + F * sin(4 * pi * season(t)) + ...
In this equation, 't' is the start time of the image in the format specified by 'dateFormat', and 'season(t)' is the fractional year of that start time (see the description of dateFormat for details). The maximum order of the harmonic terms is determined by 'seasonalModelOrder'.
The result is an image containing two bands, plus two bands per band in the input:
tStart, tEnd: each of these holds a 1D array, with one entry per segment in the piecewise linear fit; each entry contains the start time of the first or last images in that segment. By default the values here are in fractional years, for easy use with the coefficients.
coefs_BANDNAME: there will be one such output band per input band. Each of these holds a 2D array, with one row per segment. The values in that row are the coefficients of the linear fit for that segment - that is, the values of A, B, C, ... for that segment. As described above, the values here are affected by 'dateFormat'
.rmse_BANDNAME: there will be one such output band per input band. This holds a 1D array, with one entry per segment. The value for each segment is the RMSE for the linear fit residuals for that segment.
Collection of images on which to detect breakpoints.
breakpointBand
String, default: null
The name of the band to use for breakpoint detection. Optional only if the images have only a single band.
seasonalModelOrder
Integer, default: 3
The order of the harmonic seasonal model.
minSpacing
Float, default: 0.15
The minimum spacing between breakpoints. If this is between 0 and 1 (exclusive), it will be interpreted as a fraction of the number of images in the collection. Otherwise, it will be interpreted as a number of samples.
maxBreaks
Integer, default: 0
The maximum number of breakpoints.
dateFormat
Integer, default: 1
The time representation to use in the results: 1 = fractional years, 2 = unix time in milliseconds. This affects the values in the tStart and tEnd bands and the 't' values used in the harmonic model. The fractional years used here and in that model are defined as the fractional number of 365.25-day years since 1 Jan 1970.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2023-10-06 UTC."],[[["\u003cp\u003eDetects breakpoints in an image collection using a piecewise linear/harmonic model, similar to R's \u003ccode\u003estrucchange::breakpoints\u003c/code\u003e function.\u003c/p\u003e\n"],["\u003cp\u003eOutputs an image with bands indicating breakpoint start/end times, model coefficients for each segment, and RMSE for each segment's fit.\u003c/p\u003e\n"],["\u003cp\u003eAllows customization of the harmonic model's order, minimum breakpoint spacing, maximum number of breakpoints, and time representation format.\u003c/p\u003e\n"],["\u003cp\u003eUses a model that incorporates a linear trend and seasonal harmonics to fit pixel values over time.\u003c/p\u003e\n"],["\u003cp\u003eThe algorithm identifies the optimal breakpoints by minimizing the residual error of the piecewise model.\u003c/p\u003e\n"]]],["The function `StructuralChangeBreakpoints` detects breakpoints in an image collection, fitting each pixel with a piecewise linear/harmonic model. Input parameters include `collection`, `breakpointBand`, `seasonalModelOrder`, `minSpacing`, `maxBreaks`, and `dateFormat`. The output image contains `tStart` and `tEnd` bands, which hold segment start and end times. Additionally, there are `coefs_BANDNAME` bands, that contain linear fit coefficients and `rmse_BANDNAME` bands with the root-mean-square error for each segment.\n"],null,["# ee.Algorithms.TemporalSegmentation.StructuralChangeBreakpoints\n\nRuns breakpoint detection, similar to R's strucchange::breakpoints function.\n\n\u003cbr /\u003e\n\nEach pixel is fit by a piecewise linear/harmonic model, of the form\n\nY = A + B \\* t + C \\* cos(2 \\* pi \\* season(t)) + D \\* sin(2 \\* pi \\* season(t)) + E \\* cos(4 \\* pi \\* season(t)) + F \\* sin(4 \\* pi \\* season(t)) + ...\n\nIn this equation, 't' is the start time of the image in the format specified by 'dateFormat', and 'season(t)' is the fractional year of that start time (see the description of dateFormat for details). The maximum order of the harmonic terms is determined by 'seasonalModelOrder'.\n\nThe result is an image containing two bands, plus two bands per band in the input:\n\n`tStart`, `tEnd`: each of these holds a 1D array, with one entry per segment in the piecewise linear fit; each entry contains the start time of the first or last images in that segment. By default the values here are in fractional years, for easy use with the coefficients.\n\n`coefs_BANDNAME`: there will be one such output band per input band. Each of these holds a 2D array, with one row per segment. The values in that row are the coefficients of the linear fit for that segment - that is, the values of A, B, C, ... for that segment. As described above, the values here are affected by 'dateFormat'\n\n.`rmse_BANDNAME`: there will be one such output band per input band. This holds a 1D array, with one entry per segment. The value for each segment is the RMSE for the linear fit residuals for that segment.\n\n| Usage | Returns |\n|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------|\n| `ee.Algorithms.TemporalSegmentation.StructuralChangeBreakpoints(collection, `*breakpointBand* `, `*seasonalModelOrder* `, `*minSpacing* `, `*maxBreaks* `, `*dateFormat*`)` | Image |\n\n| Argument | Type | Details |\n|----------------------|-----------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `collection` | ImageCollection | Collection of images on which to detect breakpoints. |\n| `breakpointBand` | String, default: null | The name of the band to use for breakpoint detection. Optional only if the images have only a single band. |\n| `seasonalModelOrder` | Integer, default: 3 | The order of the harmonic seasonal model. |\n| `minSpacing` | Float, default: 0.15 | The minimum spacing between breakpoints. If this is between 0 and 1 (exclusive), it will be interpreted as a fraction of the number of images in the collection. Otherwise, it will be interpreted as a number of samples. |\n| `maxBreaks` | Integer, default: 0 | The maximum number of breakpoints. |\n| `dateFormat` | Integer, default: 1 | The time representation to use in the results: 1 = fractional years, 2 = unix time in milliseconds. This affects the values in the tStart and tEnd bands and the 't' values used in the harmonic model. The fractional years used here and in that model are defined as the fractional number of 365.25-day years since 1 Jan 1970. |"]]