def isrpGetWsData(StzPrms, Ti, Te): # ti_str = "20180225_11:00:00" # tf_str = "20180225_12:00:00" ti = UTCDateTime(Ti) tf = UTCDateTime(Te) client = Client(StzPrms['WssClient'][0], StzPrms['WssPort'][0], timeout=20) Wfrm = Stream() for i in range(0, StzPrms['WssChannel'][0]): response = client.get_availability(StzPrms['WssNetwork'][0], StzPrms['StationName'][0], StzPrms['WssLocation'][0], 'CH' + str(i + 1)) print(response) out = client.get_waveforms(StzPrms['WssNetwork'][0], StzPrms['StationName'][0], StzPrms['WssLocation'][0], 'CH' + str(i + 1), ti, tf) Wfrm += out return Wfrm
# # exemplos ObsPy # https://docs.obspy.org/tutorial/code_snippets/utc_date_time.html#initialization # # http://moho.iag.usp.br/rq/ # https://www.facebook.com/sismoUSP/reviews/ # https://www.seiscomp3.org/doc/applications/seedlink.html # from obspy.clients.earthworm import Client client = Client("pubavo1.wr.usgs.gov", 16022) response = client.get_availability('AV', 'ACH', channel='EHE')
class ClientTestCase(unittest.TestCase): """ Test cases for obspy.clients.earthworm.client.Client. """ def setUp(self): # Monkey patch: set lower default precision of all UTCDateTime objects UTCDateTime.DEFAULT_PRECISION = 4 self.client = Client("pubavo1.wr.usgs.gov", 16022, timeout=30.0) def tearDown(self): # restore default precision of all UTCDateTime objects UTCDateTime.DEFAULT_PRECISION = 6 @skip_on_network_error def test_getWaveform(self): """ Tests get_waveforms method. """ client = self.client start = UTCDateTime() - 3600 end = start + 1.0 # example 1 -- 1 channel, cleanup stream = client.get_waveforms('AV', 'ACH', '', 'EHE', start, end) self.assertEqual(len(stream), 1) delta = stream[0].stats.delta trace = stream[0] self.assertEqual(len(trace), 101) self.assertTrue(trace.stats.starttime >= start - delta) self.assertTrue(trace.stats.starttime <= start + delta) self.assertTrue(trace.stats.endtime >= end - delta) self.assertTrue(trace.stats.endtime <= end + delta) self.assertEqual(trace.stats.network, 'AV') self.assertEqual(trace.stats.station, 'ACH') self.assertEqual(trace.stats.location, '') self.assertEqual(trace.stats.channel, 'EHE') # example 2 -- 1 channel, no cleanup stream = client.get_waveforms('AV', 'ACH', '', 'EHE', start, end, cleanup=False) self.assertTrue(len(stream) >= 2) summed_length = sum(len(tr) for tr in stream) self.assertEqual(summed_length, 101) self.assertTrue(stream[0].stats.starttime >= start - delta) self.assertTrue(stream[0].stats.starttime <= start + delta) self.assertTrue(stream[-1].stats.endtime >= end - delta) self.assertTrue(stream[-1].stats.endtime <= end + delta) for trace in stream: self.assertEqual(trace.stats.network, 'AV') self.assertEqual(trace.stats.station, 'ACH') self.assertEqual(trace.stats.location, '') self.assertEqual(trace.stats.channel, 'EHE') # example 3 -- component wildcarded with '?' stream = client.get_waveforms('AV', 'ACH', '', 'EH?', start, end) self.assertEqual(len(stream), 3) for trace in stream: self.assertEqual(len(trace), 101) self.assertTrue(trace.stats.starttime >= start - delta) self.assertTrue(trace.stats.starttime <= start + delta) self.assertTrue(trace.stats.endtime >= end - delta) self.assertTrue(trace.stats.endtime <= end + delta) self.assertEqual(trace.stats.network, 'AV') self.assertEqual(trace.stats.station, 'ACH') self.assertEqual(trace.stats.location, '') self.assertEqual(stream[0].stats.channel, 'EHZ') self.assertEqual(stream[1].stats.channel, 'EHN') self.assertEqual(stream[2].stats.channel, 'EHE') @skip_on_network_error def test_saveWaveform(self): """ Tests save_waveforms method. """ # initialize client client = self.client start = UTCDateTime() - 3600 end = start + 1.0 with NamedTemporaryFile() as tf: testfile = tf.name # 1 channel, cleanup (using SLIST to avoid dependencies) client.save_waveforms(testfile, 'AV', 'ACH', '', 'EHE', start, end, format="SLIST") stream = read(testfile) self.assertEqual(len(stream), 1) delta = stream[0].stats.delta trace = stream[0] self.assertEqual(len(trace), 101) self.assertTrue(trace.stats.starttime >= start - delta) self.assertTrue(trace.stats.starttime <= start + delta) self.assertTrue(trace.stats.endtime >= end - delta) self.assertTrue(trace.stats.endtime <= end + delta) self.assertEqual(trace.stats.network, 'AV') self.assertEqual(trace.stats.station, 'ACH') self.assertEqual(trace.stats.location, '') self.assertEqual(trace.stats.channel, 'EHE') @skip_on_network_error def test_availability(self): data = self.client.get_availability() seeds = ["%s.%s.%s.%s" % (d[0], d[1], d[2], d[3]) for d in data] self.assertIn('AV.ACH.--.EHZ', seeds)
class ClientTestCase(unittest.TestCase): """ Test cases for obspy.clients.earthworm.client.Client. """ def setUp(self): # Monkey patch: set lower default precision of all UTCDateTime objects UTCDateTime.DEFAULT_PRECISION = 4 self.client = Client("pubavo1.wr.usgs.gov", 16022, timeout=30.0) def tearDown(self): # restore default precision of all UTCDateTime objects UTCDateTime.DEFAULT_PRECISION = 6 @skip_on_network_error def test_get_waveform(self): """ Tests get_waveforms method. """ client = self.client start = UTCDateTime() - 3600 end = start + 1.0 # example 1 -- 1 channel, cleanup stream = client.get_waveforms('AV', 'ACH', '', 'BHE', start, end) self.assertEqual(len(stream), 1) delta = stream[0].stats.delta trace = stream[0] self.assertTrue(len(trace) in (50, 51)) self.assertGreaterEqual(trace.stats.starttime, start - delta) self.assertLessEqual(trace.stats.starttime, start + delta) self.assertGreaterEqual(trace.stats.endtime, end - delta) self.assertLessEqual(trace.stats.endtime, end + delta) self.assertEqual(trace.stats.network, 'AV') self.assertEqual(trace.stats.station, 'ACH') self.assertEqual(trace.stats.location, '') self.assertEqual(trace.stats.channel, 'BHE') # example 2 -- 1 channel, no cleanup stream = client.get_waveforms('AV', 'ACH', '', 'BHE', start, end, cleanup=False) self.assertGreaterEqual(len(stream), 2) summed_length = sum(len(tr) for tr in stream) self.assertTrue(summed_length in (50, 51)) self.assertGreaterEqual(stream[0].stats.starttime, start - delta) self.assertLessEqual(stream[0].stats.starttime, start + delta) self.assertGreaterEqual(stream[-1].stats.endtime, end - delta) self.assertLessEqual(stream[-1].stats.endtime, end + delta) for trace in stream: self.assertEqual(trace.stats.network, 'AV') self.assertEqual(trace.stats.station, 'ACH') self.assertEqual(trace.stats.location, '') self.assertEqual(trace.stats.channel, 'BHE') # example 3 -- component wildcarded with '?' stream = client.get_waveforms('AV', 'ACH', '', 'BH?', start, end) self.assertEqual(len(stream), 3) for trace in stream: self.assertTrue(len(trace) in (50, 51)) self.assertGreaterEqual(trace.stats.starttime, start - delta) self.assertLessEqual(trace.stats.starttime, start + delta) self.assertGreaterEqual(trace.stats.endtime, end - delta) self.assertLessEqual(trace.stats.endtime, end + delta) self.assertEqual(trace.stats.network, 'AV') self.assertEqual(trace.stats.station, 'ACH') self.assertEqual(trace.stats.location, '') self.assertEqual(stream[0].stats.channel, 'BHZ') self.assertEqual(stream[1].stats.channel, 'BHN') self.assertEqual(stream[2].stats.channel, 'BHE') @skip_on_network_error def test_save_waveform(self): """ Tests save_waveforms method. """ # initialize client client = self.client start = UTCDateTime() - 3600 end = start + 1.0 with NamedTemporaryFile() as tf: testfile = tf.name # 1 channel, cleanup (using SLIST to avoid dependencies) client.save_waveforms(testfile, 'AV', 'ACH', '', 'BHE', start, end, format="SLIST") stream = read(testfile) self.assertEqual(len(stream), 1) delta = stream[0].stats.delta trace = stream[0] self.assertEqual(len(trace), 51) self.assertGreaterEqual(trace.stats.starttime, start - delta) self.assertLessEqual(trace.stats.starttime, start + delta) self.assertGreaterEqual(trace.stats.endtime, end - delta) self.assertLessEqual(trace.stats.endtime, end + delta) self.assertEqual(trace.stats.network, 'AV') self.assertEqual(trace.stats.station, 'ACH') self.assertEqual(trace.stats.location, '') self.assertEqual(trace.stats.channel, 'BHE') @skip_on_network_error def test_availability(self): data = self.client.get_availability() seeds = ["%s.%s.%s.%s" % (d[0], d[1], d[2], d[3]) for d in data] self.assertIn('AV.ACH.--.BHZ', seeds)
# ObsPy code to get data from Earthworm waveserver on BBShark+RPi # 2020-Dec-23 J.Beale from obspy.clients.earthworm import Client import obspy from scipy.io import savemat # for export to Matlab format file import sys # for writing file import numpy as np # for writing # ------------------------------------------------------------------ hours = 2 # how many hours of data to export into CSV file calibration = 1.0 # multiply data by this scale factor client = Client("192.168.1.227", 16022) # IP and port of EW server response = client.get_availability('*', '*', channel='EHZ') print(response) tStart = response[0][4] # date/time of beginning of data record tEnd = response[0][5] # date/time of end of data record StationName = response[0][1] # eg. 'SHARK' dur = 60*60*hours # 60 seconds * 60 minutes * hours winEnd = tEnd # fixed end time winStart = tEnd - dur print("Requesting " + str(winStart) + " - " + str(winEnd)) startStr = str(winStart) fname = startStr[0:13]+startStr[14:16]+"_"+StationName+".csv"
all_stations[NETDISP] = [] for array in net['arrays']: STA = array['id'] STANAME = array['Name'] all_stations[NETDISP].append(STANAME) CHAN = array['channel'] # LTS alpha parameter - subset size ALPHA = array['Alpha'] logging.info(f'Reading in data from Winston for station {STA}') wclient = WClient(config.winston_address, config.winston_port) # Get Availability try: avail = wclient.get_availability(NET, STA, channel=CHAN) except Exception: logging.error(f"Unable to get location info for station {STA}") continue locs = [x[2] for x in avail] st = Stream() for loc in locs: try: # Not sure why we can't use a wildcard for loc, but it # doesn't seem to work (at least, not for DLL), so we loop. tr = wclient.get_waveforms(NET, STA, loc, CHAN, STARTTIME -