Changeset 1169 for SHX


Ignore:
Timestamp:
09.02.2016 14:22:03 (4 years ago)
Author:
klaus
Message:

Flinn-Engdahl regions; CompareLocations? finished; scrollable parameter box

Location:
SHX/trunk/SeismicHandler
Files:
7 edited

Legend:

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

    r1166 r1169  
    357357        'epi_latitude'    : ( 30, 'floatN',    None, 1), 
    358358        'epi_longitude'   : ( 40, 'floatN',    None, 1), 
     359        'epi_region'      : ( 41, 'string',    '', 1), 
    359360        'source_depth'    : ( 50, 'floatN',    None, 1), 
    360361        'depth_type'      : ( 51, 'string',    'unknown', 1), 
  • SHX/trunk/SeismicHandler/cmdscripts/SHX_MENU_COMPARE_LOCATION.SHC

    r1165 r1169  
     1 
     2default 1 cmpout.stx output file 
    13 
    24sdef origin 
     
    1517 
    1618! no event services at EMSC and GFZ 
     19echo_ch #1 
    1720compare_location "origin "lat "lon "depth iris "clat "clon 
     21echo_ch 
    1822 
    1923return 
  • SHX/trunk/SeismicHandler/cmdscripts/SHX_MENU_LOCATE_TELE.SHC

    r1165 r1169  
    55sdef depth 
    66sdef depth_type 
     7sdef mydepth 
     8sdef mydepth_type 
    79sdef clat 
    810sdef clon 
     11sdef fereg 
    912 
     13! Prepare output value of depth_type, so that 'unknown' is changed in any case. 
    1014param get source_depth &depth 
    1115if "depth nes ;; goto depthok: 
    1216    calc r &depth = 33. 
    1317    param set source_depth 33. 
     18    @CALC S &MYDEPTH_TYPE = fixed 
    1419depthok: 
     20param get depth_type &depth_type 
     21@IF "DEPTH_TYPE NES unknown GOTO TYPEOK: 
     22    @CALC S &MYDEPTH_TYPE = fixed 
     23typeok: 
    1524 
     25! Perform a location. 
    1626locate_tele p "depth &origin &lat &lon &clat &clon 
     27 
     28! Try to fit depth using depth phases. 
     29fit_depth "lat "lon &mydepth 
     30 
     31! If an own depth was found, relocate and set depth_type. 
     32if "mydepth eqs ;; goto mydepthok: 
     33    ! repeat location with new depth 
     34    locate_tele p "mydepth &origin &lat &lon &clat &clon 
     35    !! more acurate would be another round 
     36    !fit_depth "lat "lon &mydepth 
     37    !locate_tele p "mydepth &origin &lat &lon &clat &clon 
     38    @CALC S &MYDEPTH_TYPE = determined 
     39mydepthok: 
     40 
     41flinn_engdahl "lat "lon &fereg 
     42 
     43! Set output variables. 
    1744param set epi_latitude "lat 
    1845param set epi_longitude "lon 
     46param set epi_region "fereg 
    1947param set origin_time "origin 
    2048param set sta_latitude "clat 
    2149param set sta_longitude "clon 
    2250 
    23 param get depth_type &depth_type 
    24 @IF "DEPTH_TYPE NES unknown GOTO TYPEOK: 
    25     @PARAM SET DEPTH_TYPE fixed 
    26 typeok: 
     51if "mydepth_type eqs ;; goto mytypeok: 
     52    param set depth_type "mydepth_type 
     53mytypeok: 
     54if "mydepth eqs ;; goto depthset: 
     55    param set source_depth "mydepth 
     56depthset: 
    2757 
    2858return 
  • SHX/trunk/SeismicHandler/commands/compare_location.py

    r1165 r1169  
    88from SeismicHandler.basics.command import BaseCommand 
    99from SeismicHandler.modules.seismics import locateTeleEvent, compareLocation 
     10from SeismicHandler.config import Settings 
    1011from obspy.sh.core import toUTCDateTime 
    1112 
     
    7576        if len(self.parameters) > 6: 
    7677            center_lon = float( self.parameters[6] ) 
    77         compareLocation( origin, lat, lon, depth, cmplist, 
     78        resulttext = compareLocation( origin, lat, lon, depth, cmplist, 
    7879            center_lat, center_lon ) 
     80        print >> Settings.echo_channel, resulttext 
  • SHX/trunk/SeismicHandler/commands/locate_tele.py

    r1165 r1169  
    8383        if len(self.parameters) > 6: 
    8484            clonsym = self.parameters[6][1:] 
    85         #try: 
    86         origin, lat, lon, clat, clon = locateTeleEvent( phase, depth ) 
    87         #except: 
    88         #    return 
     85        try: 
     86            origin, lat, lon, clat, clon = locateTeleEvent( phase, depth ) 
     87        except: 
     88            print "dbg: no epicenter determined" 
     89            return 
    8990        self.symbols.set( origsym, fromUTCDateTime(origin) ) 
    9091        self.symbols.set( latsym, "%g" % lat ) 
  • SHX/trunk/SeismicHandler/modules/seismics.py

    r1168 r1169  
    7373        origin = xphase.picktime - ttrav - residtime 
    7474     
    75     print "dbg: depthphases", determineDepthFromDepthPhases( elat, elon ) 
    76  
    7775    return (origin,elat,elon,center_lat,center_lon) 
    7876 
     
    180178        dist, az, baz = gps2DistAzimuth( epilat, epilon, lat, lon ) 
    181179        dist /= (1000.*DEG_TO_KM) 
    182         dep, acc = fit_depth( phase, ttdist, dist ) 
     180        try: 
     181            dep, acc = fit_depth( phase, ttdist, dist ) 
     182        except: 
     183            continue 
     184        if dep == None: 
     185            continue 
    183186        deplist.append( dep ) 
     187    if len(deplist) == 0: 
     188        return None 
    184189    return (sum(deplist)/float(len(deplist))) 
    185190 
     
    571576            kmdist = dist / 1000. 
    572577            degdist = kmdist / DEG_TO_KM 
    573             resultstr += "%s: locdiff %3.1f km or " % (src,kmdist)\ 
    574                 +"%4.2f deg, timediff %3.1f s, " % (degdist,origdiff)\ 
    575                 +"depdiff %3.1f\n" % depdiff 
     578            resultstr += "%s:\n   loc dev %3.1f km or " % (src,kmdist)\ 
     579                +"%4.2f deg\n   time dev %3.1f s\n" % (degdist,origdiff)\ 
     580                +"   depth dev %3.1f km\n" % depdiff 
    576581            if centerlat == None or centerlon == None: 
    577582                continue 
     
    585590            for phase in pslo.keys(): 
    586591                ownslowness, ownaz, sloerr, azerr = pslo[phase] 
    587                 print "dbg:", phase, ownslowness 
    588592                cmpval = None 
    589593                for a in arr: 
    590                     print "dbg: arr dump", a.phase.name, a.ray_param_sec_degree 
    591594                    if a.phase.name == phase: 
    592595                        cmpval = a.ray_param_sec_degree 
    593596                        break 
    594                 resultstr += "   slowness %s %3.1f" % (phase,ownslowness) 
     597                resultstr += "   slowness %s %3.1f s/deg" % (phase,ownslowness) 
    595598                if cmpval != None: 
    596                     print "dbg: slownesses", phase, ownslowness, cmpval 
    597                     resultstr += ", diff %3.1f" % (ownslowness-cmpval) 
     599                    resultstr += ", dev %3.1f" % (ownslowness-cmpval) 
    598600                resultstr += '\n' 
    599     print "dbg:", resultstr 
    600601    return resultstr 
    601602 
  • SHX/trunk/SeismicHandler/modules/wx_.py

    r1167 r1169  
    20632063        if error: 
    20642064            mode |= wx.ICON_ERROR 
    2065         dlg = wx.MessageDialog(self, msg, "An error occured!", mode ) 
     2065            title = "An error occured!" 
     2066        else: 
     2067            title = "Message Box" 
     2068        dlg = wx.MessageDialog(self, msg, title, mode ) 
    20662069        dlg.ShowModal() 
    20672070        dlg.Destroy() 
     
    23912394        "plotterWindow: traces menu entry." 
    23922395        if self._seltrace == None: 
    2393             self.showMessage( "no trace selected" ) 
     2396            self.showMessage( "no trace selected", error=True ) 
    23942397        else: 
    23952398            _sendShCommand( "del %d" % self._seltrace ) 
     
    23982401        "plotterWindow: traces menu entry." 
    23992402        if self._seltrace == None: 
    2400             self.showMessage( "no trace selected" ) 
     2403            self.showMessage( "no trace selected", error=True ) 
    24012404            return 
    24022405        trclist = traces_from_list( "%d" % self._seltrace ) 
    24032406        if len(trclist) != 1: 
    2404             self.showMessage( "Program bug: should select only one trace" ) 
     2407            self.showMessage( "Program bug: should select only one trace", 
     2408                error=True ) 
    24052409            return 
    24062410        trc = trclist[0] 
     
    24102414        "plotterWindow: traces menu entry." 
    24112415        if self._seltrace == None: 
    2412             self.showMessage( "no trace selected" ) 
     2416            self.showMessage( "no trace selected", error=True ) 
    24132417        else: 
    24142418            _sendShCommand( "del |%d|-|$dsptrcs|" % self._seltrace ) 
     
    24172421        "plotterWindow: traces menu entry." 
    24182422        if self._seltrace == None: 
    2419             self.showMessage( "no trace selected" ) 
     2423            self.showMessage( "no trace selected", error=True ) 
    24202424            return 
    24212425        try: 
     
    26282632        lon = ap.getValueAsString( 'epi_longitude' ) 
    26292633        if not lat or not lon: 
    2630             self.showMessage( "no epicenter defined" ) 
     2634            self.showMessage( "no epicenter defined", error=True ) 
    26312635            return 
    26322636        _sendShCommand( "sort_by_distance %s %s" % (lat,lon) ) 
     
    26722676    def OnCorrPick( self, e ): 
    26732677        if not self._zoomwdw: 
    2674             self.showMessage( "No selection window found." ) 
     2678            self.showMessage( "No selection window found.", error=True ) 
    26752679            return 
    26762680        timea, timeb = self._zoomwdw 
     
    27732777    def OnCompareLocation( self, e ): 
    27742778        "plotterWindow: events menu entry." 
    2775         _sendShCommand( "shx_menu_compare_location" ) 
     2779        _sendShCommand( "shx_menu_compare_location cmpresult.stx" ) 
     2780        fp = open( "CMPRESULT.STX" ) 
     2781        text = fp.read() 
     2782        fp.close() 
     2783        os.remove( "CMPRESULT.STX" ) 
     2784        self.showMessage( text ) 
    27762785         
    27772786    def OnSaveTracesAndParamsQuick( self, e ): 
     
    28822891            val = ap.getValue(vname) 
    28832892            if val == None or val == '': 
    2884                 self.showMessage( "No location determined yet." ) 
     2893                self.showMessage( "No location determined yet.", error=True ) 
    28852894                return 
    28862895        plist = ap.getValue('phaselist') 
     
    28912900    def OnTheoPhaseTele( self, e ): 
    28922901        "plotterWindow: phase menu entry." 
    2893         _sendShCommand( "phase clear ;;; theo\ntheophase iasp91 all" ) 
     2902        _sendShCommand( "phase clear ;;; theo\ntheophase taupi all" ) 
    28942903     
    28952904    def OnPhasePlot( self, e ): 
     
    29152924            timea = timeb = None 
    29162925        if timea == None or not self._seltrace: 
    2917             self.showMessage( "No trace selected" ) 
     2926            self.showMessage( "No trace selected", error=True ) 
    29182927            return 
    29192928        cmd = "magnitude determine ml %d %g %g" % (self._seltrace,timea,timeb) 
     
    29272936        "plotterWindow: magnitude menu entry." 
    29282937        if not self._seltrace: 
    2929             self.showMessage( "No trace selected" ) 
     2938            self.showMessage( "No trace selected", error=True ) 
    29302939            return 
    29312940        cmd = "magnitude clear ml %d" % self._seltrace 
     
    29422951 
    29432952 
    2944 class ParamDialog(wx.Dialog): 
     2953class ParamDialog(wx.Frame): 
    29452954 
    29462955    def __init__( self, parent ): 
    29472956        "ParamDialog: init method." 
    2948         wx.Dialog.__init__( self, parent, -1, title="Parameters", 
    2949             style=wx.SUNKEN_BORDER )         
     2957        wx.Frame.__init__( self, parent, -1, title="Parameters", 
     2958            style=wx.DEFAULT_FRAME_STYLE | wx.FULL_REPAINT_ON_RESIZE, 
     2959            size=(250,600) ) 
     2960        #self.Bind( wx.EVT_SIZE, self.OnSize ) 
     2961        self.SetBackgroundColour( shxcolor1 ) 
     2962        self.scrpanel = ParamDialogPanel( self ) 
     2963        self.scrpanel.SetupScrolling() 
     2964     
     2965    #def OnSize( self, e ): 
     2966    #    print "dbg: Onsize ParamDialog" 
     2967    #    self.scrpanel.SetSize((350,850)) 
     2968    #    self.scrpanel.SetupScrolling() 
     2969    ##    self.scrpanel.draw() 
     2970     
     2971class ParamDialogPanel(SP.ScrolledPanel): 
     2972 
     2973    def __init__( self, parent ): 
     2974        SP.ScrolledPanel.__init__(self, parent, style=wx.VSCROLL|wx.HSCROLL ) 
     2975        #self.Bind( wx.EVT_SIZE, self.OnSize ) 
     2976        self.draw() 
     2977 
     2978    #def OnSize(self, evt): 
     2979    #    size = self.GetSize() 
     2980    #    vsize = self.GetVirtualSize() 
     2981    #    print "dbg: OnSize", size, vsize 
     2982    #    self.SetVirtualSize((size[0], vsize[1])) 
     2983 
     2984    def draw( self ): 
    29502985        self.SetBackgroundColour( shxcolor1 ) 
    29512986        height = 26 
     
    29793014            vbox.Add( hbox, 0, wx.LEFT, 1 ) 
    29803015        vbox.Add( (5,5), 0, wx.ALL, 1 ) 
    2981         vbox.SetSizeHints(self) 
    2982         self.SetAutoLayout(True) 
     3016        #vbox.SetSizeHints(self) 
    29833017        self.SetSizer( vbox ) 
    2984         self.Layout() 
     3018        #self.SetAutoLayout(True) 
     3019        #self.Layout() 
    29853020     
    29863021    def OnButton( self, pname, e, *args ): 
     
    31363171        evinfo = EventTextParser(self.text_evinfo.GetValue()).parse() 
    31373172        if evinfo == None: 
    3138             plotter.showMessage( "Could not parse event line") 
     3173            plotter.showMessage( "Could not parse event line", error=True ) 
    31393174            self.Destroy() 
    31403175            return 
     
    32763311    global plotter 
    32773312    if plotter and plotter.pardialog != None: 
    3278         wx.CallAfter(plotter.pardialog.updateVariables, None) 
     3313        wx.CallAfter(plotter.pardialog.scrpanel.updateVariables, None) 
    32793314subscribe_ui_event(__updateparams, "updateparams") 
    32803315 
Note: See TracChangeset for help on using the changeset viewer.