@seismo/core
Version:
This is the package for the core library of Seismo, a JavaScript library for seismic data processing and visualization. It provides utilities for handling seismic data, including FDSN web services, waveform processing, and event handling. The library is d
156 lines (155 loc) • 7.49 kB
TypeScript
import { FDSNCommon } from "../fdsn/common";
import { Station, Channel } from "../stations/stationxml";
import { Quake } from "../events/quakeml";
export declare const IRIS_HOST = "service.iris.edu";
export declare const TEXT_FORMAT = "text";
export declare const JSON_FORMAT = "json";
export declare const SVG_FORMAT = "svg";
/**
* Type for json returned by iris traveltime web service
*
*/
export type TraveltimeJsonType = {
model: string;
sourcedepth: number;
receiverdepth: number;
phases: Array<string>;
arrivals: Array<TraveltimeArrivalType>;
};
export type TraveltimeArrivalType = {
distdeg: number;
phase: string;
time: number;
rayparam: number;
takeoff: number;
incident: number;
puristdist: number;
puristname: string;
};
/**
* Verifies that JSON matches the types we expect, for typescript.
*
* @param v JSON object, usually from the traveltime web service
* @returns true if matches expected structure
*/
export declare function isValidTraveltimeJsonType(v: unknown): v is TraveltimeJsonType;
export declare function isValidTraveltimeArrivalType(v: unknown): v is TraveltimeArrivalType;
/**
* converts a text line from the text format into an
* TraveltimeArrivalType object like what is returned by the json format.
*
* @param ttimeline travel time output line for an arrival
* @returns parsed travel time arrival
*/
export declare function convertTravelTimeLineToObject(ttimeline: string): TraveltimeArrivalType;
/**
* Creates a fake arrival for the origin time, useful to display a flag
* at origin time similar to the P and S arrival.
* @param distdeg earthquake to station distance, in degrees
* @returns an arrival for the origin
*/
export declare function createOriginArrival(distdeg: number): TraveltimeArrivalType;
/**
* Query to the IRIS traveltime webservice, based on the TauP Toolkit. See
* https://service.iris.edu/irisws/traveltime/1/ and
* https://www.seis.sc.edu/TauP/
*
* @param host optional host to connect to, defaults to IRIS
*/
export declare class TraveltimeQuery extends FDSNCommon {
/** @private */
_evdepth: number;
/** @private */
_distdeg: Array<number> | undefined;
/** @private */
_model: string | undefined;
/** @private */
_phases: string | undefined;
/** @private */
_stalat: number | undefined;
/** @private */
_stalon: number | undefined;
/** @private */
_receiverdepth: number | undefined;
/** @private */
_evlat: number | undefined;
/** @private */
_evlon: number | undefined;
/** @private */
_format: string;
/** @private */
_noheader: boolean;
constructor(host?: string | null);
protocol(value?: string): TraveltimeQuery;
getProtocol(): string | undefined;
host(value?: string): TraveltimeQuery;
getHost(): string | undefined;
/**
* Gets/Sets the remote port to connect to.
*
* @param value optional new value if setting
* @returns new value if getting, this if setting
*/
port(value?: number): TraveltimeQuery;
getPort(): number | undefined;
/**
* Gets/Sets the nodata parameter, usually 404 or 204 (default), controlling
* the status code when no matching data is found by the service.
*
* @param value optional new value if setting
* @returns new value if getting, this if setting
*/
nodata(value?: number): TraveltimeQuery;
getNodata(): number | undefined;
specVersion(value?: string): TraveltimeQuery;
getSpecVersion(): string | undefined;
evdepth(value?: number): TraveltimeQuery;
evdepthInMeter(value?: number): TraveltimeQuery;
getEvdepth(): number | undefined;
distdeg(value?: number | Array<number>): TraveltimeQuery;
getDistdeg(): Array<number> | undefined;
model(value?: string): TraveltimeQuery;
getModel(): string | undefined;
phases(value?: string): TraveltimeQuery;
getPhases(): string | undefined;
stalat(value?: number): TraveltimeQuery;
getStalat(): number | undefined;
stalon(value?: number): TraveltimeQuery;
getStalon(): number | undefined;
latLonFromStation(station: Station): TraveltimeQuery;
receiverdepth(value?: number): TraveltimeQuery;
receiverdepthInMeter(value?: number): TraveltimeQuery;
receiverdepthFromChannel(channel: Channel): TraveltimeQuery;
getReceiverdepth(): number | undefined;
evlat(value?: number): TraveltimeQuery;
getEvlat(): number | undefined;
evlon(value?: number): TraveltimeQuery;
getEvlon(): number | undefined;
latLonFromQuake(quake: Quake): TraveltimeQuery;
format(value?: string): TraveltimeQuery;
getFormat(): string | undefined;
noheader(value?: boolean): TraveltimeQuery;
getNoheader(): boolean | undefined;
/**
* Get/Set the timeout in seconds for the request. Default is 30.
*
* @param value optional new value if setting
* @returns new value if getting, this if setting
*/
timeout(value?: number): TraveltimeQuery;
getTimeout(): number | undefined;
queryText(): Promise<string>;
queryJson(): Promise<TraveltimeJsonType>;
querySvg(): Promise<Element>;
queryWadl(): Promise<Document>;
query(): Promise<TraveltimeJsonType | Element | string>;
formBaseURL(): string;
formURL(): string;
queryTauPVersion(): Promise<string>;
formTauPVersionURL(): string;
formWadlURL(): string;
}
export declare const FAKE_EMPTY_TEXT_MODEL = "Model: ";
export declare const FAKE_EMPTY_TEXT_HEADERS = "\nDistance Depth Phase Travel Ray Param Takeoff Incident Purist Purist\n (deg) (km) Name Time (s) p (s/deg) (deg) (deg) Distance Name\n-----------------------------------------------------------------------------------\n";
export declare function createEmptyTraveltimeJson(ttquery: TraveltimeQuery): TraveltimeJsonType;
export declare const FAKE_EMPTY_SVG = "\n<svg version=\"1.1\" baseProfile=\"full\" xmlns=\"http://www.w3.org/2000/svg\" width=\"500\" height=\"500\" viewBox=\"0 0 14016.2 14016.2\">\n<!--\n This script will plot ray paths generated by TauP using SVG. -->\n<defs>\n <style type=\"text/css\"><![CDATA[\n circle {\n vector-effect: non-scaling-stroke;\n stroke: grey;\n fill: none;\n }\n polyline {\n vector-effect: non-scaling-stroke;\n stroke: black;\n fill: none;\n }\n ]]></style>\n</defs>\n<g transform=\"translate(7008.1,7008.1)\" >\n<!-- draw surface and label distances.-->\n<!-- tick marks every 30 degrees.-->\n <polyline points=\" 0.00 -6371.00, 0.00 -6689.55\" />\n <polyline points=\" 3185.50 -5517.45, 3344.78 -5793.32\" />\n <polyline points=\" 5517.45 -3185.50, 5793.32 -3344.77\" />\n <polyline points=\" 6371.00 0.00, 6689.55 0.00\" />\n <polyline points=\" 5517.45 3185.50, 5793.32 3344.77\" />\n <polyline points=\" 3185.50 5517.45, 3344.78 5793.32\" />\n <polyline points=\" 0.00 6371.00, 0.00 6689.55\" />\n <polyline points=\"-3185.50 5517.45, -3344.77 5793.32\" />\n <polyline points=\"-5517.45 3185.50, -5793.32 3344.77\" />\n <polyline points=\"-6371.00 0.00, -6689.55 0.00\" />\n <polyline points=\"-5517.45 -3185.50, -5793.32 -3344.78\" />\n <polyline points=\"-3185.50 -5517.45, -3344.78 -5793.32\" />\n <circle cx=\"0.0\" cy=\"0.0\" r=\"6371.0\" />\n </g>\n</svg>\n";