Hazard Map Data

Model discovery service

 

A hazard map gives the ground-motion level that has a given probability of being exceeded within a given time span. Hazard map data are available through the EFEHR REST API under the base URL https://efehr-services.ethz.ch/hazard/api/v1, and as map layers through the EFEHR OGC web map service. All REST endpoints use HTTP GET and return JSON by default; add format=nrml to receive NRML instead. Data are published under CC BY 4.0 (DOI 10.12686/a15).

The steps below find the models covering your site or area, narrow down the available options (intensity measure type, probability of exceedance, soil type, aggregation), identify the hazard map, and then access it as a WMS layer or as point values. The examples use Basel (47.5° N, 7.6° E) and the European Seismic Hazard Model 2020 (ESHM20, model id 81), with spectral acceleration at 0.35 s and an annual probability of exceedance of 0.002103 (equivalent to 10% in 50 years). Square brackets in IMT codes must be URL-encoded ([ as %5B, ] as %5D). Long lists in the response examples are shortened with "…". The complete, interactive reference is available at efehr-services.ethz.ch/hazard/api/docs.

Discovering hazard models

User query Which hazard models provide hazard maps covering my site of interest?
Request format /v1/models?lat=[latitude]&lon=[longitude]&filter_maps=true
Parameters
  • lat (required): latitude, −90 to 90
  • lon (required): longitude, −180 to 180
  • filter_maps (optional): true to list only models with hazard maps
  • format (optional): json (default) or nrml
Request example https://efehr-services.ethz.ch/hazard/api/v1/models?lat=47.5&lon=7.6&filter_maps=true
Response example
{
  "models": [
    {
      "id": 77,
      "name": "Swiss Hazard Model 2015 (SUIhaz15)"
    },
    {
      "id": 81,
      "name": "European Seismic hazard Model 2020 (ESHM20)"
    }
  ],
  "count": 2
}
User query Which hazard models cover my area of interest? The area is defined by a bounding box (lower-left and upper-right corners).
Request format /v1/models/area?lat_min=[..]&lon_min=[..]&lat_max=[..]&lon_max=[..]
Parameters
  • lat_min (required): minimum latitude
  • lon_min (required): minimum longitude
  • lat_max (required): maximum latitude
  • lon_max (required): maximum longitude
  • format (optional): json (default) or nrml
Request example https://efehr-services.ethz.ch/hazard/api/v1/models/area?lat_min=45.8&lon_min=5.9&lat_max=47.8&lon_max=10.5
Response example
{
  "models": [
    {
      "id": 77,
      "name": "Swiss Hazard Model 2015 (SUIhaz15)"
    },
    {
      "id": 81,
      "name": "European Seismic hazard Model 2020 (ESHM20)"
    }
  ],
  "count": 2
}

Discovering intensity measure types of a model

User query Given a model, for which intensity measure types (IMT) or ground motion types are hazard maps available?
Request format /v1/models/[model_id]/imts
Parameters
  • model_id (required): model identifier (in the path)
  • format (optional): json (default) or nrml
Request example https://efehr-services.ethz.ch/hazard/api/v1/models/81/imts
Response example
{
  "imts": [
    {
      "code": "PGA",
      "name": "PGA",
      "unit_type": "g",
      "unit_description": "gravity, 1g = 980.5 cm/s/s defined for the B/C boundary Vs30=760m/s"
    },
    {
      "code": "SA[0.05s]",
      "name": "SA[0.05s]",
      "unit_type": "g",
      "unit_description": "gravity, 1g = 980.5 cm/s/s"
    },
    "\u2026",
    {
      "code": "SA[5.00s]",
      "name": "SA[5.00s]",
      "unit_type": "g",
      "unit_description": "gravity, 1g = 980.5 cm/s/s"
    }
  ]
}

Discovering probabilities of exceedance and time spans

User query For which probabilities of exceedance and time spans are hazard maps available for a given model and IMT?
Request format /v1/models/[model_id]/poe?imt=[IMT]
Parameters
  • model_id (required): model identifier (in the path)
  • imt (required): intensity measure type, e.g. PGA or SA[0.35s] (URL-encoded as SA%5B0.35s%5D)
  • format (optional): json (default) or nrml
Request example https://efehr-services.ethz.ch/hazard/api/v1/models/81/poe?imt=SA%5B0.35s%5D
Response example
{
  "poe_values": [
    {
      "probability": 0.002103,
      "years": 1
    },
    "\u2026"
  ]
}

For which site classes do hazard results apply?

User query Given a model, an IMT, and a probability of exceedance for a time span, for which site classes (or surface geology types) are hazard maps available?
Request format /v1/models/[model_id]/soiltypes?imt=[IMT]&poe=[poe]&timespan=[years]
Parameters
  • model_id (required): model identifier (in the path)
  • imt (required): intensity measure type, e.g. PGA or SA[0.35s] (URL-encoded as SA%5B0.35s%5D)
  • poe (required): probability of exceedance, 0 to 1 (e.g. 0.002103)
  • timespan (required): investigation time in years (e.g. 1 for annual probabilities)
  • format (optional): json (default) or nrml
