FDSN Web Service Client¶
This module provides a high-level interface to query waveform, response, and event data from FDSN-compliant web services. It allows users to retrieve seismic waveforms, station metadata (including instrument response), and earthquake catalogues from major data centers around the world.
The main class is FDSNClient, which abstracts HTTP interactions and
returns ShakeLab-compatible data structures such as StreamCollection.
Class Reference¶
Usage Examples¶
Download waveform data and save to file:
from shakelab.signals.fdsnws import FDSNClient
fc = FDSNClient('INGV')
fc.get_waveform(
'IV.MODE..HN*',
'2012-05-20T02:03:23.000000Z',
'2012-05-20T02:06:23.000000Z',
correct=False,
file_name='data/MODE.mseed'
)
Retrieve and save station metadata (StationXML format):
fc.get_response(
'IV.MODE..HN*',
'2012-05-20T02:03:23.000000Z',
'2012-05-20T02:06:23.000000Z',
file_name='data/MODE.xml'
)
Work with data directly in memory:
sc = fc.get_waveform(
'IV.MODE..HN*',
'2012-05-20T02:03:23.000000Z',
'2012-05-20T02:06:23.000000Z'
)
rc = fc.get_response(
'IV.MODE..HN*',
'2012-05-20T02:03:23.000000Z',
'2012-05-20T02:06:23.000000Z'
)
sc_corr = sc / rc
record_corrected = sc_corr['IV.MODE..HNZ'][0]
Download an event catalogue within a given region and time range:
catalogue = fc.get_catalogue(
starttime='2023-01-01T00:00:00',
endtime='2025-12-31T23:59:59',
magnitude=(4.0, 9.0),
latitude=(35.0, 45.0),
longitude=(10.0, 20.0),
depth=(0, 100)
)
fc.get_catalogue(
starttime='2023-01-01T00:00:00',
endtime='2025-12-31T23:59:59',
magnitude=(4.0, 9.0),
latitude=(35.0, 45.0),
longitude=(10.0, 20.0),
depth=(0, 100),
file_name='data/catalogue_2023.xml'
)
Query service metadata:
info = fc.query_info(service='station')
event_info = fc.query_info(service='event')
Available Data Centers¶
The following FDSN data centers are currently supported:
from shakelab.signals.fdsnws import DATA_CENTER_REGISTRY
print(DATA_CENTER_REGISTRY.keys())
To use a custom URL instead of a registered data center, simply pass it to
FDSNClient as a string (e.g. FDSNClient('http://my.server:8080')).