コード例 #1
0
        // POST: api/GpsData
        public HttpResponseMessage Post([FromBody] GpsData values)
        {
            HttpResponseMessage answer   = null;
            Response            response = new Response();

            try
            {
                int index = GpsDataDB.gpsDataAdd(values);

                if (index > 0)
                {
                    response.code    = 1;
                    response.message = "Guardado";
                }
                else
                {
                    response.code    = 0;
                    response.message = "NO Guardado";
                }

                answer = Request.CreateResponse(response);
            }
            catch (Exception ex)
            {
                response.code    = -1;
                response.message = ex.ToString();
                answer           = Request.CreateResponse(response);
            }

            return(answer);
        }
コード例 #2
0
        // PUT: api/GpsData/
        public HttpResponseMessage Put([FromBody] GpsData values)
        {
            HttpResponseMessage answer   = null;
            Response            response = new Response();

            try
            {
                int rowCount = GpsDataDB.gpsDataUpdate(values);

                if (rowCount > 0)
                {
                    response.code    = 1;
                    response.message = "Actualizado";
                }
                else
                {
                    response.code    = 0;
                    response.message = "NO Actualizado";
                }

                answer = Request.CreateResponse(response);
            }
            catch (Exception ex)
            {
                response.code    = -1;
                response.message = ex.ToString();
                answer           = Request.CreateResponse(response);
            }

            return(answer);
        }
コード例 #3
0
ファイル: Gpx11Serializer.cs プロジェクト: tatepoon/Geo
        private IEnumerable <GpxTrack> SerializeTracks(GpsData data)
        {
            foreach (var track in data.Tracks)
            {
                var trk = new GpxTrack();

                SerializeTrackMetadata(track, trk, x => x.Name, (gpx, s) => gpx.name        = s);
                SerializeTrackMetadata(track, trk, x => x.Description, (gpx, s) => gpx.desc = s);
                SerializeTrackMetadata(track, trk, x => x.Comment, (gpx, s) => gpx.cmt      = s);

                trk.trkseg = new GpxTrackSegment[track.Segments.Count];
                for (var i = 0; i < track.Segments.Count; i++)
                {
                    var segment = track.Segments[i];
                    var pts     = new GpxWaypoint[segment.Fixes.Count];
                    for (var j = 0; j < segment.Fixes.Count; j++)
                    {
                        pts[j] = new GpxWaypoint
                        {
                            lat = (decimal)segment.Fixes[j].Coordinate.Latitude,
                            lon = (decimal)segment.Fixes[j].Coordinate.Longitude,
                            ele = segment.Fixes[j].Coordinate.Is3D ? (decimal)((Is3D)segment.Fixes[j].Coordinate).Elevation : 0m
                        };
                    }
                    trk.trkseg[i] = new GpxTrackSegment {
                        trkpt = pts
                    };
                }

                yield return(trk);
            }
        }
コード例 #4
0
ファイル: Gpx11Serializer.cs プロジェクト: tatepoon/Geo
        private static void ParseTracks(GpxFile xml, GpsData data)
        {
            if (xml.trk != null)
            {
                foreach (var trkType in xml.trk)
                {
                    var track = new Track();

                    track.Metadata.Attribute(x => x.Name, trkType.name);
                    track.Metadata.Attribute(x => x.Description, trkType.desc);
                    track.Metadata.Attribute(x => x.Comment, trkType.cmt);

                    foreach (var trksegType in trkType.trkseg)
                    {
                        var segment = new TrackSegment();
                        foreach (var wptType in trksegType.trkpt)
                        {
                            var fix = new Fix((double)wptType.lat, (double)wptType.lon, (double)wptType.ele, wptType.time);
                            segment.Fixes.Add(fix);
                        }
                        track.Segments.Add(segment);
                    }
                    data.Tracks.Add(track);
                }
            }
        }
