Changeset 1180 for SHX


Ignore:
Timestamp:
14.02.2016 18:06:51 (4 years ago)
Author:
klaus
Message:

Read dialog: read from local sources; command readl

Location:
SHX/trunk/SeismicHandler
Files:
1 added
4 edited

Legend:

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

    r1178 r1180  
    369369        'readws_loc'      : ( 83, 'string',    '*', 2 ), 
    370370        'readws_chan'     : ( 84, 'string',    'bhz', 2 ), 
     371        'read_source'     : ( 85, 'string',    'fdsn', 2 ), 
    371372        # stations 
    372373        'sta_latitude'    : ( 90, 'float',     49.0, 3 ), 
  • SHX/trunk/SeismicHandler/modules/stations.py

    r1155 r1180  
    77import copy 
    88import threading 
     9import fnmatch 
     10import math 
    911import sqlalchemy as sa 
    1012import sqlalchemy.orm as orm 
     
    280282                self.channels[i.channel] = [i] 
    281283 
    282 #        print self.stations 
     284        #print "dbg: station", self.stations 
     285        #print "dbg: channels.keys", self.channels.keys() 
    283286 
    284287    def __readDB(self, db=None, create=False): 
     
    438441        # automatic reread would be overkill 
    439442        # applications have to call 'stations.read( clear=True )' after changes 
     443     
     444    def selectChannels( self, station, chanwild ): 
     445        upwild = chanwild.upper() 
     446        if station in self.stations: 
     447            return fnmatch.filter( self.stations[station].keys(), upwild ) 
     448        else: 
     449            return [] 
     450     
     451    def selectStationsByArea( self, lat, lon, radius ): 
     452        inarea = [] 
     453        outofarea = [] 
     454        for station in self.stations: 
     455            for chan in self.stations[station]: 
     456                if station in inarea or station in outofarea: 
     457                    continue 
     458                for entry in self.stations[station][chan]: 
     459                    try: 
     460                        slat = float( entry.latitude ) 
     461                        slon = float( entry.longitude ) 
     462                    except: 
     463                        continue 
     464                    latdiff = lat - slat 
     465                    londiff = lon - slon 
     466                    diff = math.sqrt( latdiff*latdiff + londiff*londiff ) 
     467                    if diff < radius: 
     468                        inarea.append( station ) 
     469                    else: 
     470                        outofarea.append( station ) 
     471                    break 
     472        return inarea 
    440473         
    441474 
  • SHX/trunk/SeismicHandler/modules/wx_.py

    r1179 r1180  
    20912091            'Read stations in circle area around epicener from FDSN webserver', 
    20922092            self.OnReadFdsnCircle ) 
     2093        self.addEntry( fileMenu, 'Read Local Data', 
     2094            'Read from local data sources', self.OnReadLocalData ) 
    20932095        self.addEntry( fileMenu, 'Read Data ...\tR', 
    20942096            'Opens dialog box for data input', self.OnReadDialog ) 
     
    25672569        _sendShCommand( '\n'.join(cmds) ) 
    25682570     
     2571    def OnReadLocalData( self, e ): 
     2572        "plotterWindow: file menu entry." 
     2573        ap = AnalysisPar() 
     2574        cmds = ['switch uniquechannel on'] 
     2575        if ap.getValueAsString('readws_net'): 
     2576            cmd = "readl %s: %s %s %s %s %s %s" % ( 
     2577                ap.getValueAsString( 'read_source' ), 
     2578                ap.getValueAsString( 'readws_net' ), 
     2579                ap.getValueAsString( 'readws_station' ), 
     2580                ap.getValueAsString( 'readws_loc' ), 
     2581                ap.getValueAsString( 'readws_chan' ), 
     2582                ap.getValueAsString( 'read_time' ), 
     2583                ap.getValueAsString( 'read_length' ), 
     2584            ) 
     2585            cmds.append( cmd ) 
     2586        circle = ap.getValue('sta_radius') 
     2587        if circle != None and circle > 0.: 
     2588            cmd = "readl %s: %s,%s,%s * * %s %s %s" % ( 
     2589                ap.getValueAsString( 'read_source' ), 
     2590                ap.getValueAsString( 'sta_latitude' ), 
     2591                ap.getValueAsString( 'sta_longitude' ), 
     2592                ap.getValueAsString( 'sta_radius' ), 
     2593                ap.getValueAsString( 'readws_chan' ), 
     2594                ap.getValueAsString( 'read_time' ), 
     2595                ap.getValueAsString( 'read_length' ), 
     2596            ) 
     2597            cmds.append( cmd ) 
     2598        _sendShCommand( '\n'.join(cmds) ) 
     2599     
    25692600    def OnReadDialog( self, e ): 
     2601        "plotterWindow: file menu entry." 
    25702602        sellist = get_runtime("readdialog_stalist") 
    25712603        dlg = wxdialog.ReadDialog(self,stationselect=sellist) 
     
    25922624            cmds.append( "@PARAM SET %s %s" % (k.upper(), 
    25932625                val.replace('/','\\')) ) 
    2594         if keeptraces: 
     2626        if not keeptraces: 
    25952627            cmds = ['del all','del h:all'] + cmds 
    2596         if chanselect: 
    2597             cmds.append( 'chanselect %s' % chanselect ) 
    25982628        cmd = '\n'.join(cmds) 
    25992629        _sendShCommand( cmd ) 
    26002630        # perform read 
    2601         self.OnReadFdsnCombi(None) 
     2631        readsrc = AnalysisPar().getValue('read_source') 
     2632        if readsrc == 'fdsn': 
     2633            self.OnReadFdsnCombi(None) 
     2634        elif readsrc in ('db','sfd'): 
     2635            self.OnReadLocalData(None) 
     2636        else: 
     2637            self.showMessage( "Program Bug, illegal read src '%s'" % readsrc, 
     2638                error=True ) 
     2639            return 
     2640        if chanselect: 
     2641            _sendShCommand( 'chanselect %s' % chanselect ) 
    26022642     
    26032643    def OnReadFdsnCircle( self, e ): 
  • SHX/trunk/SeismicHandler/modules/wxdialog.py

    r1179 r1180  
    4747        self.detlist = self.ap.getValue('ev_list').replace('\\','/') 
    4848        self.detline = self.ap.getValue( 'ev_line' ) 
     49        readsrc = self.ap.getValue( 'read_source' ) 
    4950     
    5051        # networks/station group 
     
    109110        self.circlat_fs = FloatSpinner( self.circlattext_ctrl, 
    110111            self.circlatspin_btn, -90., 90., 0.1, 
    111             initval=self.ap.getValue('sta_latitude') ) 
     112            initval=self.ap.getValue('epi_latitude') ) 
    112113        hbox.Add( self.circlattext_ctrl, 0, wx.ALL, 0 ) 
    113114        hbox.Add( self.circlatspin_btn, 0, wx.ALL, 0 ) 
     
    123124        self.circlon_fs = FloatSpinner( self.circlontext_ctrl, 
    124125            self.circlonspin_btn, -180., 180., 0.1, 
    125             initval=self.ap.getValue('sta_longitude') ) 
     126            initval=self.ap.getValue('epi_longitude') ) 
    126127        hbox.Add( self.circlontext_ctrl, 0, wx.ALL, 0 ) 
    127128        hbox.Add( self.circlonspin_btn, 0, wx.ALL, 0 ) 
     
    225226        flaghbox.Add( self.chanselectcheck, 0, wx.ALL, hboxspace ) 
    226227 
     228        # Read source radio buttons 
     229        srchbox = wx.BoxSizer( wx.HORIZONTAL ) 
     230        self.srcradiodb_btn = wx.RadioButton( self, label='db' ) 
     231        srchbox.Add( self.srcradiodb_btn, 0, wx.ALL, hboxspace ) 
     232        if readsrc == 'db': 
     233            self.srcradiodb_btn.SetValue(True) 
     234        self.srcradiosfd_btn = wx.RadioButton( self, label='sfd' ) 
     235        srchbox.Add( self.srcradiosfd_btn, 0, wx.ALL, hboxspace ) 
     236        if readsrc == 'sfd': 
     237            self.srcradiosfd_btn.SetValue(True) 
     238        self.srcradiofdsn_btn = wx.RadioButton( self, label='fdsn' ) 
     239        srchbox.Add( self.srcradiofdsn_btn, 0, wx.ALL, hboxspace ) 
     240        if readsrc == 'fdsn': 
     241            self.srcradiofdsn_btn.SetValue(True) 
     242 
    227243        # OK and Cancel buttons 
    228244        hbox = wx.BoxSizer( wx.HORIZONTAL ) 
     
    272288        vbox.Add( *vspace ) 
    273289        vbox.Add( wx.StaticLine(self, size=(400,1)), 0, wx.ALL, linesep ) 
    274         #vbox.Add( *vspace ) 
    275290        vbox.Add( flaghbox, 0, 
    276291            wx.ALL|wx.ALIGN_CENTER_HORIZONTAL, 3 ) 
    277         #vbox.Add( *vspace ) 
     292        vbox.Add( wx.StaticLine(self, size=(400,1)), 0, wx.ALL, linesep ) 
     293        vbox.Add( srchbox, 0, 
     294            wx.ALL|wx.ALIGN_CENTER_HORIZONTAL, 3 ) 
    278295        vbox.Add( wx.StaticLine(self, size=(400,1)), 0, wx.ALL, linesep ) 
    279296        vbox.Add( *vspace ) 
     
    288305    def OnReadOk( self, e ): 
    289306        self.result = {} 
     307        # read source radio buttons 
     308        rdsrc = 'fdsn' 
     309        for btn,val in ((self.srcradiodb_btn,'db'),(self.srcradiosfd_btn,'sfd'), 
     310            (self.srcradiofdsn_btn,'fdsn')): 
     311            if btn.GetValue(): 
     312                rdsrc = val 
     313                break 
    290314        readdate = self.readdate_ctrl.GetValue() 
    291315        self.result['read_time'] = fromUTCDateTime( 
     
    310334        self.result['ev_line'] = "%d" % self.detline_ctrl.GetValue() 
    311335        self.result['ev_list'] = self.detlist 
     336        self.result['read_source'] = rdsrc 
    312337        self.result['keep_traces'] = self.keepcheck.GetValue() 
    313338        self.result['chan_select'] = self.chanselect_ctrl.GetValue() 
Note: See TracChangeset for help on using the changeset viewer.