def downloadRemoteData(self, net, evtTime, evtLat, evtLon, evtDep, mag, fileFormat): acceptedStations = [ "SPB", "CPUP", "LPAZ", "PLCA", "LCO", "LVC", "OTAV", "PTGA", "RCBR", "SAML", "SDV", "TRQA", "CAN", "FDF", "HDC", "INU", "KIP", "PPTF", "TAM", "TRIS", "CNG", "CVNA", "GRM", "HVD", "SWZ", "UPI", "WIN", ] stations = self.iris.station(network=net, station="*", starttime=evtTime, endtime=evtTime + 3600, level="sta") dom = parseString(stations) nStations = len(dom.getElementsByTagName("Station")) i = 0 while i < nStations: for node in dom.getElementsByTagName("Station"): staName = node.getAttribute("sta_code") if staName not in acceptedStations: i += 1 else: xmlStationLat = dom.getElementsByTagName("Lat")[i].toxml() staLat = float(xmlStationLat.replace("<Lat>", "").replace("</Lat>", "")) xmlStationLon = dom.getElementsByTagName("Lon")[i].toxml() staLon = float(xmlStationLon.replace("<Lon>", "").replace("</Lon>", "")) xmlStationElev = dom.getElementsByTagName("Elevation")[i].toxml() staElev = float(xmlStationElev.replace("<Elevation>", "").replace("</Elevation>", "")) # delta = taup.locations2degrees(evtLat, evtLon, staLat, staLon) # delta stores distance in degrees delta = util.locations2degrees(evtLat, evtLon, staLat, staLon) # delta stores distance in degrees itp = taup() # calling IAG Taup class itp.getTravelTimes(delta, evtDep) pTime = itp.P() sTime = itp.S() # to use in sac headers... seisTime = evtTime + pTime - self.beforeP originTime = self.beforeP - pTime fileTime = str(evtTime).replace("T", "-").replace(":", "-")[:-8] try: st = self.iris.getWaveform( net, staName, "*", "BH*", evtTime + pTime - self.beforeP, evtTime + sTime + self.afterS ) print "\nData found for station " + staName st.merge(method=1, fill_value="interpolate") try: os.mkdir(staName) except: pass os.mkdir(staName + "/" + fileTime) for tr in st: loc = str(tr.stats.location) fileName = ( staName + "/" + fileTime + "/" + net + "." + staName + "." + loc + "." + str(tr.stats.channel) + "." + fileTime + "." + fileFormat ) tr.write(fileName, fileFormat) print fileName, "saved." if fileFormat == "SAC": self.fillSACHeaders( fileName, seisTime, originTime, evtLat, evtLon, evtDep, mag, staLat, staLon, staElev ) except: pass i += 1
def downloadLocalData(self, net, evtTime, evtLat, evtLon, evtDep, mag, fileFormat): if fileFormat == "MSEED": fileFormat = str.lower(fileFormat) print "Setting local DB..." stations = self.arclink.getStations(evtTime, evtTime + 3600, net) # return stations for station in stations: staName = station["code"] staLon = station["longitude"] staLat = station["latitude"] staElev = station["elevation"] # delta = taup.locations2degrees(evtLat, evtLon, staLat, staLon) # delta stores distance in degrees delta = util.locations2degrees(evtLat, evtLon, staLat, staLon) # delta stores distance in degrees itp = taup() # calling IAG Taup class itp.getTravelTimes(delta, evtDep) pTime = itp.P() sTime = itp.S() # to use in sac headers... seisTime = evtTime + pTime - self.beforeP originTime = self.beforeP - pTime fileTime = str(evtTime).replace("T", "-").replace(":", "-")[:-8] try: st = self.arclink.getWaveform( net, staName, "*", "*", evtTime + pTime - self.beforeP, evtTime + sTime + self.afterS ) print "\nData found for station " + staName st.merge(method=1, fill_value="interpolate") try: os.mkdir(staName) except: pass os.mkdir(staName + "/" + fileTime) for tr in st: loc = str(tr.stats.location) fileName = ( staName + "/" + fileTime + "/" + net + "." + staName + "." + loc + "." + str(tr.stats.channel) + "." + fileTime + "." + fileFormat ) tr.write(fileName, fileFormat) print fileName, "saved." if fileFormat == "SAC": self.fillSACHeaders( fileName, seisTime, originTime, evtLat, evtLon, evtDep, mag, staLat, staLon, staElev ) except: pass