コード例 #5
0
ファイル: AdminController.cs プロジェクト: Averill-kk/WebNavi
        public async Task <IActionResult> Edit(string id, [Bind("Id,Latitude,Lontitude,Satellite,Battery")] GpsData gpsData)
        {
            if (id != gpsData.Id)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(gpsData);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!GpsDataExists(gpsData.Id))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            return(View(gpsData));
        }
コード例 #6
0
 static apollo.common.Point3D ConvertToPoint(GpsData g)
 {
     return(new apollo.common.Point3D()
     {
         x = g.Easting, y = g.Northing, z = g.Altitude
     });
 }
コード例 #7
0
        public GpsData GetLastGpsData()
        {
            GpsData gpsData = null;

            try
            {
                lock (lockGPS)
                {
                    if (listGpsData.Count > 0)
                    {
                        gpsData = listGpsData[listGpsData.Count - 1];
                    }
                    else
                    {
                        logger.ErrorFormat("GetLastGpsData failed, listGpsData is null");
                    }
                }
            }
            catch (Exception e)
            {
                logger.ErrorFormat("catch an error : {0}", e.Message);
            }

            return(gpsData);
        }
コード例 #8
0
 //获取采样数据
 public void RecvData(ref GpsData data)
 {
     try
     {
         lock (lockObj)
         {
             data.Sd   = gpsData.Sd;
             data.Jd   = gpsData.Jd;
             data.Wd   = gpsData.Wd;
             data.Fxj  = gpsData.Fxj;
             data.Fyj  = gpsData.Fyj;
             data.Hgj  = gpsData.Hgj;
             data.Gd   = gpsData.Gd;
             data.Clqy = gpsData.Clqy;
             data.Ctqy = gpsData.Ctqy;
             data.Qjjl = gpsData.Qjjl;
             data.Htjl = gpsData.Htjl;
             data.Zt   = gpsData.Zt;
         }
     }
     catch (Exception e)
     {
         logger.ErrorFormat("catch an error : {0}", e.Message);
     }
 }
コード例 #9
0
ファイル: Gpx10Serializer.cs プロジェクト: linwang741/Geo
        private static void ParseTracks(GpxFile xml, GpsData data)
        {
            if (xml.trk != null)
            {
                foreach (var trkType in xml.trk)
                {
                    var track = new Track();

                    track.Metadata.Attribute(x => x.Name, trkType.name);
                    track.Metadata.Attribute(x => x.Description, trkType.desc);
                    track.Metadata.Attribute(x => x.Comment, trkType.cmt);

                    foreach (var trksegTrkpt in trkType.trkseg.Where(seg => seg.trkpt != null))
                    {
                        var segment = new TrackSegment();
                        foreach (var wptType in trksegTrkpt.trkpt)
                        {
                            segment.Waypoints.Add(ConvertWaypoint(wptType));
                        }
                        track.Segments.Add(segment);
                    }
                    data.Tracks.Add(track);
                }
            }
        }
コード例 #10
0
ファイル: Gpx10Serializer.cs プロジェクト: linwang741/Geo
        private IEnumerable <GpxTrack> SerializeTracks(GpsData data)
        {
            foreach (var track in data.Tracks)
            {
                var trk = new GpxTrack();

                SerializeTrackMetadata(track, trk, x => x.Name, (gpx, s) => gpx.name        = s);
                SerializeTrackMetadata(track, trk, x => x.Description, (gpx, s) => gpx.desc = s);
                SerializeTrackMetadata(track, trk, x => x.Comment, (gpx, s) => gpx.cmt      = s);

                trk.trkseg = new GpxTrackSegment[track.Segments.Count];
                for (var i = 0; i < track.Segments.Count; i++)
                {
                    var segment = track.Segments[i];
                    var pts     = new GpxTrackPoint[segment.Waypoints.Count];
                    for (var j = 0; j < segment.Waypoints.Count; j++)
                    {
                        pts[j] = ConvertToGpxTrackPoint(segment.Waypoints[j]);
                    }
                    trk.trkseg[i] = new GpxTrackSegment {
                        trkpt = pts
                    };
                }

                yield return(trk);
            }
        }
