{
 "about": "Open sources we could read now, beyond IPMA's and MeteoAlarm's (those are incident.ipma@'s and incident.sources@'s): what each offers for Lisbon and Madeira this week, its format, size, cadence and licence, from a probe of each at the time given. No model field is kept in git (binaries and the 256 KB limit): only what exists, how to read it, and small samples under meteorology/samples/. Explaining and attributing, never forecasting: the warnings are IPMA's.",
 "by": "incident.meteorology@web-summit.dinis",
 "updated": "2026-11-11T11:36Z",
 "sources": [
  {
   "id": "src-open-meteo",
   "name": "Open-Meteo forecast API",
   "node": "data-open-meteo",
   "licence": "lic-open-meteo",
   "endpoint": "https://api.open-meteo.com/v1/forecast",
   "key": "none (non-commercial use)",
   "offers_for_lisbon_and_madeira": "Hourly gusts, mean wind, rain, pressure and some 80 other variables for any point, from each model separately: ECMWF IFS and AIFS, GFS, ICON, Météo-France (ARPEGE/AROME), UKMO and others, in one call. The only source here that gives several models for Lisbon and Funchal as plain JSON.",
   "format": "JSON (also CSV, XLSX, FlatBuffers)",
   "size": "4.3 KB for two places × six models × four variables × 48 hours (our probe)",
   "cadence": "each model as its centre publishes it (ECMWF every 6 h, GFS every 6 h, ICON every 3 to 6 h); the API follows within hours",
   "this_week": "Read 02:29 UTC on 11 November: both places answered for 11 and 12 November from all six models asked. It snaps to its grid: Lisbon was answered at 38.75 N, 9.25 W.",
   "probe_read_utc": "2026-11-11T02:29Z",
   "sample": "samples/open-meteo-lisbon-funchal.json",
   "how_to_read": "One GET with latitude, longitude, hourly=…, models=…, start_date, end_date.",
   "limits": "Free API non-commercial only, under 10,000 calls a day (its terms). A grid cell, not a station: mountains and coast are smoothed."
  },
  {
   "id": "src-metno",
   "name": "MET Norway Locationforecast 2.0",
   "node": "data-metno-api",
   "licence": "lic-metno",
   "endpoint": "https://api.met.no/weatherapi/locationforecast/2.0/compact?lat=38.72&lon=-9.14",
   "key": "none; an identifying User-Agent is required",
   "offers_for_lisbon_and_madeira": "A point forecast for anywhere on Earth: mean wind, direction, pressure, temperature, cloud, rain. Outside the Nordic area it is ECMWF's forecast, post-processed. \"complete\" adds gusts and percentiles.",
   "format": "JSON (GeoJSON)",
   "size": "3.0 KB gzipped per place, 92 time steps (our probe)",
   "cadence": "updated about hourly near the present; the model behind it four times a day",
   "this_week": "Read 02:29 UTC: Lisbon and Funchal answered; the forecast's own \"updated_at\" was 01:19 UTC. Already in our data room as forecast.json → second_models.met_no.",
   "probe_read_utc": "2026-11-11T02:29Z",
   "sample": "samples/met-norway-lisbon.json",
   "how_to_read": "One GET per point; honour Expires and If-Modified-Since.",
   "limits": "No gusts in \"compact\". Their terms ask for caching and at most 20 requests a second."
  },
  {
   "id": "src-ecmwf-open",
   "name": "ECMWF open data (real-time IFS and AIFS)",
   "node": "data-ecmwf-open",
   "licence": "lic-ecmwf-open",
   "endpoint": "https://data.ecmwf.int/forecasts/",
   "key": "none",
   "offers_for_lisbon_and_madeira": "The global fields themselves at 0.25°: gusts (10fg), wind, pressure, rain, waves, for every 3 hours out to 144 h and 6-hourly beyond, from the same model IPMA shows on its charts page. Also the 51-member ensemble and the AIFS.",
   "format": "GRIB2, with a JSON-lines .index per file",
   "size": "about 92 MB per time step for the whole globe and all fields; one field is 0.3 to 0.5 MB and can be fetched alone with an HTTP range from the .index (our probe: 85 steps in the 12 UTC run; the first field of step 24 is 500,611 bytes)",
   "cadence": "four runs a day (00, 06, 12, 18 UTC), on the portal about 7 to 8 hours after run time (12 UTC run: files dated 19:34 UTC)",
   "this_week": "Read 02:29 UTC: the portal held 7 to 10 November; the 12 UTC run of 10 November was complete (IFS: 85 steps; AIFS single: 61 steps). A field covers Lisbon and Madeira in one global grid.",
   "probe_read_utc": "2026-11-11T02:29Z",
   "sample": "samples/ecmwf-open-data-index.json",
   "how_to_read": "Read the .index, find the line for the field (param \"10fg\" for gusts), request its byte range, decode GRIB2 (ecCodes, cfgrib, or the \"ecmwf-opendata\" client).",
   "limits": "Binary GRIB never goes in git: a decoded point value with its source could. Decoding needs a GRIB library we do not have in the build. ECMWF says access to the portal is \"currently limited to between 500 and 2000 simultaneous connections\", and that from 20 October 2026 IFS data are also published at 0.1° (read on its open-data page)."
  },
  {
   "id": "src-noaa-nomads",
   "name": "NOAA NOMADS: GFS with the grib filter",
   "node": "data-noaa-nomads",
   "licence": "lic-noaa",
   "endpoint": "https://nomads.ncep.noaa.gov/cgi-bin/filter_gfs_0p25.pl",
   "key": "none",
   "offers_for_lisbon_and_madeira": "GFS at 0.25°, hourly to 120 h: the filter cuts a box and chosen variables on the server, so the gust field for the Lisbon to Madeira box is a file of under 2 KB.",
   "format": "GRIB2",
   "size": "a full file is 477 to 513 MB per time step; our cut-out (surface gust, 32 to 40 N, 18 to 8 W, one step) was 1,702 bytes",
   "cadence": "four runs a day (00, 06, 12, 18 UTC), on the server about 3.5 to 5 hours after run time (18 UTC run: first file 21:34 UTC)",
   "this_week": "Read 02:29 UTC: the 18 UTC run of 10 November was there; directories from 1 to 10 November. Public domain: the one global model we may transform with no condition at all.",
   "probe_read_utc": "2026-11-11T02:29Z",
   "how_to_read": "filter_gfs_0p25.pl?dir=/gfs.YYYYMMDD/HH/atmos&file=gfs.tHHz.pgrb2.0p25.fNNN&var_GUST=on&lev_surface=on&subregion=&toplat=40&leftlon=-18&rightlon=-8&bottomlat=32",
   "limits": "Ten days of runs are kept. Binary: decode outside git. NOAA asks for no more than 120 hits a minute."
  },
  {
   "id": "src-noaa-awc",
   "name": "NOAA Aviation Weather Center data API",
   "node": "data-awc-api",
   "licence": "lic-noaa",
   "endpoint": "https://aviationweather.gov/api/data/metar?ids=LPPT,LPMA&format=json",
   "key": "none",
   "offers_for_lisbon_and_madeira": "METAR and TAF for Lisbon (LPPT), Madeira (LPMA), Porto Santo (LPPS) and every other aerodrome: the only open observation of gusts for Lisbon.",
   "format": "JSON (also raw text, XML, GeoJSON)",
   "size": "0.9 KB for two airports (our probe)",
   "cadence": "METAR every 30 minutes, more often in bad weather; TAF every 6 hours and when amended",
   "this_week": "Read 02:29 UTC, the 02:00 reports: Madeira 200° at 27 kt, light rain, 1000 hPa; Lisbon 200° at 5 kt, 1006 hPa. Our data room reads LPPT hourly (airport.json); LPMA is not yet read there.",
   "probe_read_utc": "2026-11-11T02:29Z",
   "sample": "samples/awc-metar-lppt-lpma.json"
  },
  {
   "id": "src-dwd-open",
   "name": "DWD open data: ICON, ICON-EU",
   "node": "data-dwd-open",
   "licence": "lic-dwd",
   "endpoint": "https://opendata.dwd.de/weather/nwp/",
   "key": "none",
   "offers_for_lisbon_and_madeira": "ICON-EU (about 7 km) covers mainland Portugal and Madeira; maximum gust (VMAX_10M) and every other field, one file per variable and hour. ICON global (13 km) for the wider Atlantic.",
   "format": "GRIB2, bzip2-compressed, one file per variable and step",
   "size": "about 1.2 MB per file for ICON-EU maximum gust; 93 steps in a run (our probe)",
   "cadence": "ICON-EU: eight runs a day (every 3 h); files about 2.7 to 3.6 hours after run time (00 UTC run: 02:43 to 03:37 UTC)",
   "this_week": "Read 02:29 UTC: the folder for the 00 UTC run still held the run of 10 November (11 November's arrives after 02:43).",
   "probe_read_utc": "2026-11-11T02:29Z",
   "how_to_read": "weather/nwp/icon-eu/grib/<HH>/<variable>/icon-eu_europe_regular-lat-lon_single-level_<YYYYMMDDHH>_<step>_<VARIABLE>.grib2.bz2",
   "limits": "Only the latest run of each hour is kept (about 24 hours): to keep history, someone must copy it as it is published. Binary."
  },
  {
   "id": "src-eumetsat-view",
   "name": "EUMETSAT EUMETView (WMS) and Data Store",
   "node": "data-eumetsat",
   "licence": "lic-eumetsat-1h",
   "endpoint": "https://view.eumetsat.int/geoserver/wms?service=WMS&version=1.3.0&request=GetCapabilities",
   "key": "none for map images; a free account for the Data Store API",
   "offers_for_lisbon_and_madeira": "Meteosat imagery as map layers that can be asked for any box and time: cloud mask, cloud top height, infrared, natural colour; the storm seen from space every 5 to 15 minutes.",
   "format": "WMS/WMTS map images (PNG, JPEG); the data as NetCDF or native files through the Data Store",
   "size": "the capabilities document is 28 KB and lists 117 layer entries (our probe); one image tile is tens to hundreds of KB",
   "cadence": "Meteosat full disc every 10 minutes (third generation), rapid scan every 5",
   "this_week": "Read 02:29 UTC: the service answered. The design rule here is that no satellite image is embedded or hotlinked until the licence is read in full: text links only.",
   "probe_read_utc": "2026-11-11T02:29Z",
   "how_to_read": "GetMap with layers=<name>&bbox=…&time=…",
   "limits": "Images are binaries: never in git. Three licences apply by product and age (Core: CC BY 4.0; Meteosat level 1 an hour old or more: show what we make from it, with attribution; newer than an hour: not on a public site): see licences."
  },
  {
   "id": "src-copernicus-ems",
   "name": "Copernicus Emergency Management Service: activations",
   "node": "data-copernicus-ems",
   "licence": "lic-copernicus-ems",
   "endpoint": "https://mapping.emergency.copernicus.eu/activations/api/activations/",
   "key": "none",
   "offers_for_lisbon_and_madeira": "Flood and damage maps from satellites, made when a country's authority asks (an \"activation\"). If Portugal activates it for Charles, the flood extents would appear here.",
   "format": "JSON list; products as vector and raster files",
   "size": "3.6 KB for five activations (our probe); 1,069 activations in all",
   "cadence": "when an authority asks; maps within hours to days",
   "this_week": "Read 02:29 UTC: no activation for Storm Charles. The most recent listed was a flood in Spain of 19 October 2026; the last naming Portugal was for wildfires on 30 July 2026.",
   "probe_read_utc": "2026-11-11T02:29Z",
   "how_to_read": "GET ?limit=N; each result has code, countries, category, name, activationTime.",
   "limits": "Its products' licence was not read in full: see the licence row."
  },
  {
   "id": "src-meteofrance",
   "name": "Météo-France open data (ARPEGE, AROME)",
   "node": "data-meteofrance-open",
   "licence": "lic-meteofrance",
   "endpoint": "https://meteo.data.gouv.fr/",
   "key": "none for the files on meteo.data.gouv.fr; a free key for its API portal",
   "offers_for_lisbon_and_madeira": "ARPEGE at 0.1° over Europe reaches Portugal; AROME (1.3 km) covers France and a margin, not Lisbon or Madeira.",
   "format": "GRIB2 packages by run and group of variables",
   "size": "not probed in this pass",
   "cadence": "ARPEGE four runs a day; AROME eight",
   "this_week": "Not probed in this pass: recorded so nobody thinks it was forgotten.",
   "probe_read_utc": "2026-11-11T02:29Z"
  },
  {
   "id": "src-era5",
   "name": "ERA5 (Copernicus Climate Data Store)",
   "node": "data-era5",
   "licence": "lic-copernicus-era5",
   "endpoint": "https://cds.climate.copernicus.eu/datasets/reanalysis-era5-single-levels",
   "key": "a free account and key",
   "offers_for_lisbon_and_madeira": "The best consistent record of what the weather was, hourly, at 0.25°: for comparing Charles with earlier storms afterwards.",
   "format": "GRIB or NetCDF through the CDS API",
   "size": "about 1 MB per variable per day for a small box",
   "cadence": "daily, about five days behind real time",
   "this_week": "Not available for 10 to 12 November until about 16 November.",
   "probe_read_utc": "2026-11-11T02:29Z"
  }
 ]
}