Request example https://efehr-services.ethz.ch/hazard/api/v1/models/81/soiltypes?imt=SA%5B0.35s%5D&poe=0.002103&timespan=1
Response example
{
  "soil_types": [
    {
      "code": "rock_vs30_800ms-1",
      "name": "rock_vs30_800ms-1"
    }
  ]
}

Hazard aggregation strategies in logic tree models

User query Given a model, an IMT, and a probability of exceedance for a time span, how was the hazard of a multi-branch logic tree model aggregated for the available hazard maps? Answers are the arithmetic mean or quantiles (ordinal aggregation with levels from 0 to 1).
Request format /v1/models/[model_id]/fractiles?imt=[IMT]&poe=[poe]&timespan=[years]
Parameters
  • model_id (required): model identifier (in the path)
  • imt (required): intensity measure type, e.g. PGA or SA[0.35s] (URL-encoded as SA%5B0.35s%5D)
  • poe (required): probability of exceedance, 0 to 1 (e.g. 0.002103)
  • timespan (required): investigation time in years (e.g. 1 for annual probabilities)
  • format (optional): json (default) or nrml
Request example https://efehr-services.ethz.ch/hazard/api/v1/models/81/fractiles?imt=SA%5B0.35s%5D&poe=0.002103&timespan=1
Response example
{
  "fractiles": [
    {
      "aggregation_type": "arithmetic",
      "aggregation_level": 0.5
    },
    {
      "aggregation_type": "ordinal",
      "aggregation_level": 0.05
    },
    {
      "aggregation_type": "ordinal",
      "aggregation_level": 0.16
    },
    {
      "aggregation_type": "ordinal",
      "aggregation_level": 0.5
    },
    {
      "aggregation_type": "ordinal",
      "aggregation_level": 0.84
    },
    {
      "aggregation_type": "ordinal",
      "aggregation_level": 0.95
    }
  ]
}

Retrieving a map identifier for WMS access

User query What is the identifier and WMS layer name of the hazard map matching all the above selection criteria?
Request format /v1/maps/reference?modelid=[..]&imt=[IMT]&poe=[poe]&timespan=[years]&aggregationtype=[..]&aggregationlevel=[0…1]
Parameters
  • modelid (required): model identifier, from the model list
  • imt (required): intensity measure type, e.g. PGA or SA[0.35s] (URL-encoded as SA%5B0.35s%5D)
  • poe (required): probability of exceedance, 0 to 1 (e.g. 0.002103)
  • timespan (required): investigation time in years (e.g. 1 for annual probabilities)
  • aggregationtype (optional): arithmetic (mean) or ordinal (quantile)
  • aggregationlevel (optional): aggregation level, 0 to 1 (e.g. 0.5 for the median)
Request example https://efehr-services.ethz.ch/hazard/api/v1/maps/reference?modelid=81&imt=SA%5B0.35s%5D&poe=0.002103&timespan=1&aggregationtype=ordinal&aggregationlevel=0.16
Response example
{
  "map_id": 3606,
  "wms_url": "hmap3606",
  "model_id": 81,
  "model_name": "European Seismic hazard Model 2020 (ESHM20)",
  "imt": "SA[0.35s]",
  "poe": 0.002103,
  "timespan": 1
}

The wms_url value is the layer name of the hazard map in the EFEHR web map service (WMS). Web map services following OGC standards let you integrate live hazard maps as a layer in most GIS packages, such as QGIS or ArcGIS.

Request example https://efehr-services.ethz.ch/hazard/ows?SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&LAYERS=hmap3606&STYLES=&SRS=EPSG:4326&BBOX=0,40,22,55&WIDTH=1200&HEIGHT=800&FORMAT=image/png
Parameters
  • LAYERS=hmap3606: the layer name returned in wms_url
  • SRS=EPSG:4326: the coordinate system, here WGS 84
  • BBOX=0,40,22,55: the bounding box of the requested map as [lower-left longitude],[lower-left latitude],[upper-right longitude],[upper-right latitude]
  • WIDTH=1200&HEIGHT=800: size of the requested image in pixels (should match the aspect ratio of the bounding box)
  • FORMAT=image/png: image format (image/png or image/jpeg)
Available layers For the full list of layers, parameters and allowed values, send a WMS GetCapabilities request: https://efehr-services.ethz.ch/hazard/ows?SERVICE=WMS&VERSION=1.1.1&REQUEST=GetCapabilities

Alternative data access: hazard map values for an area

