1. Wenn Sie die Obspy-Bibliothek von Python verwenden, um ein nach epizentrischem Abstand angeordnetes Wellenform-Vergleichsdiagramm zu zeichnen und den epizentrischen Abstand zum Anordnen in ° verwenden (d. h. dist_degree=True festlegen), wird auch ein Fehler gemeldet, wenn ev_coord festgelegt ist. Die Fehlermeldung lautet wie folgt: Es liegt ein Problem vor: In
Trace.stats gibt es kein Koordinatenattribut (anscheinend können Sie es selbst definieren, es ist noch nicht klar).
ValueError: Define latitude/longitude in trace.stats.coordinates
2. Lösung (dies kann eine Kompromissmethode sein):
Wenn der gcarc-Wert oder der dist-Wert des Epizentrumsabstands im SAC-Datenheader definiert ist, kann er Trace.stats.distance zugewiesen werden, sodass er auch verwendet werden kann, wenn dist_degree= Falsch Es kann ein Vergleichsdiagramm der nach epizentrischem Abstand (Einheit: °) angeordneten Wellenformen erstellt werden. Wenn nur der dist-Wert angegeben wird, kann dieser manuell in ° umgewandelt und mit 1000 multipliziert werden, da die Standardeinheit der epizentralen Entfernung unter obspy.plot(type='section') km ist.
for tr in st:
tr.stats.distance = tr.stats.sac['gcarc'] * 1000
3. Vollständiger Code:
import os
import glob
import obspy
import matplotlib.pyplot as plt
from obspy import Stream
sacfile = sorted(glob.glob('*/*sac'))
# Original mean stacked waveforms
st = Stream()
for data in sacfile:
st += obspy.read(data)
for tr in st:
tr.stats.distance = tr.stats.sac['gcarc'] * 1000
fig = plt.figure(figsize=(10,6))
st.plot(type='section',orientation='horizontal',recordlength=1200,linewidth=1.0, show=False, fig=fig)
plt.xlabel('Time/(s)')
plt.ylabel('Distance/(°)')
plt.savefig('Wave_gcarc.png',dpi=300)
# plt.show()
Beschreibung des Referenzproblems: [obspy-users] zeichnet Datensatzabschnitte auf: Geben Sie oftrace.stats.coordinates ein