Changeset 1069


Ignore:
Timestamp:
12/31/15 12:42:22 (5 years ago)
Author:
klaus
Message:

overlapping traces in display; SH compatible color definition

Location:
SHX/trunk/SeismicHandler
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • SHX/trunk/SeismicHandler/commands/fct.py

    r1063 r1069  
    8686                }, 
    8787            ] 
     88        elif subfct == "overlapping_traces": 
     89            queries = [ 
     90                { 
     91                    "text": "param", 
     92                    "type": "str", 
     93                    "question": False, 
     94                }, 
     95            ] 
    8896        else: 
    8997            msg = "Subfunction '%s' not implemented!" % subfct 
     
    121129                if os.path.exists(parname): 
    122130                    os.remove( parname ) 
     131            else: 
     132                raise ShxError( 
     133                    "oscall subfunction '%s' not implemented" % parameters[0], 
     134                    status=1709) 
     135        elif subfct == "overlapping_traces": 
     136            if parameters[0].lower() in ('true','yes','on','1'): 
     137                set_runtime( "overlapping_traces", True ) 
     138            else: 
     139                set_runtime( "overlapping_traces", False ) 
     140            self.redraw = True 
    123141 
    124142 
  • SHX/trunk/SeismicHandler/config/__init__.py

    r1060 r1069  
    4444    name = "RUNTIME:%s" % name.lower() 
    4545    try: 
    46         return Settings._getRuntimeVarDirect( name ) 
     46        return Settings._getRuntimeVarDirect( name, default ) 
    4747    except: 
    4848        return default 
  • SHX/trunk/SeismicHandler/config/runtime.py

    r1066 r1069  
    114114        "RUNTIME:norm": 0.5, 
    115115        "RUNTIME:weight": 1., 
     116        # overlapping traces 
     117        "RUNTIME:overlapping_traces": True, 
    116118    }) 
    117119 
     
    321323 
    322324    #@timeit 
    323     def _getRuntimeVarDirect(self, name ): 
     325    def _getRuntimeVarDirect(self, name, default=None ): 
    324326        """ 
    325327        Returns value of runtime var bypassing the message system. 
     
    331333        else: 
    332334            name = name.lower() 
    333         value = self.Runtime.get(name, None) 
     335        value = self.Runtime.get(name, default) 
    334336        return value 
    335337 
  • SHX/trunk/SeismicHandler/modules/wx_.py

    r1068 r1069  
    715715        elif self.traceOrder in [1, 2, 3]: 
    716716            trcs = self.traces 
     717         
     718        # should traces overlap or stay within their y-ranges 
     719        overlapping_traces = get_runtime( "overlapping_traces", True ) 
    717720 
    718721        # plot every trace 
     
    724727                start = t.stats.starttime 
    725728                end = start + self.maxDuration 
     729            try: 
     730                tzoom = t.stats.sh.ZOOM 
     731            except: 
     732                tzoom = 1. 
     733 
     734            if overlapping_traces: 
     735                # increased zheight produces overlapping of traces on display 
     736                zheight = theight * tzoom 
     737                try: 
     738                    prepzoom = 1./tzoom 
     739                except: 
     740                    prepzoom = 1. 
     741            else: 
     742                zheight = theight 
     743                prepzoom = 0.9  # why not 1.? 
    726744 
    727745            norm = globalnorm and self.maxAmplitude or self._normtype[1] 
    728             t.prepare_image_data(pltwidth, theight, timewindow, zoom=0.9, norm=norm) 
     746            # zoom=1/tzoom makes trace stay within bitmap 
     747            t.prepare_image_data(pltwidth, zheight, 
     748                timewindow, zoom=prepzoom, norm=norm) 
    729749 
    730750            # make trace graphics sketch 
    731751            if self.traceOrder in [0, 1]: 
    732                 bitmap = wx.EmptyBitmap(pltwidth, theight) 
     752                bitmap = wx.EmptyBitmap(pltwidth, zheight) 
    733753            elif self.traceOrder in [2, 3]: 
    734                 bitmap = wx.EmptyBitmap(theight, pltwidth) 
     754                bitmap = wx.EmptyBitmap(zheight, pltwidth) 
    735755 
    736756            # buffer to draw in 
     
    770790                # dito plus mirror x 
    771791                for line in t.shx.ImageData: 
    772                     ImageData.append([theight - line[1], line[0], 
    773                                                    theight - line[3], line[2]]) 
     792                    ImageData.append([zheight - line[1], line[0], 
     793                                                   zheight - line[3], line[2]]) 
    774794 
    775795            # get color, etc. attribute 
     
    779799            except KeyError: 
    780800                style = AttributeBlock() 
     801            cmode = None 
    781802            try: 
    782803                color = map(int, style.color.split(',')) 
     804                cmode = 'i' 
    783805            except: 
    784                 color = style.color 
     806                try: 
     807                    color = map(float, style.color.split(',')) 
     808                    cmode = 'f' 
     809                except: 
     810                    color = style.color 
     811                    cmode = 'o' 
     812            if cmode == 'i': 
     813                if 0 < max(color) <= 1: 
     814                    # e.g. 1,0,0 means red, multiply with 255 
     815                    color = [255*x for x in color] 
     816            elif cmode == 'f': 
     817                color = map( int, [255*x for x in color] ) 
    785818            linestyle = getattr(wx, style.linestyle.upper()) 
    786819            dbuffer.SetPen(wx.Pen(color, style.linewidth, linestyle)) 
     
    791824            # copy trace picture to canvas 
    792825            if self.traceOrder in [0, 1]: 
     826                if overlapping_traces: 
     827                    fac = i + 0.5 - 0.5*tzoom 
     828                else: 
     829                    fac = i 
    793830                canvas.Blit( 
    794831                    plotoffset + STATION_INFO + MARGINS[3],  
    795                     i * theight + MARGINS[0],  
     832                    fac * theight + MARGINS[0],  
    796833                    pltwidth, 
    797                     theight, 
     834                    zheight, 
    798835                    dbuffer, 
    799836                    0, 
     
    802839                ) 
    803840            elif self.traceOrder == 2: 
    804                 canvas.Blit(i * theight, -plotoffset + MARGIN, theight, 
     841                canvas.Blit(i * theight, -plotoffset + MARGIN, zheight, 
    805842                                                pltwidth, dbuffer, 0, 0, wx.AND) 
    806843            elif self.traceOrder == 3: 
    807                 canvas.Blit(i * theight, STATION_INFO + plotoffset, theight, 
     844                canvas.Blit(i * theight, STATION_INFO + plotoffset, zheight, 
    808845                                                pltwidth, dbuffer, 0, 0, wx.AND) 
    809846 
     
    825862                canvas.DrawLine(STATION_INFO + MARGINS[3], tmp, width - MARGINS[1], tmp) 
    826863#                canvas.SetPen(wx.Pen('Red', 1, wx.LONG_DASH)) 
    827 #                canvas.DrawLine(STATION_INFO, tmp + theight // 2, 
    828 #                                            width - MARGIN, tmp + theight // 2) 
    829 #                canvas.DrawLine(STATION_INFO, tmp - theight // 2, 
    830 #                                            width - MARGIN, tmp - theight // 2) 
     864#                canvas.DrawLine(STATION_INFO, tmp + zheight // 2, 
     865#                                            width - MARGIN, tmp + zheight // 2) 
     866#                canvas.DrawLine(STATION_INFO, tmp - zheight // 2, 
     867#                                            width - MARGIN, tmp - zheight // 2) 
    831868            elif self.traceOrder == 2: 
    832869                canvas.DrawRotatedText(txt, tmp - h // 2, height - MARGIN, 90) 
     
    834871                                                    tmp, height - STATION_INFO) 
    835872#                canvas.SetPen(wx.Pen('Red', 1, wx.LONG_DASH)) 
    836 #                canvas.DrawLine(tmp + theight // 2, MARGIN, 
    837 #                                     tmp + theight // 2, height - STATION_INFO) 
    838 #                canvas.DrawLine(tmp - theight // 2, MARGIN, 
    839 #                                     tmp - theight // 2, height - STATION_INFO) 
     873#                canvas.DrawLine(tmp + zheight // 2, MARGIN, 
     874#                                     tmp + zheight // 2, height - STATION_INFO) 
     875#                canvas.DrawLine(tmp - zheight // 2, MARGIN, 
     876#                                     tmp - zheight // 2, height - STATION_INFO) 
    840877            elif self.traceOrder == 3: 
    841878                canvas.DrawRotatedText(txt, tmp - h // 2, 
     
    843880                canvas.DrawLine(tmp, STATION_INFO, tmp, height - MARGIN) 
    844881#                canvas.SetPen(wx.Pen('Red', 1, wx.LONG_DASH)) 
    845 #                canvas.DrawLine(tmp+theight // 2, STATION_INFO, 
    846 #                                           tmp + theight // 2, height - MARGIN) 
    847 #                canvas.DrawLine(tmp - theight // 2, STATION_INFO, 
    848 #                                           tmp - theight // 2, height - MARGIN) 
     882#                canvas.DrawLine(tmp+zheight // 2, STATION_INFO, 
     883#                                           tmp + zheight // 2, height - MARGIN) 
     884#                canvas.DrawLine(tmp - zheight // 2, STATION_INFO, 
     885#                                           tmp - zheight // 2, height - MARGIN) 
    849886 
    850887 
  • SHX/trunk/SeismicHandler/patches/obspy_.py

    r1066 r1069  
    5959 
    6060    width:         total width of plotting window in pixels 
    61     height:        hight of plotting window in pixels 
     61    height:        height of plotting window in pixels 
    6262    zoom:          global zoom factor (y extension) 
    6363    timewindow:    current global time window (tuple of min and max) 
Note: See TracChangeset for help on using the changeset viewer.