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-2025at 30-minute timesteps) with a continuous hourly archive and near-real-time feed (2026 to presentat 1-hour timesteps,~1 hourlatency), 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, andmosaic_13300_nmcover 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, andmosaic_10400_nmare carried on GOES-East ABI, GOES-West ABI, and Himawari AHI (NaNover 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 (NaNoutside 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 (NaNoutside the Asia-Pacific sector).
- All 5 satellites (~85-87% global valid pixels; 11 bands):
- Historical Western Hemisphere transitions (
2016-2018in2016_to_2025/mosaic.zarr): The2016_to_2025archive 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, and13300 nm) and sometimes scanned at 3-hourly intervals rather than every 30 minutes. During this period,mosaic_1370_nmis100% NaNglobally (0%valid),470,509,2250,6900, and10400 nmare Himawari-only (~34%valid),863,1610,7330,8590,9620, and12400 nmcover only the Meteosat and Himawari sectors (~65%valid,NaNover the Americas), and intermediate 30-minute timestamps between 3-hourly GOES scans containNaNvalues 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_nmrises 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.
- January 1, 2016 – July 10, 2017 (
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.