SatWeave

SatWeave is a global, analysis-ready dataset of multi-spectral geostationary satellite observations developed by Google DeepMind and Google Research. SatWeave harmonizes imagery from five operational geostationary satellite positions (GOES-East, GOES-West, Meteosat Prime (0°), Meteosat Indian Ocean (IODC), and Himawari) into a single global mosaic across 17 spectral bands: 7 visible, near-infrared, and shortwave-infrared reflectance bands (0 to 100 %) and 10 shortwave, water vapor, and thermal infrared brightness temperature bands (K).

Updated every hour at 0.1° (~10 km) spatial resolution with around 1 hour latency alongside a 30-minute historical archive (2016-2025), SatWeave provides the live satellite observations used to initialize WeatherNext 3 every hour and to generate near-real-time precipitation estimates in PARDIG-NRT.

Access on Cloud Storage Explore Variables

At a glance

Attribute Details
Temporal Coverage 2016 to present (2016-01-01T00:00:00 to 2025-12-31T23:30:00 UTC historical archive + 2026-01-01T00:00:00 UTC to present operational archive and live stream)
Spatial Coverage Global (90°N to 90°S [90.0° to -90.0°], 0° to 360°E; EPSG:4326 equirectangular grid; geostationary sensor coverage within approximately ±60°-65° latitude)
Spatial Resolution 0.1° (~10 km) (1801 × 3600 grid)
Temporal Resolution 1 hour (2026_to_present/ backfill and near-real-time stream, 24 timesteps/day) · 30 minutes (2016_to_2025/ historical archive, 48 timesteps/day)
Real-Time Latency ~1 hour
Variables & Spectral Bands 17 multi-spectral bands: 7 Visible, Near-IR, and SWIR reflectance (0–100 %) · 10 Shortwave, Water Vapor & Thermal IR brightness temperature (K)
Satellite Constellation GOES-East, GOES-West (NOAA) · Meteosat Prime 0°, Meteosat IODC (EUMETSAT) · Himawari (JMA)
Dimensions & Format (time, latitude, longitude) · Zarr v3 on Google Cloud Storage
Available Surfaces Google Cloud Storage (Zarr) (gs://satweave_1/)
License & Access CC BY 4.0 · Publicly accessible with any Google Cloud account (no access request form required)

Key features

  • Multi-satellite harmonization: International satellite agencies publish raw imagery in distinct map projections, calibration tables, file formats, and scan intervals (10 to 30 minutes). SatWeave reprojects, cross-calibrates, and blends overlapping views from five geostationary positions onto a uniform 0.1° global grid.
  • Multi-spectral channels: Provides 17 spectral channels spanning solar reflectance (0 to 100 %) for daytime cloud structure, aerosols, snow and ice phase, and particle size alongside water vapor and thermal infrared brightness temperature (K) for continuous day-and-night tracking of tropospheric moisture, cloud-top temperature, and deep convection.
  • Hourly updates and historical archive: Combines a multi-year historical record (2016-2025 at 30-minute timesteps) with a continuous hourly archive and near-real-time feed (2026 to present at 1-hour timesteps, ~1 hour latency), removing the need to build custom multi-agency satellite ingestion pipelines.
  • Direct input for AI weather models: Conventional numerical weather prediction analysis cycles update every 6 hours. Direct ingestion of SatWeave allows WeatherNext 3 to initialize new global forecasts every hour.

Supported spectral bands and grid schema

SatWeave provides 17 multi-spectral bands on a uniform global 0.1° (~10 km) grid indexed across (time, latitude, longitude): 7 visible, near-infrared, and shortwave-infrared top-of-atmosphere reflectance bands (0 to 100 %) and 10 shortwave, water vapor, and thermal infrared top-of-atmosphere brightness temperature bands (K).

Variable Name Central Wavelength Band & Physical Application Units / Range Constellation Coverage
Visible, Near-Infrared & Shortwave-Infrared Reflectance (7 Bands)
mosaic_470_nm 0.47 μm (470 nm) Blue visible (aerosols, dust, smoke, daytime clouds) 0–100 % GOES-East, GOES-West, Himawari (3 satellites)
mosaic_509_nm 0.51 μm (509 nm) Green visible (true-color composites, vegetation, aerosols) 0–100 % Himawari only (1 satellite)
mosaic_640_nm 0.64 μm (640 nm) Red visible (daytime clouds, fog, solar insolation, snow and ice) 0–100 % All 5 satellites
mosaic_863_nm 0.86 μm (863 nm) Near-IR vegetation band (vegetation, land and water contrast, daytime clouds) 0–100 % All 5 satellites
mosaic_1370_nm 1.37 μm (1370 nm) Near-IR cirrus band (daytime thin high-altitude cirrus clouds) 0–100 % GOES-East, GOES-West only (2 satellites)
mosaic_1610_nm 1.61 μm (1610 nm) Snow and ice SWIR (water versus ice cloud phase, snow versus cloud discrimination) 0–100 % All 5 satellites
mosaic_2250_nm 2.25 μm (2250 nm) Cloud particle size SWIR (droplet effective radius, aerosol size, hot spots) 0–100 % GOES-East, GOES-West, Himawari (3 satellites)
Shortwave, Water Vapor & Thermal Infrared Brightness Temperature (10 Bands)
mosaic_3830_nm 3.83 μm (3830 nm) Shortwave IR window (nighttime low clouds and fog, fire and hot-spot detection) K All 5 satellites
mosaic_6200_nm 6.20 μm (6200 nm) Upper-level water vapor IR (upper-tropospheric moisture, jet streams) K All 5 satellites
mosaic_6900_nm 6.90 μm (6900 nm) Mid-level water vapor IR (mid-tropospheric moisture, atmospheric winds) K GOES-East, GOES-West, Himawari (3 satellites)
mosaic_7330_nm 7.33 μm (7330 nm) Lower-level water vapor IR (lower and mid-level moisture, convection initiation) K All 5 satellites
mosaic_8590_nm 8.59 μm (8590 nm) Cloud-top phase IR (ice versus water cloud phase, dust, volcanic SO2) K All 5 satellites
mosaic_9620_nm 9.62 μm (9620 nm) Ozone absorption IR (total column ozone, stratospheric-tropospheric dynamics) K All 5 satellites
mosaic_10400_nm 10.40 μm (10400 nm) Clean longwave IR window (cloud-top temperature, surface temperature) K GOES-East, GOES-West, Himawari (3 satellites)
mosaic_11200_nm 11.20 μm (11200 nm) Standard longwave IR window (deep convection, cloud-top & sea surface temperature) K All 5 satellites
mosaic_12400_nm 12.40 μm (12400 nm) Dirty longwave IR split-window (low-level moisture, volcanic ash, sea surface temperature) K All 5 satellites
mosaic_13300_nm 13.30 μm (13300 nm) CO2 longwave IR absorption (cloud-top height assignment, air temperature) K All 5 satellites

Coordinate dimensions

Coordinate Shape & Type Grid Convention
time datetime64[ns] Observation valid timestamp in UTC (30-minute intervals in 2016_to_2025/mosaic.zarr; 1-hour intervals in 2026_to_present/<YYYYMMDDTHHMMSS>/mosaic.zarr).
latitude 1801 (float64) Global 0.1° grid ordered north-to-south from 90.0° to -90.0° (degrees_north).
longitude 3600 (float64) Global 0.1° grid in 0° to 360° convention (0.0° to 359.9°, degrees_east). Convert standard -180°..180° longitudes using lon_360 = lon % 360.

Sensor coverage and historical constellation evolution

Geostationary satellites orbit above the equator and observe up to approximately ±60°-65° latitude. High-latitude polar grid cells beyond the geostationary viewing limb, channels not carried on a given satellite sensor, and nighttime solar reflectance values are encoded as NaN:

  • Per-band satellite availability (modern constellation, November 2018 onward):
    • All 5 satellites (~85-87% global valid pixels; 11 bands): mosaic_640_nm, mosaic_863_nm, mosaic_1610_nm, mosaic_3830_nm, mosaic_6200_nm, mosaic_7330_nm, mosaic_8590_nm, mosaic_9620_nm, mosaic_11200_nm, mosaic_12400_nm, and mosaic_13300_nm cover GOES-East, GOES-West, Meteosat Prime (0°), Meteosat IODC, and Himawari.
    • 3 satellites (~69% global valid pixels; 4 bands): mosaic_470_nm, mosaic_2250_nm, mosaic_6900_nm, and mosaic_10400_nm are carried on GOES-East ABI, GOES-West ABI, and Himawari AHI (NaN over the Meteosat Prime and IODC sectors).
    • 2 satellites (~50% global valid pixels; 1 band): mosaic_1370_nm (1.37 μm cirrus band) is carried on GOES-East ABI and GOES-West ABI only (NaN outside the Americas and the eastern and central Pacific).
    • 1 satellite (~34% global valid pixels; 1 band): mosaic_509_nm (0.51 μm green visible band) is carried on Himawari AHI only (NaN outside the Asia-Pacific sector).
  • Historical Western Hemisphere transitions (2016-2018 in 2016_to_2025/mosaic.zarr): The 2016_to_2025 archive spans three distinct satellite sensor regimes in the Western Hemisphere as NOAA transitioned from legacy GOES Imagers to the GOES-R Series Advanced Baseline Imager (ABI):
    • January 1, 2016 – July 10, 2017 (21:30 UTC) — Pre-GOES-16 era: Before GOES-16 became operational, the Western Hemisphere was observed by legacy GOES-13 (East) and GOES-15 (West) Imagers, which carried only 5 spectral bands (640, 3830, 6200, 11200, and 13300 nm) and sometimes scanned at 3-hourly intervals rather than every 30 minutes. During this period, mosaic_1370_nm is 100% NaN globally (0% valid), 470, 509, 2250, 6900, and 10400 nm are Himawari-only (~34% valid), 863, 1610, 7330, 8590, 9620, and 12400 nm cover only the Meteosat and Himawari sectors (~65% valid, NaN over the Americas), and intermediate 30-minute timestamps between 3-hourly GOES scans contain NaN values over the Americas.
    • July 10, 2017 (22:00 UTC) – November 13, 2018 (23:30 UTC) — GOES-16 (East) transition: GOES-16 ABI begins covering the GOES-East sector across all 16 ABI channels at 30-minute intervals (mosaic_1370_nm rises to ~35% valid globally and the four 3-satellite ABI+AHI bands rise to ~68% valid), while the GOES-West sector remains on legacy 5-band GOES-15.
    • November 14, 2018 (00:00 UTC) onward — Full 5-satellite constellation: GOES-17 ABI (later succeeded by GOES-18 ABI) joins in the GOES-West sector, completing full multi-spectral coverage across the Western Hemisphere.

Data quality and satellite artifacts

SatWeave composites observations directly from operational weather satellites, so individual frames may contain upstream sensor and mosaicking artifacts such as missing scan lines or sectors, calibration differences along overlap boundaries, solar glint, or outlier pixels. These artifacts come from various satellites, including limb artifacts in the IR bands on the Meteosat Second Generation satellites and nighttime glare in the visible bands over their coverage regions. Consumers can inspect the data for missing (NaN) or anomalous values and filter or post-process as needed for their downstream workflow.


Accessing SatWeave data

Directory structure

SatWeave is published as Zarr v3 stores in the gs://satweave_1/ bucket:

gs://satweave_1/
└── zarr/
    ├── 2016_to_2025/
    │   └── mosaic.zarr                    # Historical archive (2016-01-01T00:00 to 2025-12-31T23:30 UTC · 30-min timesteps)
    └── 2026_to_present/                   # 2026 backfill + live hourly mosaics (~1 hour latency)
        ├── <YYYYMMDDTHHMMSS>/
        │   └── mosaic.zarr                # Single hourly mosaic · 1h timesteps · (1, 1801, 3600)
        └── ...

Both 2016_to_2025/mosaic.zarr and the hourly stores in 2026_to_present/<YYYYMMDDTHHMMSS>/mosaic.zarr share identical Zarr v3 variable attributes and float64 coordinate grids (latitude: 90.0 to -90.0, longitude: 0.0 to 359.9), so slices from the two archives can be concatenated directly along the time dimension in Xarray.

Common query recipes

Install the required Python libraries:

pip install xarray zarr obstore

1. Open an hourly mosaic and inspect the schema

Open an hourly SatWeave mosaic directly from Google Cloud Storage (or open the multi-year zarr/2016_to_2025/mosaic.zarr historical archive) using obstore and xarray:

Python

import obstore
import xarray as xr
import zarr

# Open an hourly SatWeave Zarr store on Google Cloud Storage
# (For the 2016-2025 30-minute archive, use prefix="zarr/2016_to_2025/mosaic.zarr")
gcs_store = obstore.store.GCSStore(
    bucket="satweave_1",
    prefix="zarr/2026_to_present/20260901T120000/mosaic.zarr",
)
ds = xr.open_zarr(zarr.storage.ObjectStore(gcs_store), chunks={})
print(ds)

Expected dataset structure:

<xarray.Dataset>
Dimensions:          (time: 1, latitude: 1801, longitude: 3600)
Coordinates:
  * time             (time) datetime64[ns] 2026-09-01T12:00:00
  * latitude         (latitude) float64 90.0 89.9 89.8 ... -89.8 -89.9 -90.0
  * longitude        (longitude) float64 0.0 0.1 0.2 ... 359.7 359.8 359.9
Data variables:
    mosaic_470_nm    (time, latitude, longitude) float32 dask.array<chunksize=(1, 1801, 3600), meta=np.ndarray>
    mosaic_509_nm    (time, latitude, longitude) float32 dask.array<chunksize=(1, 1801, 3600), meta=np.ndarray>
    mosaic_640_nm    (time, latitude, longitude) float32 dask.array<chunksize=(1, 1801, 3600), meta=np.ndarray>
    mosaic_863_nm    (time, latitude, longitude) float32 dask.array<chunksize=(1, 1801, 3600), meta=np.ndarray>
    mosaic_1370_nm   (time, latitude, longitude) float32 dask.array<chunksize=(1, 1801, 3600), meta=np.ndarray>
    mosaic_1610_nm   (time, latitude, longitude) float32 dask.array<chunksize=(1, 1801, 3600), meta=np.ndarray>
    mosaic_2250_nm   (time, latitude, longitude) float32 dask.array<chunksize=(1, 1801, 3600), meta=np.ndarray>
    mosaic_3830_nm   (time, latitude, longitude) float32 dask.array<chunksize=(1, 1801, 3600), meta=np.ndarray>
    mosaic_6200_nm   (time, latitude, longitude) float32 dask.array<chunksize=(1, 1801, 3600), meta=np.ndarray>
    mosaic_6900_nm   (time, latitude, longitude) float32 dask.array<chunksize=(1, 1801, 3600), meta=np.ndarray>
    mosaic_7330_nm   (time, latitude, longitude) float32 dask.array<chunksize=(1, 1801, 3600), meta=np.ndarray>
    mosaic_8590_nm   (time, latitude, longitude) float32 dask.array<chunksize=(1, 1801, 3600), meta=np.ndarray>
    mosaic_9620_nm   (time, latitude, longitude) float32 dask.array<chunksize=(1, 1801, 3600), meta=np.ndarray>
    mosaic_10400_nm  (time, latitude, longitude) float32 dask.array<chunksize=(1, 1801, 3600), meta=np.ndarray>
    mosaic_11200_nm  (time, latitude, longitude) float32 dask.array<chunksize=(1, 1801, 3600), meta=np.ndarray>
    mosaic_12400_nm  (time, latitude, longitude) float32 dask.array<chunksize=(1, 1801, 3600), meta=np.ndarray>
    mosaic_13300_nm  (time, latitude, longitude) float32 dask.array<chunksize=(1, 1801, 3600), meta=np.ndarray>

2. Plot tropical cyclone infrared cloud-top brightness temperature

Python

import matplotlib.pyplot as plt
import obstore
import xarray as xr
import zarr

gcs_store = obstore.store.GCSStore(
    bucket="satweave_1",
    prefix="zarr/2026_to_present/20260901T120000/mosaic.zarr",
)
ds = xr.open_zarr(zarr.storage.ObjectStore(gcs_store), chunks={})

# Select 11.2 µm longwave IR window band over the Western North Pacific
# (lat: 40°N to 5°N, lon: 115°E to 165°E) and convert Kelvin to Celsius
ir_temp_c = (
    ds["mosaic_11200_nm"]
    .isel(time=0)
    .sel(latitude=slice(40.0, 5.0), longitude=slice(115.0, 165.0))
    - 273.15
)

ir_temp_c.plot(
    cmap="Greys",
    cbar_kwargs={"label": "11.2 µm Brightness Temperature (°C)"},
)
plt.title("SatWeave 11.2 µm Longwave IR Window")
plt.show()


Starter guides

For an interactive Colab notebook with end-to-end sample code and multi-spectral visualization workflows:


Terms of service and disclaimers

SatWeave is an experimental satellite mosaic dataset under active research. Data and mosaic outputs are provided "as-is" for informational and research purposes and don't constitute official weather observations, forecasts, watches, or warnings. Users are responsible for their use of the data. For the protection of life and property, never rely on SatWeave as a sole source of information and always defer to official alerts and advisories from your national meteorological service and local emergency authorities.

Data licensing and terms of use

SatWeave is licensed under the Creative Commons Attribution International License, Version 4.0 (CC BY 4.0). For complete terms, liability provisions, and acceptable use restrictions, see the Terms of Service and Disclaimers page.

Acknowledgements and third-party attributions

SatWeave incorporates geostationary satellite observations from the following third-party providers:

  • Meteosat (1st, 2nd, and 3rd Generation): Includes calibrated satellite observations supplied by EUMETSAT under the Creative Commons Attribution 4.0 International (CC BY 4.0) license. Modification: Google incorporated the data into a global coverage geostationary satellite mosaic (SatWeave).
  • GOES-R Series (16, 17, 18, and 19): NOAA Geostationary Operational Environmental Satellites (GOES) data is accessed on an ongoing basis from Google Cloud Public Datasets (NOAA GOES).
  • Himawari (8 and 9): Source: Meteorological Satellite Center of Japan Meteorological Agency (JMA) via NOAA NODD on Google Cloud. Modification: Google incorporated the data into a global coverage geostationary satellite mosaic (SatWeave).

Use of the third-party materials referred to in the acknowledgements may be governed by separate terms and conditions or license provisions. Your use of third-party materials is subject to any such terms, and you should verify that you can comply with any applicable restrictions before use.


See the Glossary for definitions of meteorological terms, data formats, and Google Cloud platforms.