Source code for pyrocko.scenario.station

# http://pyrocko.org - GPLv3
#
# The Pyrocko Developers, 21st Century
# ---|P------/S----------~Lg----------
from __future__ import absolute_import, division, print_function

import numpy as num
from pyrocko import model
from pyrocko.guts import Int, String, List

from .base import LocationGenerator

guts_prefix = 'pf.scenario'


[docs]class StationGenerator(LocationGenerator): nstations = Int.T( default=10, help='Number of randomly distributed stations.') network_name = String.T( default='CO', help='Network name') channels = List.T( optional=True, default=['BHE', 'BHN', 'BHZ'], help='Seismic channels to generate. Default: BHN, BHE, BHZ')
[docs]class RandomStationGenerator(StationGenerator): def __init__(self, **kwargs): StationGenerator.__init__(self, **kwargs) self._stations = None def clear(self): StationGenerator.clear(self) self._stations = None def nsl(self, istation): return self.network_name, 'S%03i' % (istation + 1), '', def get_stations(self): if self._stations is None: if self.channels: channels = [model.station.Channel(c) for c in self.channels] else: channels = None stations = [] for istation in range(self.nstations): lat, lon, north_shift, east_shift, depth = map( float, self.get_coordinates(istation)) net, sta, loc = self.nsl(istation) station = model.Station( net, sta, loc, lat=lat, lon=lon, north_shift=north_shift, east_shift=east_shift, depth=depth, channels=channels) stations.append(station) self._stations = stations return self._stations def get_distance_range(self, sources): dists = [] for source in sources: for station in self.get_stations(): dists.append( source.distance_to(station)) return num.min(dists), num.max(dists) def ensure_data(self, engine, sources, path, tmin=None, tmax=None): return [] def add_map_artists(self, engine, sources, automap): automap.add_stations(self.get_stations())