1

假设我已经有一个对象 Trace,比如 trace,并且我想在 30 秒时获得一个幅度数据。

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

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

他们准备好方法了吗?就像是....

trace.foo(time=30)
4

1 回答 1

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

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

希望这能让你开始。

于 2018-02-13T11:00:45.563 回答