コード例 #11
0
ファイル: GpsXmlSerializer.cs プロジェクト: linwang741/Geo
        public string Serialize(GpsData data)
        {
            var textWriter = new EncodingStringWriter(Encoding.UTF8);

            _xmlSerializer.Serialize(textWriter, SerializeInternal(data));
            return(textWriter.ToString());
        }
コード例 #12
0
        public async Task <IActionResult> PutGpsData([FromRoute] string id, [FromBody] GpsData gpsData)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != gpsData.Id)
            {
                return(BadRequest());
            }

            _context.Entry(gpsData).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!GpsDataExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
コード例 #13
0
 private void OnScanComplete(IEnumerable <NetworkData> data, GpsData gpsData)
 {
     if (ScanComplete != null)
     {
         ScanComplete(this, new ScanCompleteEventArgs(data.ToArray(), gpsData));
     }
 }
コード例 #14
0
        public static List <GpsData> GetList_Car(string cldwzdsbh, DateTime stTime, DateTime endTime)
        {
            StringBuilder pSBQueryText = new StringBuilder();

            pSBQueryText.Append("SELECT LONGITUDE_BAIDU,LATITUDE_BAIDU,PASSTIME FROM GPS_VEHICLEDATA A LEFT JOIN CFG_VEHICLEINFO B ON A.VEHID=B.ID WHERE A.PASSTIME BETWEEN TO_DATE('" + stTime.ToString("yyyy-MM-dd HH:mm:ss") + "','yyyy-mm-dd hh24:mi:ss') AND TO_DATE('" + endTime.ToString("yyyy-MM-dd HH:mm:ss") + "','yyyy-mm-dd hh24:mi:ss') ");
            if (string.IsNullOrWhiteSpace(cldwzdsbh) == false)
            {
                pSBQueryText.Append("AND B.CLDWZDSBH='" + cldwzdsbh + "' ");
            }
            pSBQueryText.Append(" ORDER BY A.PASSTIME DESC");
            var            data        = OracleOperateBLL.FillDataTable(pSBQueryText.ToString());
            List <GpsData> gpsDataList = new List <GpsData>();

            foreach (DataRow dr in data.Rows)
            {
                GpsData d = new GpsData();
                //d.Address = dr["ADDRESS"].ToString();
                d.Create_Time = DateTime.Parse(dr["PASSTIME"].ToString()).ToString("yyyy-MM-dd HH:mm:ss");
                d.Lat         = Convert.ToDecimal(dr["LATITUDE_BAIDU"]).ToString("f6");
                d.Lon         = Convert.ToDecimal(dr["LONGITUDE_BAIDU"]).ToString("f6");

                gpsDataList.Add(d);
            }

            return(gpsDataList);
        }
コード例 #15
0
ファイル: AccessPoint.cs プロジェクト: zhouzaoyuan/inSSIDer-2
        /// <summary>
        /// Clones and then adds data to this AP
        /// </summary>
        /// <param name="data">The data to add</param>
        /// <param name="gpsData">The GPS data to go with</param>
        public void AddData(NetworkData data, GpsData gpsData)
        {
            if (data == null)
            {
                throw new ArgumentNullException("data");
            }
            if (gpsData == null)
            {
                throw new ArgumentNullException("gpsData");
            }

            NetworkData nd2 = (NetworkData)data.Clone();

            lock (MyNetworkDataCollection)
            {
                //Check if the RSSI had been consistently stronger and stronger than the strongest reading before updating the GPS data
                //This means if this reading and the last reading are both higher than 2 readings ago, update the GPS data
                if ((MyNetworkDataCollection.Count > 1 && nd2.Rssi > MyNetworkDataCollection.Max(nd => nd.Rssi) &&
                     (nd2.Rssi > MyNetworkDataCollection[MyNetworkDataCollection.Count - 2].Rssi &&
                      MyNetworkDataCollection[MyNetworkDataCollection.Count - 1].Rssi >
                      MyNetworkDataCollection[MyNetworkDataCollection.Count - 2].Rssi)) ||
                    (nd2.Rssi > -100 && GpsData.SatelliteTime == DateTime.MinValue))
                {
                    //Update GPS data
                    GpsData = gpsData;
                }
                //Add the data
                MyNetworkDataCollection.Add(nd2);
            }
            Timestamp         = nd2.MyTimestamp;
            LastSeenTimestamp = nd2.MyTimestamp;

            //Remove old data, if any
            DeleteOldData(Timestamp - TimeSpan.FromMinutes(8));
        }
