shadow-zone / files / src / earthquakeData.ts
earthquakeData.ts
0ed88387 2026-06-12 Pavel Safronov | 1 | /** |
| 2 | * Types for pre-fetched real-world seismic datasets. | |
| 3 | * JSON files in src/data/ are populated by scripts/fetch-earthquake-data.mjs. | |
| 4 | */ | |
| 5 | ||
| 6 | export interface PhaseArrival { | |
| 7 | /** FDSN station code, e.g. "ANMO" */ | |
| 8 | station: string; | |
| 9 | /** FDSN network code, e.g. "IU" */ | |
| 10 | network: string; | |
| 11 | /** Epicentral distance in degrees */ | |
| 12 | distanceDeg: number; | |
| 13 | /** Observed P travel time in seconds (arrival_time - origin_time). null if phase not picked. */ | |
| 14 | pTravelTimeSec: number | null; | |
| 15 | /** Observed S travel time in seconds. null if not picked or in shadow. */ | |
| 16 | sTravelTimeSec: number | null; | |
| 17 | } | |
| 18 | ||
| 19 | export interface EarthquakeDataset { | |
| 20 | /** Short unique identifier, e.g. "tohoku-2011" */ | |
| 21 | id: string; | |
| 22 | /** Human-readable name */ | |
| 23 | name: string; | |
| 24 | /** ISO8601 origin time */ | |
| 25 | originTime: string; | |
| 26 | /** Epicenter latitude */ | |
| 27 | latitude: number; | |
| 28 | /** Epicenter longitude */ | |
| 29 | longitude: number; | |
| 30 | /** Hypocenter depth in km */ | |
| 31 | depthKm: number; | |
| 32 | /** Moment magnitude */ | |
| 33 | magnitudeMw: number; | |
| 34 | /** USGS ComCat event ID, e.g. "official20110311054624120_30" */ | |
| 35 | usgsId: string; | |
| 36 | /** Short description of what makes this event interesting for shadow zone study */ | |
| 37 | note: string; | |
| 38 | /** Phase arrival observations from global network */ | |
| 39 | arrivals: PhaseArrival[]; | |
| 40 | } | |
| 41 | ||
| 42 | // ── Dataset registry ────────────────────────────────────────────────────────── | |
| 43 | // Each dataset JSON is imported statically so Vite bundles it. | |
| 44 | // Run `npm run fetch-data` to (re-)populate the JSON files. | |
| 45 | ||
| 46 | import tohoku from './data/tohoku-2011.json'; | |
| 47 | import chile from './data/chile-2010.json'; | |
| 48 | import okhotsk from './data/okhotsk-2013.json'; | |
| 49 | ||
| 50 | export const EARTHQUAKE_DATASETS: EarthquakeDataset[] = [ | |
| 51 | tohoku as EarthquakeDataset, | |
| 52 | chile as EarthquakeDataset, | |
| 53 | okhotsk as EarthquakeDataset, | |
| 54 | ]; | |
| 55 | ||
| 56 | export function getDataset(id: string): EarthquakeDataset | undefined { | |
| 57 | return EARTHQUAKE_DATASETS.find(d => d.id === id); | |
| 58 | } |