using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web.Script.Serialization;
namespace ConsoleApplication1
{
public class Program
{
public static void Main(string[] args)
{
StreamReader sr = new StreamReader(@"C:\Users\UserAccount\Desktop\20131103203219.txt");
string record = string.Empty;
StringBuilder sb = new StringBuilder();
sb.Append('[');
while ((record = sr.ReadLine()) != null)
{
sb.Append(record + ',');
}
sb.Remove(sb.ToString().Length - 1, 1);
sb.Append(']');
JavaScriptSerializer js = new JavaScriptSerializer();
List<GPS> list = js.Deserialize(sb.ToString(), typeof(List<GPS>)) as List<GPS>;
var list2 = from x in list
where x.Distance % 400 < 10 && x.SpeedMeter != 0
orderby x.GPSTime ascending
select new { x.DuringTime, x.Distance, x.SpeedMeter };
// 求在起点处几个点的平均速度
var list3 = from x in list2
orderby (int)x.Distance / 400 ascending
group x by (int)x.Distance / 400 into gx
select new
{
gx.Key,
Distance = gx.Min(p => p.Distance),
Speed = gx.Average(p => p.SpeedMeter)
};
// 求每一圈的平均速度
var list4 = from x in list
where x.SpeedMeter != 0
group x by (int)(x.Distance / 400) into gx
orderby gx.Key ascending
select new
{
gx.Key,
Distance = gx.Min(p => p.Distance),
Speed = gx.Average(p => p.SpeedMeter)
};
StreamWriter sw = new StreamWriter(@"T:\kongston.txt");
foreach (var g in list4)
{
sw.WriteLine(js.Serialize(g));
Console.WriteLine(js.Serialize(g));
}
sr.Close();
sw.Close();
sr.Dispose();
sw.Dispose();
}
}
}
GPS类:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
public class GPS
{
public double Longitude { get; set; }
public double Latitude { get; set; }
public double Accuracy { get; set; }
public double Altitude { get; set; }
public double SpeedMeter { get; set; }
private long _GPSTime;
public long GPSTime
{
get
{
return this._GPSTime;
}
set
{
this._GPSTime = value;
// C# 解析GPS返回的时间
DateTime dt = new DateTime(1970, 1, 1).AddMilliseconds(value).AddHours(8);
NormalTime = dt;
StringTime = dt.ToString("yyyy-MM-dd HH:mm:ss");
}
}
public DateTime NormalTime { get; set; }
public string StringTime { get; set; }
public double Bearing { get; set; }
public int DuringTime { get; set; }
public double Distance { get; set; }
}
}