コード例 #16
0
        public static List <GpsData> GetList_User(string telephone, DateTime stTime, DateTime endTime)
        {
            StringBuilder pSBQueryText = new StringBuilder();

            pSBQueryText.Append("SELECT LON,LAT,CREATE_TIME,ADDRESS FROM GPS_DATA WHERE CREATE_TIME BETWEEN TO_DATE('" + stTime.ToString("yyyy-MM-dd HH:mm:ss") + "','yyyy-mm-dd hh24:mi:ss') AND TO_DATE('" + endTime.ToString("yyyy-MM-dd HH:mm:ss") + "','yyyy-mm-dd hh24:mi:ss') ");
            if (string.IsNullOrWhiteSpace(telephone) == false)
            {
                pSBQueryText.Append("AND PHONE='" + telephone + "' ");
            }
            pSBQueryText.Append(" ORDER BY CREATE_TIME");
            var            data        = OracleOperateBLL.FillDataTable(pSBQueryText.ToString());
            List <GpsData> gpsDataList = new List <GpsData>();

            foreach (DataRow dr in data.Rows)
            {
                GpsData d = new GpsData();
                d.Address     = dr["ADDRESS"].ToString();
                d.Create_Time = DateTime.Parse(dr["CREATE_TIME"].ToString()).ToString("yyyy-MM-dd HH:mm:ss");
                var lonAndLat = GpsTranslate.gcj2bd(Convert.ToDouble(dr["LAT"].ToString()), Convert.ToDouble(dr["LON"].ToString()));
                d.Lat = lonAndLat[0].ToString();
                d.Lon = lonAndLat[1].ToString();

                gpsDataList.Add(d);
            }

            return(gpsDataList);
        }
コード例 #17
0
        public void findNearPOIFromGpx(string trkFile, string poiFile)
        {
            try {
                GpxResult res =
                    GpsData.findPoiNearGpxTracks(trkFile, poiFile);
                if (res.GPX == null)
                {
                    string msg = "Find Near POI to GPX tracks/routes failed" + NL
                                 + " " + res.Message;
                    raiseGpxTcxEvent(new GpxTcxEventArgs(EventType.MSG, NL + msg));
                    return;
                }
                gpx poiNear = res.GPX;

                string saveFileName = getSaveName(poiFile, ".foundnear");
                if (saveFileName != null)
                {
                    poiNear.Save(saveFileName);
                    string msg = "Find Near POI to GPX tracks/routes:" + NL
                                 + " Tracks/routes file=" + trkFile + NL
                                 + " POI file=" + poiFile + NL
                                 + " Output=" + saveFileName + NL
                                 + " " + res.Message;
                    raiseGpxTcxEvent(new GpxTcxEventArgs(EventType.MSG, NL + msg));
                }
                else
                {
                    return;
                }
            } catch (Exception ex) {
                string msg = "Error finding Near POI from GPX";
                raiseGpxTcxEvent(new GpxTcxEventArgs(EventType.EXC, msg, ex));
                return;
            }
        }