User query What are the hazard map values in my area of interest? The area is a rectangle defined by its lower-left and upper-right corners.
Request format /v1/maps/area?lat_min=[..]&lon_min=[..]&lat_max=[..]&lon_max=[..]&modelid=[..]&imt=[IMT]&poe=[poe]&timespan=[years]&soiltype=[..]&aggregationtype=[..]&aggregationlevel=[0…1]
Parameters
  • lat_min (required): minimum latitude
  • lon_min (required): minimum longitude
  • lat_max (required): maximum latitude
  • lon_max (required): maximum longitude
  • modelid (required): model identifier, from the model list
  • imt (required): intensity measure type, e.g. PGA or SA[0.35s] (URL-encoded as SA%5B0.35s%5D)
  • poe (required): probability of exceedance, 0 to 1 (e.g. 0.002103)
  • timespan (required): investigation time in years (e.g. 1 for annual probabilities)
  • soiltype (required): soil type code, e.g. rock_vs30_800ms-1
  • aggregationtype (required): arithmetic (mean) or ordinal (quantile)
  • aggregationlevel (required): aggregation level, 0 to 1 (e.g. 0.16)
  • format (optional): json (default) or nrml
Request example https://efehr-services.ethz.ch/hazard/api/v1/maps/area?lat_min=47.4&lon_min=7.5&lat_max=47.6&lon_max=7.7&modelid=81&imt=SA%5B0.35s%5D&poe=0.002103&timespan=1&soiltype=rock_vs30_800ms-1&aggregationtype=ordinal&aggregationlevel=0.16
Response example
{
  "points": [
    {
      "lon": 7.5821339,
      "lat": 47.4,
      "value": 0.06469244
    },
    {
      "lon": 7.5821339,
      "lat": 47.5,
      "value": 0.070245504
    },
    {
      "lon": 7.5821339,
      "lat": 47.6,
      "value": 0.081962
    },
    {
      "lon": 7.6821339,
      "lat": 47.4,
      "value": 0.06479445
    },
    {
      "lon": 7.6821339,
      "lat": 47.5,
      "value": 0.070087224
    },
    {
      "lon": 7.6821339,
      "lat": 47.6,
      "value": 0.08205808
    }
  ],
  "metadata": {
    "model_id": 81,
    "model_name": "European Seismic hazard Model 2020 (ESHM20)",
    "imt": "SA[0.35s]",
    "poe": 0.002103,
    "timespan": 1,
    "soil_type": "rock_vs30_800ms-1",
    "aggregation_type": "ordinal",
    "aggregation_level": 0.16,
    "spectral_period": null
  }
}

Alternative data access: hazard map values around a site

User query What are the hazard map values around my site of interest? The response contains the grid points within about 0.4° of the site (a 0.1° grid); the value for the site is the one at the nearest grid point.
Request format /v1/maps?lat=[..]&lon=[..]&modelid=[..]&imt=[IMT]&poe=[poe]&timespan=[years]&soiltype=[..]&aggregationtype=[..]&aggregationlevel=[0…1]
Parameters
  • lat (required): latitude, −90 to 90
  • lon (required): longitude, −180 to 180
  • modelid (required): model identifier, from the model list
  • imt (required): intensity measure type, e.g. PGA or SA[0.35s] (URL-encoded as SA%5B0.35s%5D)
  • poe (required): probability of exceedance, 0 to 1 (e.g. 0.002103)
  • timespan (required): investigation time in years (e.g. 1 for annual probabilities)
  • soiltype (required): soil type code, e.g. rock_vs30_800ms-1
  • aggregationtype (required): arithmetic (mean) or ordinal (quantile)
  • aggregationlevel (required): aggregation level, 0 to 1 (e.g. 0.16)
  • format (optional): json (default) or nrml
Request example https://efehr-services.ethz.ch/hazard/api/v1/maps?lat=47.5&lon=7.6&modelid=81&imt=SA%5B0.35s%5D&poe=0.002103&timespan=1&soiltype=rock_vs30_800ms-1&aggregationtype=ordinal&aggregationlevel=0.16
Response example
{
  "points": [
    {
      "lon": 7.182133900000001,
      "lat": 47.1,
      "value": 0.05618549
    },
    {
      "lon": 7.182133900000001,
      "lat": 47.2,
      "value": 0.053966764
    },
    "\u2026",
    {
      "lon": 7.5821339,
      "lat": 47.5,
      "value": 0.070245504
    },
    "\u2026",
    {
      "lon": 8.0821339,
      "lat": 47.9,
      "value": 0.08512021
    }
  ],
  "metadata": {
    "model_id": 81,
    "model_name": "European Seismic hazard Model 2020 (ESHM20)",
    "imt": "SA[0.35s]",
    "poe": 0.002103,
    "timespan": 1,
    "soil_type": "rock_vs30_800ms-1",
    "aggregation_type": "ordinal",
    "aggregation_level": 0.16,
    "spectral_period": null
  }
}