3

我对焦点机制(沙滩球)非常陌生,并想使用 Python 将它们绘制到全球地图上。

我已经安装了 Anaconda 套件,想知道是否需要安装任何其他模块才能使其正常工作(即 Anaconda 套件中是否包含 obspy 模块?

我不会使用任何特定的地震学文件作为输入,而只是想通过手动插入相应的参数来创建这些沙滩球。到目前为止,我遇到了两个不同的代码示例:

from obspy.imaging.beachball import beachball
np1 = [150, 87, 1]
beachball(np1) 

和...

from obspy.imaging.beachball import beachball
mt = [-2.39, 1.04, 1.35, 0.57, -2.94, -0.94]
beachball(mt) 

我不清楚这些值分别指的是什么。我有一个网站示例,我想从中检索相关信息,然后将这些值用作沙滩球的输入:

http://earthquake.usgs.gov/earthquakes/eventpage/us20005ysu#moment-tensor

提前致谢。

4

2 回答 2

1

我们的教程有地图示例,包括沙滩球补丁:

http://docs.obspy.org/tutorial/code_snippets/basemap_plot_with_beachballs.html#basemap-plot-of-the-globe

或者查看我们最新的 master 分支教程:

http://docs.obspy.org/master/tutorial/code_snippets/basemap_plot_with_beachballs.html

对那些你发现的例子进行拉皮条,你可以得到这段代码来在底图上绘制矩张量(当然可以根据自己的喜好更改投影):

import numpy as np
import matplotlib.pyplot as plt 
from mpl_toolkits.basemap import Basemap

from obspy import read_events
from obspy.imaging.beachball import beach


event = read_events(
    'https://earthquake.usgs.gov/archive/product/moment-tensor/'
    'us_20005ysu_mww/us/1470868224040/quakeml.xml', format='QUAKEML')[0]
origin = event.preferred_origin() or event.origins[0]
focmec = event.preferred_focal_mechanism() or event.focal_mechanisms[0]
tensor = focmec.moment_tensor.tensor
moment_list = [tensor.m_rr, tensor.m_tt, tensor.m_pp,
               tensor.m_rt, tensor.m_rp, tensor.m_tp]

m = Basemap(projection='cyl', lon_0=origin.longitude, lat_0=origin.latitude,
            resolution='c')

m.drawcoastlines()
m.fillcontinents()
m.drawparallels(np.arange(-90., 120., 30.))
m.drawmeridians(np.arange(0., 420., 60.))
m.drawmapboundary()

x, y = m(origin.longitude, origin.latitude)

ax = plt.gca()
b = beach(moment_list, xy=(x, y), width=20, linewidth=1, alpha=0.85)
b.set_zorder(10)
ax.add_collection(b)
plt.show()

带有沙滩球的底图

您需要basemap为此安装软件包 ( conda install basemap)。

于 2017-03-29T17:05:49.430 回答
0

这里,震源是通过矩张量分量描述的

mt = [-2.39, 1.04, 1.35, 0.57, -2.94, -0.94]

在这里,焦点机制是使用节点平面来描述的。有两个节点平面 - 主平面和辅助平面。在下面的例子中,主要的作为输入,辅助的是自动计算的。节点平面的方向由三个角度给出 [Strike, Dip, Rake]

np1 = [150, 87, 1]

根据 opensha.org:

走向:断层走向是由断层平面和水平表面相交所形成的线的方向,相对于北方为 0° 至 360°。走向总是被定义为,当断层在走向方向上沿着迹线移动时,断层会倾斜到迹线的右侧。因此,断层的上盘块总是在右边,而下盘块在左边。这很重要,因为前倾(给出滑动方向)被定义为上盘相对于下盘块的运动。

倾角:断层倾角是断层与水平面之间的角度,0° 至 90°。

前倾:前倾是在断层平面上测量的上盘块在破裂过程中移动的方向。它是相对于断层走向测量的,±180°。对于站在断层上并沿走向方向观察的观察者,0° 的倾斜意味着上盘或垂直断层的右侧在走向方向上远离观察者(左侧横向运动)。±180° 的倾斜意味着上盘向观察者移动(右侧移动)。对于任何倾斜度>0,上盘向上移动,表明断层上的推力或反向运动;对于任何倾斜度<0°,上盘向下移动,表明断层上的运动正常。

我以这种方式将 Obspy 安装到 Anaconda

~/anaconda/bin/pip install obspy

完成此操作后,您提供的代码可以正常工作:

from obspy.imaging.beachball import beachball
mt = [-2.39, 1.04, 1.35, 0.57, -2.94, -0.94]
beachball(mt) 

焦点机制

于 2017-03-15T13:47:08.467 回答