コード例 #18
0
        /// <summary>
        /// Saves all dynamic and global gpss to the save data.
        /// </summary>
        public override void SaveData()
        {
            MyObjectBuilder_GpsManager builder = new MyObjectBuilder_GpsManager();

            foreach (var gps in Gpss)
            {
                GpsData data = new GpsData();
                data.color    = gps.GPSColor.ToVector3();
                data.name     = gps.Name;
                data.position = gps.Coords;

                builder.Gpss.Add(data);
            }

            foreach (var gps in DynamicGpss)
            {
                DynamicGpsData data = new DynamicGpsData();
                data.playerId = gps.Key.playerId;
                data.gpsName  = gps.Key.gpsName;
                data.gpsHash  = gps.Value;

                builder.DynamicGpss.Add(data);
            }

            FileUtils.WriteXmlFileToWorld(builder, FILENAME, typeof(GlobalGpsManager));
        }
コード例 #19
0
 public void deleteTcxTrackpoints(string tcxFile)
 {
     try {
         TcxResult res =
             GpsData.deleteTcxTrackpoints(tcxFile);
         if (res.TCX == null)
         {
             string msg = "Delete trackpoints from TCX failed:" + NL
                          + "for " + Path.GetFileName(tcxFile) + NL
                          + res.Message;
             raiseGpxTcxEvent(new GpxTcxEventArgs(EventType.ERR, msg));
             return;
         }
         string saveFileName = getSaveName(tcxFile, ".trimmed");
         if (saveFileName != null)
         {
             res.TCX.Save(saveFileName);
             string msg = "Delete TCX Trackpoints: Trimmed " + tcxFile + NL
                          + "  Output is " + saveFileName
                          + NL + "  " + res.Message;
             raiseGpxTcxEvent(new GpxTcxEventArgs(EventType.MSG, NL + msg));
         }
         else
         {
             return;
         }
     } catch (Exception ex) {
         string msg = "Error deleting trackpoints from TCX";
         raiseGpxTcxEvent(new GpxTcxEventArgs(EventType.EXC, msg, ex));
         return;
     }
 }
コード例 #20
0
ファイル: Statistics.cs プロジェクト: slavdude/bi-portfolio
        protected void Dispose(bool disposing)
        {
            if (disposing)
            {
                if (!this.disposed)
                {
                    if (this.agency != null)
                    {
                        this.agency.Dispose();
                    }
                    this.agency = null;

                    if (this.client != null)
                    {
                        this.client.Dispose();
                    }
                    this.client = null;

                    if (this.eventPacket != null)
                    {
                        this.eventPacket.Dispose();
                    }
                    this.eventPacket = null;

                    if (this.gpsData != null)
                    {
                        this.gpsData.Dispose();
                    }
                    this.gpsData = null;

                    this.disposed = true;
                }
            }
        }
コード例 #21
0
 public void changeTimesTcx(string tcxFile)
 {
     try {
         TcxResult res =
             GpsData.changeTimesTcx(tcxFile);
         if (res.TCX == null)
         {
             string msg = "Change times in TCX failed:" + NL
                          + "for " + Path.GetFileName(tcxFile) + NL
                          + res.Message;
             raiseGpxTcxEvent(new GpxTcxEventArgs(EventType.ERR, msg));
             return;
         }
         string saveFileName = getSaveName(tcxFile, ".timechange");
         if (saveFileName != null)
         {
             res.TCX.Save(saveFileName);
             string msg = "Change TCX Times: Changed times in "
                          + tcxFile + NL + "  Output is " + saveFileName
                          + NL + "  " + res.Message;
             raiseGpxTcxEvent(new GpxTcxEventArgs(EventType.MSG, NL + msg));
         }
         else
         {
             return;
         }
     } catch (Exception ex) {
         string msg = "Error changing times in TCX";
         raiseGpxTcxEvent(new GpxTcxEventArgs(EventType.EXC, msg, ex));
         return;
     }
 }
