You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
355 lines
8.8 KiB
C#
355 lines
8.8 KiB
C#
#region 程序集 Txgy.Microseismic.BaseLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
|
|
// E:\mingzf\txgy\Txgy.EWS\Client\output\Txgy.Microseismic.BaseLib.dll
|
|
// Decompiled with ICSharpCode.Decompiler 7.1.0.6543
|
|
#endregion
|
|
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using System.Linq;
|
|
|
|
namespace mseedChart.MainModule.Models
|
|
{
|
|
public class MmEvent : CoordBase
|
|
{
|
|
private bool isShow;
|
|
|
|
public int MoniID = 0;
|
|
|
|
public int LayerID = 0;
|
|
|
|
public int EventID = 0;
|
|
|
|
private int _second;
|
|
|
|
private int _milliSecond;
|
|
|
|
private DateTime _eventTime;
|
|
|
|
private double _horiError;
|
|
|
|
private double _vertError;
|
|
|
|
private double _cnt;
|
|
|
|
private double _ml;
|
|
|
|
private double _rms;
|
|
|
|
private Dictionary<string, int> _phases;
|
|
|
|
public float[] standData;
|
|
|
|
public float[][] nearData;
|
|
|
|
public float minTimeDiff = 0f;
|
|
|
|
public bool Falcone = false;
|
|
|
|
public float errorCircularRadius = 0f;
|
|
|
|
public float errorH = 0f;
|
|
|
|
public int isShowed = 1;
|
|
|
|
public float Hlen = 0f;
|
|
|
|
public float Llen = 0f;
|
|
|
|
public float VF = 0f;
|
|
|
|
public List<int> SN = new List<int>();
|
|
|
|
public List<int> PM = new List<int>();
|
|
|
|
public List<int> GCS = new List<int>();
|
|
|
|
public int WorkAreaID { get; set; } = 0;
|
|
|
|
|
|
public bool IsShow
|
|
{
|
|
get
|
|
{
|
|
return isShow;
|
|
}
|
|
set
|
|
{
|
|
isShow = value;
|
|
}
|
|
}
|
|
|
|
public int Second
|
|
{
|
|
get
|
|
{
|
|
return _second;
|
|
}
|
|
set
|
|
{
|
|
_second = value;
|
|
}
|
|
}
|
|
|
|
public int Millisecond
|
|
{
|
|
get
|
|
{
|
|
return _milliSecond;
|
|
}
|
|
set
|
|
{
|
|
_milliSecond = value;
|
|
}
|
|
}
|
|
|
|
public string EventTimeStr { get; set; }
|
|
|
|
public DateTime EventTime
|
|
{
|
|
get
|
|
{
|
|
return _eventTime;
|
|
}
|
|
set
|
|
{
|
|
_eventTime = value;
|
|
}
|
|
}
|
|
|
|
public double HoriError
|
|
{
|
|
get
|
|
{
|
|
return _horiError;
|
|
}
|
|
set
|
|
{
|
|
_horiError = value;
|
|
}
|
|
}
|
|
|
|
public double VertError
|
|
{
|
|
get
|
|
{
|
|
return _vertError;
|
|
}
|
|
set
|
|
{
|
|
_vertError = value;
|
|
}
|
|
}
|
|
|
|
public double Cnt
|
|
{
|
|
get
|
|
{
|
|
return _cnt;
|
|
}
|
|
set
|
|
{
|
|
_cnt = value;
|
|
}
|
|
}
|
|
|
|
public double ML
|
|
{
|
|
get
|
|
{
|
|
return _ml;
|
|
}
|
|
set
|
|
{
|
|
_ml = value;
|
|
}
|
|
}
|
|
|
|
public double RMS
|
|
{
|
|
get
|
|
{
|
|
return _rms;
|
|
}
|
|
set
|
|
{
|
|
_rms = value;
|
|
}
|
|
}
|
|
|
|
public Dictionary<string, int> Phases
|
|
{
|
|
get
|
|
{
|
|
return _phases;
|
|
}
|
|
set
|
|
{
|
|
_phases = value;
|
|
}
|
|
}
|
|
|
|
public double Stress { get; set; }
|
|
|
|
public double Energy { get; set; }
|
|
|
|
public int LocSta { get; set; }
|
|
|
|
public int MLSta { get; set; }
|
|
|
|
public string EventTpye { get; set; }
|
|
|
|
public int SourceChara { get; set; }
|
|
|
|
public double Direction { get; set; }
|
|
|
|
public double StressDrop { get; set; }
|
|
|
|
public double DominantFreq { get; set; }
|
|
|
|
public double MW { get; set; }
|
|
|
|
public double Amplitude { get; set; }
|
|
|
|
public double Semiperiod { get; set; }
|
|
|
|
public double Coda { get; set; }
|
|
|
|
public string JsonFile { get; set; }
|
|
|
|
public string MseedFile { get; set; }
|
|
|
|
public string AsciiFile { get; set; }
|
|
|
|
public float Amp { get; set; }
|
|
|
|
public FocalMechanismType FocalType { get; set; }
|
|
|
|
public static void SavePos(string fn, List<MmEvent> mMEvents)
|
|
{
|
|
StreamWriter streamWriter = new StreamWriter(fn);
|
|
try
|
|
{
|
|
if (mMEvents != null && mMEvents.Count > 0)
|
|
{
|
|
streamWriter.WriteLine(mMEvents.Count.ToString());
|
|
List<MmEvent> list = (from o in mMEvents
|
|
orderby o.Second, o.Millisecond
|
|
select o).ToList();
|
|
for (int i = 0; i < list.Count; i++)
|
|
{
|
|
MmEvent mmEvent = list[i];
|
|
streamWriter.WriteLine(Math.Round(mmEvent.X, 1) + "\t" + Math.Round(mmEvent.Y, 1) + "\t" + Math.Round(mmEvent.Z, 1) + "\t" + mmEvent.Second + "." + mmEvent.Millisecond);
|
|
}
|
|
}
|
|
}
|
|
catch (Exception)
|
|
{
|
|
throw;
|
|
}
|
|
finally
|
|
{
|
|
streamWriter.Close();
|
|
}
|
|
}
|
|
|
|
public static void SaveNewPin(string fn, int layerIndex, List<MmEvent> mMEvents)
|
|
{
|
|
StreamWriter streamWriter = new StreamWriter(fn);
|
|
int num = layerIndex;
|
|
int num2 = layerIndex;
|
|
try
|
|
{
|
|
List<MmEvent> list = (from o in mMEvents
|
|
orderby o.Second, o.Millisecond
|
|
select o).ToList();
|
|
for (int i = 0; i < list.Count; i++)
|
|
{
|
|
MmEvent mmEvent = list[i];
|
|
string pMStr = GetPMStr(mmEvent);
|
|
streamWriter.WriteLine(Math.Round(mmEvent.X, 1) + "\t" + Math.Round(mmEvent.Y, 1) + "\t" + Math.Round(mmEvent.Z, 1) + "\t" + mmEvent.Second + "." + mmEvent.Millisecond + "\t" + num + "\t" + num2 + "\t" + mmEvent.errorCircularRadius + "\t" + mmEvent.errorH + "\t" + 0 + "\t" + mmEvent.ML + pMStr);
|
|
}
|
|
|
|
streamWriter.Close();
|
|
}
|
|
catch (Exception)
|
|
{
|
|
throw;
|
|
}
|
|
finally
|
|
{
|
|
streamWriter.Close();
|
|
}
|
|
}
|
|
|
|
public static void SaveOldPin(string fn, int layer, List<MmEvent> mMEvents)
|
|
{
|
|
StreamWriter streamWriter = new StreamWriter(fn);
|
|
try
|
|
{
|
|
List<MmEvent> list = (from o in mMEvents
|
|
orderby o.Second, o.Millisecond
|
|
select o).ToList();
|
|
for (int i = 0; i < list.Count; i++)
|
|
{
|
|
MmEvent mmEvent = list[i];
|
|
string pMStr = GetPMStr(mmEvent);
|
|
streamWriter.WriteLine(layer + "\t" + Math.Round(mmEvent.X, 0) + "\t" + Math.Round(mmEvent.Y, 0) + "\t" + Math.Round(mmEvent.Z, 0) + "\t" + mmEvent.Second + "." + mmEvent.Millisecond + "\t" + mmEvent.ML + "\t" + mmEvent.errorCircularRadius + "\t" + mmEvent.errorH + "\t" + mmEvent.minTimeDiff + pMStr);
|
|
}
|
|
|
|
streamWriter.Close();
|
|
}
|
|
catch (Exception)
|
|
{
|
|
throw;
|
|
}
|
|
finally
|
|
{
|
|
streamWriter.Close();
|
|
}
|
|
}
|
|
|
|
public static string GetPMStr(MmEvent p)
|
|
{
|
|
string text = "\t";
|
|
int[] mpIndex = new int[p.SN.Count];
|
|
for (int j = 0; j < mpIndex.Length; j++)
|
|
{
|
|
mpIndex[j] = p.SN[j];
|
|
}
|
|
|
|
for (int k = 0; k < mpIndex.Length - 1; k++)
|
|
{
|
|
for (int l = 0; l < mpIndex.Length - 1 - k; l++)
|
|
{
|
|
if (mpIndex[l] > mpIndex[l + 1])
|
|
{
|
|
int num = mpIndex[l];
|
|
mpIndex[l] = mpIndex[l + 1];
|
|
mpIndex[l + 1] = num;
|
|
}
|
|
}
|
|
}
|
|
|
|
int i;
|
|
for (i = 0; i < p.PM.Count; i++)
|
|
{
|
|
int index = p.SN.FindIndex((int s) => s == mpIndex[i]);
|
|
text = ((p.PM.Count - 1 != i) ? (text + p.SN[index] + ":" + p.PM[index] + "\t") : (text + p.SN[index] + ":" + p.PM[index]));
|
|
}
|
|
|
|
return text;
|
|
}
|
|
|
|
public void SetEnergy()
|
|
{
|
|
Energy = Math.Round(63000.0 * Math.Pow(10.0, 1.47 * ML), 2);
|
|
}
|
|
|
|
public static float SetAmp(List<float> amps)
|
|
{
|
|
amps.Sort();
|
|
return amps[amps.Count / 2];
|
|
}
|
|
}
|
|
} |