Changeset 1156


Ignore:
Timestamp:
04.02.2016 19:47:54 (4 years ago)
Author:
klaus
Message:

more methods for parsing event info

Location:
SHX/trunk/SeismicHandler
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • SHX/trunk/SeismicHandler/basics/tools.py

    r1155 r1156  
    210210class EventTextParser: 
    211211 
     212    ydict = {'jan':1, 'feb':2, 'mar':3, 'maer':3, 'apr':4, 'may':5, 'mai':5, 
     213        'jun':6, 'jul':7, 'aug':8, 'sep':9, 'oct':10, 'okt':10, 'nov':11, 
     214        'dec':12, 'dez':12} 
     215 
    212216    def __init__( self, text ): 
    213217        self.text = text 
     
    215219            self.EmscWebline, 
    216220            self.SzoWebline, 
     221            self.SzoAmplDecayAlert, 
     222            self.OriginEpicenter, 
    217223        ] 
    218224     
     
    305311            return None 
    306312        return(origin,lat,lon) 
     313     
     314    def SzoAmplDecayAlert( self, text ): 
     315        picfile = None 
     316        for w in text.split(): 
     317            if w.startswith('det_') and w.endswith('.png'): 
     318                picfile = w 
     319                break 
     320        else: 
     321            return None 
     322        pos1 = text.find("(") 
     323        pos2 = text.find(")") 
     324        if pos2 < 0 or pos1 >= pos2: 
     325            return None 
     326        numstr = text[pos1+1:pos2] 
     327        try: 
     328            lat, lon = numstr.split(',') 
     329            lat = float( lat.strip() ) 
     330            lon = float( lon.strip() ) 
     331        except: 
     332            return None 
     333        tmp = picfile.split("_") 
     334        if len(tmp) < 4: 
     335            return None 
     336        datestr = tmp[1] 
     337        timestr = tmp[2] 
     338        secstr = tmp[3] 
     339        try: 
     340            year = int( datestr[:2] ) 
     341            month = int( datestr[2:4] ) 
     342            day = int( datestr[4:] ) 
     343            hour = int( timestr[:2] ) 
     344            minute = int( timestr[2:] ) 
     345            second = int( secstr ) 
     346        except: 
     347            return None 
     348        if year > 70: 
     349            year += 1900 
     350        else: 
     351            year += 2000 
     352        origin = UTCDateTime( year, month, day, hour, minute ) + second 
     353        return (origin,lat,lon) 
     354     
     355    def OriginEpicenter( self, text ): 
     356        tmp = text.split() 
     357        if len(tmp) < 3: 
     358            return None 
     359        if len(tmp) > 4: 
     360            return None 
     361        if len(tmp) == 4: 
     362            origstr = "%s_%s" % (tmp[0],tmp[1]) 
     363            latidx = 2 
     364            lonidx = 3 
     365        else: 
     366            origstr = tmp[0] 
     367            latidx = 1 
     368            lonidx = 2 
     369        try: 
     370            lat = float( tmp[latidx] ) 
     371            lon = float( tmp[lonidx] ) 
     372        except: 
     373            return None 
     374        try: 
     375            origin = toUTCDateTime( origstr ) 
     376        except: 
     377            origin = None 
     378        if origin: 
     379            return (origin,lat,lon) 
     380        try: 
     381            datestr, timestr = origstr.split("_") 
     382        except: 
     383            return None 
     384        if datestr.lower().startswith('t'): 
     385            t = UTCDateTime() 
     386            year = t.year 
     387            month = t.month 
     388            day = t.day 
     389        elif datestr.lower().startswith('y'): 
     390            t = UTCDateTime() - 86400. 
     391            year = t.year 
     392            month = t.month 
     393            day = t.day 
     394        else: 
     395            for delim in ('.','-'): 
     396                if delim in datestr: 
     397                    try: 
     398                        day, month, year = datestr.split(delim) 
     399                        day = int( day ) 
     400                        year = int( year ) 
     401                    except: 
     402                        return None 
     403                    break 
     404            else: 
     405                return None 
     406            if month.lower() in self.ydict.keys(): 
     407                month = self.ydict[month.lower()] 
     408            else: 
     409                try: 
     410                    month = int( month ) 
     411                except: 
     412                    return None 
     413        if day > 31 and year < 32: 
     414            day, year = year, day 
     415        tmp = timestr.split(":") 
     416        if len(tmp) < 2 or len(tmp) > 3: 
     417            return None 
     418        try: 
     419            hour = int( tmp[0] ) 
     420            minute = int( tmp[1] ) 
     421        except: 
     422            return None 
     423        if len(tmp) > 2: 
     424            try: 
     425                second = int( tmp[2] ) 
     426            except: 
     427                return None 
     428        else: 
     429            second = 0 
     430        origin = UTCDateTime( year, month, day, hour, minute, second ) 
     431        return (origin,lat,lon) 
     432         
    307433 
    308434 
  • SHX/trunk/SeismicHandler/cmdscripts/UI.SHC

    r1153 r1156  
    2929param set read_time 14-Jan-2016_14:03 
    3030 
     31param set readws_net grsn 
     32 
    3133return 
  • SHX/trunk/SeismicHandler/modules/wx_.py

    r1155 r1156  
    29742974 
    29752975    def __init__( self, parent ): 
    2976         "ParamDialog: init method." 
     2976        "EventParseDialog: init method." 
    29772977        wx.Dialog.__init__( self, parent, -1, title="Event Info Parser", 
    29782978            style=wx.SUNKEN_BORDER )         
     
    29802980        height = 26 
    29812981        btnwidth = 70 
     2982        vspace = [(15,15), 0, wx.ALL, 1] 
    29822983 
    29832984        hbox = wx.BoxSizer( wx.HORIZONTAL ) 
     
    29902991 
    29912992        vbox = wx.BoxSizer(wx.VERTICAL) 
    2992         vbox.Add( (5,5), 0, wx.ALL, 1 ) 
    2993         vbox.Add( wx.StaticText(self,label="reference station"), 0, wx.ALL, 3 ) 
     2993        vbox.Add( *vspace ) 
     2994        vbox.Add( wx.StaticText(self,label="Reference Station:"), 0, 
     2995            wx.ALL|wx.ALIGN_CENTER_HORIZONTAL, 3 ) 
    29942996        self.text_refstat = wx.TextCtrl( self, value='gr.gra1', size=(60,height) ) 
    2995         vbox.Add( self.text_refstat, 0, wx.ALL, 3 ) 
    2996         vbox.Add( (5,5), 0, wx.ALL, 1 ) 
    2997         vbox.Add( wx.StaticText(self,label="event info"), 0, wx.ALL, 3 ) 
    2998         self.text_evinfo = wx.TextCtrl( self, value='', size=(200,height) ) 
    2999         vbox.Add( self.text_evinfo, 0, wx.ALL, 3 ) 
    3000         vbox.Add( (5,5), 0, wx.ALL, 1 ) 
    3001         vbox.Add( hbox, 0, wx.ALL, 3 ) 
    3002         vbox.Add( (5,5), 0, wx.ALL, 1 ) 
     2997        vbox.Add( self.text_refstat, 0, wx.ALL|wx.ALIGN_CENTER_HORIZONTAL, 10 ) 
     2998        vbox.Add( *vspace ) 
     2999        vbox.Add( wx.StaticText(self,label="Event Info Text:"), 0, 
     3000            wx.ALL|wx.ALIGN_CENTER_HORIZONTAL, 3 ) 
     3001        self.text_evinfo = wx.TextCtrl( self, value='', size=(400,height) ) 
     3002        vbox.Add( self.text_evinfo, 0, wx.ALL|wx.ALIGN_CENTER_HORIZONTAL, 10 ) 
     3003        vbox.Add( *vspace ) 
     3004        vbox.Add( hbox, 0, wx.ALL|wx.ALIGN_CENTER_HORIZONTAL, 3 ) 
     3005        vbox.Add( *vspace ) 
    30033006        vbox.SetSizeHints(self) 
    30043007        self.SetAutoLayout(True) 
Note: See TracChangeset for help on using the changeset viewer.