Exemple #1
0
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
Exemple #2
0
#
# 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')
Exemple #3
0
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)
Exemple #4
0
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)
Exemple #5
0
# 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 -