コード例 #22
0
        public static Ros.NavSatFix ConvertFrom(GpsData data)
        {
            return(new Ros.NavSatFix()
            {
                header = new Ros.Header()
                {
                    stamp = Convert(data.Time),
                    frame_id = data.Frame,
                },
                status = new Ros.NavSatStatus()
                {
                    status = Ros.NavFixStatus.STATUS_FIX,
                    service = Ros.GpsServisType.SERVICE_GPS,
                },
                latitude = data.Latitude,
                longitude = data.Longitude,
                altitude = data.Altitude,

                position_covariance = new double[]
                {
                    0.0001, 0, 0,
                    0, 0.0001, 0,
                    0, 0, 0.0001,
                },

                position_covariance_type = Ros.CovarianceType.COVARIANCE_TYPE_DIAGONAL_KNOWN
            });
        }
コード例 #23
0
 public static void LnglatToTilePixelOffset(int zoom, GpsData lnglat, out Vector2 offset)
 {
     double n      =  Math.Pow(2,  zoom);
     double tileX  =  ((lnglat.Longitude  +  180)  /  360)   * n;
     double tileY  =  (1  -  (Math.Log(Math.Tan(Mathf.Deg2Rad * lnglat.Latitude)   +  (1  /  Math.Cos(Mathf.Deg2Rad * lnglat.Latitude)))   /  Math.PI))   /  2  *  n;
     offset        = new Vector2((float)(tileX - (int)tileX), (float)(tileY - (int)tileY));
 }
コード例 #24
0
ファイル: Gpx11Serializer.cs プロジェクト: tatepoon/Geo
        private static void ParseMetadata(GpxFile xml, GpsData data)
        {
            data.Metadata.Attribute(x => x.Software, xml.creator);
            if (xml.metadata != null)
            {
                data.Metadata.Attribute(x => x.Name, xml.metadata.name);
                data.Metadata.Attribute(x => x.Description, xml.metadata.desc);
                data.Metadata.Attribute(x => x.Keywords, xml.metadata.keywords);

                if (xml.metadata.link != null && xml.metadata.link.Length > 0)
                {
                    data.Metadata.Attribute(x => x.Link, xml.metadata.link[0].href);
                }

                if (xml.metadata.author != null)
                {
                    data.Metadata.Attribute(x => x.Author.Name, xml.metadata.author.name);
                    if (xml.metadata.author.email != null)
                    {
                        data.Metadata.Attribute(x => x.Author.Email, xml.metadata.author.email.id + "@" + xml.metadata.author.email.domain);
                    }
                    if (xml.metadata.author.link != null)
                    {
                        data.Metadata.Attribute(x => x.Author.Link, xml.metadata.author.link.href);
                    }
                }

                if (xml.metadata.copyright != null)
                {
                    data.Metadata.Attribute(x => x.Copyright.Author, xml.metadata.copyright.author);
                    data.Metadata.Attribute(x => x.Copyright.License, xml.metadata.copyright.license);
                    data.Metadata.Attribute(x => x.Copyright.Year, xml.metadata.copyright.year);
                }
            }
        }
コード例 #25
0
ファイル: GpsXmlSerializer.cs プロジェクト: HisCodeness/Geo
        public string Serialize(GpsData data)
        {
            var textWriter = new StringWriterUtf8();

            _xmlSerializer.Serialize(textWriter, SerializeInternal(data));
            return(textWriter.ToString());
        }
コード例 #26
0
ファイル: NmeaDeSerializer.cs プロジェクト: linwang741/Geo
        public GpsData DeSerialize(StreamWrapper streamWrapper)
        {
            var data         = new GpsData();
            var trackSegment = new TrackSegment();

            streamWrapper.Position = 0;
            using (var reader = new StreamReader(streamWrapper))
            {
                string line;
                while ((line = reader.ReadLine()) != null)
                {
                    if (ParseFix(line, trackSegment))
                    {
                        continue;
                    }
                    if (ParseWaypoint(line, data))
                    {
                        continue;
                    }
                }
            }

            if (!trackSegment.IsEmpty())
            {
                data.Tracks.Add(new Track());
                data.Tracks[0].Segments.Add(trackSegment);
            }
            return(data);
        }
