Skip to content

ShakeMap products

ingv_shakemap.products

The other products of a ShakeMap: info.json and stationlist.json.

Pure: nothing here does I/O.

info.json weighs a few kB against the 10-12 MB of grid.xml and says everything you need to decide whether to download the grid again: the map's version, its status, the history of its runs, the ground-motion model and how many stations constrained it. The maps of the 23 October 2026 sequence went through four versions in forty hours, the last one two days after the earthquake (checked on 4 November 2026).

stationlist.json is the stations behind the map: what each one recorded and what the model predicted there. Two habits of the INGV file:

  • a missing amplitude is the string "null", not JSON null: 263 of 469 stations of event 47606532 have "pga": "null";
  • the station's pga is in percent of g, like the grid's, even though the property itself carries no unit (its channels say %g).

uncertainty.xml needs no parser of its own: it is a grid.xml whose columns are STDPGA (in ln g), STDPGV, STDMMI... so :func:ingv_shakemap.parse_grid reads it.

MapRun dataclass

One run of a ShakeMap, from info.json's map_data_history.

GroundMotionSummary dataclass

The peak of one intensity measure, as info.json summarises it.

ShakeMapInfo dataclass

What info.json says about a map: enough to tell whether it changed.

Station dataclass

One station of stationlist.json, with what it recorded.

parse_info

parse_info(payload: dict[str, Any]) -> ShakeMapInfo

info.json as a :class:ShakeMapInfo; raises :class:IngvError if it is not one.

parse_station

parse_station(feature: dict[str, Any]) -> Station | None

One feature of stationlist.json; None without an id or a position.

parse_stations

parse_stations(payload: dict[str, Any]) -> list[Station]

The stations of stationlist.json, skipping features that cannot be read.