85 lines
3.4 KiB
Python
85 lines
3.4 KiB
Python
#!/usr/bin/python
|
|
# -*- coding: utf-8 -*-
|
|
|
|
"""
|
|
Script to get event parameters from PyLoT-xml file to write
|
|
them into eventlist.
|
|
LK, igem, 03/2021
|
|
Edited for use in PyLoT
|
|
JG, igem, 01/2022
|
|
"""
|
|
|
|
import os
|
|
import argparse
|
|
import numpy as np
|
|
import matplotlib.pyplot as plt
|
|
import glob
|
|
|
|
from obspy.core.event import read_events
|
|
from pyproj import Proj
|
|
|
|
"""
|
|
Creates an eventlist file summarizing all events found in a certain folder. Only called by pressing UI Button eventlis_xml_action
|
|
|
|
:rtype:
|
|
:param path: Path to root folder where single Event folder are to found
|
|
"""
|
|
|
|
|
|
def geteventlistfromxml(path, outpath):
|
|
p = Proj(proj='utm', zone=32, ellps='WGS84')
|
|
|
|
# open eventlist file and write header
|
|
evlist = outpath + '/eventlist'
|
|
evlistobj = open(evlist, 'w')
|
|
evlistobj.write(
|
|
'EventID Date To Lat Lon EAST NORTH Dep Ml NoP NoS RMS errH errZ Gap \n')
|
|
|
|
# data path
|
|
dp = path + "/e*/*.xml"
|
|
# list of all available xml-files
|
|
xmlnames = glob.glob(dp)
|
|
|
|
# read all onset weights
|
|
for names in xmlnames:
|
|
print("Getting location parameters from {}".format(names))
|
|
cat = read_events(names)
|
|
try:
|
|
st = cat.events[0].origins[0].time
|
|
Lat = cat.events[0].origins[0].latitude
|
|
Lon = cat.events[0].origins[0].longitude
|
|
EAST, NORTH = p(Lon, Lat)
|
|
Dep = cat.events[0].origins[0].depth / 1000
|
|
Ml = cat.events[0].magnitudes[1].mag
|
|
NoP = []
|
|
NoS = []
|
|
except IndexError:
|
|
print('Insufficient data found for event (not localised): ' + names.split('/')[-1].split('_')[-1][
|
|
:-4] + ' Skipping event for eventlist.')
|
|
continue
|
|
|
|
for i in range(len(cat.events[0].origins[0].arrivals)):
|
|
if cat.events[0].origins[0].arrivals[i].phase == 'P':
|
|
NoP.append(cat.events[0].origins[0].arrivals[i].phase)
|
|
elif cat.events[0].origins[0].arrivals[i].phase == 'S':
|
|
NoS.append(cat.events[0].origins[0].arrivals[i].phase)
|
|
# NoP = cat.events[0].origins[0].quality.used_station_count
|
|
errH = cat.events[0].origins[0].origin_uncertainty.max_horizontal_uncertainty
|
|
errZ = cat.events[0].origins[0].depth_errors.uncertainty
|
|
Gap = cat.events[0].origins[0].quality.azimuthal_gap
|
|
# evID = names.split('/')[6]
|
|
evID = names.split('/')[-1].split('_')[-1][:-4]
|
|
Date = str(st.year) + str('%02d' % st.month) + str('%02d' % st.day)
|
|
To = str('%02d' % st.hour) + str('%02d' % st.minute) + str('%02d' % st.second) + \
|
|
'.' + str('%06d' % st.microsecond)
|
|
|
|
# write into eventlist
|
|
evlistobj.write('%s %s %s %9.6f %9.6f %13.6f %13.6f %8.6f %3.1f %d %d NaN %d %d %d\n' % (evID, \
|
|
Date, To, Lat, Lon,
|
|
EAST, NORTH, Dep, Ml,
|
|
len(NoP), len(NoS),
|
|
errH, errZ, Gap))
|
|
print('Adding Event ' + names.split('/')[-1].split('_')[-1][:-4] + ' to eventlist')
|
|
print('Eventlist created and saved in: ' + outpath)
|
|
evlistobj.close()
|