{"id":9049,"date":"2025-09-05T14:17:51","date_gmt":"2025-09-05T13:17:51","guid":{"rendered":"https:\/\/tetrasensing.co.uk\/?p=9049"},"modified":"2025-09-05T16:38:58","modified_gmt":"2025-09-05T15:38:58","slug":"decoding-googles-satellite-embeddings-in-earth-engine","status":"publish","type":"post","link":"https:\/\/tetrasensing.co.uk\/?p=9049","title":{"rendered":"Decoding Google\u2019s Satellite Embeddings in Earth Engine"},"content":{"rendered":"\n<p>I recently had the opportunity to work closely with one of the most exciting new datasets in Earth Engine: <strong>Google\u2019s Satellite Embeddings<\/strong>, produced by <strong>Google DeepMind\u2019s AlphaEarth Foundations<\/strong> model. This is not just another dataset \u2014 it represents a new way of working with Earth observation.<\/p>\n\n\n\n<p>Unlike traditional task-specific models, AlphaEarth Foundations is a <strong>general-purpose deep learning foundation model<\/strong>. It has been trained on an extraordinary variety of data sources to capture spectral, spatial, temporal, and even climatic context. The result is a set of <strong>64-dimensional embeddings<\/strong> for every pixel on Earth at <strong>10 metre resolution<\/strong>, updated annually from 2017 onwards.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">What Do Satellite Embeddings Contain?<\/h2>\n\n\n\n<p>The embeddings are vectors \u2014 64 values per pixel \u2014 that represent how that place looks when observed through multiple satellites and datasets over the course of an entire year.<\/p>\n\n\n\n<p>The model was trained with:<\/p>\n\n\n\n<ul>\n<li><strong>Optical and radar data<\/strong>: Sentinel-1 C-band SAR, Sentinel-2 multispectral, Landsat-8 optical and thermal.<\/li>\n\n\n\n<li><strong>Biophysical data<\/strong>: GEDI canopy height, ALOS PALSAR-2 radar, and global elevation datasets.<\/li>\n\n\n\n<li><strong>Geophysical and climate data<\/strong>: ERA5 climate reanalysis, GRACE gravity and mass grids.<\/li>\n\n\n\n<li><strong>Textual labels<\/strong>: auxiliary information to anchor certain patterns.<\/li>\n<\/ul>\n\n\n\n<p>Each embedding captures:<\/p>\n\n\n\n<ul>\n<li><strong>Temporal context<\/strong> \u2013 the full year\u2019s worth of observations from all these sensors.<\/li>\n\n\n\n<li><strong>Spatial context<\/strong> \u2013 information from a surrounding neighbourhood of about 1.28 km.<\/li>\n<\/ul>\n\n\n\n<p>That means two pixels with identical reflectance values but different surroundings (for example, bare soil in a field versus bare soil along a road) will have <strong>different embeddings<\/strong>.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">How Does It Work?<\/h2>\n\n\n\n<p>The model takes the massive input streams of Earth observation data and compresses them into a 64-value vector. Each pixel becomes a point in a <strong>64-dimensional unit sphere<\/strong>:<\/p>\n\n\n\n<ul>\n<li>Values range between <strong>\u20131 and +1<\/strong>.<\/li>\n\n\n\n<li>Each vector is <strong>unit length<\/strong>, making them easy to compare.<\/li>\n\n\n\n<li>They cannot be interpreted band by band. All 64 values must be used together.<\/li>\n<\/ul>\n\n\n\n<p>In Earth Engine, the embeddings are delivered as <strong>64-band images<\/strong>, tiled in <strong>150 \u00d7 150 km UTM zones<\/strong>. You can mosaic these tiles for larger regions.<\/p>\n\n\n\n<p>For me, the simplest way to think about embeddings is to compare them with <strong>Principal Component Analysis (PCA)<\/strong>: PCA reduces the dimensionality of spectral bands, while embeddings reduce an enormous multi-sensor, multi-temporal dataset into 64 values. But unlike PCA, embeddings are learned through deep learning and encode much richer context.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"683\" src=\"https:\/\/tetrasensing.co.uk\/wp-content\/uploads\/2025\/09\/embeddings-rework-1024x683.png\" alt=\"\" class=\"wp-image-9053\" srcset=\"https:\/\/tetrasensing.co.uk\/wp-content\/uploads\/2025\/09\/embeddings-rework-1024x683.png 1024w, https:\/\/tetrasensing.co.uk\/wp-content\/uploads\/2025\/09\/embeddings-rework-300x200.png 300w, https:\/\/tetrasensing.co.uk\/wp-content\/uploads\/2025\/09\/embeddings-rework-768x512.png 768w, https:\/\/tetrasensing.co.uk\/wp-content\/uploads\/2025\/09\/embeddings-rework-360x240.png 360w, https:\/\/tetrasensing.co.uk\/wp-content\/uploads\/2025\/09\/embeddings-rework.png 1536w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Working with Embeddings in Earth Engine<\/h2>\n\n\n\n<p>Using embeddings in Earth Engine feels very familiar. You filter an image collection, mosaic the tiles for your region of interest, and then you are ready to analyse.<\/p>\n\n\n\n<p>Because the dataset has already been processed:<\/p>\n\n\n\n<ul>\n<li>No cloud masking is required.<\/li>\n\n\n\n<li>No index calculation is necessary.<\/li>\n\n\n\n<li>No sensor harmonisation or data fusion is needed.<\/li>\n<\/ul>\n\n\n\n<p>You are left with a clean, analysis-ready set of features.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">What Can You Do With Them?<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"683\" src=\"https:\/\/tetrasensing.co.uk\/wp-content\/uploads\/2025\/09\/GE-embeddings-1024x683.png\" alt=\"\" class=\"wp-image-9055\" srcset=\"https:\/\/tetrasensing.co.uk\/wp-content\/uploads\/2025\/09\/GE-embeddings-1024x683.png 1024w, https:\/\/tetrasensing.co.uk\/wp-content\/uploads\/2025\/09\/GE-embeddings-300x200.png 300w, https:\/\/tetrasensing.co.uk\/wp-content\/uploads\/2025\/09\/GE-embeddings-768x512.png 768w, https:\/\/tetrasensing.co.uk\/wp-content\/uploads\/2025\/09\/GE-embeddings-360x240.png 360w, https:\/\/tetrasensing.co.uk\/wp-content\/uploads\/2025\/09\/GE-embeddings.png 1536w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">1. Unsupervised Clustering<\/h3>\n\n\n\n<p>By sampling pixels and grouping them into clusters, embeddings can reveal land cover types with <strong>remarkably clean boundaries<\/strong>. The spatial context built into the vectors removes the salt-and-pepper noise common in pixel-based classification.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">2. Crop Type Mapping<\/h3>\n\n\n\n<p>Crop mapping is normally one of the hardest problems in remote sensing, requiring time-series modelling, sensor fusion, and climate response analysis. Embeddings simplify this drastically:<\/p>\n\n\n\n<ul>\n<li>Phenology is already encoded.<\/li>\n\n\n\n<li>Both radar and optical signals are integrated.<\/li>\n\n\n\n<li>ERA5 climate data is included.<\/li>\n<\/ul>\n\n\n\n<p>With only a crop mask and aggregate crop statistics (for example, acreage per county), embeddings allow me to separate corn from soybean in Iowa with surprising accuracy \u2014 even without field labels.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">3. Surface Water Detection<\/h3>\n\n\n\n<p>Water detection can be approached by clustering embeddings and then identifying which cluster corresponds to water using an index such as NDWI. This \u201cwater detect\u201d method yields <strong>clear water boundaries<\/strong> and can capture even small water bodies.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">4. Supervised Classification<\/h3>\n\n\n\n<p>For supervised workflows, embeddings act as a drop-in replacement for raw bands. A <strong>k-Nearest Neighbour (kNN)<\/strong> classifier works particularly well, since embeddings are unit vectors in a defined space. With just a handful of high-quality samples, I can map mangroves versus water versus other land covers more accurately than with traditional inputs.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">5. Regression<\/h3>\n\n\n\n<p>When predicting continuous values (like biomass or crop yields), embeddings can be paired with a <strong>Random Forest regressor<\/strong>. Here, embeddings replace the usual stack of spectral indices and ancillary datasets.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">6. Object Detection via Similarity Search<\/h3>\n\n\n\n<p>This is perhaps the most exciting application. Because embeddings are vectors, I can compare them using <strong>cosine similarity<\/strong>.<\/p>\n\n\n\n<ul>\n<li>Select a pixel over an object of interest (a brick kiln, solar farm, or grain silo).<\/li>\n\n\n\n<li>Compute similarity between that vector and every other pixel.<\/li>\n\n\n\n<li>Pixels with high similarity scores point to other instances of the same object.<\/li>\n<\/ul>\n\n\n\n<p>This means I can detect objects across large regions <strong>without training a deep learning model<\/strong> or purchasing expensive high-resolution imagery.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">7. Change Detection<\/h3>\n\n\n\n<p>By comparing embeddings from two different years, it becomes possible to quantify changes \u2014 whether in land cover, water extent, cropping dynamics, or disturbances such as wildfires.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Why This Matters<\/h2>\n\n\n\n<p>For me, the value of satellite embeddings is clear:<\/p>\n\n\n\n<ul>\n<li><strong>No preprocessing<\/strong>: cloud masking, atmospheric correction, temporal modelling, and sensor fusion are already handled.<\/li>\n\n\n\n<li><strong>Compact and efficient<\/strong>: 64 values per pixel replace terabytes of raw imagery.<\/li>\n\n\n\n<li><strong>Flexible<\/strong>: useful for clustering, classification, regression, and similarity search.<\/li>\n\n\n\n<li><strong>Accessible<\/strong>: available directly in Earth Engine with no need for GPUs.<\/li>\n\n\n\n<li><strong>Open licence<\/strong>: free to use for both research and commercial applications. Just need to attribute.<\/li>\n<\/ul>\n\n\n\n<p>In many ways, this dataset acts like a <strong>virtual satellite<\/strong>, capturing the essence of multiple sensors and data streams in one compact representation.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Closing Thoughts<\/h2>\n\n\n\n<p>Working with <strong>Google DeepMind\u2019s AlphaEarth Foundations<\/strong> model through the Satellite Embeddings dataset feels like a turning point. Instead of wrestling with raw imagery, cloud masks, and sensor differences, I can focus on solving real problems: mapping crops, detecting water, monitoring change, or even locating individual objects.<\/p>\n\n\n\n<p>It is analysis-ready, globally consistent, and designed to make downstream Earth observation tasks more accessible. I believe embeddings will become a cornerstone for future geospatial applications \u2014 bridging the gap between AI foundation models and practical remote sensing.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I recently had the opportunity to work closely with one of the most exciting new datasets in Earth Engine: Google\u2019s Satellite Embeddings, produced by Google DeepMind\u2019s AlphaEarth Foundations model. This is not just another dataset \u2014 it represents a new way of working with Earth observation. Unlike traditional task-specific models, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":9057,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[1],"tags":[13,14,15,16],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/tetrasensing.co.uk\/index.php?rest_route=\/wp\/v2\/posts\/9049"}],"collection":[{"href":"https:\/\/tetrasensing.co.uk\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/tetrasensing.co.uk\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/tetrasensing.co.uk\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/tetrasensing.co.uk\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=9049"}],"version-history":[{"count":3,"href":"https:\/\/tetrasensing.co.uk\/index.php?rest_route=\/wp\/v2\/posts\/9049\/revisions"}],"predecessor-version":[{"id":9058,"href":"https:\/\/tetrasensing.co.uk\/index.php?rest_route=\/wp\/v2\/posts\/9049\/revisions\/9058"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/tetrasensing.co.uk\/index.php?rest_route=\/wp\/v2\/media\/9057"}],"wp:attachment":[{"href":"https:\/\/tetrasensing.co.uk\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=9049"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tetrasensing.co.uk\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=9049"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tetrasensing.co.uk\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=9049"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}