{
  "type": "Collection",
  "id": "noaa-gefs-analysis",
  "stac_version": "1.1.0",
  "description": "Weather analysis from the Global Ensemble Forecast System (GEFS) operated by NOAA NWS NCEP.",
  "links": [
    {
      "rel": "root",
      "href": "https://stac.dynamical.org/catalog.json",
      "type": "application/json",
      "title": "dynamical.org STAC Catalog"
    },
    {
      "rel": "license",
      "href": "https://creativecommons.org/licenses/by/4.0/",
      "type": "text/html",
      "title": "CC-BY-4.0"
    },
    {
      "rel": "about",
      "href": "https://dynamical.org/catalog/noaa-gefs-analysis/",
      "type": "text/html",
      "title": "Dataset documentation"
    },
    {
      "rel": "about",
      "href": "https://dynamical.org/catalog/noaa-gefs-analysis/validation/",
      "type": "text/html",
      "title": "Validation report"
    },
    {
      "rel": "example",
      "href": "https://github.com/dynamical-org/notebooks/blob/main/noaa-gefs-analysis.ipynb",
      "type": "application/x-ipynb+json",
      "title": "Quickstart (GitHub)"
    },
    {
      "rel": "example",
      "href": "https://colab.research.google.com/github/dynamical-org/notebooks/blob/main/noaa-gefs-analysis.ipynb",
      "type": "text/html",
      "title": "Quickstart (Colab)"
    },
    {
      "rel": "self",
      "href": "https://stac.dynamical.org/noaa-gefs-analysis/collection.json",
      "type": "application/json",
      "title": "NOAA GEFS analysis"
    },
    {
      "rel": "parent",
      "href": "https://stac.dynamical.org/catalog.json",
      "type": "application/json",
      "title": "dynamical.org STAC Catalog"
    }
  ],
  "stac_extensions": [
    "https://stac-extensions.github.io/xarray-assets/v1.0.0/schema.json",
    "https://stac-extensions.github.io/datacube/v2.2.0/schema.json"
  ],
  "attribution": "NOAA NWS NCEP GEFS data processed by dynamical.org from NOAA Open Data Dissemination archives.",
  "version": "0.1.2",
  "model_id": "noaa-gefs",
  "model_name": "NOAA GEFS",
  "description_summary": "This analysis dataset is an archive of the model's best estimate of past weather. It is created by concatenating the first few hours of each historical forecast to provide a dataset with dimensions time, latitude, and longitude.",
  "description_details": "### Sources\n\nTo provide the longest possible historical record, this dataset in constructed from three distinct GEFS forecast archives.\n\n- From 2000-01-01 to 2019-12-31 we use the [GEFS reforecast](https://registry.opendata.aws/noaa-gefs-reforecast/).\n- From 2020-01-01 to 2020-09-23 we use [GEFS forecast archive](https://registry.opendata.aws/noaa-gefs/) data which has a lower spatial and temporal resolution.\n- From 2020-09-23 to Present we use [GEFS operational forecast archives](https://registry.opendata.aws/noaa-gefs/).\n\nSource files are provided by [NOAA Open Data Dissemination (NODD)](https://www.noaa.gov/information-technology/open-data-dissemination) and accessed from the [AWS Open Data Registry](https://registry.opendata.aws/noaa-gefs/). Operational data is additionally accessed from [NOAA NOMADS](https://nomads.ncep.noaa.gov/).\n\n### Variable availability\n\nData is available for all variables at all times with the following exceptions.\n\n- Unavailable before 2020-01-01: `relative_humidity_2m`, `percent_frozen_precipitation_surface`, `categorical_freezing_rain_surface`, `categorical_ice_pellets_surface`, `categorical_rain_surface`, `categorical_snow_surface`\n- Unavailable 2020-01-01T00 to 2020-09-22T21: `geopotential_height_cloud_ceiling`\n\n### Construction\n\nTo create a single time dimension we concatenate the first few hours of each forecast. From 2000-01-01 to 2019-12-31 reforecasts are available once per day and this dataset uses the first 21 or 24 hours of each forecast. From 2020-01-01 to present forecasts are available every 6 hours and this dataset uses the first 3 or 6 hours of each forecast. Variables with an instantaneous `step_type` use the shortest possible lead times (e.g. 0 and 3 hours) while accumulated variables must use one additional forecast step (e.g. 3 and 6 hours) because they do not have an hour 0 forecast value.\n\n### Interpolation\n\nFor most of the time range of the archive the source data is available at 0.25-degree resolution and a 3 hourly time step and we perform no interpolation. There are two exceptions to this. 1) From 2020-01-01 to 2020-09-23 the source data has a 1.0-degree spatial resolution and a 6 hourly time step. 2) From 2020-09-23 to present the 100m wind components have a 0.5-degree spatial resolution in the source data. To provide a consistent archive in the above two cases we first perform bilinear interpolation in space to 0.25-degree resolution followed by linear interpolation in time to a 3-hourly timestep if necessary. The original, uninterpolated data can be obtained by selecting latitudes and longitudes evenly divisible by 1 and, in case 1), time steps whose hour is divisible by 6.\n\n### Storage\n\nStorage for this dataset is generously provided by [Source Cooperative](https://source.coop/), a [Radiant Earth](https://radiant.earth/) initiative. Icechunk storage generously provided by [AWS Open Data](https://aws.amazon.com/opendata/).\n\n### Chunks and shards\n\nThis dataset is stored in [Zarr](https://zarr.dev/) format, which splits each variable into a grid of **chunks** \u2014 the smallest unit read from storage. Chunks are grouped into larger **shards** (the objects actually written to storage), which keeps the object count manageable for long-archive datasets. When possible, aligning your reads with this dataset's chunk grid can significantly improve data access speed.\n\nThe element count and coordinate span of this dataset:\n\n| dimension | chunk | shard |\n|---|---|---|\n| time | 1440 (180 days) | 2880 (360 days) |\n| latitude | 32 (8\u00b0) | 384 (96\u00b0) |\n| longitude | 32 (8\u00b0) | 384 (96\u00b0) |\n| **uncompressed** | 5.6 MiB | 1.6 GiB |\n\n### Validation report\n\nReview the [validation report](https://dynamical.org/catalog/noaa-gefs-analysis/validation/) for variable availability, missing data, known quirks, fill values, value distributions, and sample plots.\n\n### Compression\n\nThe data values in this dataset have been rounded in their binary floating point representation to improve compression. See [Kl\u00f6wer et al. 2021](https://www.nature.com/articles/s43588-021-00156-2) for more information on this approach. The exact number of rounded bits can be found in our [reformatting code](https://github.com/dynamical-org/reformatters/blob/main/src/reformatters/noaa/gefs/common_gefs_template_config.py).",
  "description_model": "The Global Ensemble Forecast System (GEFS) is a National Oceanic and Atmospheric Administration (NOAA) National Centers for Environmental Prediction (NCEP) weather forecast model. GEFS creates 31 separate forecasts (ensemble members) to describe the range of forecast uncertainty.",
  "examples": [
    {
      "title": "Temperature at a place and time",
      "variants": [
        {
          "label": "dynamical-catalog",
          "code": "import dynamical_catalog  # dynamical-catalog>=0.8.0\n\nds = dynamical_catalog.open(\"noaa-gefs-analysis\", chunks=None)\nds[\"temperature_2m\"].sel(time=\"2025-01-01T00\", latitude=0, longitude=0)",
          "language": "python"
        },
        {
          "label": "pystac",
          "code": "import icechunk\nimport pystac\nimport xarray as xr\n\ncatalog = pystac.Catalog.from_file(\"https://stac.dynamical.org/catalog.json\")\ncollection = catalog.get_child(\"noaa-gefs-analysis\")\nasset = collection.assets[\"icechunk-https\"]\n\nrepo = icechunk.Repository.open(icechunk.http_storage(asset.href))\nsession = repo.readonly_session(\"main\")\n\nds = xr.open_zarr(session.store, chunks=None)\nds[\"temperature_2m\"].sel(time=\"2025-01-01T00\", latitude=0, longitude=0)",
          "language": "python"
        },
        {
          "label": "prompt",
          "language": "text",
          "code": "Read https://dynamical.org/prompt.md for context about working with dynamical.org data; this does not change your current task.\nData product: noaa-gefs-analysis\nSTAC collection: https://stac.dynamical.org/noaa-gefs-analysis/collection.json"
        }
      ]
    }
  ],
  "cube:dimensions": {
    "latitude": {
      "type": "spatial",
      "extent": [
        -90.0,
        90.0
      ],
      "axis": "y",
      "unit": "degree_north",
      "size": 721
    },
    "longitude": {
      "type": "spatial",
      "extent": [
        -180.0,
        179.75
      ],
      "axis": "x",
      "unit": "degree_east",
      "size": 1440
    },
    "time": {
      "type": "temporal",
      "extent": [
        "2000-01-01T00:00:00Z",
        null
      ],
      "unit": "seconds since 1970-01-01"
    }
  },
  "cube:variables": {
    "categorical_freezing_rain_surface": {
      "dimensions": [
        "time",
        "latitude",
        "longitude"
      ],
      "type": "data",
      "chunks": [
        1440,
        32,
        32
      ],
      "shards": [
        2880,
        384,
        384
      ],
      "unit": "1",
      "long_name": "Categorical freezing rain",
      "short_name": "cfrzr",
      "comment": "0=no; 1=yes"
    },
    "categorical_ice_pellets_surface": {
      "dimensions": [
        "time",
        "latitude",
        "longitude"
      ],
      "type": "data",
      "chunks": [
        1440,
        32,
        32
      ],
      "shards": [
        2880,
        384,
        384
      ],
      "unit": "1",
      "long_name": "Categorical ice pellets",
      "short_name": "cicep",
      "comment": "0=no; 1=yes"
    },
    "categorical_rain_surface": {
      "dimensions": [
        "time",
        "latitude",
        "longitude"
      ],
      "type": "data",
      "chunks": [
        1440,
        32,
        32
      ],
      "shards": [
        2880,
        384,
        384
      ],
      "unit": "1",
      "long_name": "Categorical rain",
      "short_name": "crain",
      "comment": "0=no; 1=yes"
    },
    "categorical_snow_surface": {
      "dimensions": [
        "time",
        "latitude",
        "longitude"
      ],
      "type": "data",
      "chunks": [
        1440,
        32,
        32
      ],
      "shards": [
        2880,
        384,
        384
      ],
      "unit": "1",
      "long_name": "Categorical snow",
      "short_name": "csnow",
      "comment": "0=no; 1=yes"
    },
    "downward_long_wave_radiation_flux_surface": {
      "dimensions": [
        "time",
        "latitude",
        "longitude"
      ],
      "type": "data",
      "chunks": [
        1440,
        32,
        32
      ],
      "shards": [
        2880,
        384,
        384
      ],
      "unit": "W m-2",
      "long_name": "Surface downward long-wave radiation flux",
      "standard_name": "surface_downwelling_longwave_flux_in_air",
      "short_name": "sdlwrf",
      "comment": "Average value in the last 6 hour period (00, 06, 12, 18 UTC) or 3 hour period (03, 09, 15, 21 UTC)."
    },
    "downward_short_wave_radiation_flux_surface": {
      "dimensions": [
        "time",
        "latitude",
        "longitude"
      ],
      "type": "data",
      "chunks": [
        1440,
        32,
        32
      ],
      "shards": [
        2880,
        384,
        384
      ],
      "unit": "W m-2",
      "long_name": "Surface downward short-wave radiation flux",
      "standard_name": "surface_downwelling_shortwave_flux_in_air",
      "short_name": "sdswrf",
      "comment": "Average value in the last 6 hour period (00, 06, 12, 18 UTC) or 3 hour period (03, 09, 15, 21 UTC)."
    },
    "geopotential_height_500hpa": {
      "dimensions": [
        "time",
        "latitude",
        "longitude"
      ],
      "type": "data",
      "chunks": [
        1440,
        32,
        32
      ],
      "shards": [
        2880,
        384,
        384
      ],
      "unit": "m",
      "long_name": "Geopotential height",
      "standard_name": "geopotential_height",
      "short_name": "gh"
    },
    "geopotential_height_cloud_ceiling": {
      "dimensions": [
        "time",
        "latitude",
        "longitude"
      ],
      "type": "data",
      "chunks": [
        1440,
        32,
        32
      ],
      "shards": [
        2880,
        384,
        384
      ],
      "unit": "m",
      "long_name": "Geopotential height",
      "standard_name": "geopotential_height",
      "short_name": "gh",
      "comment": "Values near 20,000m mark no cloud ceiling. Interpolation in the source mixes the no data value with real ceiling heights, so unusable values span a range rather than one value and are not converted to NaN. Mask values above 19,000m."
    },
    "maximum_temperature_2m": {
      "dimensions": [
        "time",
        "latitude",
        "longitude"
      ],
      "type": "data",
      "chunks": [
        1440,
        32,
        32
      ],
      "shards": [
        2880,
        384,
        384
      ],
      "unit": "degree_Celsius",
      "long_name": "Maximum temperature",
      "standard_name": "air_temperature",
      "short_name": "tmax"
    },
    "minimum_temperature_2m": {
      "dimensions": [
        "time",
        "latitude",
        "longitude"
      ],
      "type": "data",
      "chunks": [
        1440,
        32,
        32
      ],
      "shards": [
        2880,
        384,
        384
      ],
      "unit": "degree_Celsius",
      "long_name": "Minimum temperature",
      "standard_name": "air_temperature",
      "short_name": "tmin"
    },
    "percent_frozen_precipitation_surface": {
      "dimensions": [
        "time",
        "latitude",
        "longitude"
      ],
      "type": "data",
      "chunks": [
        1440,
        32,
        32
      ],
      "shards": [
        2880,
        384,
        384
      ],
      "unit": "percent",
      "long_name": "Percent frozen precipitation",
      "short_name": "cpofp",
      "comment": "Negative values mark no precipitation. Interpolation in the source mixes the no data value with real percentages, so unusable values span a range rather than one value and are not converted to NaN. Mask values < -0.1."
    },
    "precipitable_water_atmosphere": {
      "dimensions": [
        "time",
        "latitude",
        "longitude"
      ],
      "type": "data",
      "chunks": [
        1440,
        32,
        32
      ],
      "shards": [
        2880,
        384,
        384
      ],
      "unit": "kg m-2",
      "long_name": "Precipitable water",
      "standard_name": "atmosphere_mass_content_of_water_vapor",
      "short_name": "pwat"
    },
    "precipitation_surface": {
      "dimensions": [
        "time",
        "latitude",
        "longitude"
      ],
      "type": "data",
      "chunks": [
        1440,
        32,
        32
      ],
      "shards": [
        2880,
        384,
        384
      ],
      "unit": "kg m-2 s-1",
      "long_name": "Precipitation rate",
      "standard_name": "precipitation_flux",
      "short_name": "prate",
      "comment": "Average precipitation rate since the previous forecast step. Units equivalent to mm/s."
    },
    "pressure_80m": {
      "dimensions": [
        "time",
        "latitude",
        "longitude"
      ],
      "type": "data",
      "chunks": [
        1440,
        32,
        32
      ],
      "shards": [
        2880,
        384,
        384
      ],
      "unit": "Pa",
      "long_name": "80 metre pressure",
      "standard_name": "air_pressure",
      "short_name": "80sp"
    },
    "pressure_reduced_to_mean_sea_level": {
      "dimensions": [
        "time",
        "latitude",
        "longitude"
      ],
      "type": "data",
      "chunks": [
        1440,
        32,
        32
      ],
      "shards": [
        2880,
        384,
        384
      ],
      "unit": "Pa",
      "long_name": "Pressure reduced to MSL",
      "standard_name": "air_pressure_at_mean_sea_level",
      "short_name": "prmsl"
    },
    "pressure_surface": {
      "dimensions": [
        "time",
        "latitude",
        "longitude"
      ],
      "type": "data",
      "chunks": [
        1440,
        32,
        32
      ],
      "shards": [
        2880,
        384,
        384
      ],
      "unit": "Pa",
      "long_name": "Surface pressure",
      "standard_name": "surface_air_pressure",
      "short_name": "sp"
    },
    "relative_humidity_2m": {
      "dimensions": [
        "time",
        "latitude",
        "longitude"
      ],
      "type": "data",
      "chunks": [
        1440,
        32,
        32
      ],
      "shards": [
        2880,
        384,
        384
      ],
      "unit": "percent",
      "long_name": "2 metre relative humidity",
      "standard_name": "relative_humidity",
      "short_name": "2r"
    },
    "temperature_2m": {
      "dimensions": [
        "time",
        "latitude",
        "longitude"
      ],
      "type": "data",
      "chunks": [
        1440,
        32,
        32
      ],
      "shards": [
        2880,
        384,
        384
      ],
      "unit": "degree_Celsius",
      "long_name": "2 metre temperature",
      "standard_name": "air_temperature",
      "short_name": "2t"
    },
    "temperature_80m": {
      "dimensions": [
        "time",
        "latitude",
        "longitude"
      ],
      "type": "data",
      "chunks": [
        1440,
        32,
        32
      ],
      "shards": [
        2880,
        384,
        384
      ],
      "unit": "degree_Celsius",
      "long_name": "80 metre temperature",
      "standard_name": "air_temperature",
      "short_name": "80t"
    },
    "total_cloud_cover_atmosphere": {
      "dimensions": [
        "time",
        "latitude",
        "longitude"
      ],
      "type": "data",
      "chunks": [
        1440,
        32,
        32
      ],
      "shards": [
        2880,
        384,
        384
      ],
      "unit": "percent",
      "long_name": "Total cloud cover",
      "standard_name": "cloud_area_fraction",
      "short_name": "tcc",
      "comment": "Average value in the last 6 hour period (00, 06, 12, 18 UTC) or 3 hour period (03, 09, 15, 21 UTC)."
    },
    "wind_gust_surface": {
      "dimensions": [
        "time",
        "latitude",
        "longitude"
      ],
      "type": "data",
      "chunks": [
        1440,
        32,
        32
      ],
      "shards": [
        2880,
        384,
        384
      ],
      "unit": "m s-1",
      "long_name": "Wind speed (gust)",
      "standard_name": "wind_speed_of_gust",
      "short_name": "gust"
    },
    "wind_u_100m": {
      "dimensions": [
        "time",
        "latitude",
        "longitude"
      ],
      "type": "data",
      "chunks": [
        1440,
        32,
        32
      ],
      "shards": [
        2880,
        384,
        384
      ],
      "unit": "m s-1",
      "long_name": "100 metre U wind component",
      "standard_name": "eastward_wind",
      "short_name": "100u"
    },
    "wind_u_10m": {
      "dimensions": [
        "time",
        "latitude",
        "longitude"
      ],
      "type": "data",
      "chunks": [
        1440,
        32,
        32
      ],
      "shards": [
        2880,
        384,
        384
      ],
      "unit": "m s-1",
      "long_name": "10 metre U wind component",
      "standard_name": "eastward_wind",
      "short_name": "10u"
    },
    "wind_u_80m": {
      "dimensions": [
        "time",
        "latitude",
        "longitude"
      ],
      "type": "data",
      "chunks": [
        1440,
        32,
        32
      ],
      "shards": [
        2880,
        384,
        384
      ],
      "unit": "m s-1",
      "long_name": "80 metre U wind component",
      "standard_name": "eastward_wind",
      "short_name": "80u"
    },
    "wind_v_100m": {
      "dimensions": [
        "time",
        "latitude",
        "longitude"
      ],
      "type": "data",
      "chunks": [
        1440,
        32,
        32
      ],
      "shards": [
        2880,
        384,
        384
      ],
      "unit": "m s-1",
      "long_name": "100 metre V wind component",
      "standard_name": "northward_wind",
      "short_name": "100v"
    },
    "wind_v_10m": {
      "dimensions": [
        "time",
        "latitude",
        "longitude"
      ],
      "type": "data",
      "chunks": [
        1440,
        32,
        32
      ],
      "shards": [
        2880,
        384,
        384
      ],
      "unit": "m s-1",
      "long_name": "10 metre V wind component",
      "standard_name": "northward_wind",
      "short_name": "10v"
    },
    "wind_v_80m": {
      "dimensions": [
        "time",
        "latitude",
        "longitude"
      ],
      "type": "data",
      "chunks": [
        1440,
        32,
        32
      ],
      "shards": [
        2880,
        384,
        384
      ],
      "unit": "m s-1",
      "long_name": "80 metre V wind component",
      "standard_name": "northward_wind",
      "short_name": "80v"
    }
  },
  "dynamical-org:chunking": {
    "dtype": "float32",
    "chunk": {
      "dimensions": [
        "time",
        "latitude",
        "longitude"
      ],
      "shape": [
        1440,
        32,
        32
      ],
      "lengths": {
        "time": "180 days",
        "latitude": "8\u00b0",
        "longitude": "8\u00b0"
      },
      "uncompressed_size_bytes": 5898240,
      "uncompressed_size": "5.6 MiB"
    },
    "shard": {
      "dimensions": [
        "time",
        "latitude",
        "longitude"
      ],
      "shape": [
        2880,
        384,
        384
      ],
      "lengths": {
        "time": "360 days",
        "latitude": "96\u00b0",
        "longitude": "96\u00b0"
      },
      "uncompressed_size_bytes": 1698693120,
      "uncompressed_size": "1.6 GiB"
    }
  },
  "title": "NOAA GEFS analysis",
  "extent": {
    "spatial": {
      "bbox": [
        [
          -180.0,
          -90.0,
          179.75,
          90.0
        ]
      ]
    },
    "temporal": {
      "interval": [
        [
          "2000-01-01T00:00:00Z",
          null
        ]
      ]
    }
  },
  "license": "CC-BY-4.0",
  "summaries": {
    "spatial_domain": [
      "Global"
    ],
    "spatial_resolution": [
      "0.25 degrees (~20km)"
    ],
    "time_domain": [
      "2000-01-01 00:00:00 UTC to Present"
    ],
    "time_resolution": [
      "3.0 hours"
    ]
  },
  "assets": {
    "icechunk": {
      "href": "s3://dynamical-noaa-gefs/noaa-gefs-analysis/v0.1.2.icechunk/",
      "type": "application/x-icechunk",
      "title": "Icechunk v2 repository",
      "xarray:open_kwargs": {
        "engine": "zarr"
      },
      "xarray:storage_options": {
        "anon": true,
        "client_kwargs": {
          "region_name": "us-west-2"
        }
      },
      "roles": [
        "data"
      ]
    },
    "icechunk-https": {
      "href": "https://dynamical-noaa-gefs.s3.us-west-2.amazonaws.com/noaa-gefs-analysis/v0.1.2.icechunk",
      "type": "application/x-icechunk",
      "title": "Icechunk v2 repository (HTTPS)",
      "xarray:open_kwargs": {
        "engine": "zarr"
      },
      "roles": [
        "data"
      ]
    }
  }
}