Changeset 1188 for SHX


Ignore:
Timestamp:
01.03.2016 22:27:06 (4 years ago)
Author:
klaus
Message:

first working code for pick time uncertainties using mouse wheel

Location:
SHX/trunk/SeismicHandler
Files:
2 edited

Legend:

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

    r1187 r1188  
    4242} 
    4343typeshades = { 
    44     PICKTYPE_MANUAL : '#FFBBBB', 
     44    PICKTYPE_MANUAL : '#FFCCCC', 
    4545    PICKTYPE_THEO   : 'lightgreen', 
    4646    PICKTYPE_AUTO   : 'orange', 
  • SHX/trunk/SeismicHandler/modules/wx_.py

    r1187 r1188  
    191191        "magnifyCanvas: mouse wheel event." 
    192192        wheel = evt.GetWheelRotation() 
    193         if wheel > 0: 
    194             plotter.canvas.moveZoomWindow( 'up' ) 
    195         elif wheel < 0: 
    196             plotter.canvas.moveZoomWindow( 'down' ) 
     193        # check whether we are close to phase 
     194        station = None 
     195        x, y = evt.GetPositionTuple() 
     196        abstime = self._fromScreenCoo( x,  mode='abs' ) 
     197        if self.trc: 
     198            cphase = self._closePhase( abstime, fullphaseinfo=True ) 
     199            if cphase: 
     200                station = "%s.%s" % (self.trc.stats.network, 
     201                    self.trc.stats.station) 
     202        # Action depends on close phase: 
     203        if station == None: 
     204            # No close phase found. 
     205            if wheel > 0: 
     206                plotter.canvas.moveZoomWindow( 'up' ) 
     207            elif wheel < 0: 
     208                plotter.canvas.moveZoomWindow( 'down' ) 
     209        else: 
     210            # Close phase found. 
     211            phasepix = self._toScreenCoo(cphase.picktime) 
     212            if abstime > cphase.picktime: 
     213                pixdiff = abs( phasepix\ 
     214                    - self._toScreenCoo(cphase.picktime+cphase.right_error) ) 
     215                #print "dbg: pixdiff", pixdiff 
     216                if wheel > 0: 
     217                    pixdiff += 1 
     218                else: 
     219                    pixdiff -= 1 
     220                    if pixdiff < 0: 
     221                        pixdiff = 0 
     222                if pixdiff == 0: 
     223                    endtime = cphase.picktime 
     224                else: 
     225                    endtime = self._fromScreenCoo( phasepix+pixdiff, mode='abs') 
     226                right_error = endtime - cphase.picktime 
     227                cmd = "@PHASE SET_RIGHT_ERROR %s %s %g" % (station, 
     228                    cphase.name,right_error) 
     229                #print "dbg: right", cmd 
     230            else: 
     231                pixdiff = abs( phasepix\ 
     232                    - self._toScreenCoo(cphase.picktime+cphase.left_error) ) 
     233                #print "dbg: pixdiff", pixdiff 
     234                if wheel > 0: 
     235                    pixdiff -= 1 
     236                    if pixdiff < 0: 
     237                        pixdiff = 0 
     238                else: 
     239                    pixdiff += 1 
     240                if pixdiff == 0: 
     241                    starttime = cphase.picktime 
     242                else: 
     243                    starttime = self._fromScreenCoo( phasepix-pixdiff, 
     244                        mode='abs' ) 
     245                left_error = cphase.picktime - starttime 
     246                cmd = "@PHASE SET_LEFT_ERROR %s %s %g" % (station, 
     247                    cphase.name,left_error) 
     248                #print "dbg: left", cmd 
     249            _sendShCommand( cmd ) 
     250            self.refresh() 
    197251        evt.Skip() 
    198252     
     
    274328        self._drawMagnifyTrace() 
    275329 
    276     def _closePhase( self, abstime ): 
     330    def _closePhase( self, abstime, fullphaseinfo=False ): 
    277331        "magnifyCanvas: return name and type of closest phase or None." 
    278332        if not self.trc: 
     
    281335        if not self.pixel_duration: 
    282336            return None 
    283         toltime = 3*self.pixel_duration 
     337        toltime = 5*self.pixel_duration 
    284338        station = "%s.%s" % (self.trc.stats.network,self.trc.stats.station) 
    285339        for phase in phaselist.getPhaseList(station): 
    286340            tdiff = abs( phase.picktime-abstime ) 
    287341            if tdiff < toltime: 
    288                 return (phase.name,phaselist.picktypeName(phase.picktype)) 
     342                if fullphaseinfo: 
     343                    return phase 
     344                else: 
     345                    return (phase.name,phaselist.picktypeName(phase.picktype)) 
    289346        return None 
    290347     
     
    374431            dc.SetPen(wx.Pen(scolor,1)) 
    375432            for xlo,xhi in _areas[scolor]: 
    376                 dc.DrawRectangle( xlo, ydn, xhi-xlo, yup-ydn ) 
     433                dc.DrawRectangle( xlo, ydn+1, xhi-xlo, yup-ydn ) 
    377434        # draw picks 
    378435        for pcolor in _picks.keys(): 
Note: See TracChangeset for help on using the changeset viewer.