def getWaveforms(args, inventory): traces = inventory.get_contents()["channels"] ntraces = len(traces) print "Downloading {:d} waveforms".format(ntraces) print traces t1 = args["starttime"] t2 = args["endtime"] downloadlist = [tuple(trace.split(".")) + (t1, t2) for trace in traces] parameters = { "attach_response": False, #'minimumlength':10.*3600., "longestonly": True, } client = Client("Iris") waveforms = client.get_waveforms_bulk(downloadlist, **parameters) print "downloaded waveforms" print waveforms return waveforms
def main(): #==== INITIALIZE ==== #---- parameters ---- redownload = False basedir = 'semucb_dataset' datadir = os.path.join(basedir,'data') t1,t2 = -3600.,10000. #---- input files ---- fname_evcatalogue = os.path.join(basedir,'evcatalogue_semucb.ndk') fname_stcatalogue = os.path.join(basedir,'receivers.dat') #==== PREPARE DOWNLOAD LIST ==== print 'reading station list...' stcatalogue = RecFile(fname_stcatalogue) print 'retrieved {:d} stations'.format(stcatalogue.ndata) unique_stations = set(stcatalogue.stations) print 'unique stations: {}'.format(len(unique_stations)) print 'reading event catalogue...' evcatalogue = NDKFile(fname_evcatalogue) print 'found {:d} events'.format(evcatalogue.nevents) create_dir(datadir) #==== LOOP THROUGH EVENTS ==== client = Client('Iris') for name,event in zip(evcatalogue.names[0:1],evcatalogue.events[0:1]): print '---- {:s} ----'.format(name) runtime = time.time() fname_events = '{:s}_events.xml'.format(name) fname_stations = '{:s}_stations.xml'.format(name) fname_mseed = '{:s}_waveforms.mseed'.format(name) path_stations = os.path.join(datadir,fname_stations) path_events = os.path.join(datadir,fname_events) path_mseed = os.path.join(datadir,fname_mseed) #---- check if data exist ---- if os.path.exists(path_mseed)\ and os.path.exists(path_events)\ and os.path.exists(path_stations): print 'data already exists, continuing ...' continue #---- prepare redownload ---- tstart = event.origin+event.ctime+t1 tend = event.origin+event.ctime+t2 downloadlist = [('*',stat,'*','LH*',tstart,tend) for stat in unique_stations] print 'downloading ...'.format(tstart,tend) try: inventory = client.get_stations_bulk(downloadlist,level='response') events = client.get_events(minmag=5.0,starttime=tstart,endtime=tend) waveforms = client.get_waveforms_bulk(downloadlist, attach_response=False,longestonly=True) except Exception,err: print err print 'ERROR WHILE DOWNLOADING' continue #---- write to file ---- try: inventory.write(path_stations,format='STATIONXML') events.write(path_events,format='QUAKEML') waveforms.write(path_mseed,format='MSEED') except Exception,err: print err print 'SAVING ERROR' continue