コード例 #1
0
        public static double Distance(Trackpoint tp1, Trackpoint tp2)
        {
            //=ACOS(SIN(lat1)*SIN(lat2)+COS(lat1)*COS(lat2)*COS(lon2-lon1))*6371
            double dist = Math.Acos(Math.Sin(DegreeToRadian(tp1.LatitudeDegrees)) * Math.Sin(DegreeToRadian(tp2.LatitudeDegrees)) +
                                    Math.Cos(DegreeToRadian(tp1.LatitudeDegrees)) * Math.Cos(DegreeToRadian(tp2.LatitudeDegrees)) * Math.Cos(DegreeToRadian(tp2.LongitudeDegrees - tp1.LongitudeDegrees))) * 6371;

            return(dist);
        }
コード例 #2
0
        public static void SetPoint(Trackpoint tp1, Trackpoint tp2, double Distance)
        {
            double dist = 0;

            do
            {
                tp2.LongitudeDegrees += 0.000001;
                tp2.LatitudeDegrees  += 0.000001;
                dist = Utils.Distance(tp1, tp2);
            } while (dist < Distance);
        }
コード例 #3
0
        static void OnMesg(object sender, MesgEventArgs e)
        {
            string activityType = e.mesg.Name;

            Console.WriteLine("OnMesg: Received Mesg with global ID#{0}, its name is {1}", e.mesg.Num, activityType);

            Trackpoint tp = new Trackpoint();

            for (byte i = 0; i < e.mesg.GetNumFields(); i++)
            {
                foreach (var field in e.mesg.fields)
                {
                    string fieldValue = field.GetValue().ToString();
                    string fieldName  = field.GetName().ToString();
                    string recordType = e.mesg.fields[i].Num.ToString();
                    Console.WriteLine("\tField{0} Index{1} (\"{2}\" Field#{4}) Value: {3}", i, 0, fieldName, fieldValue, recordType);

                    if (!activityTypes.Contains(activityType))
                    {
                        activityTypes.Add(activityType);
                    }

                    if (activityType == "FileId")
                    {
                        switch (fieldName)
                        {
                        case "TimeCreated":
                            Dynastream.Fit.DateTime dt = new Dynastream.Fit.DateTime(uint.Parse(fieldValue));
                            tcx.Id        = Trackpoint.ConvertDate(dt.GetDateTime());
                            tcx.StartTime = dt.GetDateTime();
                            break;

                        default:
                            break;
                        }
                    }

                    if (activityType == "Record")
                    {
                        switch (fieldName)
                        {
                        case "Timestamp":
                            Dynastream.Fit.DateTime dt = new Dynastream.Fit.DateTime(uint.Parse(fieldValue));
                            tp.Time = dt.GetDateTime();
                            break;

                        case "HeartRate":
                            tp.HeartRateBpm = int.Parse(fieldValue);
                            break;

                        case "PositionLat":
                            tp.LatitudeDegrees = double.Parse(fieldValue);
                            break;

                        case "PositionLong":
                            tp.LongitudeDegrees = double.Parse(fieldValue);
                            break;

                        case "Altitude":
                            tp.AltitudeMeters = 300;    //double.Parse(fieldValue);
                            break;

                        default:
                            break;
                        }
                    }
                }
            }

            if (activityType == "Record")
            {
                tcx.TrackpointList.Add(tp);
            }
        }
コード例 #4
0
ファイル: Tcx.cs プロジェクト: eitanbehar/gpx
        public void Save(String Filename)
        {
            XElement xTrack = new XElement("Track");

            foreach (Trackpoint trackPoint in TrackpointList)
            {
                xTrack.Add(trackPoint.GetTrackpoint());
            }

            XElement xTcx = new XElement("Activities",
                                         new XElement("Activity", new XAttribute("Sport", Sport),
                                                      new XElement("Id", Id),
                                                      new XElement("Lap", new XAttribute("StartTime", Trackpoint.ConvertDate(StartTime)),
                                                                   new XElement("DistanceMeters", DistanceMeters),
                                                                   new XElement("Calories", Calories),
                                                                   new XElement("TotalTimeSeconds", TotalTimeSeconds),
                                                                   xTrack)));

            xTcx.Save(Filename);
        }