05_EQ统计与分析功能_3

内容摘要:书接上文,继续聊Geoist中的catalog模块的相关功能,给大家介绍如何获取EQ目录数据和进行相应的分析与质量控制QC。主要是给EQ目录分析感兴趣和给刚入行的小白们看喽!

都两口气了还没写完,因为既要截图,又要敲字,实在不容易,再接再厉,我们继续下面4个部分内容。

7、重复事件检测

What?一个EQ目录里面如果记录了两个相同的事件,就叫重复事件。

Why?啥怎么还能记录重了!因为有时候EQ定位不准,。

How?原理知道了,下面我们看怎么整:

图1 重复事件检测结果

真心说,USGS目录还不错,也可能是5级EQ起步,重复的可能性不大,图1按照两个EQ相差16s,距离在100km之内的事件,列为疑似重复记录。跑了一篇检测结果才3对。当然,根据不同的数据标准还可以改呦!

8、目录截取

What?截取就是取一部分。

Why?因为有时候分析目录需要一部分就够了,数据多了计算慢,所以咱的截一块。

How?前面讲了一种用Filter的方法,原理我们都知道了,下面我们看看还能怎么整:

代码如下:

from geoist.catalog import Selection as sel
p = [(90.,20.),(90.,40.),(105.,40.),(105.,20.),(90.,20.)]
db3 = sel.AreaSelect(db2,p)

上面用到了AreaSelect函数,方法是先定义一个多边形p,然后,将目录db2中的数据选出来,赋值给一个新的db3的目录对象。

9、目录平滑

What?目录平滑是指通过一定算法,将每个空间范围内都给一个发震概率或其它量,有时候一些EQ风险评估模型,需要空间的连续函数来作为输入。

Why?EQ怎么还要平滑呢!不行咱们盘几下?! 反正无论怎么样,我就想要来空间上的连续函数。

How?我们这里的平滑采用高斯函数,原理大家都知道,从上面选择的db3开始,下面我们看怎么整:

from geoist.catalog import Smoothing as sm
from geoist.catalog import CatUtils as ct
from geoist.catalog import Exploration as exp
x1,y1,z1 = exp.GetHypocenter(db3)
P = ct.Polygon()
P.Load(p)
wkt = ct.XYToWkt(P.x, P.y)
xsm, ysm, asm = sm.SmoothMFD(db3, 1., wkt, Delta=0.5)
cfg1 = {'Bounds': [90., 20., 105., 40.],
        'FigSize': [10., 12.],
        'Background': ['none',[0.9,0.8,0.6],[0.5,0.8,1.]],
        'Grid': [5., 5.]}
m1 = mapt.GeoMap(cfg1)
m1.BasePlot()
m1.MeshPlot(xsm, ysm, asm)
#m1.AreaPlot(P.x, P.y, Set=['y',0.5,'k',1])
#m1.PointPlot(xsm, ysm, Set=['o','b',2,1], Label='Grid')
m1.PointPlot(x1, y1, Set=['o','g',5,1], Label='全部')
m1.DrawGrid()
m1.Title('川滇地区EQ目录高斯平滑')
m1.Show()

上面代码运行没问题,会输出下图:

图2 目录高斯平滑

图中绿色小点,是这个区域内的EQ震中,基本哪里EQ多,哪里颜色红,但是这些背景颜色是空间上连续函数,这有时候计算模型是十分需要的格式。

10、去余震(Decluster)

What?大EQ之后,会诱发一系列余震,把这些挑出来就是去余震过程。

Why?EQ事件可以分成前震、主震、余震。一般主震是那个震级最大的,因为余震的发生主要归因于主震的诱发,也就是说这类EQ活动不应该算到正常的EQ活动里面去。所以,在有些分析EQ活动的场景,需要去掉余震事件。那怎么去呢?因为主震个头大,余震除了震级小,就是距离主震震中距离近,时间短,所以,办法就是,确定一个规则来筛选

How?去余震也叫decluster过程,主要还是按照EQ事件和震级来算,震级越大我们要考虑更长时间范围内,主震周边的EQ为余震。原理知道了,下面我们看怎么整:

这里面用了一个叫GardnerKnopoff的去余震方法,代码如下:

from geoist.catalog import Declusterer as declus
dbm, log1 = declus.WindowSearch(dbusgs, WinFun= declus.GardnerKnopoff, WinScale=1)
dbm.Info()

为去余震的目录信息:

Number of Events: 5383
Year Rage: (1970,2019)
Magnitude Rage: (5.0,7.9)
Latitude Rage: (15.017,54.979)
Longitude Rage: (70.02,134.95)
Depth Rage: (0.0,588.0)

