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.

116 lines
4.8 KiB
C#

using EWS.ComputerMonitor.Common;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WW.Cad.Base;
namespace Txgy.Microseismic.BaseLib
{
public class YuWuEventJsonModel: NotifyPropertyBase
{
/// <summary>
/// 发震时刻
/// </summary>
public string otime { get; set; }
/// <summary>
/// E(经度lon)
/// </summary>
public double E { get; set; }
/// <summary>
/// N(纬度lat)
/// </summary>
public double N { get; set; }
/// <summary>
/// 垂深
/// </summary>
public double depth { get; set; }
/// <summary>
/// 里氏震级
/// </summary>
public double ml { get; set; }
/// <summary>
/// 残差
/// </summary>
public double rms { get; set; }
/// <summary>
/// 震相参数集合
/// </summary>
public List<YuWuPhasesJsonModel> phases { get; set; }
/// <summary>
/// 震级参数集合
/// </summary>
public List<YuWuAmpsJsonModel> amps { get; set; }
public static YuWuEventJsonModel CreateEventModel(string fileName)
{
YuWuEventJsonModel yuwuJsonModel = new YuWuEventJsonModel();
using (StreamReader sr = System.IO.File.OpenText(fileName))
{
JsonTextReader reader = new JsonTextReader(sr);
JArray jArray = (JArray)JToken.ReadFrom(reader);
//解析普通属性和数组混合的Json文件
//数组0是普通属性集合
JObject jobj = (JObject)jArray[0];
yuwuJsonModel.otime = JsonConvert.SerializeObject(jobj["otime"]).Trim(new char[] { '\\', '\"' }).Substring(0, 23);
yuwuJsonModel.E = double.Parse(jobj["lon"].ToString());
yuwuJsonModel.N = double.Parse(jobj["lat"].ToString());
yuwuJsonModel.depth = double.Parse(jobj["depth"].ToString());
yuwuJsonModel.ml = double.Parse(jobj["ml"].ToString());
yuwuJsonModel.rms = double.Parse(jobj["rms"].ToString());
yuwuJsonModel.phases = new List<YuWuPhasesJsonModel>();
yuwuJsonModel.amps = new List<YuWuAmpsJsonModel>();
//textBoxTotalML.Text = strMl;
JArray phaseArr = JArray.FromObject(jobj["phases"]);
for (int i = 0; i < phaseArr.Count; i++)
{
YuWuPhasesJsonModel phases = new YuWuPhasesJsonModel();
phases.id = phaseArr[i]["id"].ToString();
phases.name = phaseArr[i]["name"].ToString();
phases.atime = phaseArr[i]["atime"].ToString();
phases.resi = double.Parse(phaseArr[i]["resi"].ToString());
if (phaseArr[i]["first_motion_direct"]!=null)
{
phases.first_motion_direct = int.Parse(phaseArr[i]["first_motion_direct"].ToString());
}
if (phaseArr[i]["fmd_semi_period"]!=null)
{
phases.fmd_semi_period = double.Parse(phaseArr[i]["fmd_semi_period"].ToString());
}
phases.deltaKm = double.Parse(phaseArr[i]["deltaKm"].ToString());
phases.disKm = double.Parse(phaseArr[i]["disKm"].ToString());
phases.model_time = double.Parse(phaseArr[i]["model_time"].ToString());
phases.weight = double.Parse(phaseArr[i]["weight"].ToString());
phases.prob = double.Parse(phaseArr[i]["prob"].ToString());
yuwuJsonModel.phases.Add(phases);
//Console.WriteLine(phaseArr[i].ToString());
}
JArray ampsArr = JArray.FromObject(jobj["amps"]);
for (int i = 0; i < ampsArr.Count; i++)
{
YuWuAmpsJsonModel amps = new YuWuAmpsJsonModel();
amps.id = ampsArr[i]["id"].ToString();
amps.name = ampsArr[i]["name"].ToString();
amps.atime = ampsArr[i]["atime"].ToString();
amps.mag_type = ampsArr[i]["mag_type"].ToString();
amps.mag_value = double.Parse(ampsArr[i]["mag_value"].ToString());
amps.amp = double.Parse(ampsArr[i]["amp"].ToString());
yuwuJsonModel.amps.Add(amps);
//Console.WriteLine(phaseArr[i].ToString());
}
reader.Close();
}
return yuwuJsonModel;
}
}
}