Planetary-scale answers, unlocked.
A Hands-On Guide for Working with Large-Scale Spatial Data. Learn more.
Authors
Change detection is the process of comparing two or more images of the same place, captured at different times, to find where and how the surface has changed. Ashbindu Singh's review Digital change detection techniques using remotely-sensed data (International Journal of Remote Sensing, 1989) gave the definition most papers cite. It defines change detection as identifying differences in the state of an object or phenomenon by observing it at different times. The output is a map of change, often classified by type, such as forest to bare soil or vegetation to burn scar.
In software, the term names website monitoring tools and the update cycle in frameworks such as Angular. This article covers remote sensing and geographic information systems (GIS).
In GIS, change detection compares rasters or vector layers of one area across time. Esri's guide to change detection in ArcGIS Pro groups the work into four types. Categorical change compares two classified maps. Pixel value change compares two continuous rasters. Spectral change compares values across bands. Time series change compares a stack of images. The same comparisons run as SQL or Python in cloud engines when the area grows to a state or a country.
Sun angle, season, cloud, haze, and sensor calibration also make two images differ. Those effects have to be removed first, or they show up as false change.
Landsat allows comparison back to 1972. Sentinel-2 has imaged land since 2015. The European Space Agency (ESA) Sentinel-2 mission guide gives a revisit of five days at the equator with two satellites, at up to 10 m. A revisit is the time between images of the same place. Both archives are ready to query in the Havasu catalog. Sentinel-2 seasonal mosaics serve for comparing seasons. Level-2A is the product level called L2A. The Sentinel-2 L2A scene index serves for picking dates by cloud cover.
If coregistration, radiometric normalization, or masking fails, the error shows up as false change.
Lu, Mausel, Brondizio, and Moran's review Change detection techniques (International Journal of Remote Sensing, 2004) sorted the methods of its time into seven categories. The table lists today's families.
William Malila introduced change vector analysis at Purdue's 1980 Machine Processing of Remotely Sensed Data symposium, mapping forest harvest and regrowth in northern Idaho from Landsat. Nielsen, Conradsen, and Simpson described multivariate alteration detection (MAD) (Remote Sensing of Environment, 1998). It used canonical correlation analysis, a statistical method that links combinations of two sets of variables. With it, MAD found the band combinations that differ most between two dates. Hussain and colleagues traced the move from pixel-based to object-based approaches (ISPRS Journal of Photogrammetry and Remote Sensing, 2013) as sub-meter imagery became common.
For deep learning, Daudt, Le Saux, and Boulch's Fully convolutional siamese networks for change detection (IEEE International Conference on Image Processing, 2018) set the pattern most models still follow. One shared encoder turns each date's image into features. A decoder turns the two sets of features into a change mask. Embedding distance compares annual feature vectors, lists of numbers that summarize each pixel. Google DeepMind's AlphaEarth Foundations (Brown and colleagues, 2025) is one source. It encodes each 10 m pixel as a 64-dimensional vector, a list of 64 numbers.
Change detection compares images across space and time. Change point detection is the statistics problem of finding the moments when the distribution of a single time series shifts. E. S. Page's Continuous inspection schemes (Biometrika, 1954) introduced the cumulative sum (CUSUM) test, which accumulates small deviations from an expected mean and signals a change when the sum crosses a limit. Truong, Oudre, and Vayatis's Selective review of offline change point detection methods (Signal Processing, 2020) organizes the modern methods.
The two meet in time series change detection. BFAST (Breaks For Additive Season and Trend), from Verbesselt and colleagues (Remote Sensing of Environment, 2010), splits each pixel's series into trend, seasonal, and remainder parts. It then tests for breaks. That is change point detection run once per pixel.
The Palisades Fire started on January 7, 2025, in Los Angeles County, according to the California Department of Forestry and Fire Protection (CAL FIRE) incident page. Burn severity mapping is the standard example of image differencing. Key and Benson's Normalized Burn Ratio (NBR), published by the US Department of Agriculture Forest Service in 2006, compares near-infrared and shortwave infrared reflectance. Reflectance is the share of light a surface reflects. Healthy vegetation is bright in near-infrared and dark in shortwave infrared, and burned ground reverses that. The pre-fire NBR minus the post-fire NBR is the differenced Normalized Burn Ratio (dNBR), a severity score per pixel. The same report gives the class thresholds: 0.10 for low, 0.27 for moderate-low, 0.44 for moderate-high, and 0.66 for high.
The Sentinel-2 L2A scene index in Wherobots Open Data lists every scene with its cloud cover. It links to each band as a Cloud Optimized GeoTIFF (COG), an image file that allows reading one window at a time. Sentinel-2 tile 11SLT has a scene on January 2, five days before ignition, with 3.02% cloud, and one on January 12 from the same orbit with 0.02%. WherobotsDB reads both as out-db rasters, which stay in their source files, so only the pixels inside the area of interest are fetched.
sentinel2.l2a_source_items
overture_maps_foundation.buildings_building
The query clips the three layers to a box over the fire and keeps the pixels classed 4 or 5 on both dates. It computes dNBR with RS_MapAlgebra and samples it at each Overture building footprint with RS_Value. Archive pixel values are reflectance times 10,000. NBR is a ratio, so the scale cancels and the raw values go straight into the formula:
-- Palisades Fire burn severity (dNBR) and the Overture buildings it touches, Los Angeles County WITH scenes AS ( SELECT id, assets.nir08.href AS nir, assets.swir22.href AS swir, assets.scl.href AS scl FROM wherobots_open_data.sentinel2.l2a_source_items WHERE year = 2025 AND month = 1 AND mgrs_tile = '11SLT' AND id IN ('S2A_11SLT_20250102_0_L2A', 'S2A_11SLT_20250112_0_L2A') ), aoi AS ( SELECT ST_Transform(ST_GeomFromText( 'POLYGON((-118.72 34.02, -118.48 34.02, -118.48 34.14, -118.72 34.14, -118.72 34.02))', 4326), 'EPSG:4326', 'EPSG:32611') AS geom ), bands AS ( -- B8A, B12 and SCL clipped to the box, stacked per date -- RS_Clip(raster, band, geometry, allTouched, noDataValue, crop) SELECT s.id, RS_AddBand(RS_AddBand(RS_Clip(RS_FromPath(s.nir), 1, a.geom, true, 0, true), RS_Clip(RS_FromPath(s.swir), 1, a.geom, true, 0, true), 1, 2), RS_Clip(RS_FromPath(s.scl), 1, a.geom, true, 0, true), 1, 3) AS r FROM scenes s CROSS JOIN aoi a ), pair AS ( -- bands 1 to 3: pre-fire, bands 4 to 6: post-fire SELECT /*+ BROADCAST(post) */ RS_AddBand(RS_AddBand(RS_AddBand(pre.r, post.r, 1, 4), post.r, 2, 5), post.r, 3, 6) AS r FROM bands pre JOIN bands post ON pre.id = 'S2A_11SLT_20250102_0_L2A' AND post.id = 'S2A_11SLT_20250112_0_L2A' ), dnbr AS ( -- keep SCL 4 (vegetation) and 5 (not vegetated) on both dates SELECT RS_MapAlgebra(r, 'D', 'out = ((rast[2] == 4 || rast[2] == 5) && (rast[5] == 4 || rast[5] == 5)) ? (rast[0] - rast[1]) / (rast[0] + rast[1]) - (rast[3] - rast[4]) / (rast[3] + rast[4]) : -9999.0;', -9999.0) AS d FROM pair ), area AS ( -- 20 m pixels are 0.04 ha; 0.27 starts moderate-low severity, 0.66 high SELECT RS_Width(d) AS width_px, RS_Height(d) AS height_px, RS_ZonalStats(RS_MapAlgebra(d, 'D', 'out = rast[0] >= 0.27 ? 1 : 0;'), RS_Envelope(d), 1, 'sum') * 0.04 AS ha_moderate_low_or_worse, RS_ZonalStats(RS_MapAlgebra(d, 'D', 'out = rast[0] >= 0.66 ? 1 : 0;'), RS_Envelope(d), 1, 'sum') * 0.04 AS ha_high FROM dnbr ), bldg AS ( -- broadcast the one dNBR raster to every partition of the building table SELECT /*+ BROADCAST(d) */ RS_Value(d.d, ST_Transform(ST_Centroid(b.geometry), 'EPSG:4326', 'EPSG:32611')) AS v FROM wherobots_open_data.overture_maps_foundation.buildings_building b CROSS JOIN dnbr d WHERE b.bbox.xmin > -118.72 AND b.bbox.xmax < -118.48 AND b.bbox.ymin > 34.02 AND b.bbox.ymax < 34.14 ) SELECT a.width_px, a.height_px, ROUND(a.ha_moderate_low_or_worse) AS ha_moderate_low_or_worse, ROUND(a.ha_high) AS ha_high, b.buildings, b.on_010_or_more, b.on_027_or_more FROM area a CROSS JOIN ( SELECT COUNT(*) AS buildings, SUM(CASE WHEN v >= 0.10 THEN 1 ELSE 0 END) AS on_010_or_more, SUM(CASE WHEN v >= 0.27 THEN 1 ELSE 0 END) AS on_027_or_more FROM bldg) b;
One WherobotsDB query reads all four inputs and returns one row in about three minutes. The box covers 1,119 by 683 pixels, about 22 by 14 km. Pixels at moderate-low severity or worse cover 7,549 ha (18,654 acres), and 2,941 ha reach high severity. Of 37,866 Overture buildings in the box, 8,288 sit on pixels of 0.10 or more and 3,398 on pixels of 0.27 or more.
WherobotsDB runs raster and vector in one engine; most stacks pick one. The same pattern scales to a county or a state. Select a pre-fire and post-fire scene for every Sentinel-2 tile the area touches, compute dNBR per tile, and join the results to buildings. The Spokane firestorm post runs this dNBR pattern on WherobotsDB across all of Washington. For model-based change detection, RasterFlow (Public Preview) builds image mosaics, runs computer vision models on them, and writes vector results on the same platform. Its change detection pipeline stacks several dates as model input. Its temporal embedding pipeline scores each date against the series by embedding distance. The change detection with RasterFlow notebook runs the Fields of the World model on planting- and harvest-season composites. Those outputs join to parcels, buildings, or leases in WherobotsDB. The Wherobots Model Context Protocol (MCP) Server lets an AI coding tool write the query from a plain-language request.
Tile 11SLT has 18 scene entries for December 2024, 12 for January 2025, and 11 for February 2025 in the Sentinel-2 L2A archive. Scene footprints from the 18:54 UTC pass cover about a quarter of the tile (3,100 km² of 12,059 km²). This article uses the 18:45 UTC pass, which covers the whole tile. On that pass, 2 January is the last clear scene before ignition, and 12 January and 21 February (4.98% cloud) are the clear ones after. Scene cloud cover filters dates. The pixel mask filters pixels.
Keeping only scene classification classes 4 (vegetation) and 5 (not vegetated) on both dates leaves 604,688 of the 738,733 pixels inside the box. Both scenes were almost cloud free, so the mask removes mainly water and pixels in the SCL dark area class. The fire shows in the classification layer itself: pixels classed as vegetation fell from 277,259 to 134,212, while not vegetated rose from 334,656 to 481,636.
Swapping the 12 January scene for 21 February changes the moderate-low and worse area from 7,549 to 7,480 ha, and the high class from 2,941 to 2,915 ha. Only the low class moves much, from 1,629 to 2,738 ha. The low class sits closest to the noise between dates, so report totals of moderate-low and worse. Inside pixels of 0.27 or more, mean NBR fell from 0.31 before the fire to -0.30 after, and the median dNBR there is 0.60.
One more statement over the dnbr result counts pixels per class, at 0.04 ha per 20 m pixel:
dnbr
SELECT size(filter(v, x -> x >= 0.10 AND x < 0.27)) * 0.04 AS low_ha, size(filter(v, x -> x >= 0.27 AND x < 0.44)) * 0.04 AS moderate_low_ha, size(filter(v, x -> x >= 0.44 AND x < 0.66)) * 0.04 AS moderate_high_ha, size(filter(v, x -> x >= 0.66)) * 0.04 AS high_ha FROM (SELECT RS_BandAsArray(d, 1) AS v FROM dnbr)
Of the 37,866 buildings in the box, 37,632 sit on a clear pixel. By the class of the pixel under each centroid: 29,344 below 0.10, 4,890 low, 2,719 moderate-low, 647 moderate-high, and 32 high. Most buildings in the box lie outside the scar. dNBR is a vegetation index. A pixel of roof and pavement changes less than the burned hillsides around it, so it can read low over a destroyed house. A 20 m pixel covers 400 m², and 82.6% of the footprints in the box are smaller than that, with a median of 225 m². Building damage needs imagery at under a meter and a model trained on labeled damage, as in xBD. The dNBR map shows where to run it.
By the end of the 1980s enough Landsat imagery existed for Singh's 1989 review to compare five methods. They were image differencing, ratioing, regression, principal components (a method that compresses many bands into a few), and post-classification comparison. Fifteen years later two reviews in the same journal mapped a much larger field. One was Lu and colleagues' seven categories. The other was Coppin, Jonckheere, Nackaerts, Muys, and Lambin's Digital change detection methods in ecosystem monitoring: a review (2004). It tied each method to the ecosystem questions it answers.
Most early methods produce a difference image and then need a threshold. Lorenzo Bruzzone and Diego Fernández Prieto wrote Automatic analysis of the difference image for unsupervised change detection (IEEE Transactions on Geoscience and Remote Sensing, 2000). They modeled the changed and unchanged pixels as two distributions. They then chose the threshold that minimizes error, with no training labels. Bovolo and Bruzzone extended Malila's change vector analysis in A theoretical framework for unsupervised change detection based on change vector analysis in the polar domain (2007). The magnitude of each change vector shows whether a pixel changed, and its direction shows the type of change.
Landsat data has been free since 2008, so researchers moved from two dates to every date. Zhe Zhu reviewed them in Change detection using Landsat time series: A review of frequencies, preprocessing, algorithms, and applications (ISPRS Journal of Photogrammetry and Remote Sensing, 2017). The review sorts the algorithms by what they fit to each pixel's history:
All three model each pixel's seasonal cycle. A dry August that matches past Augusts then reads as normal.
Labeled pairs made supervised models possible. Daudt, Le Saux, Boulch, and Gousseau trained convolutional networks on Sentinel-2 pairs in Urban change detection for multispectral earth observation using convolutional neural networks (IGARSS 2018). LEVIR-CD and xBD then supplied the labeled building changes and damage grades that most models train and test on. Wenzhong Shi, Min Zhang, Rui Zhang, Shanxiong Chen, and Zhao Zhan wrote the review Change detection based on artificial intelligence: State-of-the-art and challenges (Remote Sensing, 2020). It names the main limit: labeled change is rare, local, and expensive to collect.
Foundation embeddings give a change score without labels. AlphaEarth Foundations builds each pixel's vector from optical, radar, elevation, and climate inputs. So the distance between two years' vectors is a change score that needs no training data.
Key and Benson calibrated dNBR against field plots scored with the Composite Burn Index, a rating of fire effects observed on the ground. Miller and Thode's relative dNBR (Remote Sensing of Environment, 2007) divides dNBR by the square root of the absolute pre-fire NBR. With that change, sparsely vegetated land that burns completely scores as severe.
Jia Yu, Jinxuan Wu, and Mohamed Sarwat introduced GeoSpark (ACM SIGSPATIAL 2015) to run spatial joins on Apache Spark. Yu, Zongsi Zhang, and Sarwat described its partitioning and indexing design in Spatial data management in Apache Spark: the GeoSpark perspective and beyond (GeoInformatica, 2019). GeoSpark became Apache Sedona, which added raster types and map algebra, pixel-by-pixel math on rasters. With them, a change raster and a building table join in one query. Yu and Sarwat went on to found Wherobots.
A change map for one fire is a single raster subtraction. The same question for every fire, field, or parcel in a country, every five days, is a distributed join between a stack of rasters and millions of polygons. Scene selection, the comparison, and the join all change:
The Palisades Fire query shows that a change detection result depends on clean inputs, stable dates, pixel size, and an accuracy check.
Run change detection over Sentinel-2 with RasterFlow and WherobotsDB at cloud.wherobots.com.
The main change detection methods are image differencing, change vector analysis, post-classification comparison, and deep learning. Image differencing subtracts pixel or index values between dates. Change vector analysis measures how much and in which direction the values change across all bands. Post-classification comparison classifies each date and compares the labels. Deep learning networks, such as Siamese or temporal networks, output a change mask, a map of changed pixels, directly from an image stack.
Change detection needs at least two aligned images of the same area from different dates, ideally the same sensor and season, at surface reflectance level with cloud masks. Sentinel-2, Landsat, and Sentinel-1 SAR are the common open sources. Labeled change examples are needed only for supervised deep learning methods.
Object detection finds and labels things in a single image, such as buildings or vehicles. Change detection compares two or more images of the same place over time and reports what differs. Object detection can feed change detection when detections from each date are compared, but the two answer different questions.
Yes, change detection is automated in production. A pipeline loads each new scene, aligns it, and masks clouds. It compares the scene with a baseline or the previous scene. It writes change polygons to a table or an alert feed. RasterFlow runs this as a job on Sentinel-2 mosaics with either a trained model or embedding distance.
Change detection is the process of comparing two or more images of the same place, taken at different times, to find where and how the surface has changed. In remote sensing it runs on satellite, aerial, or radar imagery and outputs a map of change, such as forest loss, new buildings, flooding, or a wildfire burn scar.
Change detection techniques are grouped by what they compare. Categorical change compares two classified maps. Pixel value change, such as image differencing, compares values in one band or index. Spectral change, such as change vector analysis, compares many bands at once. Time series change, such as LandTrendr, CCDC, and BFAST, compares each image with a model of a whole stack. Deep learning models and embedding distance compare learned features instead of raw values.
Change detection in GIS is the comparison of raster or vector layers of one area across time to map what changed. Typical inputs are satellite images, land cover maps, or building footprints from two dates. The results are change rasters and polygons that join to parcels, roads, or administrative areas for reporting.
Change point detection finds the moments when the statistical properties of a time series shift. A method such as the CUSUM test, introduced by E. S. Page in 1954, accumulates small deviations from an expected value and signals a change when the sum crosses a limit. In remote sensing, BFAST and CCDC apply the same idea to each pixel’s history of observations.
Well-known examples include the Global Forest Watch tree cover loss maps and weekly deforestation alerts. Well-known examples also include the US Monitoring Trends in Burn Severity program and building damage maps after hurricanes and earthquakes. Urban growth benchmarks such as LEVIR-CD are examples too, as is the Palisades Fire burn severity map in this article.
dNBR, the differenced Normalized Burn Ratio, is the pre-fire NBR minus the post-fire NBR, where NBR compares near-infrared and shortwave infrared reflectance. Healthy vegetation is bright in near-infrared and dark in shortwave infrared, and burning reverses that, so higher dNBR means more severe burn. Key and Benson’s thresholds start at 0.10 for low severity and 0.66 for high.
What is a Geofence? How Geofencing Works, With Examples
A geofence is a virtual boundary that triggers an action when a device enters or leaves it. How geofencing works, its uses and limits, and a test on ship data.
What is Map Matching? GPS Traces, Methods and Examples
Map matching places each GPS record on the road a vehicle drove. How it works, nearest-road snapping vs hidden Markov models, and a test on Ann Arbor drives.
Geospatial Big Data: Why Analytics Is Hard to Scale
Teams struggle to scale geospatial analytics for five reasons: data volume, mixed formats, many coordinate systems, spatial joins and pipeline upkeep.
share this article
Awesome that you’d like to share our articles. Where would you like to share it to: