%matplotlib inline
from __future__ import print_function
import matplotlib.pyplot as plt
plt.style.use('ggplot')
plt.rcParams['figure.figsize'] = 12, 8
ObsPy has clients to directly fetch data via...
This introduction shows how to use the FDSN webservice client. The FDSN webservice definition is by now the default web service implemented by many data centers world wide. Clients for other protocols work similar to the FDSN client.
import obspy
from obspy.clients.fdsn import Client
client = Client("IRIS")
t = obspy.UTCDateTime("2014-08-24T10:20:44.0") # South Napa Earthquake
st = client.get_waveforms("II", "PFO", "00", "LHZ",
t - 5 * 60, t + 20 * 60)
print(st)
st.plot()
1 Trace(s) in Stream: II.PFO.00.LHZ | 2014-08-24T10:15:44.069500Z - 2014-08-24T10:40:43.069500Z | 1.0 Hz, 1500 samples
The FDSN client can also be used to request event metadata:
t = obspy.UTCDateTime("2014-08-24T10:20:44.0") # South Napa earthquake
catalog = client.get_events(starttime=t - 100, endtime=t + 3600,
minmagnitude=6)
print(catalog)
catalog.plot();
1 Event(s) in Catalog: 2014-08-24T10:20:45.600000Z | +38.201, -122.086 | 6.1 MW
Requests can have a wide range of constraints (see ObsPy Documentation):
Finally, the FDSN client can be used to request station metadata. Stations can be looked up using a wide range of constraints (see ObsPy documentation):
event = catalog[0]
origin = event.origins[0]
# Livermore
lon = -121.768005
lat = 37.681873
# Get currently active stations in 5 km radius around Livermore.
inventory = client.get_stations(longitude=lon, latitude=lat,
maxradius=0.05, level="station",
starttime=obspy.UTCDateTime())
print(inventory)
inventory.plot(projection="local", resolution="i");
Inventory created at 2017-09-17T19:07:03.000000Z Created by: IRIS WEB SERVICE: fdsnws-station | version: 1.1.27 http://service.iris.edu/fdsnws/station/1/query?starttime=2017-09-17... Sending institution: IRIS-DMC (IRIS-DMC) Contains: Networks (3): GS NC NP Stations (13): GS.LV1B (Tri-Valley urban array) GS.LV1C (Tri-Valley urban array) GS.LV1D (Tri-Valley urban array) GS.LV1E (Tri-Valley urban array) GS.LV1F (Tri-Valley urban array) GS.LV1G (Tri-Valley urban array) GS.LV1H (Tri-Valley urban array) GS.LV1I (Tri-Valley urban array) GS.TVK4 (Tri-Valley urban array) NC.CBZ (Buffer Zone) NP.1786 (Livermore FS 6 East Av) NP.1803 (Livermore FS 8 Scenic) NP.1842 (Livermore FS 7 Rincon) Channels (0):
The level=...
keyword is used to specify the level of detail in the requested inventory
"network"
: only return information on networks matching the criteria"station"
: return information on all matching stations"channel"
: return information on available channels in all stations networks matching the criteria"response"
: include instrument response for all matching channels (large result data size!)inventory = client.get_stations(network="II", station="PFO",
level="station")
print(inventory)
Inventory created at 2017-09-17T19:07:08.000000Z Created by: IRIS WEB SERVICE: fdsnws-station | version: 1.1.27 http://service.iris.edu/fdsnws/station/1/query?network=II&station=P... Sending institution: IRIS-DMC (IRIS-DMC) Contains: Networks (1): II Stations (2): II.PFO (Pinon Flat, California, USA) II.PFO (Pinon Flat, California, USA) Channels (0):
inventory = client.get_stations(network="II", station="PFO",
level="channel")
print(inventory)
Inventory created at 2017-09-17T19:07:08.000000Z Created by: IRIS WEB SERVICE: fdsnws-station | version: 1.1.27 http://service.iris.edu/fdsnws/station/1/query?network=II&station=P... Sending institution: IRIS-DMC (IRIS-DMC) Contains: Networks (1): II Stations (2): II.PFO (Pinon Flat, California, USA) II.PFO (Pinon Flat, California, USA) Channels (566): II.PFO..LOG, II.PFO..LOG, II.PFO.00.BH1, II.PFO.00.BH1, II.PFO.00.BH1, II.PFO.00.BH1, II.PFO.00.BH1, II.PFO.00.BH1, II.PFO.00.BH1, II.PFO.00.BH1, II.PFO.00.BH1, II.PFO.00.BH1, II.PFO.00.BH2, II.PFO.00.BH2, II.PFO.00.BH2, II.PFO.00.BH2, II.PFO.00.BH2, II.PFO.00.BH2, II.PFO.00.BH2, II.PFO.00.BH2, II.PFO.00.BHE, II.PFO.00.BHE, II.PFO.00.BHE, II.PFO.00.BHE, II.PFO.00.BHE, II.PFO.00.BHE, II.PFO.00.BHE, II.PFO.00.BHE, II.PFO.00.BHE, II.PFO.00.BHE, II.PFO.00.BHE, II.PFO.00.BHE, II.PFO.00.BHE, II.PFO.00.BHE, II.PFO.00.BHE, II.PFO.00.BHE, II.PFO.00.BHE, II.PFO.00.BHE, II.PFO.00.BHN, II.PFO.00.BHN, II.PFO.00.BHN, II.PFO.00.BHN, II.PFO.00.BHN, II.PFO.00.BHN, II.PFO.00.BHN, II.PFO.00.BHN, II.PFO.00.BHN, II.PFO.00.BHN, II.PFO.00.BHN, II.PFO.00.BHN, II.PFO.00.BHN, II.PFO.00.BHN, II.PFO.00.BHN, II.PFO.00.BHN, II.PFO.00.BHN, II.PFO.00.BHN, II.PFO.00.BHZ, II.PFO.00.BHZ, II.PFO.00.BHZ, II.PFO.00.BHZ, II.PFO.00.BHZ, II.PFO.00.BHZ, II.PFO.00.BHZ, II.PFO.00.BHZ, II.PFO.00.BHZ, II.PFO.00.BHZ, II.PFO.00.BHZ, II.PFO.00.BHZ, II.PFO.00.BHZ, II.PFO.00.BHZ, II.PFO.00.BHZ, II.PFO.00.BHZ, II.PFO.00.BHZ, II.PFO.00.BHZ, II.PFO.00.BHZ, II.PFO.00.BHZ, II.PFO.00.BHZ, II.PFO.00.BHZ, II.PFO.00.BHZ, II.PFO.00.BHZ, II.PFO.00.BHZ, II.PFO.00.BHZ, II.PFO.00.BLE, II.PFO.00.BLE, II.PFO.00.BLE, II.PFO.00.BLE, II.PFO.00.BLE, II.PFO.00.BLE, II.PFO.00.BLE, II.PFO.00.BLE, II.PFO.00.BLN, II.PFO.00.BLN, II.PFO.00.BLN, II.PFO.00.BLN, II.PFO.00.BLN, II.PFO.00.BLN, II.PFO.00.BLN, II.PFO.00.BLN, II.PFO.00.BLZ, II.PFO.00.BLZ, II.PFO.00.BLZ, II.PFO.00.BLZ, II.PFO.00.BLZ, II.PFO.00.BLZ, II.PFO.00.BLZ, II.PFO.00.BLZ, II.PFO.00.EN1, II.PFO.00.EN2, II.PFO.00.ENE, II.PFO.00.ENE, II.PFO.00.ENE, II.PFO.00.ENE, II.PFO.00.ENE, II.PFO.00.ENE, II.PFO.00.ENN, II.PFO.00.ENN, II.PFO.00.ENN, II.PFO.00.ENN, II.PFO.00.ENN, II.PFO.00.ENN, II.PFO.00.ENZ, II.PFO.00.ENZ, II.PFO.00.ENZ, II.PFO.00.ENZ, II.PFO.00.ENZ, II.PFO.00.ENZ, II.PFO.00.LCE, II.PFO.00.LCQ, II.PFO.00.LDI, II.PFO.00.LDI, II.PFO.00.LH1, II.PFO.00.LH1, II.PFO.00.LH1, II.PFO.00.LH1, II.PFO.00.LH1, II.PFO.00.LH1, II.PFO.00.LH1, II.PFO.00.LH1, II.PFO.00.LH1, II.PFO.00.LH1, II.PFO.00.LH2, II.PFO.00.LH2, II.PFO.00.LH2, II.PFO.00.LH2, II.PFO.00.LH2, II.PFO.00.LH2, II.PFO.00.LH2, II.PFO.00.LH2, II.PFO.00.LHE, II.PFO.00.LHE, II.PFO.00.LHE, II.PFO.00.LHE, II.PFO.00.LHE, II.PFO.00.LHE, II.PFO.00.LHE, II.PFO.00.LHE, II.PFO.00.LHE, II.PFO.00.LHE, II.PFO.00.LHE, II.PFO.00.LHE, II.PFO.00.LHE, II.PFO.00.LHE, II.PFO.00.LHE, II.PFO.00.LHE, II.PFO.00.LHE, II.PFO.00.LHN, II.PFO.00.LHN, II.PFO.00.LHN, II.PFO.00.LHN, II.PFO.00.LHN, II.PFO.00.LHN, II.PFO.00.LHN, II.PFO.00.LHN, II.PFO.00.LHN, II.PFO.00.LHN, II.PFO.00.LHN, II.PFO.00.LHN, II.PFO.00.LHN, II.PFO.00.LHN, II.PFO.00.LHN, II.PFO.00.LHN, II.PFO.00.LHN, II.PFO.00.LHZ, II.PFO.00.LHZ, II.PFO.00.LHZ, II.PFO.00.LHZ, II.PFO.00.LHZ, II.PFO.00.LHZ, II.PFO.00.LHZ, II.PFO.00.LHZ, II.PFO.00.LHZ, II.PFO.00.LHZ, II.PFO.00.LHZ, II.PFO.00.LHZ, II.PFO.00.LHZ, II.PFO.00.LHZ, II.PFO.00.LHZ, II.PFO.00.LHZ, II.PFO.00.LHZ, II.PFO.00.LHZ, II.PFO.00.LHZ, II.PFO.00.LHZ, II.PFO.00.LHZ, II.PFO.00.LHZ, II.PFO.00.LHZ, II.PFO.00.LHZ, II.PFO.00.LHZ, II.PFO.00.LLE, II.PFO.00.LLE, II.PFO.00.LLE, II.PFO.00.LLE, II.PFO.00.LLE, II.PFO.00.LLE, II.PFO.00.LLE, II.PFO.00.LLN, II.PFO.00.LLN, II.PFO.00.LLN, II.PFO.00.LLN, II.PFO.00.LLN, II.PFO.00.LLN, II.PFO.00.LLN, II.PFO.00.LLZ, II.PFO.00.LLZ, II.PFO.00.LLZ, II.PFO.00.LLZ, II.PFO.00.LLZ, II.PFO.00.LLZ, II.PFO.00.LLZ, II.PFO.00.LN1, II.PFO.00.LN2, II.PFO.00.LNE, II.PFO.00.LNE, II.PFO.00.LNE, II.PFO.00.LNE, II.PFO.00.LNE, II.PFO.00.LNE, II.PFO.00.LNN, II.PFO.00.LNN, II.PFO.00.LNN, II.PFO.00.LNN, II.PFO.00.LNN, II.PFO.00.LNN, II.PFO.00.LNZ, II.PFO.00.LNZ, II.PFO.00.LNZ, II.PFO.00.LNZ, II.PFO.00.LNZ, II.PFO.00.LNZ, II.PFO.00.MHE, II.PFO.00.MHE, II.PFO.00.MHN, II.PFO.00.MHN, II.PFO.00.MHZ, II.PFO.00.MHZ, II.PFO.00.MHZ, II.PFO.00.MLE, II.PFO.00.MLE, II.PFO.00.MLN, II.PFO.00.MLN, II.PFO.00.MLZ, II.PFO.00.MLZ, II.PFO.00.VH1, II.PFO.00.VH1, II.PFO.00.VH1, II.PFO.00.VH1, II.PFO.00.VH1, II.PFO.00.VH1, II.PFO.00.VH1, II.PFO.00.VH1, II.PFO.00.VH1, II.PFO.00.VH1, II.PFO.00.VH2, II.PFO.00.VH2, II.PFO.00.VH2, II.PFO.00.VH2, II.PFO.00.VH2, II.PFO.00.VH2, II.PFO.00.VH2, II.PFO.00.VH2, II.PFO.00.VHE, II.PFO.00.VHE, II.PFO.00.VHE, II.PFO.00.VHE, II.PFO.00.VHE, II.PFO.00.VHE, II.PFO.00.VHE, II.PFO.00.VHE, II.PFO.00.VHE, II.PFO.00.VHE, II.PFO.00.VHE, II.PFO.00.VHE, II.PFO.00.VHE, II.PFO.00.VHE, II.PFO.00.VHE, II.PFO.00.VHE, II.PFO.00.VHE, II.PFO.00.VHE, II.PFO.00.VHN, II.PFO.00.VHN, II.PFO.00.VHN, II.PFO.00.VHN, II.PFO.00.VHN, II.PFO.00.VHN, II.PFO.00.VHN, II.PFO.00.VHN, II.PFO.00.VHN, II.PFO.00.VHN, II.PFO.00.VHN, II.PFO.00.VHN, II.PFO.00.VHN, II.PFO.00.VHN, II.PFO.00.VHN, II.PFO.00.VHN, II.PFO.00.VHN, II.PFO.00.VHN, II.PFO.00.VHZ, II.PFO.00.VHZ, II.PFO.00.VHZ, II.PFO.00.VHZ, II.PFO.00.VHZ, II.PFO.00.VHZ, II.PFO.00.VHZ, II.PFO.00.VHZ, II.PFO.00.VHZ, II.PFO.00.VHZ, II.PFO.00.VHZ, II.PFO.00.VHZ, II.PFO.00.VHZ, II.PFO.00.VHZ, II.PFO.00.VHZ, II.PFO.00.VHZ, II.PFO.00.VHZ, II.PFO.00.VHZ, II.PFO.00.VHZ, II.PFO.00.VHZ, II.PFO.00.VHZ, II.PFO.00.VHZ, II.PFO.00.VHZ, II.PFO.00.VHZ, II.PFO.00.VHZ, II.PFO.00.VHZ, II.PFO.00.VLE, II.PFO.00.VLE, II.PFO.00.VLN, II.PFO.00.VLN, II.PFO.00.VLZ, II.PFO.00.VLZ, II.PFO.00.VM1, II.PFO.00.VM1, II.PFO.00.VM1, II.PFO.00.VM1, II.PFO.00.VM1, II.PFO.00.VM2, II.PFO.00.VM2, II.PFO.00.VME, II.PFO.00.VME, II.PFO.00.VME, II.PFO.00.VME, II.PFO.00.VME, II.PFO.00.VME, II.PFO.00.VME, II.PFO.00.VME, II.PFO.00.VME, II.PFO.00.VME, II.PFO.00.VME, II.PFO.00.VMN, II.PFO.00.VMN, II.PFO.00.VMN, II.PFO.00.VMN, II.PFO.00.VMN, II.PFO.00.VMN, II.PFO.00.VMN, II.PFO.00.VMN, II.PFO.00.VMN, II.PFO.00.VMN, II.PFO.00.VMN, II.PFO.00.VMZ, II.PFO.00.VMZ, II.PFO.00.VMZ, II.PFO.00.VMZ, II.PFO.00.VMZ, II.PFO.00.VMZ, II.PFO.00.VMZ, II.PFO.00.VMZ, II.PFO.00.VMZ, II.PFO.00.VMZ, II.PFO.00.VMZ, II.PFO.00.WDI, II.PFO.00.WDI, II.PFO.00.WDI, II.PFO.00.WDO, II.PFO.10.BH1, II.PFO.10.BH1, II.PFO.10.BH1, II.PFO.10.BH1, II.PFO.10.BH1, II.PFO.10.BH2, II.PFO.10.BH2, II.PFO.10.BH2, II.PFO.10.BH2, II.PFO.10.BH2, II.PFO.10.BHE, II.PFO.10.BHE, II.PFO.10.BHE, II.PFO.10.BHE, II.PFO.10.BHE, II.PFO.10.BHE, II.PFO.10.BHE, II.PFO.10.BHE, II.PFO.10.BHE, II.PFO.10.BHE, II.PFO.10.BHN, II.PFO.10.BHN, II.PFO.10.BHN, II.PFO.10.BHN, II.PFO.10.BHN, II.PFO.10.BHN, II.PFO.10.BHN, II.PFO.10.BHN, II.PFO.10.BHN, II.PFO.10.BHN, II.PFO.10.BHZ, II.PFO.10.BHZ, II.PFO.10.BHZ, II.PFO.10.BHZ, II.PFO.10.BHZ, II.PFO.10.BHZ, II.PFO.10.BHZ, II.PFO.10.BHZ, II.PFO.10.BHZ, II.PFO.10.BHZ, II.PFO.10.BHZ, II.PFO.10.BHZ, II.PFO.10.BHZ, II.PFO.10.BL1, II.PFO.10.BL2, II.PFO.10.BLE, II.PFO.10.BLE, II.PFO.10.BLE, II.PFO.10.BLN, II.PFO.10.BLN, II.PFO.10.BLN, II.PFO.10.BLZ, II.PFO.10.BLZ, II.PFO.10.BLZ, II.PFO.10.LCE, II.PFO.10.LCQ, II.PFO.10.LDI, II.PFO.10.LH1, II.PFO.10.LH1, II.PFO.10.LH1, II.PFO.10.LH1, II.PFO.10.LH2, II.PFO.10.LH2, II.PFO.10.LH2, II.PFO.10.LH2, II.PFO.10.LHE, II.PFO.10.LHE, II.PFO.10.LHE, II.PFO.10.LHE, II.PFO.10.LHE, II.PFO.10.LHE, II.PFO.10.LHE, II.PFO.10.LHN, II.PFO.10.LHN, II.PFO.10.LHN, II.PFO.10.LHN, II.PFO.10.LHN, II.PFO.10.LHN, II.PFO.10.LHN, II.PFO.10.LHZ, II.PFO.10.LHZ, II.PFO.10.LHZ, II.PFO.10.LHZ, II.PFO.10.LHZ, II.PFO.10.LHZ, II.PFO.10.LHZ, II.PFO.10.LHZ, II.PFO.10.LHZ, II.PFO.10.LHZ, II.PFO.10.VH1, II.PFO.10.VH1, II.PFO.10.VH1, II.PFO.10.VH1, II.PFO.10.VH2, II.PFO.10.VH2, II.PFO.10.VH2, II.PFO.10.VH2, II.PFO.10.VHE, II.PFO.10.VHE, II.PFO.10.VHE, II.PFO.10.VHE, II.PFO.10.VHE, II.PFO.10.VHE, II.PFO.10.VHE, II.PFO.10.VHN, II.PFO.10.VHN, II.PFO.10.VHN, II.PFO.10.VHN, II.PFO.10.VHN, II.PFO.10.VHN, II.PFO.10.VHN, II.PFO.10.VHZ, II.PFO.10.VHZ, II.PFO.10.VHZ, II.PFO.10.VHZ, II.PFO.10.VHZ, II.PFO.10.VHZ, II.PFO.10.VHZ, II.PFO.10.VHZ, II.PFO.10.VHZ, II.PFO.10.VHZ, II.PFO.10.VMU, II.PFO.10.VMU, II.PFO.10.VMU, II.PFO.10.VMU, II.PFO.10.VMU, II.PFO.10.VMU, II.PFO.10.VMU, II.PFO.10.VMU, II.PFO.10.VMV, II.PFO.10.VMV, II.PFO.10.VMV, II.PFO.10.VMV, II.PFO.10.VMV, II.PFO.10.VMV, II.PFO.10.VMV, II.PFO.10.VMV, II.PFO.10.VMW, II.PFO.10.VMW, II.PFO.10.VMW, II.PFO.10.VMW, II.PFO.10.VMW, II.PFO.10.VMW, II.PFO.10.VMW, II.PFO.10.VMW, II.PFO.20.BF1, II.PFO.20.BF2, II.PFO.20.BFE, II.PFO.20.BFN, II.PFO.20.BFZ, II.PFO.20.LCE, II.PFO.20.LCQ, II.PFO.20.LF1, II.PFO.20.LF2, II.PFO.20.LFE, II.PFO.20.LFN, II.PFO.20.LFZ, II.PFO.XX.BHE, II.PFO.XX.BHE, II.PFO.XX.BHN, II.PFO.XX.BHN, II.PFO.XX.BHZ, II.PFO.XX.BHZ, II.PFO.XX.LHE, II.PFO.XX.LHE, II.PFO.XX.LHN, II.PFO.XX.LHN, II.PFO.XX.LHZ, II.PFO.XX.LHZ, II.PFO.XX.VHE, II.PFO.XX.VHE, II.PFO.XX.VHN, II.PFO.XX.VHN, II.PFO.XX.VHZ, II.PFO.XX.VHZ
For waveform requests that include instrument correction, the appropriate instrument response information also has to be downloaded.
t = obspy.UTCDateTime("2014-08-24T10:20:44.0") # South Napa earthquake
st = client.get_waveforms("II", "PFO", "00", "LHZ",
t - 10 * 60, t + 20 * 60)
inv = client.get_stations(network="II", station="PFO", location="00", channel="LHZ",
level="response", starttime=t - 10, endtime=t + 10)
st.plot()
st.remove_response(inventory=inv)
st.plot()
All data requested using the FDSN client can be directly saved to file using the filename="..."
option. The data is then stored exactly as it is served by the data center, i.e. without first parsing by ObsPy and outputting by ObsPy.
client.get_events(starttime=t-100, endtime=t+24*3600, minmagnitude=5,
filename="/tmp/requested_events.xml")
client.get_stations(network="II", station="PFO", level="station",
filename="/tmp/requested_stations.xml")
client.get_waveforms("II", "PFO", "00", "LHZ", t - 10 * 60, t + 20 * 60,
filename="/tmp/requested_waveforms.mseed")
!ls -lrt /tmp/requested*
-rw-r--r-- 1 lion wheel 11515 Sep 17 12:07 /tmp/requested_events.xml -rw-r--r-- 1 lion wheel 12288 Sep 17 12:07 /tmp/requested_waveforms.mseed -rw-r--r-- 1 lion wheel 24853 Sep 17 12:07 /tmp/requested_stations.xml
Use the FDSN client to assemble a small waveform dataset for on event.
limit=5
to keep network traffic down)from obspy.clients.fdsn import Client
client = Client("IRIS")
catalog = client.get_events(minmagnitude=8, limit=5)
print(catalog)
catalog.plot()
event = catalog[0]
print(event)
5 Event(s) in Catalog: 2017-09-08T04:49:21.410000Z | +15.068, -93.715 | 8.1 Mww 2015-09-16T22:54:32.860000Z | -31.573, -71.674 | 8.3 mww 2014-04-01T23:46:47.380000Z | -19.619, -70.788 | 8.1 MW 2013-05-24T05:44:49.880000Z | +54.815, +153.391 | 8.3 MW 2012-04-11T10:43:10.530000Z | +0.767, +92.428 | 8.2 MW
Event: 2017-09-08T04:49:21.410000Z | +15.068, -93.715 | 8.1 Mww resource_id: ResourceIdentifier(id="smi:service.iris.edu/fdsnws/event/1/query?eventid=10402114") event_type: 'earthquake' preferred_origin_id: ResourceIdentifier(id="smi:service.iris.edu/fdsnws/event/1/query?originid=25226154") preferred_magnitude_id: ResourceIdentifier(id="smi:service.iris.edu/fdsnws/event/1/query?magnitudeid=182775925") --------- event_descriptions: 1 Elements origins: 1 Elements magnitudes: 1 Elements
level="response"
as you will need the response later on.origin = event.origins[0]
t = origin.time
inventory = client.get_stations(longitude=origin.longitude, latitude=origin.latitude,
minradius=101, maxradius=103,
starttime=t, endtime =t+100,
channel="LHZ", level="response",
matchtimeseries=True)
print(inventory)
Inventory created at 2017-09-17T19:17:56.000000Z Created by: IRIS WEB SERVICE: fdsnws-station | version: 1.1.27 http://service.iris.edu/fdsnws/station/1/query?starttime=2017-09-08... Sending institution: IRIS-DMC (IRIS-DMC) Contains: Networks (4): II IU ND NZ Stations (5): II.ERM (Erimo, Hokkaido Island, Japan) IU.SNZO (South Karori, New Zealand) ND.MARNC (Mare, Loyalty islands, New Caledonia) NZ.KHZ (Kahutara) NZ.QRZ (Quartz Range) Channels (7): II.ERM.00.LHZ, II.ERM.10.LHZ, IU.SNZO.00.LHZ, IU.SNZO.10.LHZ, ND.MARNC.00.LHZ, NZ.KHZ.10.LHZ, NZ.QRZ.10.LHZ
get_waveforms()
call in a try/except/pass block to silently skip stations that actually have no data available)from obspy import Stream
st = Stream()
for network in inventory:
for station in network:
try:
st += client.get_waveforms(network.code, station.code, "*", "LHZ",
t - 5 * 60, t + 30 * 60)
except:
pass
print(st)
st.plot()
7 Trace(s) in Stream: II.ERM.00.LHZ | 2017-09-08T04:44:22.069538Z - 2017-09-08T05:19:21.069538Z | 1.0 Hz, 2100 samples II.ERM.10.LHZ | 2017-09-08T04:44:22.069538Z - 2017-09-08T05:19:21.069538Z | 1.0 Hz, 2100 samples IU.SNZO.00.LHZ | 2017-09-08T04:44:22.069538Z - 2017-09-08T05:19:21.069538Z | 1.0 Hz, 2100 samples IU.SNZO.10.LHZ | 2017-09-08T04:44:22.069538Z - 2017-09-08T05:19:21.069538Z | 1.0 Hz, 2100 samples ND.MARNC.00.LHZ | 2017-09-08T04:44:21.956871Z - 2017-09-08T05:19:20.956871Z | 1.0 Hz, 2100 samples NZ.KHZ.10.LHZ | 2017-09-08T04:44:22.069534Z - 2017-09-08T05:19:21.069534Z | 1.0 Hz, 2100 samples NZ.QRZ.10.LHZ | 2017-09-08T04:44:22.069536Z - 2017-09-08T05:19:21.069536Z | 1.0 Hz, 2100 samples
st.remove_response(inventory=inventory, water_level=20)
st.plot()
If you have time, assemble and plot another similar dataset (e.g. like before stations at a certain distance from a big event, or use Transportable Array data for a big event, etc.)
Finally, all of the above queries can not only be directed at one specific data center, but instead can be sent to either ..
.. to query data across all existing FDSN web service data centers (or at least those registered with IRIS/EIDA). These federation/routing services support station lookup and waveform request queries.
This example queries the IRIS Federator which in turn combines data from all other FDSN web service data centers.
from obspy.clients.fdsn import RoutingClient
client = RoutingClient('iris-federator') # or use 'eida-routing' for the EIDA routing service
# Tohoku Earthquake
t = obspy.UTCDateTime('2011-03-11T14:46:24+09')
st = client.get_waveforms(
channel="LHZ", starttime=t, endtime=t+20,
latitude=50, longitude=14, maxradius=10)
print(st)
271 Trace(s) in Stream: G.CLF.00.LHZ | 2011-03-11T05:15:30.000000Z - 2011-03-11T05:47:00.000000Z | 1.0 Hz, 1891 samples ... (269 other traces) ... NI.AGOR..LHZ | 2011-03-11T05:43:46.560600Z - 2011-03-11T05:49:04.560600Z | 1.0 Hz, 319 samples [Use "print(Stream.__str__(extended=True))" to print all Traces]