在Obspy中,如何在特定时间获得幅度值?

时间:2018-02-13 04:16:21

标签: python

假设我有一个物体Trace,比如跟踪,我想在30秒时获得振幅数据。

我想我可以像下面这样做,假设开始时间为0,为简单起见,

delta = trace.stats.delta
count = int(30 / delta)
target_value = trace.data[count]

他们是否准备好了这样做的好方法? 类似......

trace.foo(time=30)

1 个答案:

答案 0 :(得分:1)

目前我们没有这样的便利方法,但我同意这是一个很好的补充。您可以在我们的GitHub问题跟踪器中发出功能请求:https://github.com/obspy/obspy/issues/new

在此期间,你可以利用样本时间方便功能和一些numpy来实现你想要的东西。

如果你正在寻找相对于追踪开始的时间:

from obspy import read

tr = read()[0]
my_time = 4  # 4 seconds after start of trace
times = tr.times()
index = times.searchsorted(my_time)
print(times[index])
print(tr.data[index])
4.0
204.817965896

如果您正在寻找绝对时间:

from obspy import read, UTCDateTime

tr = read()[0]
my_time = UTCDateTime("2009-08-24T00:20:12.0Z")  # 4 seconds after start of trace
times = tr.times('utcdatetime')
index = times.searchsorted(my_time)
print(times[index])
print(tr.data[index])
2009-08-24T00:20:12.000000Z
156.68994731

如果您不匹配一个样本的确切时间,则必须手动插值。

希望这能让你开始。