Changeset 1158 for SHX


Ignore:
Timestamp:
05.02.2016 11:38:32 (4 years ago)
Author:
klaus
Message:

correlation picker; beam with plane wave slo/az

Location:
SHX/trunk/SeismicHandler
Files:
2 added
7 edited

Legend:

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

    r1157 r1158  
    197197    def setDefaultPhase( self, phase ): 
    198198        self.default_phase = phase 
     199     
     200    def getDefaultPhase( self ): 
     201        return self.default_phase 
    199202 
    200203    def setDefaultWeight( self, weight ): 
     
    342345    pardef = { 
    343346        # analysis results 
    344         'fk_slowness'     : ( 10, 'floatN',    None, 1), 
    345         'fk_azimuth'      : ( 20, 'floatN',    None, 1), 
     347        'slowness'        : ( 10, 'floatN',    None, 1), 
     348        'azimuth'         : ( 20, 'floatN',    None, 1), 
    346349        'epi_latitude'    : ( 30, 'floatN',    None, 1), 
    347350        'epi_longitude'   : ( 40, 'floatN',    None, 1), 
  • SHX/trunk/SeismicHandler/cmdscripts/SHX_MENU_BEAM.SHC

    r1118 r1158  
    66set all t-origin 0. 
    77shift all time_al 
    8 param get fk_slowness &slo 
    9 param get fk_azimuth &az 
     8param get slowness &slo 
     9param get azimuth &az 
    1010beam all "az "slo 
    1111sum all 
  • SHX/trunk/SeismicHandler/cmdscripts/SHX_MENU_FK.SHC

    r1118 r1158  
    1010sdef az 
    1111fk all #1 #2 #3 #4 #5 &slo &az /slownessmap 
    12 param set fk_slowness "slo 
    13 param set fk_azimuth "az 
     12param set slowness "slo 
     13param set azimuth "az 
    1414 
    1515return 
  • SHX/trunk/SeismicHandler/commands/beam.py

    r1157 r1158  
    1111from SeismicHandler.modules.traces import traces_from_list, add_traces, \ 
    1212                                                                  new_starttime 
     13from SeismicHandler.modules.seismics import absToRelPositions 
    1314from SeismicHandler.basics.messages import log_message #, get_runtime 
    1415from SeismicHandler.config import get_runtime 
     
    1718from SeismicHandler.basics import timeit 
    1819 
    19  
    20 # relative distance info, should not stay here 
    21 reldist_list = { 
    22     'grf' : { 
    23         'GRA1': (0.102153,    0.109822), 
    24         'GRB1': (31.239706, -33.307243), 
    25         'GRC1': (21.962475, -77.247238), 
    26         'GRA2': (10.015971,  -3.968605), 
    27         'GRA3': ( 7.067174,   7.928269), 
    28         'GRA4': (15.546033, -13.954022), 
    29         'GRB2': (32.623089, -46.696999), 
    30         'GRB3': (42.428452, -38.622746), 
    31         'GRB4': (24.607180, -24.680033), 
    32         'GRB5': (33.220501, -64.353325), 
    33         'GRC2': (11.354594, -91.546341), 
    34         'GRC3': (26.722525, -89.032738), 
    35         'GRC4': (22.280903, -67.175827), 
    36     } 
    37 } 
    3820 
    3921DEG_TO_KM = 111.19 
     
    7860        except: 
    7961            raise ShxError("float conversion error", status=1108) 
    80         reldist = self.getRelativeDistances( traces ) 
     62        reldist = self.absToRelLocations( traces ) 
    8163        if reldist == None: 
    8264            raise ShxError("Cannot find relative station distances", status=1736) 
     
    9678        for trc in traces: 
    9779            trc.set_info( "t-origin", trc.get_info("t-origin") 
    98                 + shifts[trc.get_info("station")] ) 
     80                + shifts["%s.%s" % (trc.stats.network,trc.stats.station)] ) 
    9981            trc.invalidate_cache() 
    100      
    101     def getRelativeDistances( self, traces ): 
    102         "Returns dictionary with relative distances for each station or None." 
    103         # look in predefined lists 
    104         for dlist in reldist_list: 
    105             retlist = {} 
    106             found = True 
    107             for trc in traces: 
    108                 sta = trc.get_info('station') 
    109                 if sta in reldist_list[dlist].keys(): 
    110                     retlist[sta] = reldist_list[dlist][sta] 
    111                 else: 
    112                     found = False 
    113                     break 
    114             if found: 
    115                 break 
    116         if found: 
    117             return retlist 
    118         else: 
    119             # compute relative from absolute locations 
    120             newlist = self.absToRelLocations(traces) 
    121             reldist_list[uuid.uuid4().hex] = newlist 
    122             return newlist 
    12382     
    12483    def shiftRelativeDistancesToRefstation( self, reldist, refstation ): 
     
    156115        Returns relative locations of stations. 
    157116        """ 
    158         print "dbg: compute rel from abs" 
    159117        stations = Stations() 
    160         relloc = {} 
    161         reflon = reflat = None 
     118        statlist = [] 
     119        lats = [] 
     120        lons = [] 
    162121        for trc in traces: 
    163122            sname = "%s.%s.%s.%s" % (trc.stats.network, trc.stats.station, 
     
    173132                slon = float( r.longitude ) 
    174133            except: 
    175                 raise ShxError( "metadata parse error '%s'" % sname, status=1111 ) 
    176             if reflon == None: 
    177                 reflon = slon 
    178                 reflat = slat 
    179                 relloc[trc.stats.station] = (0.,0.) 
    180             else: 
    181                 x = (slon-reflon)*DEG_TO_KM*np.cos(slat/(180./np.pi)) 
    182                 y = (slat-reflat)*DEG_TO_KM 
    183                 relloc[trc.get_info("station")] = (x,y) 
     134                raise ShxError( "metadata parse error '%s'" % sname ) 
     135            staname = "%s.%s" % (trc.stats.network,trc.stats.station) 
     136            if staname not in statlist: 
     137                statlist.append( staname ) 
     138                lats.append( slat ) 
     139                lons.append( slon ) 
     140        if len(statlist) == 0: 
     141            return 
     142        relx, rely = absToRelPositions( lons, lats ) 
     143        relloc = {} 
     144        for idx,sta in enumerate(statlist): 
     145            relloc[sta] = (relx[idx],rely[idx]) 
    184146        return relloc 
    185147 
  • SHX/trunk/SeismicHandler/commands/phase.py

    r1157 r1158  
    2828    PHASE LIST <station> [<picktype>] |<comp>] [<minweight>] 
    2929    PHASE DEFAULT_PHASE <phase> 
     30    PHASE GET_DEFAULT_PHASE <phasevar> 
    3031    PHASE STATIONS 
    3132    PHASE CLEAR [<phase>] [<station>] [<picktype>] 
     
    132133            phase = self.parameters[1] 
    133134            phaselist.setDefaultPhase( phase ) 
     135        elif subcmd == 'get_default_phase': 
     136            phasevar = self.parameters[1][1:] 
     137            self.symbols.set( phasevar, phaselist.getDefaultPhase() ) 
    134138        elif subcmd == 'stations': 
    135139            for s in phaselist.getStations(): 
  • SHX/trunk/SeismicHandler/modules/seismics.py

    r1157 r1158  
    3838        if len(lons) < 3: 
    3939            continue 
    40         center_lon = sum(lons)/float(len(lons)) 
    41         center_lat = sum(lats)/float(len(lats)) 
    42         relx = [] 
    43         rely = [] 
    44         for i in range(len(lons)): 
    45             x, y = utlGeoKm( center_lon, center_lat, lons[i], lats[i] ) 
    46             relx.append( x ) 
    47             rely.append( y ) 
     40        relx, rely = absToRelPositions( lons, lats ) 
    4841        mintime = min( abstimes ) 
    4942        times = [] 
     
    5548    return pslo 
    5649 
     50 
     51def absToRelPositions( lons, lats ): 
     52    "Compute relative distances in km from lon,lat pairs." 
     53    if len(lons) == 0 or len(lons) != len(lats): 
     54        return None 
     55    center_lon = sum(lons)/float(len(lons)) 
     56    center_lat = sum(lats)/float(len(lats)) 
     57    relx = [] 
     58    rely = [] 
     59    for i in range(len(lons)): 
     60        x, y = utlGeoKm( center_lon, center_lat, lons[i], lats[i] ) 
     61        relx.append( x ) 
     62        rely.append( y ) 
     63    return (relx,rely) 
    5764 
    5865def computeSlownessFromPicks( reltimes, relx, rely, dt=None ): 
  • SHX/trunk/SeismicHandler/modules/wx_.py

    r1156 r1158  
    21232123        self.addEntry( arrayMenu, 'Beam / Del Beam\tB', 
    21242124            'Compute/delete beam for all traces', self.OnBeam ) 
     2125        self.addEntry( arrayMenu, 'Plane Wave', 
     2126            'Compute slowness and azimuth using picks', self.OnPlaneWave ) 
     2127        self.addEntry( arrayMenu, 'Correlation Picker', 
     2128            'Crosscorrelate all traces with selected wavelet and pick', 
     2129            self.OnCorrPick ) 
    21252130        # simulate menu 
    21262131        simulateMenu = wx.Menu() 
     
    25622567            ap.getValueAsString('fk_max_slowness')) 
    25632568        _sendShCommand( cmd ) 
     2569 
    25642570    def OnBeam( self, e ): 
    25652571        "plotterWindow: menu entry." 
     
    25692575            _sendShCommand( "shx_menu_beam" ) 
    25702576        self.flag_beam = not self.flag_beam 
     2577     
     2578    def OnPlaneWave( self, e ): 
     2579        _sendShCommand( "shx_menu_plane_wave" ) 
     2580     
     2581    def OnCorrPick( self, e ): 
     2582        if not self._zoomwdw: 
     2583            self.showMessage( "No selection window found." ) 
     2584            return 
     2585        timea, timeb = self._zoomwdw 
     2586        if timea == None or timeb == None: 
     2587            return 
     2588        _sendShCommand( "corrpick %d %g %g %g" % (self._seltrace, 
     2589            timea,timeb,((timeb-timea)*4.)) ) 
    25712590     
    25722591    def OnSimulateWoodAnderson( self, e ): 
Note: See TracChangeset for help on using the changeset viewer.