weixin_39747577 2020-11-20 20:11
浏览 0

obspy.mseed fetches Streams with start/endtimes of single traces varying +- 1 sample

If more than one component of one station is read via read("...", "MSEED") sometimes the starttime/endtime of the traces is varying by a single sample in a seemingly erratic way. This is annoying if one wants to work on the bare data array afterwards.[[BR]] Another issue is that this can lead to the length of the returned traces varying by a sample (see last example) which is especially bad for further work with the fetched data.[BR]

Examples following:

{{{

!python

from obspy.core import read, UTCDateTime t = UTCDateTime("2010-06-20T20:19:51.494999Z") st = read("/bay200/mseed_online/archive/2010/BW/UH3/EH?.D/BW_.171", starttime=t-3, endtime=t+7) print st 3 Trace(s) in Stream: BW.UH3..EHE | 2010-06-20T20:19:48.494999Z - 2010-06-20T20:19:58.494999Z | 200.0 Hz, 2001 samples BW.UH3..EHZ | 2010-06-20T20:19:48.490000Z - 2010-06-20T20:19:58.490000Z | 200.0 Hz, 2001 samples BW.UH3..EHN | 2010-06-20T20:19:48.494999Z - 2010-06-20T20:19:58.494999Z | 200.0 Hz, 2001 samples st = read("/bay200/mseed_online/archive/2010/BW/UH2/EH?.D/BW_.171", starttime=t-3, endtime=t+7) print st 3 Trace(s) in Stream: BW.UH2..EHZ | 2010-06-20T20:19:48.490000Z - 2010-06-20T20:19:58.490000Z | 200.0 Hz, 2001 samples BW.UH2..EHN | 2010-06-20T20:19:48.494999Z - 2010-06-20T20:19:58.494999Z | 200.0 Hz, 2001 samples BW.UH2..EHE | 2010-06-20T20:19:48.494999Z - 2010-06-20T20:19:58.494999Z | 200.0 Hz, 2001 samples st = read("/bay200/mseed_online/archive/2010/BW/FURT/EH?.D/BW_.171", starttime=t-3, endtime=t+7) print st 3 Trace(s) in Stream: BW.FURT..EHZ | 2010-06-20T20:19:48.490000Z - 2010-06-20T20:19:58.490000Z | 200.0 Hz, 2001 samples BW.FURT..EHN | 2010-06-20T20:19:48.490000Z - 2010-06-20T20:19:58.490000Z | 200.0 Hz, 2001 samples BW.FURT..EHE | 2010-06-20T20:19:48.490000Z - 2010-06-20T20:19:58.490000Z | 200.0 Hz, 2001 samples st = read("/bay200/mseed_online/archive/2010/BW/DHFO/EH?.D/BW_.171", starttime=t-3, endtime=t+7) print st 3 Trace(s) in Stream: BW.DHFO..EHZ | 2010-06-20T20:19:48.490000Z - 2010-06-20T20:19:58.490000Z | 200.0 Hz, 2001 samples BW.DHFO..EHN | 2010-06-20T20:19:48.490000Z - 2010-06-20T20:19:58.490000Z | 200.0 Hz, 2001 samples BW.DHFO..EHE | 2010-06-20T20:19:48.495000Z - 2010-06-20T20:19:58.490000Z | 200.0 Hz, 2000 samples }}}

[[BR]] It seems the problem is closely connected to how the single data packets are stored in the MSEED. The issue seems to be resolved at least to some extent if reading/writing with obspy and then again reading the files. But still it seems not 100% perfect:[[BR]] It also seems weird to me for a trace to start at .494900 seconds in some of the following examples. Are the samples not always placed at .490 or .495 with 200 Hz sampling rate?

{{{

!python

for sta in ["UH3", "UH2", "FURT", "DHFO"]: ... for comp in ["Z", "N", "E"]: ... st = read("/bay200/mseed_online/archive/2010/BW/%s/EH%s.D/BW*.171" % (sta, comp)) ... st.write("/tmp/%s.%s.mseed" % (sta, comp), "MSEED") ... st = read("/tmp/%s.?.mseed" % sta, starttime=t-3, endtime=t+7) ... print st 3 Trace(s) in Stream: BW.UH3..EHZ | 2010-06-20T20:19:48.494900Z - 2010-06-20T20:19:58.494900Z | 200.0 Hz, 2001 samples BW.UH3..EHN | 2010-06-20T20:19:48.494900Z - 2010-06-20T20:19:58.494900Z | 200.0 Hz, 2001 samples BW.UH3..EHE | 2010-06-20T20:19:48.494900Z - 2010-06-20T20:19:58.494900Z | 200.0 Hz, 2001 samples 3 Trace(s) in Stream: BW.UH2..EHN | 2010-06-20T20:19:48.490000Z - 2010-06-20T20:19:58.490000Z | 200.0 Hz, 2001 samples BW.UH2..EHZ | 2010-06-20T20:19:48.494900Z - 2010-06-20T20:19:58.494900Z | 200.0 Hz, 2001 samples BW.UH2..EHE | 2010-06-20T20:19:48.490000Z - 2010-06-20T20:19:58.490000Z | 200.0 Hz, 2001 samples 3 Trace(s) in Stream: BW.FURT..EHN | 2010-06-20T20:19:48.490000Z - 2010-06-20T20:19:58.490000Z | 200.0 Hz, 2001 samples BW.FURT..EHE | 2010-06-20T20:19:48.490000Z - 2010-06-20T20:19:58.490000Z | 200.0 Hz, 2001 samples BW.FURT..EHZ | 2010-06-20T20:19:48.490000Z - 2010-06-20T20:19:58.490000Z | 200.0 Hz, 2001 samples 3 Trace(s) in Stream: BW.DHFO..EHZ | 2010-06-20T20:19:48.490000Z - 2010-06-20T20:19:58.490000Z | 200.0 Hz, 2001 samples BW.DHFO..EHN | 2010-06-20T20:19:48.490000Z - 2010-06-20T20:19:58.490000Z | 200.0 Hz, 2001 samples BW.DHFO..EHE | 2010-06-20T20:19:48.490000Z - 2010-06-20T20:19:58.490000Z | 200.0 Hz, 2001 samples }}}

该提问来源于开源项目:obspy/obspy

  • 写回答

10条回答 默认 最新

  • weixin_39747577 2020-11-20 20:11
    关注

    [barsch] Its not a problem with SeisHub but with obspy.mseed:

    {{{

    from obspy.core import UTCDateTime from obspy.core import read t = UTCDateTime("2010-06-20T20:19:51.494999Z") st = read('/opt/seishub/seishub/data/archive/2010/BW/UH3/EHZ.D/BW.UH3..EHZ.D.2010.171', starttime=t-3,endtime=t+7) print st 1 Trace(s) in Stream: BW.UH3..EHZ | 2010-06-20T20:19:48.490000Z - 2010-06-20T20:19:58.490000Z | 200.0 Hz, 2001 samples }}}

    评论

报告相同问题?