SWIM Weather Demo-EDR-QVA

QVA (Quantitative Volcanic Ash)

QVA (Quantitative Volcanic Ash) data describes forecast volcanic ash concentrations around an erupting volcano. SWIM Weather distributes it in three EDR collections: two gridded NetCDF products and one IWXXM-encoded advisory.

QVA data is distributed as complete, pre-generated files — one file per volcano — which the consumer downloads and processes locally.

QVA collections

Collection Content Format
qva_deterministic Deterministic (single best-estimate) ash concentration forecast NetCDF
qva_probabilistic Probability of ash concentration exceeding threshold levels NetCDF
qvaci_iwxxm Quantitative Volcanic Ash Concentration Information (QVACI) as IWXXM features XML (IWXXM)

Each collection holds at most one current file per volcano — a new forecast run replaces the previous one. Only the latest issued data is available; no historical data is archived.

How QVA data is queried

  • 373040Data for an individual volcano is retrieved via the /locations endpoint, where the location ID is the volcano number.

  • /locations/{volcanoNumber} query does not return the data directly: it returns an HTTP 302 redirect to the file, which the client follows to download it. The payload is a single NetCDF or XML file.

  • Temporal filtering is available via the datetime parameter — see Filtering by time below.
  • Only one volcano number can be given per query
  • Filtering by ash concentration threshold (the parameter-name parameter) is not implemented yet.

Available forecast timesteps

The collection description includes a temporal block listing the forecast timesteps the collection currently holds:

"temporal": {
  "interval": [
    [
      "2026-09-15T19:00:00Z",
      "2026-09-17T07:00:00Z"
    ]
  ],
  "values": [
    "2026-09-15T19:00:00Z",
    "2026-09-15T22:00:00Z",
    "2026-09-16T01:00:00Z",
    "2026-09-16T04:00:00Z",
    "2026-09-16T07:00:00Z",
    "2026-09-16T10:00:00Z",
    "2026-09-16T13:00:00Z",
    "2026-09-16T16:00:00Z",
    "2026-09-16T19:00:00Z",
    "2026-09-16T22:00:00Z",
    "2026-09-17T01:00:00Z",
    "2026-09-17T04:00:00Z",
    "2026-09-17T07:00:00Z"
  ]
}

interval gives the overall period covered, and values the individual timesteps — these are the values to use when subsetting a download with the datetime parameter.

Note that both are the union across every volcano in the collection: they show which timesteps exist somewhere in the collection, not which of them a particular volcano has. A datetime query for a volcano is resolved against that volcano's own timesteps.

Which volcanoes are available

Volcanoes are identified by their volcano number. The set of volcanoes holding data changes as new forecasts arrive, and the collection's locations give the current list:

https://swim.iblsoft.com:8444/edr/collections/qva_deterministic/locations

The response is a GeoJSON feature collection with one feature per volcano that currently has data:

"features": [
  {
    "type": "Feature",
    "geometry": null,
    "properties": {
      "locationId": "373040"
    }
  }
]


The locationId value is the volcano number to use when requesting the data — the feature above is retrieved with:

https://swim.iblsoft.com:8444/edr/collections/qva_deterministic/locations/373040

When a collection holds no data at all, an empty feature collection is returned.

Collection "qva_deterministic"

Deterministic ash concentration forecast, as a gridded NetCDF file.

Example queries:

Collection "qva_probabilistic"

Probability of ash concentration exceeding threshold levels, as a gridded NetCDF file.

Example queries:

Collection "qvaci_iwxxm"

Quantitative Volcanic Ash Concentration Information, as an IWXXM XML document.

Example queries:

Filtering by time

The datetime parameter narrows the response to a subset of the volcano's forecast timesteps, using the standard OGC EDR interval syntax. The timesteps available in the collection are listed in its description — see Available forecast timesteps above.

  • Exact timestep: datetime=2026-09-16T07:00:00Z
  • Bounded interval: datetime=2026-09-16T07:00:00Z/2026-09-16T13:00:00Z
  • Half-bounded, open start: datetime=../2026-09-16T13:00:00Z
  • Half-bounded, open end: datetime=2026-09-16T07:00:00Z/..

Behaviour:

  • If the requested range covers every timestep in the file, the complete file is served, the same as an unfiltered request.
  • If the requested range covers only part of the file, a subset file containing just the matching timesteps is served. The subset is generated on the first such request and reused for identical repeat requests.
  • If the requested range does not overlap any timestep in the file, the request fails with 400 Bad Request.

Responses

Code Meaning

200 OK

Successful collection or locations listing (JSON body).

302 Found

Successful data request — follow the Location header to download the file.

400 Bad Request

The datetime value does not overlap any available timestep.

401 Unauthorized

Missing or invalid credentials.

404 Not Found

Unknown volcano number, or more than one location given in a single request.

429 Too Many Requests

Rate limit exceeded.