Changeset 1100


Ignore:
Timestamp:
12.01.2016 17:15:43 (4 years ago)
Author:
klaus
Message:

radius request with fdsn ws implemented

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

Legend:

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

    r1078 r1100  
    66 
    77import os 
     8import StringIO 
    89from SeismicHandler.basics.command import BaseCommand 
    9 from SeismicHandler.modules.traces import add_traces 
     10from SeismicHandler.modules.traces import add_traces, Stream 
    1011from SeismicHandler.basics.messages import log_message 
    1112from SeismicHandler.basics.error import ShxError 
     
    109110                print >> Settings.echo_channel, txt 
    110111                return 
     112            reqmode, reqpars = self.parseReqMode( netcode ) 
     113            if reqmode == 'bynetwork': 
     114                client = Client(fdsnadr) 
     115                st = Stream() 
     116                for netcode in reqpars: 
     117                    nst = client.get_waveforms(netcode, station, location, 
     118                        channel, reqtime, (reqtime+reqlength) ) 
     119                    st += nst 
     120            elif reqmode == 'byradius': 
     121                lat, lon, radius = reqpars 
     122                print reqmode, lat, lon, radius 
     123                client = Client(fdsnadr) 
     124                inv = client.get_stations( starttime=reqtime, 
     125                    endtime=(reqtime+reqlength), latitude=lat, 
     126                    longitude=lon, maxradius=radius ) 
     127                bulk = "" 
     128                for sta in inv.get_contents()['stations']: 
     129                    netsta = sta.split(None,1)[0] 
     130                    try: 
     131                        net, station = netsta.split('.') 
     132                    except: 
     133                        print "error parsing netsta '%s'" % netsta 
     134                        continue 
     135                    if location == "": 
     136                        loc = '*' 
     137                    else: 
     138                        loc = location 
     139                    if channel == "": 
     140                        chan = "*" 
     141                    else: 
     142                        chan = channel 
     143                    bulk += "%s %s %s %s %s %s\n" % (net, 
     144                        station,loc,channel,reqtime,(reqtime+reqlength)) 
     145                print bulk 
     146                st = client.get_waveforms_bulk( StringIO.StringIO(bulk) ) 
    111147            else: 
    112                 client = Client(fdsnadr) 
    113                 st = client.get_waveforms(netcode, station, location, channel, 
    114                     reqtime, (reqtime+reqlength) ) 
     148                raise ShxError( "unknown request mode '%'" % reqmode, 
     149                    status=1111 ) 
    115150         
    116151            # trim traces (obviously unaligned, complete records returned) 
     
    128163            log_message("warning.fetch", msg % ", ".join(stations)) 
    129164        add_traces(st, gain=True) 
     165     
     166    def parseReqMode( self, reqstr ): 
     167        tmp = reqstr.split(',') 
     168        if len(tmp) < 3: 
     169            return ('bynetwork',tmp) 
     170        elif len(tmp) == 3: 
     171            try: 
     172                lat, lon, radius = map(float,tmp) 
     173            except: 
     174                return ('bynetwork',tmp) 
     175            return ('byradius',[lat,lon,radius]) 
     176        else: 
     177            return ('bynetwork',tmp) 
     178        return ('unknown',[]) 
    130179 
    131180 
  • SHX/trunk/SeismicHandler/modules/wx_.py

    r1099 r1100  
    983983                        fac = i 
    984984                    plotpos = Overlays.plotPos( i+1, fac * theight + MARGINS[0]) 
    985                     print "dbg: i, fac, plotpos, zheight", i, fac, plotpos, zheight, theight 
    986985                    canvas.Blit( 
    987986                        plotoffset + STATION_INFO + MARGINS[3],  
Note: See TracChangeset for help on using the changeset viewer.