去掉可能是余震的事件,信息如下:

Number of Events: 2714
Year Rage: (1970,2019)
Magnitude Rage: (5.0,7.9)
Latitude Rage: (15.017,54.979)
Longitude Rage: (70.02,134.95)
Depth Rage: (0.0,588.0)

5383到2714是不是少了不少啊!

11、震级转换

What?一个EQ目录里面如果用了不同的震级标度,这时候要进行一些统计就比较麻烦,因为标准不统一。

Why?不同的EQ,以震中与记录台站之间的距离,可以分为远震和近震等,这时候为了方便,可能出现不同的震级标度,这就会引起统一个EQ,两家单位定出来的EQ震级不一样,类似于英里和公里。

How?严格来讲EQ震级之间不能转换,但是有时候为了计算和分析也必须要转,下面我们看怎么整:

度量一个EQ的震级方法有有不少,所以震级单位也有很多,比如:mb,ml,ms,mw。严格来讲这些震级之间是不能转换的,但是如果你不是很较真,方法还是有的。这类方法叫经验公式法,就是大概率下是差不多的,有限应用目的没问题。

下面我们将mb震级转为mw,代码如下:

from geoist.catalog import Selection as sel
from geoist.catalog import MagRules as mr
sel.MagConvert(dbm,'*',['mb','Mb'],'Mw',mr.mb_Mw_Lin_DiGiacomo2015)
dbm.Info()

输出信息:

Converting ['mb', 'Mb'] to Mw: 1236 events found

对比转换前后,两个同样的事件信息,dbm.Events[99]:
转换前:

{'Id': 'usp00003gf',
 'Log': 'earthquake',
 'Location': [{'Year': 1973,
   'Month': 9,
   'Day': 21,
   'Hour': 13,
   'Minute': 48,
   'Second': 32.2,
   'Latitude': 18.834,
   'Longitude': 120.65,
   'Depth': 20.0,
   'SecError': None,
   'LatError': None,
   'LonError': None,
   'DepError': None,
   'LocCode': None,
   'Prime': False}],
 'Magnitude': [{'MagSize': 5.2,
   'MagError': None,
   'MagType': 'mb',
   'MagCode': None}]}

转换后:

{'Id': 'usp00003gf',
 'Log': 'earthquakeMAGCONV(None:mb);',
 'Location': [{'Year': 1973,
   'Month': 9,
   'Day': 21,
   'Hour': 13,
   'Minute': 48,
   'Second': 32.2,
   'Latitude': 18.834,
   'Longitude': 120.65,
   'Depth': 20.0,
   'SecError': None,
   'LatError': None,
   'LonError': None,
   'DepError': None,
   'LocCode': None,
   'Prime': False}],
 'Magnitude': [{'MagSize': 5.39,
   'MagError': 0.0,
   'MagType': 'Mw',
   'MagCode': None}]}

这里将mb=5.2转换完事mw=5.39.

Mw震级物理意义明确,直接与能量对应,能统一成Mw震级是最好的,小哥的Geoist库里面为大家准备了一个中国大陆及周边的数据。文件名为mwcat1900utc.csv,我们可以叫cnmw,详情请参考资料3。如果要使用这个格式的目录导入库,请参考下面代码:

catname = 'cnmw'
localpath = qc.pathname+'\\mwcat1900utc.csv'
db6 = cat.Database(catname)
header = ['Year', 'Month','Day','Hour','Minute','Second','Latitude','Longitude','MagSize','Depth','Log']
db6.Import0(localpath, Header = header, Delimiter= ',', flag = False)

不知道大家是否发现,这个header定义很灵活,只要这部分信息没错,任何格式目录都是可以轻松玩转的。

一句话总结:哇,EQ目录分析好有意思啊,大家反映上次写的太科普,小哥这不发奋学习了好几天,发扬动手能力强的优点,咱也能攒个分析工具出来!现在工具也有了,数据也有了,屏幕前奋发图强的小盆友们,赶快动手吧,下一次开组会,PPT里面的图可以用用geoist的catalog工具包啊!

这次讲完了:)

参考资料:
1、USGS目录,https://earthquake.usgs.gov/fdsnws/event/1/
2、CENC目录,中国EQ台网发布的标准目录,小哥做了内网地址,http://10.2.14.222/catalog
3、中国矩震级目录,详情参考文章:Cheng, J., Y. Rong, H. Magistrale, G. Chen, and X. Xu (2017). An Mw‐based historical earthquake catalog, Bull. Seismol. Soc. Am. 107 2490-2500.
4、GEOIST工具包,你关心的信息全在这里https://github.com/igp-gravity/geoist

你可能感兴趣的:(05_EQ统计与分析功能_3)