Example #1
0
    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
Example #2
0
    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