コード例 #27
0
        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                GpsData    gpsData    = null;
                GpsService gpsService = new GpsService();
                gpsService.Initialize("COM3");

                while (gpsData == null)
                {
                    if (gpsService.ReadData() != null)
                    {
                        gpsData = new GpsData();
                        gpsData = gpsService.ReadData();
                        if (gpsData != null)
                        {
                            richTextBox1.Text = "lat:\t" + gpsData.Latitude + "\n" + "lon:\t" + gpsData.Longitude + "\n";
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                richTextBox1.Text = ex.Message;
            }
        }
コード例 #28
0
        private void writeWeeklyReportData(StreamWriter sw, int curYear,
                                           string curMonth, int curWeek, DateTime curStartOfWeek,
                                           TimeSpan totalWalkingDuration, double totalWalkingDistance,
                                           TimeSpan totalCyclingDuration, double totalCyclingDistance,
                                           TimeSpan totalWorkoutDuration, double totalWorkoutDistance,
                                           TimeSpan totalOtherDuration, double totalOtherDistance,
                                           TimeSpan totalDuration, double totalDistance)
        {
            sw.Write(curYear + CSV_SEP);  // year
            sw.Write(curMonth + CSV_SEP); // month
            sw.Write(curWeek + CSV_SEP);  // week
            sw.Write($"{GpsData.formatTimeWeekday(curStartOfWeek)}" + CSV_SEP);

            sw.Write($"{GpsData.formatDuration(totalWalkingDuration)}" + CSV_SEP
                     + $"{GpsData.formatDurationMinutes(totalWalkingDuration)}" + CSV_SEP
                     + $"{GpsData.M2MI * totalWalkingDistance:f1}" + CSV_SEP);
            sw.Write($"{GpsData.formatDuration(totalCyclingDuration)}" + CSV_SEP
                     + $"{GpsData.formatDurationMinutes(totalCyclingDuration)}" + CSV_SEP
                     + $"{GpsData.M2MI * totalCyclingDistance:f1}" + CSV_SEP);
            sw.Write($"{GpsData.formatDuration(totalWorkoutDuration)}" + CSV_SEP
                     + $"{GpsData.formatDurationMinutes(totalWorkoutDuration)}" + CSV_SEP
                     + $"{GpsData.M2MI * totalWorkoutDistance:f1}" + CSV_SEP);
            sw.Write($"{GpsData.formatDuration(totalOtherDuration)}" + CSV_SEP
                     + $"{GpsData.formatDurationMinutes(totalOtherDuration)}" + CSV_SEP
                     + $"{GpsData.M2MI * totalOtherDistance:f1}" + CSV_SEP);
            sw.Write($"{GpsData.formatDuration(totalDuration)}" + CSV_SEP
                     + $"{GpsData.formatDurationMinutes(totalDuration)}" + CSV_SEP
                     + $"{GpsData.M2MI * totalDistance:f1}" + CSV_SEP);
            sw.Write(NL);
        }
コード例 #29
0
        protected override GpsData DeSerialize(SkyDemonFlightplan xml)
        {
            if (xml == null)
            {
                return(null);
            }

            //N514807.00 W0000930.00
            var data = new GpsData();

            if (xml.PrimaryRoute != null)
            {
                data.Routes.Add(ConvertRoute(xml.PrimaryRoute));
            }

            if (xml.Routes != null)
            {
                foreach (var route in xml.Routes)
                {
                    data.Routes.Add(ConvertRoute(route));
                }
            }

            if (xml.Aircraft != null && xml.Aircraft.Length > 0)
            {
                data.Metadata.Attribute(x => x.Vehicle.Identifier, xml.Aircraft[0].Registration);
                data.Metadata.Attribute(x => x.Vehicle.Model, xml.Aircraft[0].Type);
            }

            return(data);
        }
コード例 #30
0
 static Apollo.Point3D ConvertToApolloPoint(GpsData g)
 {
     return(new Apollo.Point3D()
     {
         x = g.Easting, y = g.Northing, z = g.Altitude
     });
 }
コード例 #31
0
ファイル: IgcDeSerializer.cs プロジェクト: asapostolov/Geo
        public GpsData DeSerialize(StreamWrapper streamWrapper)
        {
            var data = new GpsData();
            DateTime date = default(DateTime);
            var trackSegment = new TrackSegment();

            streamWrapper.Position = 0;
            using (var reader = new StreamReader(streamWrapper))
            {
                string line;
                while ((line = reader.ReadLine()) != null)
                {
                    if (date == default(DateTime))
                    {
                        var match = Regex.Match(line, H_DATE_LINE_REGEX);
                        if (match.Success)
                        {
                            var d = int.Parse(match.Groups["d"].Value);
                            var m = int.Parse(match.Groups["m"].Value);
                            var y = int.Parse(match.Groups["y"].Value);
                            var yn = int.Parse(DateTime.UtcNow.ToString("yy"));
                            if (y > yn)
                                yn += 100;
                            var yd = yn - y;
                            date = new DateTime(DateTime.UtcNow.Year -yd, m, d);
                        continue;
                        }
                    }

                    if (ParseMetadata(data, x => x.Vehicle.Model, H_GLIDER_TYPE_REGEX, line))
                        continue;

                    if (ParseMetadata(data, x => x.Vehicle.Identifier, H_GLIDER_REG_REGEX, line))
                        continue;

                    if (ParseMetadata(data, x => x.Vehicle.Crew1, H_CREW1_REGEX, line))
                        continue;

                    if (ParseMetadata(data, x => x.Vehicle.Crew2, H_CREW2_REGEX, line))
                        continue;

                    if (ParseFix(line, trackSegment, date))
                        continue;
                }
            }

            if (!trackSegment.IsEmpty())
            {
                data.Tracks.Add(new Track());
                data.Tracks[0].Segments.Add(trackSegment);
            }

            return data;
        }
コード例 #32
0
ファイル: NmeaDeSerializer.cs プロジェクト: steeleprice/Geo
        public GpsData DeSerialize(StreamWrapper streamWrapper)
        {
            var data = new GpsData();
            var trackSegment = new TrackSegment();
            streamWrapper.Position = 0;
            using (var reader = new StreamReader(streamWrapper))
            {
                string line;
                while ((line = reader.ReadLine()) != null)
                {
                    if (ParseFix(line, trackSegment))
                        continue;
                    if (ParseWaypoint(line, data))
                        continue;
                }
            }

            if (!trackSegment.IsEmpty())
            {
                data.Tracks.Add(new Track());
                data.Tracks[0].Segments.Add(trackSegment);
            }
            return data;
        }
コード例 #33
0
ファイル: NmeaDeSerializer.cs プロジェクト: steeleprice/Geo
        private bool ParseWaypoint(string line, GpsData data)
        {
            if (line.IsNullOrWhitespace())
                return false;

            var match = Regex.Match(line, WPT_SENTENCE);
            if (match.Success)
            {
                double lat = ConvertOrd(match.Groups["lat"].Value, match.Groups["latd"].Value);
                double lon = ConvertOrd(match.Groups["lon"].Value, match.Groups["lond"].Value);
                var fix = new Point(lat, lon);
                data.Waypoints.Add(fix);

                return true;
            }
            return false;
        }
コード例 #34
0
ファイル: IgcDeSerializer.cs プロジェクト: asapostolov/Geo
 private bool ParseMetadata(GpsData data, Func<GpsMetadata.MetadataKeys, string> attribute, string regex, string line)
 {
     var match = Regex.Match(line, regex);
     if (match.Success)
     {
         data.Metadata.Attribute(attribute, match.Groups["value"].Value);
         return true;
     }
     return false;
 }