Exemple #1
0
        public static List <BreakPointInfo> AnalyzeOneTrajectory(GPSTrajectory traj)
        {
            if (traj.GPSCount <= 3)
            {
                throw new Exception("GPS轨迹数据点太少");
            }
            List <BreakPointInfo> breakinfo = new List <BreakPointInfo>();
            TransportationMode    last      = InWhichMode(traj[1].Velocity);
            int duration = 1;

            for (int i = 2; i < traj.GPSCount; i++)
            {
                TransportationMode mode = InWhichMode(traj[i].Velocity);
                if (mode != last)
                {
                    //检测到移动模式变化
                    BreakPointInfo bpinfo = new BreakPointInfo(i - 1, last, duration);
                    breakinfo.Add(bpinfo);
                    duration = 1;
                }
                else
                {
                    duration++;
                }
                last = mode;
            }
            //处理最后一个点
            if (duration != 1)
            {
                breakinfo.Add(new BreakPointInfo(traj.GPSCount - 1, last, duration));
            }
            return(breakinfo);
        }
Exemple #2
0
        public static UsersTrajectories ReadAll(string filename)
        {
            UsersTrajectories myUserTrajectories = new UsersTrajectories();

            using (StreamReader sr = new StreamReader(filename))
            {
                while (!sr.EndOfStream)
                {
                    GPSTrajectory gt = ReadLine(sr.ReadLine());
                    myUserTrajectories.InsertTrajectories(gt);
                }
                return(myUserTrajectories);
            }
        }
Exemple #3
0
        public static string SingleTrajectoryToBaiduMapJson(GPSTrajectory path)
        {
            StringBuilder data = new StringBuilder();

            for (int i = 0; i < path.GPSCount; i++)
            {
                data.AppendFormat("{0},{1}", path[i].X, path[i].Y);
                if (i != path.GPSCount - 1)
                {
                    data.Append(",");
                }
            }
            return(data.ToString());
        }
Exemple #4
0
        public static GPSTrajectory ReadLine(string line)
        {
            int           split = line.IndexOf('\t');
            int           num   = int.Parse(line.Substring(0, split));
            GPSTrajectory gt    = new GPSTrajectory(num);

            string[] data = line.Substring(split + 1).Split(new char[] { ',', '|' });
            for (int i = 0; i < data.Length; i++)
            {
                int   time = int.Parse(data[i++]);
                float lo   = float.Parse(data[i++]);
                float la   = float.Parse(data[i]);
                gt.AddPoint(lo, la, time);
            }
            return(gt);
        }
Exemple #5
0
        private GPSTrajectory Simplify()
        {
            _usePt = new bool[GPSPts.GPSCount];
            for (int i = 0; i < GPSPts.GPSCount; i++)
            {
                _usePt[i] = true;
            }
            SimplifySection(0, GPSPts.GPSCount - 1);
            GPSTrajectory simplifiedLine = new GPSTrajectory(GPSPts.UserID);

            for (int i = 0; i < GPSPts.GPSCount; i++)
            {
                if (_usePt[i])
                {
                    simplifiedLine.AddPoint(GPSPts[i]);
                }
            }
            return(simplifiedLine);
        }
Exemple #6
0
        public string GetOneTrajectory(int userID, int index)
        {
            GPSTrajectory gt     = myUserTrajectories.GetTrajectoriesByUserID(userID)[index];
            string        result = gt.ToJSON();
            //添加速度
            StringBuilder sb = new StringBuilder();

            sb.Append("\"Velocity\":[0,");
            for (int i = 1; i < gt.GPSCount; i++)
            {
                sb.Append(gt[i].Velocity * 3.6);
                if (i != gt.GPSCount - 1)
                {
                    sb.Append(',');
                }
            }
            sb.Append(']');
            return(JSONConverter.AddElementsToJSON(result, sb.ToString()));
        }
Exemple #7
0
        public static string SingleTrajectoryToJson(GPSTrajectory item)
        {
            StringBuilder sb = new StringBuilder();

            sb.Append("[");
            sb.Append("{'geo':[");
            for (int i = 0; i < item.GPSCount; i++)
            {
                sb.AppendFormat("[{0},{1},{2}]", item[i].X, item[i].Y, item[i].TimeStamp);
                if (i != item.GPSCount - 1)
                {
                    sb.Append(",");
                }
            }
            sb.Append("],'count':1},");
            sb.Remove(sb.Length - 1, 1);//移除最后一个逗号
            sb.Append("]");
            return(sb.ToString());
        }
Exemple #8
0
 public GPSTrajectory Excute(GPSTrajectory source, double maxdistance)
 {
     _distanceTolerance = maxdistance;
     GPSPts             = source;
     return(Simplify());
 }
Exemple #9
0
 /// <summary>
 /// 构造函数
 /// </summary>
 /// <param name="traj">GPS轨迹</param>
 /// <param name="maxdistance">最大阈值</param>
 public GPSDouglasSimplification(GPSTrajectory traj, double maxdistance)
 {
     GPSPts             = traj;
     _distanceTolerance = maxdistance;
 }