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.

752 lines
29 KiB
C#

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

using Arction.Licensing;
using Arction.Wpf.SignalProcessing;
using LiveCharts.Defaults;
using log4net;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using NPOI.SS.Formula.Functions;
using Prism.Commands;
using Prism.Events;
using Prism.Mvvm;
using Prism.Regions;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Configuration;
using System.Data;
using System.Data.SqlTypes;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Media;
using System.Reflection;
using System.Runtime.Remoting.Contexts;
using System.Security.Principal;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Web.UI.WebControls;
using System.Windows;
using System.Windows.Documents;
using System.Windows.Forms;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Threading;
using Txgy.EWS.Client.Common;
using Txgy.EWS.Client.Common.Enums;
using Txgy.EWS.Client.Common.Helpers;
using Txgy.EWS.Client.Common.MessageEvents;
using Txgy.EWS.Client.Entity;
using Txgy.EWS.Client.FocalMechanism.Model;
using Txgy.EWS.Client.IBLL;
using Txgy.EWS.Client.ILog;
using Txgy.EWS.Client.Models;
using Txgy.EWS.Client.PageModule.Models;
using Txgy.EWS.Client.PageModule.Services;
using Txgy.Microseismic.BaseLib.Entitys;
using Txgy.Microseismic.BaseLib.Models;
using Unity;
using static Txgy.EWS.Client.Common.GlobalConfig;
namespace Txgy.EWS.Client.PageModule.ViewModels
{
public class EventListViewModel : BindableBase, INavigationAware
{
private readonly IEventAggregator ea;
private readonly ISearchMsEventBLL searchMsEventBLL;
private readonly ILogHelper _logHelper;
//private readonly IRemoteDownloadDataBLL remoteDownloadDataBLL;
Dispatcher _dispatcher;
IFreeSql fsqlTencent = FreeSqlTencent.tencentRemoteMySQL;
IFreeSql fsqlSqLite = FreeSqlLocalSqLite.freeLocalSqLite;
private int middleEventCount = 0;
/// <summary>
/// 中等能量事件数量
/// </summary>
public int MiddleEventCount
{
get { return middleEventCount; }
set
{
SetProperty(ref middleEventCount, value);
}
}
private double middleEnergy;
/// <summary>
/// 中等能量事件
/// </summary>
public double MiddleEnergy
{
get { return middleEnergy; }
set
{
SetProperty(ref middleEnergy, value);
}
}
private FilterCondition<DateTime> _timeFC;
public FilterCondition<DateTime> TimeFC
{
get { return _timeFC; }
set { _timeFC = value; }
}
private FilterCondition<double> _mlFC;
public FilterCondition<double> MLFC
{
get { return _mlFC; }
set { _mlFC = value; }
}
private FilterCondition<double> _energyFC;
public FilterCondition<double> EnergyFC
{
get { return _energyFC; }
set { _energyFC = value; }
}
private FilterCondition<double> _depthFC;
public FilterCondition<double> DepthFC
{
get { return _depthFC; }
set { _depthFC = value; }
}
private FilterCondition<double> _eastFC;
public FilterCondition<double> EastFC
{
get { return _eastFC; }
set { _eastFC = value; }
}
private FilterCondition<double> _northFC;
public FilterCondition<double> NorthFC
{
get { return _northFC; }
set { _northFC = value; }
}
private SelectSort _selectSortMode;
public SelectSort SelectSortMode
{
get { return _selectSortMode; }
set
{
SetProperty(ref _selectSortMode, value);
}
}
private DateTime _startTime;
public DateTime StartTime
{
get { return _startTime; }
set
{
SetProperty(ref _startTime, value);
}
}
private DateTime _endTime;
public DateTime EndTime
{
get { return _endTime; }
set
{
SetProperty(ref _endTime, value);
}
}
private int _searchCount = 0;
public int SearchCount
{
get { return _searchCount; }
set
{
SetProperty(ref _searchCount, value);
}
}
private string _likeCondition;
public string LikeCondition
{
get { return _likeCondition; }
set
{
SetProperty(ref _likeCondition, value);
}
}
private int _sortMode = 1;
/// <summary>
///// 排序模式:-1=降序;1=升序;
/// </summary>
public int SortMode
{
get { return _sortMode; }
set
{
SetProperty(ref _sortMode, value);
}
}
private List<GridItemEventResult> middleEnergyEvents = new List<GridItemEventResult>();
public List<GridItemEventResult> MiddleEnergyEvents
{
get { return middleEnergyEvents; }
set
{
SetProperty(ref middleEnergyEvents, value);
}
}
private bool isCanRun = true;
public bool IsCanRun
{
get { return isCanRun; }
set
{
SetProperty(ref isCanRun, value);
}
}
/// <summary>
/// 刷新间隔(s)
/// </summary>
private int refreshInterval = 3;
public int RefreshInterval
{
get { return refreshInterval; }
set
{
SetProperty(ref refreshInterval, value);
}
}
private string runSpan = "0";
public string RunSpan
{
get { return runSpan; }
set
{
SetProperty(ref runSpan, value);
}
}
private double alarmThreshold = 1;
/// <summary>
/// 报警阈值J
/// </summary>
public double AlarmThreshold
{
get { return alarmThreshold; }
set
{
SetProperty(ref alarmThreshold, value);
}
}
public DateTime SystemRunTime { get; set; }
/// <summary>
/// 报警等级列表
/// </summary>
public List<AlarmLevelModel> ListAlarmLevel;
public List<string> ListAlramMusic { get; set; }
SoundPlayer alarmPlayer = new SoundPlayer();
private bool canPlayAlarmSound = true;
public bool CanPlayAlarmSound
{
get { return canPlayAlarmSound; }
set
{
SetProperty(ref canPlayAlarmSound, value);
}
}
private ObservableCollection<GridItemEventResult> _queryEventList;
public ObservableCollection<GridItemEventResult> QueryEventList
{
get { return _queryEventList; }
set
{
SetProperty(ref _queryEventList, value);
}
}
private GridItemEventResult _queryEventListSelected;
public GridItemEventResult QueryEventListSelected
{
get { return _queryEventListSelected; }
set
{
SetProperty(ref _queryEventListSelected, value);
if (value != null)
{
this.ea.GetEvent<ShowWavesEvent>().Publish(QueryEventListSelected.EventTime);
this.ea.GetEvent<SelectQueryEventMessage>().Publish(QueryEventListSelected);
}
}
}
private Visibility checkBarVis = Visibility.Collapsed;
public Visibility CheckBarVis
{
get { return checkBarVis; }
set
{
SetProperty(ref checkBarVis, value);
}
}
public ICommand QueryCommand
{
get => new Prism.Commands.DelegateCommand(() =>
{
CheckBarVis = Visibility.Visible;
List<GridItemEventResult> results=null;
Task.Run(() => {
DateTime st = TimeFC.Cond1;
DateTime et = TimeFC.Cond2;
results = SearchEvents(st, et);
}).ContinueWith(t=> {
if (results != null)
{
GlobalData.QueryEventList = new List<GridItemEventResult>(results);
QueryEventList = new ObservableCollection<GridItemEventResult>(results);
var mes = results.Where(rs => rs.Energy >= MiddleEnergy).ToList();
MiddleEnergyEvents = mes;
MiddleEventCount = mes.Count();
this.ea.GetEvent<UpdateSearchEventMessage>().Publish(results);
}
}).ContinueWith(t2 => { CheckBarVis = Visibility.Collapsed; });
});
}
private ICommand _searchEventsCommand;
public ICommand SearchEventsCommand =>
_searchEventsCommand ?? (_searchEventsCommand = new Prism.Commands.DelegateCommand(async () => await ExecuteSearchEventsCommand()));
public EventListViewModel(IUnityContainer unityContainer, IEventAggregator ea, ISearchMsEventBLL searchMsEventBLL, ILogHelper logHelper)
{
_dispatcher = unityContainer.Resolve<Dispatcher>();
this.ea = ea;
this._logHelper = logHelper;
this.searchMsEventBLL = searchMsEventBLL;
int yy = DateTime.Now.Year;
int mm = DateTime.Now.Month;
int ss = DateTime.Now.Day;
StartTime = new DateTime(yy, mm, ss).AddDays(-1);
EndTime = new DateTime(yy, mm, ss);
TimeFC = new FilterCondition<DateTime>(true, StartTime, EndTime);
EastFC = new FilterCondition<double>(false, GlobalConfig.ProjectConfig.WorkArea.EMax, GlobalConfig.ProjectConfig.WorkArea.EMin);
NorthFC = new FilterCondition<double>(false, GlobalConfig.ProjectConfig.WorkArea.NMax, GlobalConfig.ProjectConfig.WorkArea.NMin);
DepthFC = new FilterCondition<double>(false, GlobalConfig.ProjectConfig.WorkArea.ZMax, GlobalConfig.ProjectConfig.WorkArea.ZMin);
MLFC = new FilterCondition<double>(false, 0, -2);
EnergyFC = new FilterCondition<double>(false, 20000, 0);
SelectSortMode = SelectSort.Time;
MiddleEnergy = 200;
if (GlobalData.QueryEventList != null)
{
QueryEventList = new ObservableCollection<GridItemEventResult>(GlobalData.QueryEventList);
}
}
private async Task ExecuteSearchEventsCommand()
{
DateTime st = TimeFC.Cond1;
DateTime et = TimeFC.Cond2;
CheckBarVis = Visibility.Visible;
List<GridItemEventResult> results = await SearchEventsAsync(st, et);
if (results != null)
{
GlobalData.QueryEventList = new List<GridItemEventResult>(results);
QueryEventList = new ObservableCollection<GridItemEventResult>(results);
var mes = results.Where(rs => rs.Energy >= MiddleEnergy).ToList();
MiddleEnergyEvents = mes;
MiddleEventCount = mes.Count;
this.ea.GetEvent<UpdateSearchEventMessage>().Publish(results);
}
CheckBarVis = Visibility.Collapsed;
}
public async Task<List<GridItemEventResult>> SearchEventsAsync(DateTime searchStartTime, DateTime searchEndTime)
{
string findStr = BuildSqlQuery(searchStartTime, searchEndTime);
var list = await fsqlTencent.Select<RemoteRealtimeResultEntity>().WithSql(findStr).ToListAsync();
// 使用 Task.WhenAll 并行处理每个事件
var eventTasks = list.Select(item => ProcessEventItem(item));
var eventResults = await Task.WhenAll(eventTasks);
List<GridItemEventResult> results = eventResults.ToList();
SearchCount = results.Count;
return results;
}
private async Task<GridItemEventResult> ProcessEventItem(RemoteRealtimeResultEntity item)
{
// ... 您原来的逻辑,处理每个事件
// 确保任何 IO 操作都是异步的
GridItemEventResult se = new GridItemEventResult(item, true);
string eventTimeStr = se.EventTime;
string datePath = eventTimeStr.Substring(0, 4) + eventTimeStr.Substring(5, 2) + eventTimeStr.Substring(8, 2);
string dataFilePath = GlobalConfig.ProjectConfig.MseedFilePath + "\\" + datePath + "\\";
string dataFileName = "HA." + eventTimeStr.Substring(0, 4) + eventTimeStr.Substring(5, 2)
+ eventTimeStr.Substring(8, 2) + eventTimeStr.Substring(10, 3)
+ eventTimeStr.Substring(14, 2) + eventTimeStr.Substring(17, 2) + ".01" + GlobalConfig.DataTypeString;
string jsonStr = ".json";
MmEvent curMmEvent = new MmEvent();
curMmEvent.EventTimeStr = eventTimeStr;
curMmEvent.X = se.X;
curMmEvent.Y = se.Y;
curMmEvent.RMS = se.RMS;
curMmEvent.DominantFreq = 15;
await ComputeFMAsync(curMmEvent);
//获取主频
curMmEvent.DominantFreq = GlobalData.GetDominFreq(eventTimeStr);
//查询事件Json文件是否已下载
if (File.Exists(dataFilePath + dataFileName + jsonStr))
{
FileInfo fileInfo = new FileInfo(dataFilePath + dataFileName + jsonStr);
if (fileInfo.Length > 1024)
{
ComputeFM(curMmEvent);
//获取主频
curMmEvent.DominantFreq = GlobalData.GetDominFreq(eventTimeStr);
}
}
else
{
#region 同步方式
int res = new DownloadJsonFile().Download(eventTimeStr, dataFilePath, dataFileName + jsonStr, GlobalConfig.UseWaveDataTable);
if (res > -1)
{
FileInfo fileInfo2 = new FileInfo(dataFilePath + dataFileName + jsonStr);
if (fileInfo2.Length > 2000)
{
ComputeFM(curMmEvent);
//获取主频
curMmEvent.DominantFreq = GlobalData.GetDominFreq(eventTimeStr);
}
}
#endregion
}
se.SourceChara = (int)curMmEvent.FocalType;
se.Direction = curMmEvent.Direction;
se.DominantFreq = (int)curMmEvent.DominantFreq;
se.SetEnergy();
return se;
}
private string BuildSqlQuery(DateTime searchStartTime, DateTime searchEndTime)
{
string findStr = "";
if (TimeFC.IsUse)
{
DateTime st = searchStartTime;
DateTime et = searchEndTime;
string startStr = st.Year.ToString() + "-" + st.Month.ToString("D2") + "-" + st.Day.ToString("D2") + "T" +
st.Hour.ToString("D2") + ":" + st.Minute.ToString("D2") + ":" + st.Second.ToString("D2");
string endStr = et.Year.ToString() + "-" + et.Month.ToString("D2") + "-" + et.Day.ToString("D2") + "T" +
et.Hour.ToString("D2") + ":" + et.Minute.ToString("D2") + ":" + et.Second.ToString("D2");
findStr += " where (EventTime>='" + startStr + "' and EventTime<'" + endStr + "')";
}
if (MLFC.IsUse || EnergyFC.IsUse || DepthFC.IsUse || EastFC.IsUse || NorthFC.IsUse)
{
if (MLFC.IsUse)
{
findStr += " and (ML>=" + MLFC.Cond2 + " and ML<" + MLFC.Cond1 + ")";
}
//if (EnergyFC.IsUse)
//{
// findStr += " and (ML>=" + EnergyFC.Cond2 + " and ML<" + EnergyFC.Cond1 + ")";
//}
if (DepthFC.IsUse)
{
findStr += " and (Z>=" + DepthFC.Cond2 + " and Z<" + DepthFC.Cond1 + ")";
}
if (EastFC.IsUse)
{
findStr += " and (Y>=" + EastFC.Cond2 + " and Y<" + EastFC.Cond1 + ")";
}
if (NorthFC.IsUse)
{
findStr += " and (X>=" + NorthFC.Cond2 + " and X<" + NorthFC.Cond1 + ")";
}
if (SortMode == 1)
{
}
}
var queryBuilder = new StringBuilder("select * from ");
queryBuilder.Append(GlobalConfig.UseResultTable);
queryBuilder.Append(findStr);
return queryBuilder.ToString();
}
private async Task ComputeFMAsync(MmEvent curMmEvent)
{
string downLoadStr = curMmEvent.EventTimeStr;
string datePath = downLoadStr.Substring(0, 4) + downLoadStr.Substring(5, 2) + downLoadStr.Substring(8, 2);
string jsonStr = "HA." + downLoadStr.Substring(0, 4) + downLoadStr.Substring(5, 2)
+ downLoadStr.Substring(8, 2) + downLoadStr.Substring(11, 2)
+ downLoadStr.Substring(14, 2) + downLoadStr.Substring(17, 2) + ".01" + GlobalConfig.DataTypeString + ".json";
string jsonFilePath = Path.Combine(GlobalConfig.ProjectConfig.MseedFilePath, datePath);
int fileSize = 0;
// 注意:这里我们使用了异步的文件存在检查方法
if (!await Task.Run(() => File.Exists(Path.Combine(jsonFilePath, jsonStr))))
{
fileSize = await DownloadJsonFile.DownloadAsync(downLoadStr, jsonFilePath, jsonStr, GlobalConfig.UseWaveDataTable);
}
if (fileSize > 2000)
{
using (StreamReader sr = new StreamReader(Path.Combine(jsonFilePath, jsonStr), Encoding.UTF8, true, 1024))
{
curMmEvent.JsonFile = Path.Combine(jsonFilePath, jsonStr);
using (JsonTextReader reader = new JsonTextReader(sr))
{
JArray jArray = await JArray.LoadAsync(reader);
//解析普通属性和数组混合的Json文件
//数组0是普通属性集合
JObject jobj = (JObject)jArray[0];
curMmEvent.SetEnergy();
curMmEvent.Phases = new Dictionary<string, int>();
JArray phaseArr = JArray.FromObject(jobj["phases"]);
for (int i = 0; i < phaseArr.Count; i++)
{
if (phaseArr[i]["first_motion_direct"] != null)
{
curMmEvent.Phases.Add(phaseArr[i]["id"].ToString().Substring(3, 3),
int.Parse(phaseArr[i]["first_motion_direct"].ToString()));
}
}
}
}
FMMap fmMap = CreateFM(curMmEvent, GlobalConfig.ProjectConfig.WorkArea.EMin, GlobalConfig.ProjectConfig.WorkArea.NMin);
ComputationResult cr = GlobalConfig.fmCore.ComputeResult(fmMap);
if (cr == null)
return;
curMmEvent.FocalType = cr.FocalType;
curMmEvent.Direction = cr.Direction;
}
}
public List<GridItemEventResult> SearchEvents(DateTime searchStartTime, DateTime searchEndTime)
{
List<GridItemEventResult> results = new List<GridItemEventResult>();
string findStr = "select * from " + GlobalConfig.UseResultTable;
if (TimeFC.IsUse)
{
DateTime st = searchStartTime;
DateTime et = searchEndTime;
string startStr = st.Year.ToString() + "-" + st.Month.ToString("D2") + "-" + st.Day.ToString("D2") + "T" +
st.Hour.ToString("D2") + ":" + st.Minute.ToString("D2") + ":" + st.Second.ToString("D2");
string endStr = et.Year.ToString() + "-" + et.Month.ToString("D2") + "-" + et.Day.ToString("D2") + "T" +
et.Hour.ToString("D2") + ":" + et.Minute.ToString("D2") + ":" + et.Second.ToString("D2");
findStr += " where (EventTime>='" + startStr + "' and EventTime<'" + endStr + "')";
}
if (MLFC.IsUse || EnergyFC.IsUse || DepthFC.IsUse || EastFC.IsUse || NorthFC.IsUse)
{
if (MLFC.IsUse)
{
findStr += " and (ML>=" + MLFC.Cond2 + " and ML<" + MLFC.Cond1 + ")";
}
//if (EnergyFC.IsUse)
//{
// findStr += " and (ML>=" + EnergyFC.Cond2 + " and ML<" + EnergyFC.Cond1 + ")";
//}
if (DepthFC.IsUse)
{
findStr += " and (Z>=" + DepthFC.Cond2 + " and Z<" + DepthFC.Cond1 + ")";
}
if (EastFC.IsUse)
{
findStr += " and (Y>=" + EastFC.Cond2 + " and Y<" + EastFC.Cond1 + ")";
}
if (NorthFC.IsUse)
{
findStr += " and (X>=" + NorthFC.Cond2 + " and X<" + NorthFC.Cond1 + ")";
}
if (SortMode == 1)
{
}
}
var list = fsqlTencent.Select<RemoteRealtimeResultEntity>()
.WithSql(findStr).ToList();
if (list != null)
{
foreach (var item in list)
{
GridItemEventResult se = new GridItemEventResult(item, true);
string eventTimeStr = se.EventTime;
string datePath = eventTimeStr.Substring(0, 4) + eventTimeStr.Substring(5, 2) + eventTimeStr.Substring(8, 2);
string dataFilePath = GlobalConfig.ProjectConfig.MseedFilePath + "\\" + datePath + "\\";
string dataFileName = "HA." + eventTimeStr.Substring(0, 4) + eventTimeStr.Substring(5, 2)
+ eventTimeStr.Substring(8, 2) + eventTimeStr.Substring(10, 3)
+ eventTimeStr.Substring(14, 2) + eventTimeStr.Substring(17, 2) + ".01" + GlobalConfig.DataTypeString;
string jsonStr = ".json";
MmEvent curMmEvent = new MmEvent();
curMmEvent.EventTimeStr = eventTimeStr;
curMmEvent.X = se.X;
curMmEvent.Y = se.Y;
curMmEvent.RMS = se.RMS;
curMmEvent.DominantFreq = 15;
//查询事件Json文件是否已下载
if (File.Exists(dataFilePath + dataFileName + jsonStr))
{
FileInfo fileInfo = new FileInfo(dataFilePath + dataFileName + jsonStr);
if (fileInfo.Length > 1024)
{
ComputeFM(curMmEvent);
//获取主频
curMmEvent.DominantFreq = GlobalData.GetDominFreq(eventTimeStr);
}
}
else
{
#region 同步方式
int res = new DownloadJsonFile().Download(eventTimeStr, dataFilePath, dataFileName + jsonStr, GlobalConfig.UseWaveDataTable);
if (res > -1)
{
FileInfo fileInfo2 = new FileInfo(dataFilePath + dataFileName + jsonStr);
if (fileInfo2.Length > 2000)
{
ComputeFM(curMmEvent);
//获取主频
curMmEvent.DominantFreq = GlobalData.GetDominFreq(eventTimeStr);
}
}
#endregion
}
//Random dominRnd = new Random((int)DateTime.Parse(curMmEvent.EventTimeStr).Ticks);
//int dominFreq = (int)curMmEvent.DominantFreq;
//if (curMmEvent.DominantFreq < 14)
//{
// dominFreq = dominRnd.Next(26, 80);
//}
//se.DominantFreq = dominFreq;
se.SourceChara = (int)curMmEvent.FocalType;
se.Direction = curMmEvent.Direction;
se.DominantFreq = (int)curMmEvent.DominantFreq;
se.SetEnergy();
results.Add(se);
}
}
SearchCount = results.Count;
return results;
}
public void ComputeFM(MmEvent mmEvent)
{
string downLoadStr = mmEvent.EventTimeStr;
string datePath = downLoadStr.Substring(0, 4) + downLoadStr.Substring(5, 2) + downLoadStr.Substring(8, 2);
string jsonStr = "HA." + downLoadStr.Substring(0, 4) + downLoadStr.Substring(5, 2)
+ downLoadStr.Substring(8, 2) + downLoadStr.Substring(10, 3)
+ downLoadStr.Substring(14, 2) + downLoadStr.Substring(17, 2) + ".01" + GlobalConfig.DataTypeString + ".json";
string jsonFilePath = GlobalConfig.ProjectConfig.MseedFilePath + "\\" + datePath + "\\";
if (!File.Exists(jsonFilePath + jsonStr))
{
new DownloadJsonFile().Download(downLoadStr, jsonFilePath, jsonStr, GlobalConfig.UseWaveDataTable);
}
using (StreamReader sr = System.IO.File.OpenText(jsonFilePath + jsonStr))
{
mmEvent.JsonFile = jsonFilePath + jsonStr;
JsonTextReader reader = new JsonTextReader(sr);
JArray jArray = (JArray)JToken.ReadFrom(reader);
//解析普通属性和数组混合的Json文件
//数组0是普通属性集合
JObject jobj = (JObject)jArray[0];
//mmEvent.SetEnergy();
//mmEvent.Energy=
mmEvent.Phases = new Dictionary<string, int>();
JArray phaseArr = JArray.FromObject(jobj["phases"]);
for (int i = 0; i < phaseArr.Count; i++)
{
if (phaseArr[i]["first_motion_direct"] != null)
{
mmEvent.Phases.Add(phaseArr[i]["id"].ToString().Substring(3, 3),
int.Parse(phaseArr[i]["first_motion_direct"].ToString()));
}
}
}
FMMap fmMap = CreateFM(mmEvent, GlobalConfig.ProjectConfig.WorkArea.EMin, GlobalConfig.ProjectConfig.WorkArea.NMin);
ComputationResult cr = GlobalConfig.fmCore.ComputeResult(fmMap);
if (cr == null)
return;
mmEvent.FocalType = cr.FocalType;
mmEvent.Direction = cr.Direction;
}
public FMMap CreateFM(MmEvent mmEvent, double BaseX, double BaseY)
{
FMMap fmMap = new FMMap();
fmMap.X = mmEvent.X - BaseX;
fmMap.Y = mmEvent.Y - BaseY;
fmMap.R = mmEvent.RMS;
foreach (var item in mmEvent.Phases)
{
if (item.Value == -1)
{
fmMap.negStation.Add(item.Key);
}
else
{
fmMap.posStation.Add(item.Key);
}
}
return fmMap;
}
bool CanStartMonitor()
{
return !GlobalData.IsRunning;
}
private void PutSamplesToChart(DataGeneratedEventArgs args)
{
//(Application.Current. as View).chart1.BeginUpdate();
}
public void MSeed2Asc(string filePath, string savePath)
{
using (Process compiler = new Process())
{
compiler.StartInfo.FileName = "mseed2ascii.exe";
compiler.StartInfo.Arguments = filePath + " -o " + savePath;
compiler.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
compiler.Start();
compiler.WaitForExit();
}
}
public void OnNavigatedTo(NavigationContext navigationContext)
{
}
public bool IsNavigationTarget(NavigationContext navigationContext)
{
return false;
}
public void OnNavigatedFrom(NavigationContext navigationContext)
{
//throw new NotImplementedException();
}
}
}