Live-probed 2026-08-29 inventory (GIBS extra layers, GOES/Himawari, HLS, OPERA, STAC/COG paths). Ranked drop-ins for the OSINT map; skip paid/NICFI. Does not change runtime code.
30 KiB
Free satellite feeds for the OSINT map
Builder inventory (research profile). Probed 2026-08-29 from this machine. Do not treat search snippets as live — every row below had a curl/GET (tile, GetCapabilities, STAC, or GetMap). 404 tile rows are omitted unless Capabilities/DescribeDomains still prove the layer exists (sparse fire overlays 404 on empty tiles).
Pi rules: browser L.tileLayer when CORS *; do not proxy multi-GB COGs through the Pi; STAC+SAS like existing Sentinel-1 is “backend same as S-1”; no Redis; home uplink is small.
GIBS Web Mercator REST template (no key):[2]
https://gibs.earthdata.nasa.gov/wmts/epsg3857/best/{layer}/default/{time}/{TileMatrixSet}/{z}/{y}/{x}.{jpg|png}
Omit {time} for static layers. Sub-daily GOES/Himawari accept YYYY-MM-DD or YYYY-MM-DDTHH:MI:SSZ (GIBS snaps to nearest).[2] Attribution: NASA asks clients to acknowledge GIBS/ESDIS.[1]
Live GetCapabilities epsg3857/best on 2026-08-29: 1315 Layer entries, all with a GoogleMapsCompatible_LevelN matrix, access-control-allow-origin: *.[4] GIBS documents 1000+ visualizations; many LANCE layers appear within 3.5 hours of observation.[3]
Worldview is the interactive catalog of the same tiles.[5] GIBS developer portal: Earthdata GIBS API page (HTTP 403 from this host at probe time; docs site above is the working copy).[27]
Already in the product (do not rediscover)
| id | status |
|---|---|
BlueMarble_ShadedRelief_Bathymetry |
GIBS basemap (app/gibs_map.py) |
VIIRS_SNPP_CorrectedReflectance_TrueColor |
GIBS basemap |
MODIS_Terra_CorrectedReflectance_TrueColor |
GIBS basemap |
MODIS_Aqua_CorrectedReflectance_TrueColor |
GIBS basemap |
VIIRS_SNPP_DayNightBand_ENCC |
GIBS night lights |
| FIRMS VIIRS hotspot CSV | ingest + FIRMS_MAP_KEY |
VIIRS_SNPP_Thermal_Anomalies_375m_All |
overlay in app/live_layers.py (gibs_thermal). Caps now say TMS GoogleMapsCompatible_Level8, not Level9 — the wired URL uses Level9 (will 400). |
| Sentinel-1 GRD | Planetary Computer STAC + SAS + TiTiler GET /api/map/sentinel1 |
| IEM NEXRAD / RainViewer | weather radar, not satellite |
Repo docs already flag Suomi NPP product stop 2026-11-01 — swap SNPP true color / DNB / thermal / FIRMS VIIRS_SNPP_NRT to NOAA-20/21 before then.
Ranked “add tomorrow” (sections 1–2)
Most new OSINT signal per zero dollars, browser tiles only:
- VIIRS NOAA-20 + NOAA-21 true color — SNPP replacement, same dropdown pattern.
- VIIRS false-color SWIR (
BandsM11-I2-I1,BandsM3-I3-M11, MODIS 7-2-1) — burn scars, flood, bare soil. - GIBS GOES-East/West GeoColor + Band13 IR — 10-minute weather-sat, Hormuz + CONUS.
- GIBS Himawari AHI vis + IR — same for IO/WestPac.
- HLS S30/L30 — 30 m Landsat/Sentinel-2 look without TiTiler.
- OPERA RTC Sentinel-1 + DIST-ALERT + DSWx — SAR / disturbance / flood as GIBS tiles (not COGs).
- NOAA-20/21 DNB — night lights after SNPP.
- IEM GOES XYZ — “latest” tiles, no time in the URL, already CORS
*like NEXRAD.[6] - EUMETView WMS — Meteosat/MTG for Europe–Africa–IO, CORS
*.[18] - GFW GLAD-S2 / integrated deforestation alerts — raster tiles, CORS
*whenOriginis sent.[15] - MUR SST + VIIRS/PACE/OLCI chlorophyll — ocean.
- MODIS NDVI 8-day + IMERG rain — veg / flood context.
- SRTM / ASTER GDEM color index — satellite-derived DEM, static.
- NOAA-20/21 thermal anomalies — FIRMS-shaped overlay after SNPP; empty tiles 404.
1. Drop-in GIBS WMTS
All rows: key? no. CORS *. Pi fit: browser L.tileLayer. Same time-domain helper as gibs_map.py (…/1.0.0/{id}/default/{tms}/all/all.xml).
Format of URL column: layer id + TMS + ext. Date used in probes: 2026-08-27 unless noted.
1.1 Optical (true / false / SWIR)
| id | what you see | tile pattern | cadence | max zoom | license | already have? | probe |
|---|---|---|---|---|---|---|---|
VIIRS_NOAA20_CorrectedReflectance_TrueColor |
Daily true color, JPSS-1 | …/{id}/default/{time}/GoogleMapsCompatible_Level9/{z}/{y}/{x}.jpg |
daily | 9 (~250 m) | NASA GIBS ack[1] | no (SNPP only) | 200 * jpeg |
VIIRS_NOAA21_CorrectedReflectance_TrueColor |
Daily true color, JPSS-2 | same Level9 jpg | daily | 9 | NASA GIBS[1] | no | 200 |
VIIRS_SNPP_CorrectedReflectance_BandsM11-I2-I1 |
False color SWIR (burns, flood) | Level9 jpg | daily | 9 | NASA GIBS[1] | no | 200 |
VIIRS_SNPP_CorrectedReflectance_BandsM3-I3-M11 |
False color (snow/ice/desert) | Level9 jpg | daily | 9 | NASA GIBS[1] | no | 200 |
VIIRS_NOAA20_CorrectedReflectance_BandsM11-I2-I1 |
NOAA-20 SWIR false color | Level9 jpg | daily | 9 | NASA GIBS[1] | no | 200 |
VIIRS_NOAA21_CorrectedReflectance_BandsM11-I2-I1 |
NOAA-21 SWIR false color | Level9 jpg | daily | 9 | NASA GIBS[1] | no | 200 |
MODIS_Terra_CorrectedReflectance_Bands721 |
Classic 7-2-1 burn/SWIR | Level9 jpg | daily | 9 | NASA GIBS[1] | no | 200 |
MODIS_Terra_CorrectedReflectance_Bands367 |
3-6-7 false color | Level9 jpg | daily | 9 | NASA GIBS[1] | no | 200 |
MODIS_Aqua_CorrectedReflectance_Bands721 |
Aqua 7-2-1 | Level9 jpg | daily | 9 | NASA GIBS[1] | no | 200 |
HLS_S30_Nadir_BRDF_Adjusted_Reflectance |
Harmonized Sentinel-2 30 m RGB | Level12 png | ~2–3 d when a granule exists | 12 (~30 m) | NASA GIBS[1] | no | 200 at z=5 NC; 404 on empty granules is normal. Domain from 2015–present |
HLS_L30_Nadir_BRDF_Adjusted_Reflectance |
Harmonized Landsat 30 m | Level12 png | 8–16 d | 12 | NASA GIBS[1] | no | in caps; tile 404 on empty scene |
Landsat_WELD_CorrectedReflectance_TrueColor_Global_Monthly |
Landsat WELD monthly mosaic | Level12 jpg | monthly, not NRT | 12 | NASA GIBS[1] | no | 200 |
Landsat_WELD_CorrectedReflectance_TrueColor_Global_Annual |
WELD annual | Level12 jpg | yearly | 12 | NASA GIBS[1] | no | 200 |
1.2 Weather satellites (imagery, not NEXRAD)
Sub-daily. Probe with 2026-08-27 and 2026-08-27T18:00:00Z both 200 (nearestValue).[2]
| id | what you see | TMS / ext | cadence | max zoom | already have? | probe |
|---|---|---|---|---|---|---|
GOES-East_ABI_GeoColor |
GeoColor full disk (Americas, Atlantic, Hormuz west edge) | Level7 png | ~10 min | 7 | no | 200 |
GOES-West_ABI_GeoColor |
GeoColor Pacific / CONUS west | Level7 png | ~10 min | 7 | no | 200 (also 200 over CA with ISO time) |
GOES-East_ABI_Band2_Red_Visible_1km |
ABI vis | Level7 png | ~10 min | 7 | no | 200 |
GOES-West_ABI_Band2_Red_Visible_1km |
ABI vis | Level7 png | ~10 min | 7 | no | 200 |
GOES-East_ABI_Band13_Clean_Infrared |
Clean IR window | Level6 png | ~10 min | 6 | no | 200 |
GOES-West_ABI_Band13_Clean_Infrared |
Clean IR | Level6 png | ~10 min | 6 | no | 200 |
GOES-East_ABI_FireTemp |
Fire temperature RGB | Level7 png | ~10 min | 7 | no | 200 |
GOES-West_ABI_FireTemp |
Fire temperature RGB | Level7 png | ~10 min | 7 | no | 404 on NC tile (wrong disk); use west longitudes |
GOES-East_ABI_Dust |
Dust RGB | Level7 png | ~10 min | 7 | no | 200 |
GOES-East_ABI_Air_Mass |
Air mass RGB | Level6 png | ~10 min | 6 | no | 200 |
GOES-West_ABI_Air_Mass |
Air mass RGB | Level6 png | ~10 min | 6 | no | 200 |
Himawari_AHI_Band3_Red_Visible_1km |
Himawari vis (IO / WestPac / Aus) | Level7 png | ~10 min | 7 | no | 200 (ISO time over Japan) |
Himawari_AHI_Band13_Clean_Infrared |
Himawari IR | Level6 png | ~10 min | 6 | no | 200 |
Himawari_AHI_Air_Mass |
Himawari air mass | Level6 png | ~10 min | 6 | no | 200 |
Meteosat is not in GIBS. Use section 2 EUMETView.
1.3 SAR / flood / disturbance (GIBS tiles — skip TiTiler)
| id | what you see | TMS | cadence | max zoom | already have? | probe |
|---|---|---|---|---|---|---|
OPERA_L2_Radiometric_Terrain_Corrected_SAR_Sentinel-1 |
S-1 RTC browse (better than GRD for terrain) | Level12 png | scene-based from 2025-01 | 12 | no (you have GRD COGs, not RTC tiles) | 200 at z=5; domain 2025-01-10/… |
OPERA_L3_DIST-ALERT-HLS_Color_Index |
Vegetation disturbance / clearing alert | Level12 png | ~2–3 d | 12 | no | 200 |
OPERA_L3_DIST-ANN-HLS_Color_Index |
Annual DIST | Level12 png | yearly | 12 | no | in caps |
OPERA_L3_Dynamic_Surface_Water_Extent-HLS |
Surface water / flood (HLS, 30 m) | Level12 png | ~2–3 d | 12 | no | 200 at z=5 |
OPERA_L3_Dynamic_Surface_Water_Extent-Sentinel-1 |
Surface water from S-1 (clouds irrelevant) | Level12 png | S-1 revisit | 12 | no | 200 at z=5 |
NISAR_L2_Geocoded_Polarimetric_Covariance |
NISAR early browse | Level13 png | when downlinked | 13 | no | 200 (layer exists; coverage still sparse) |
SMAP_L4_Analyzed_Surface_Soil_Moisture |
Soil moisture | Level6 png | daily | 6 | no | 200 |
SMAP_L3_Active_Sigma0_VV |
SMAP radar σ0 | Level6 png | 2–3 d | 6 | no | in caps (SMAP radar died 2015 — historical) |
No ICEYE / Capella / Umbra / ALOS PALSAR daily layers in this GIBS 3857 dump.[4] ALOS shows up as mosaics on Planetary Computer (section 3).
1.4 Thermal / fire / volcano
Sparse PNG overlays: empty tiles 404. Capabilities + DescribeDomains still 200. Frontend must tolerate 404 (Leaflet does).
| id | what you see | TMS | cadence | max zoom | already have? | probe |
|---|---|---|---|---|---|---|
VIIRS_SNPP_Thermal_Anomalies_375m_All |
375 m hotspots | Level8 png (not 9) | daily | 8 | yes, but wired as Level9 | Domain 200; many tiles 404 |
VIIRS_NOAA20_Thermal_Anomalies_375m_All |
NOAA-20 hotspots | Level8 png | daily | 8 | no | Domain 200 (2020-01-01/… through at least 2025-09); tiles 404 if no fire in tile |
VIIRS_NOAA21_Thermal_Anomalies_375m_All |
NOAA-21 hotspots | Level8 png | daily | 8 | no | same |
VIIRS_*_Thermal_Anomalies_375m_{Day,Night} |
day/night split | Level8 png | daily | 8 | no | in caps |
MODIS_{Terra,Aqua,Combined}_Thermal_Anomalies_All |
1 km MODIS fire | Level7 png | daily | 7 | no | in caps |
GOES-East_ABI_FireTemp |
geostationary fire RGB | Level7 png | ~10 min | 7 | no | 200 |
Also keep FIRMS CSV — points beat raster for click/query.
1.5 Night lights (beyond current DNB ENCC)
| id | what you see | TMS / ext | cadence | max zoom | already have? | probe |
|---|---|---|---|---|---|---|
VIIRS_NOAA20_DayNightBand |
NOAA-20 DNB | Level7 png | daily | 7 | no | 200 |
VIIRS_NOAA21_DayNightBand |
NOAA-21 DNB | Level7 png | daily | 7 | no | 200 |
VIIRS_NOAA20_DayNightBand_At_Sensor_Radiance |
radiance, not ENCC | Level8 png | daily | 8 | no | 200 |
VIIRS_SNPP_DayNightBand_At_Sensor_Radiance |
SNPP radiance | Level8 png | daily | 8 | no | 200 |
VIIRS_NOAA20_DayNightBand_AtSensor_M15 |
DNB+M15 composite jpg | Level8 jpg | daily | 8 | no | 200 |
VIIRS_Night_Lights |
Black-marble-style annual-ish | Level8 png | time-dim | 8 | no | 200 on 2026-08-27 mosaic date |
VIIRS_CityLights_2012 |
Static 2012 city lights | Level8 jpg | static (has_time=false) |
8 | no | 200 |
VIIRS_Black_Marble and VIIRS_NOAA20_DayNightBand_ENCC are in caps; ENCC-NOAA20 returned HTTP 400 on the Level8 template we tried — do not ship until DescribeDomains + a known-good date are wired. SNPP ENCC stays as the current layer.
1.6 Ocean
| id | what you see | TMS | cadence | max zoom | probe |
|---|---|---|---|---|---|
GHRSST_L4_MUR_Sea_Surface_Temperature |
1 km MUR SST | Level7 png | daily | 7 | 200 |
GHRSST_L4_MUR_Sea_Surface_Temperature_Anomalies |
SST anomaly | Level7 png | daily | 7 | in caps |
MODIS_Aqua_L3_SST_MidIR_4km_Night_Daily |
MODIS SST | Level6 png | daily | 6 | 200 |
MODIS_Aqua_L2_Chlorophyll_A |
Aqua chl-a | Level7 png | daily | 7 | 200 |
VIIRS_SNPP_L2_Chlorophyll_A |
VIIRS chl-a | Level7 png | daily | 7 | 200 |
VIIRS_NOAA20_Chlorophyll_a |
NOAA-20 chl-a | Level7 png | daily | 7 | 200 |
OCI_PACE_Chlorophyll_a |
PACE OCI chl-a | Level7 png | daily | 7 | 200 |
S3A_OLCI_Chlorophyll_a |
Sentinel-3A OLCI chl-a | Level7 png | daily | 7 | 200 |
S3B_OLCI_Chlorophyll_a |
Sentinel-3B OLCI | Level7 png | daily | 7 | in caps |
MODIS_Terra_Sea_Ice |
sea ice | Level7 png | daily | 7 | 200 |
GHRSST_L4_MUR_Sea_Ice_Concentration |
MUR ice | Level7 png | daily | 7 | in caps |
No dedicated “SAR oil slick” GIBS layer in the 3857 dump. Closest: OPERA RTC / DSWx-S1 + existing S-1 GRD TiTiler.
1.7 Vegetation / burn / flood / precip / atm
| id | what you see | TMS | cadence | max zoom | probe |
|---|---|---|---|---|---|
MODIS_Terra_NDVI_8Day |
NDVI | Level9 png | 8-day | 9 | 200 |
MODIS_Terra_L3_NDVI_16Day |
NDVI 16-day | Level9 png | 16-day | 9 | 200 |
IMERG_Precipitation_Rate |
GPM IMERG rain | Level6 png | sub-daily | 6 | 200 |
MODIS_Terra_Aerosol |
AOD | Level6 png | daily | 6 | 200 |
MODIS_Terra_Land_Surface_Temp_Day |
LST | Level7 png | daily | 7 | 200 |
VIIRS_SNPP_Land_Surface_Temp_Day |
VIIRS LST | Level7 png | daily | 7 | 200 |
AIRS_L3_Carbon_Monoxide_500hPa_Volume_Mixing_Ratio_Daily_Night |
CO (fires, industry) | Level6 png | daily | 6 | 200 |
OMI_NO2 / OMI_Aerosol_Index |
NO2 / smoke index | Level6 png | daily | 6 | OMI AI 200; several OMPS 200 |
MODIS_Water_Mask |
static water mask | Level9 png | static | 9 | 200 |
MODIS burned-area monthly (MCD64 / MODIS_Combined_L3_Burned_Area_Monthly) is in caps; our dated tile 400’d — wire only after a DescribeDomains date hits 200.
1.8 DEM (satellite-derived, tileable)
| id | what you see | TMS / ext | cadence | max zoom | probe |
|---|---|---|---|---|---|
SRTM_Color_Index |
SRTM elevation color | Level12 png | static | 12 | 200 |
ASTER_GDEM_Color_Index |
ASTER GDEM color | Level12 png | static | 12 | 200 |
ASTER_GDEM_Color_Shaded_Relief |
ASTER hillshade | Level12 jpg | static | 12 | 200 |
ASTER_GDEM_Greyscale_Shaded_Relief |
grey hillshade | Level12 jpg | static | 12 | in caps |
GEDI_ISS_L3_Canopy_Height_Mean_RH100_201904-202303 |
GEDI canopy height | Level7 png | static epoch | 7 | related GEDI biomass 200 |
Blue Marble shaded relief is already the basemap — these are extra.
2. Other XYZ / WMTS / WMS (no key)
Ranked after GIBS for signal/$; still free.
| id | what you see | provider | URL pattern | key? | CORS | cadence | max zoom / res | license / attribution | Pi fit | already have? | probe 2026-08-29 |
|---|---|---|---|---|---|---|---|---|---|---|---|
iem_goes_east_conus_ch02 |
GOES-East CONUS ABI ch02 vis, latest | Iowa State IEM | https://mesonet.agron.iastate.edu/cache/tile.py/1.0.0/goes_east_conus_ch02/{z}/{x}/{y}.png |
no | * |
~5 min cache header | TMS; vis ~1 km | Cite IEM / NOAA GOES[6][7] | browser (same stack as NEXRAD) | no | 200 image/png * |
iem_goes_east_conus_ch13 |
GOES-East CONUS IR ch13 | IEM | …/goes_east_conus_ch13/{z}/{x}/{y}.png |
no | * |
~5 min | IR ~2 km | IEM[6] | browser | no | 200 |
iem_goes_east_fulldisk_ch02 |
GOES-East full disk vis | IEM | …/goes_east_fulldisk_ch02/{z}/{x}/{y}.png |
no | * |
~5 min | full disk | IEM[6] | browser | no | 200 |
iem_goes_west_conus_ch02 |
GOES-West CONUS vis | IEM | …/goes_west_conus_ch02/{z}/{x}/{y}.png |
no | * |
~5 min | IEM[6] | browser | no | 200 | |
iem_goes_vis_1km |
Legacy name → GOES-East vis | IEM | …/goes-vis-1km/{z}/{x}/{y}.png |
no | * |
~5 min | IEM[6] | browser | no | 200 | |
| IEM GOES template | Any bird/sector/channel | IEM | goes_{east|west}_{fulldisk|conus|mesoscale-1|mesoscale-2|alaska|puertorico}_ch{01–16}[6] |
no | * |
NRT | 16 ABI bands | IEM[6] | browser | no | template documented; ch02/ch13 probed |
eumet_msg_natural |
Meteosat natural color | EUMETSAT EUMETView GeoServer | WMS https://view.eumetsat.int/geoserver/ows layer msg_fes:rgb_natural EPSG:3857 GetMap |
no | * |
NRT | SEVIRI ~3 km | EUMETSAT viz; cite EUMETSAT[18] | browser L.tileLayer.wms (not XYZ). Caps 200, 165 layer names |
no | GetMap 200 image/png * |
eumet_msg_ir108 |
Meteosat IR 10.8 | EUMETView | WMS msg_fes:ir108 |
no | * |
NRT | EUMETSAT | browser WMS | no | name in caps | |
eumet_msg_fire |
Meteosat fire | EUMETView | WMS msg_fes:fire |
no | * |
NRT | EUMETSAT | browser WMS | no | name in caps | |
eumet_mtg_ir105 |
MTG-I IR | EUMETView | WMS mtg_fd:ir105_hrfi |
no | * |
NRT | FCI | EUMETSAT | browser WMS | no | name in caps |
eumet_s3_olci_rgb |
S3 OLCI RGB mosaic | EUMETView | WMS copernicus:daily_sentinel3ab_olci_l1_rgb_fulres |
no | * |
daily | OLCI | Copernicus/EUMETSAT | browser WMS | no | name in caps |
eumet_s3_chl |
S3 chl-a | EUMETView | WMS copernicus:daily_sentinel3ab_olci_l2_chl_fullres |
no | * |
daily | Copernicus | browser WMS | no | name in caps | |
gfw_glad_s2 |
GLAD Sentinel-2 deforestation alerts | GFW tile cache | https://tiles.globalforestwatch.org/umd_glad_sentinel2_alerts/latest/default/{z}/{x}/{y}.png |
no | * if Origin header (null without it) |
~daily | raster z 0–22 documented[15] | WRI/UMD; cite GFW | browser (Leaflet sends Origin) | no | 200 image/png; with Origin → CORS * |
gfw_integrated |
Integrated deforestation alerts | GFW | https://tiles.globalforestwatch.org/gfw_integrated_alerts/latest/default/{z}/{x}/{y}.png |
no | * + Origin |
~daily | GFW | browser | no | 200 | |
gfw_tcl |
UMD tree-cover loss | GFW | https://tiles.globalforestwatch.org/umd_tree_cover_loss/latest/tcd_30/{z}/{x}/{y}.png |
no | (same host) | annual | GFW/UMD | browser | no | 200 | |
star_goes19_fd_geocolor |
GOES-19 full-disk GeoColor JPEG (not XYZ) | NOAA NESDIS STAR CDN | https://cdn.star.nesdis.noaa.gov/GOES19/ABI/FD/GEOCOLOR/latest.jpg also …/CONUS/GEOCOLOR/latest.jpg |
no | * |
minutes | full-disk / CONUS image | NOAA | not a map layer — optional lightbox. Do not tile-proxy | no | 200 jpeg *[21] |
star_goes18_fd_geocolor |
GOES-18 FD GeoColor JPEG | STAR | https://cdn.star.nesdis.noaa.gov/GOES18/ABI/FD/GEOCOLOR/latest.jpg |
no | * |
minutes | NOAA | lightbox only | no | 200 |
IEM JSON …/GOES/conus/channel02/GOES-16_C02.json is stale (generated_at 2025-04-07) but the tile names still 200. Prefer GIBS GeoColor when you need a time slider; prefer IEM when you want “whatever is latest” with zero time plumbing.[6][7]
2.x Works but not browser-direct (no CORS)
| id | what you see | URL | CORS | Pi fit | probe |
|---|---|---|---|---|---|
| RAMMB/CIRA SLIDER GeoColor tiles | GOES-19 / Himawari / JPSS loops, ~10 min | Times: https://rammb-slider.cira.colostate.edu/data/json/goes-19/full_disk/geocolor/latest_times.json (timestamps_int). Tile: https://rammb-slider.cira.colostate.edu/data/imagery/{YYYY}/{MM}/{DD}/goes-19---full_disk/geocolor/{ts}/{zz}/{yyy}_{xxx}.png e.g. …/2026/08/28/goes-19---full_disk/geocolor/20260828225021/00/000_000.png. Himawari times JSON also 200. |
none | Do not proxy tiles through the Pi. Bookmark / deep-link SLIDER instead.[19][26] | times 200; tile 200 png; CORS null |
| NICT Himawari-8 Real-time Web | 10-min full disk PNG grid | https://himawari8.nict.go.jp/img/D531106/latest.json then https://himawari8.nict.go.jp/img/D531106/2d/550/{YYYY}/{MM}/{DD}/{HHMMSS}_{x}_{y}.png |
none | same — no Pi proxy | latest.json 200; tile 200 png; CORS null[22] |
| OpenAerialMap | Per-scene TMS of open UAV/sat | https://api.openaerialmap.org/meta → properties.tms |
CORS only https://map.openaerialmap.org |
not usable from the dashboard origin without a proxy; opportunistic, not a global basemap[23][25] | meta 200 |
| USGS LandsatLook STAC | Landsat C2 STAC | https://landsatlook.usgs.gov/stac-server |
CORS locked to https://landsatlook.usgs.gov/stac-server |
backend-only if ever; prefer Earth Search / PC / GIBS HLS[24] | collections + search 200 |
NOAA CoastWatch ERDDAP WMS (jplMURSST41) |
MUR SST WMS | https://coastwatch.pfeg.noaa.gov/erddap/wms/jplMURSST41/request |
mixed | flaky: GetCapabilities 200 earlier, 503 on later GetMap/GetCapabilities. Prefer GIBS MUR | 503 on 2nd pass |
RainViewer satellite.infrared |
would be IR sat frames | https://api.rainviewer.com/public/weather-maps.json |
* |
empty list ("infrared": []) at probe time — do not ship. Radar path already in product[20] |
JSON 200, satellite IR empty |
3. STAC / COG (TiTiler, same pattern as Sentinel-1)
Do not stream COGs through the Pi for a basemap. Viewport bbox + short datetime window + SAS/public HTTPS + existing TiTiler. Prefer GIBS HLS / OPERA tiles (section 1) when a browse PNG is enough.
| id | what you see | provider | STAC | key? | CORS | cadence | res | license | Pi fit | already have? | probe |
|---|---|---|---|---|---|---|---|---|---|---|---|
sentinel-2-l2a (Earth Search) |
S2 L2A COGs, public HTTPS | Element 84 / AWS Open Data | https://earth-search.aws.element84.com/v1 collections: sentinel-2-l2a, sentinel-2-c1-l2a, sentinel-2-l1c, sentinel-2-pre-c1-l2a, sentinel-1-grd, landsat-c2-l2, naip, cop-dem-glo-30, cop-dem-glo-90[8][9] |
no | STAC * |
S2 ~5 d | 10 m | Copernicus open; AWS public bucket HTTPS (not requester-pays for these COGs)[9] | backend same as S-1: search → TCI/visual COG → TiTiler. Live item S2A_40RCP_20260827_0_L2A href https://sentinel-cogs.s3.us-west-2.amazonaws.com/…/TCI.tif |
no | collections + search 200 * |
sentinel-2-l2a (Planetary Computer) |
same S2 on Azure | Microsoft PC | https://planetarycomputer.microsoft.com/api/stac/v1/collections/sentinel-2-l2a |
SAS token (unsigned search works) | STAC * |
~5 d | 10 m | Copernicus; Azure blob needs SAS like current S-1 | backend same as S-1 | no | collection + search 200 * (136 collections listed)[10][11] |
sentinel-1-rtc |
S-1 IW RTC γ0 COGs | PC / Catalyst | /collections/sentinel-1-rtc |
PC account required to retrieve SAS for RTC blobs[12] | STAC * |
IW land | ~10 m pixels | CC BY 4.0[12] | backend same as S-1 plus PC login for SAS. Prefer GIBS OPERA RTC tiles if browse is enough | no | collection 200; search item S1D_IW_GRDH_…_rtc assets vv,vh,tilejson,rendered_preview |
sentinel-1-grd (PC) |
GRD | PC | /collections/sentinel-1-grd |
SAS | * |
6–12 d | Copernicus | already have | yes | 200 | |
sentinel-1-grd (Earth Search) |
GRD on AWS | E84 | /collections/sentinel-1-grd |
requester-pays s3:// URLs per E84 README[9] | * |
Copernicus | worse than PC for the Pi (AWS creds) | no | collection 200 | ||
landsat-c2-l2 |
Landsat 8/9 SR | E84 + PC | both catalogs | no / SAS | * |
8–16 d | 30 m | USGS public | backend TiTiler; or just use GIBS HLS | no | both 200 |
hls2-s30 / hls2-l30 |
HLS v2 COGs | PC | /collections/hls2-s30, hls2-l30 |
SAS | * |
2–3 d | 30 m | NASA | prefer GIBS HLS tiles | no | collections 200 |
goes-cmi |
GOES Cloud & Moisture Imagery COGs | PC | /collections/goes-cmi |
SAS | * |
5–10 min | ABI | NOAA | overkill vs GIBS/IEM tiles | no | collection 200 |
modis-14A1-061 / modis-64A1-061 |
MODIS fire / burned area | PC | /collections/modis-14A1-061, modis-64A1-061 |
SAS | * |
daily / monthly | 1 km / 500 m | NASA | prefer GIBS fire tiles + FIRMS | no | 200 |
alos-palsar-mosaic / alos-fnf-mosaic |
ALOS PALSAR yearly mosaic / forest-nonforest | PC | those collection ids | SAS | * |
annual | 25 m | JAXA (check collection) | backend mosaic, not live SAR | no | 200 |
nasadem / cop-dem-glo-30 |
DEM COGs | PC + E84 | nasadem, cop-dem-glo-30 |
public / SAS | * |
static | 30 m | NASA / Copernicus | prefer GIBS SRTM/ASTER tiles | no | 200 |
naip |
USDA NAIP aerial (CONUS) | E84 + PC | naip |
no | * |
leaf-on, not NRT | ~0.6 m | USDA | CONUS only; huge. Optional TiTiler | no | 200 |
io-lulc-annual-v02 |
10 m land cover | PC | io-lulc-annual-v02 |
SAS | * |
annual | 10 m | various | overlay, not sat photo | no | 200 |
CDSE sentinel-2-l2a / sentinel-1-grd |
Copernicus Dataspace STAC | ESA CDSE | https://stac.dataspace.copernicus.eu/v1/collections/sentinel-2-l2a (lowercase ids work; SENTINEL-2 404) |
free account for many assets | CORS none | same as ESA | Copernicus | backend only; Earth Search/PC easier on a Pi | no | collection 200, CORS null. List endpoint is paginated (first page was CLMS burned-area COGs)[14] |
PC catalog also has Sentinel-3 OLCI/SLSTR NetCDF, Sentinel-5P, GOES-GLM — NetCDF is a bad TiTiler citizen; use GIBS/EUMETView for those.
4. Free-account / license-gated (no card this week)
| id | note | why not a dropdown tomorrow |
|---|---|---|
| Microsoft PC SAS for RTC (and some blobs) | “A Planetary Computer account is required to retrieve SAS tokens to read the RTC data.”[12] | Search is open; read needs an account. GRD path you already have may not need this. |
Copernicus Data Space (stac.dataspace.copernicus.eu) |
STAC search 200 without cookie; no CORS; downloads often need a free CDSE login | Use Earth Search/PC unless you want official ESA provenance |
| JAXA P-Tree / Himawari Monitor | Himawari standard data, account | NICT/GIBS already cover browse |
| EUMETSAT Data Store | full MTG/MSG granules | EUMETView WMS is the browse path |
| FIRMS map key | already in product | add VIIRS_NOAA20_NRT / VIIRS_NOAA21_NRT before SNPP sunset |
| USGS ERS / EarthExplorer | Landsat/ASTER download login | GIBS HLS + Earth Search cover browse |
| Planet Tropical Forest Observatory | paid successor after NICFI | see skip |
5. Skip / costs money / dead
| id | why |
|---|---|
| NICFI / Planet tropical mosaics (free) | Free NICFI phase ended 1 Apr 2025. Removed from GFW and Collect Earth Online. Successor is Planet Tropical Forest Observatory (subscription) or a future NICFI re-compete.[16][17] PC collections planet-nicfi-analytic / planet-nicfi-visual still exist but assets are RFP winners only + proprietary PLA.[13] |
| Sentinel Hub (paid tiers) | billed processing units |
| Google Earth Engine | billing project |
| Maxar / Planet commercial | $ |
| ICEYE commercial | no free global tile/STAC found this pass |
| Umbra / Capella / Maxar open data STAC | catalogs 200 (maxar-opendata, umbra-open-data-catalog) but disaster events only, not a standing layer |
| Esri World Imagery / Clarity | tiles 200 CORS * — ToS not a free basemap we should wrap |
| Mapbox / Google satellite | key + ToS |
| GEE Dynamic World / NICFI in EE | EE billing |
nowcoast.noaa.gov |
HTTP 403 |
FIRMS WMS (firms.modaps.eosdis.nasa.gov/wms/…) |
HTTP 404 — use CSV + GIBS |
| RainViewer satellite IR | payload empty[20] |
| CoastWatch ERDDAP | 503 at probe; GIBS MUR replaces SST |
| Proxying RAMMB or NICT tiles | no CORS; would soak the home uplink |
Implementation notes for builders
- GIBS dropdown: reuse
MAP_LAYERSinapp/gibs_map.py. New rows are{id, title, tms, format, has_time, max_zoom}. Time-domain fetch already exists. - SNPP sunset: NOAA-20/21 true color, DNB, thermal, FIRMS datasets first. SNPP true color can stay as fallback until 2026-11-01.
- Fix thermal TMS: caps say
GoogleMapsCompatible_Level8forVIIRS_*_Thermal_Anomalies_375m_*. Level9 GetTile is HTTP 400 XML. - GOES time: either GIBS
{time}ISO + existing date slider, or IEM “latest” XYZ with no time (simpler, CONUS/FD only). - HLS / OPERA: empty granules 404 — same as “today’s MODIS isn’t ingested yet”. Clamp latest date via DescribeDomains like current daily mosaics.
- Do not add TiTiler S2 as a global basemap. 10 m COGs will thrash the Pi. GIBS HLS Level12 is the browse path; Earth Search TCI is a “inspect this viewport” action like S-1.
- EUMETView:
L.tileLayer.wmsagainsthttps://view.eumetsat.int/geoserver/ows, layersmsg_fes:rgb_natural/msg_fes:ir108. Caps CORS*. - GFW: send browser Origin (Leaflet does). No key.
- Attribution strings: NASA GIBS acknowledgment[1]; IEM; EUMETSAT; GFW/UMD; NOAA STAR.
Probe stats (this run)
- GIBS WMTS caps: 5 796 177 bytes, CORS
*, 1315 layers.[4] - Curated GIBS GetTile: 78/90 HTTP 200 first batch; extra GOES/DNB/HLS/OPERA/ocean 200 as tabulated.
- Earth Search collections (complete list):
sentinel-2-pre-c1-l2a,cop-dem-glo-30,naip,cop-dem-glo-90,landsat-c2-l2,sentinel-2-l2a,sentinel-2-l1c,sentinel-2-c1-l2a,sentinel-1-grd.[8] - Planetary Computer: 136 collections; S-1 RTC CC-BY-4.0.[11][12]
Raw probe JSON lives next to this file in the kanban workspace (gibs_probes.json, wave2_probes.json, wave3_probes.json, gibs_all_layers.json).
Sources
[1] https://nasa-gibs.github.io/gibs-api-docs [2] https://nasa-gibs.github.io/gibs-api-docs/access-basics [3] https://nasa-gibs.github.io/gibs-api-docs/available-visualizations [4] https://gibs.earthdata.nasa.gov/wmts/epsg3857/best/1.0.0/WMTSCapabilities.xml [5] https://worldview.earthdata.nasa.gov [6] https://mesonet.agron.iastate.edu/ogc [7] https://mesonet.agron.iastate.edu/GIS/goes.phtml [8] https://earth-search.aws.element84.com/v1/collections [9] https://github.com/Element84/earth-search [10] https://planetarycomputer.microsoft.com/catalog [11] https://planetarycomputer.microsoft.com/api/stac/v1/collections [12] https://planetarycomputer.microsoft.com/dataset/sentinel-1-rtc [13] https://planetarycomputer.microsoft.com/dataset/planet-nicfi-analytic [14] https://stac.dataspace.copernicus.eu/v1/collections [15] https://tiles.globalforestwatch.org [16] https://www.collect.earth/planet-imagery-via-nicfi-is-no-longer-available-on-ceo [17] https://www.globalforestwatch.org/blog/data-and-tools/planet-imagery-changes-gfw [18] https://view.eumetsat.int/geoserver/ows?service=WMS&request=GetCapabilities [19] https://rammb-slider.cira.colostate.edu [20] https://api.rainviewer.com/public/weather-maps.json [21] https://cdn.star.nesdis.noaa.gov/GOES19/ABI/FD/GEOCOLOR/latest.jpg [22] https://himawari8.nict.go.jp [23] https://api.openaerialmap.org/meta?limit=1 [24] https://landsatlook.usgs.gov/stac-server/collections [25] https://openaerialmap.org [26] https://bellingcat.gitbook.io/toolkit/more/all-tools/rammb-slider [27] https://www.earthdata.nasa.gov/engage/open-data-services-software/earthdata-developer-portal/gibs-api