假设我已经有一个对象 Trace,比如 trace,并且我想在 30 秒时获得一个幅度数据。
我想我可以像下面那样做,为了简单起见,假设开始时间为 0,
delta = trace.stats.delta
count = int(30 / delta)
target_value = trace.data[count]
他们准备好方法了吗?就像是....
trace.foo(time=30)
目前我们还没有这种方便的方法,但我同意这将是一个很好的补充。您可以在我们的 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
如果您不匹配一个样本的确切时间,则必须手动插值。
希望这能让你开始。