예제 #1
0
        private void AddPositionalPlaceMark(ref GPSTrackInfo p_TrackInfo, double dbldistance, string strDesc)
        {
            String strPlaceMarkName = "";
            String strPlaceMarkDesc = "[" + p_TrackInfo.When.ToString("dd-MMM-yy ") +
                                      p_TrackInfo.When.ToString("T") + "] [" + String.Format("{0:0.##}", dbldistance) + " km] [" +
                                      String.Format("{0:0.#}", p_TrackInfo.Speed(UnitOfMeasure.Mile)) + " mph] [" + strDesc + "]";

            AddPlaceMark(strPlaceMarkName, strPlaceMarkDesc, ConvertCoordTostring(p_TrackInfo.Where), false);
        }
예제 #2
0
        void ExportSelectedTrack(String strTrackId)
        {
            if (File.Exists(m_strGPSExportFile))
            {
                File.Delete(m_strGPSExportFile);
            }

            m_lPlaceMarks = new List <PlacemarkType>();

            String strKMLMessage = "";

            StreamWriter swOutputFile = File.AppendText(m_strGPSExportFile);

            IObjectContainer dbTrack = Db4oFactory.OpenFile(m_strTrackingDBFileName);

            try{
                //Coordinate referencePoint = new Coordinate(0,0);
                Coordinate lastPoint = new Coordinate(0, 0);

                IQuery query = dbTrack.Query();

                //only get Objects for the latest track IDs points...

                query = dbTrack.Query();
                query.Constrain(typeof(GPSTrackInfo));
                query.Descend("m_strTrackID").Constrain(strTrackId);
                query.Descend("m_dtTimeAtPosition").OrderAscending();
                //query.Descend("m_dtTimeAtPosition").OrderDescending();

                IObjectSet result = query.Execute();

                GPSTrackInfo trackInfo = new GPSTrackInfo();             // = null;
                // should only be at most one...

                String strCoordinates = "";

                double dblDistanceBetweenPoints = 0;
                double dblCulmativeDistance     = 0;

                double dblCulmativeDistanceFromLastPoint = 0;

                bool blnFirstPoint = true;

                foreach (object item in result)
                {
                    trackInfo = (GPSTrackInfo)item;

                    if (m_dblPlacemarkSeparation > 0)
                    {
                        if (blnFirstPoint)
                        {
                            //referencePoint = trackInfo.Where;
                            blnFirstPoint = false;
                            // add Placemark for start and end of track...
                            AddPositionalPlaceMark(ref trackInfo, dblCulmativeDistance, "START");
                        }
                        else
                        {
                            //dblDistanceBetweenPoints = Coordinate.DistanceBetweenPoints(trackInfo.Where,referencePoint,UnitOfMeasure.Kilometer);


                            dblDistanceBetweenPoints           = Coordinate.DistanceBetweenPoints(trackInfo.Where, lastPoint, UnitOfMeasure.Kilometer);
                            dblCulmativeDistance              += dblDistanceBetweenPoints;
                            dblCulmativeDistanceFromLastPoint += dblDistanceBetweenPoints;

                            //at placemark every 100m
                            if (dblCulmativeDistanceFromLastPoint >= m_dblPlacemarkSeparation)
                            {
                                // at Placemark for start and end of track...
                                //referencePoint = trackInfo.Where;

                                dblCulmativeDistanceFromLastPoint = 0;
                                AddPositionalPlaceMark(ref trackInfo, dblCulmativeDistance, "");
                            }
                        }
                    }
                    lastPoint       = trackInfo.Where;
                    strCoordinates += ConvertCoordTostring(trackInfo.Where) + " ";
                }

                //add placemark for endPoint
                AddPositionalPlaceMark(ref trackInfo, dblCulmativeDistance, "END");

                //add the path...
                AddPlaceMark(trackInfo.TrackId, "", strCoordinates, true);

                strKMLMessage = CreateKMLMessage(strTrackId);

                m_lPlaceMarks = null;
            }
            catch (Exception ex)
            {
                LogException(ex, "ExportSelectedTrack");
            }
            finally
            {
                dbTrack.Close();
            }


            swOutputFile.Write(strKMLMessage);

            try
            {
                swOutputFile.Flush();
                swOutputFile.Close();
            }
            catch (Exception ex)
            {
                LogException(ex, "ExportSelectedTrack");
            }
            finally
            {
                swOutputFile.Close();
            }
        }
예제 #3
0
        void BtnExportClick(object sender, EventArgs eventa)
        {
//create the alias before opening the file!!!
//Db4objects.Db4o.Config.WildcardAlias alias = new Db4objects.Db4o.Config.WildcardAlias( "Gps.*, PPC_Test02","Gps.*, GPSAssembly");
//
//Db4oFactory.Configure().AddAlias(alias);
//
// alias = new Db4objects.Db4o.Config.WildcardAlias( "Gps.*, GPSAssembly","Gps.*, PPC_Test02");
//
//Db4oFactory.Configure().AddAlias(alias);

            IObjectContainer dbTrack = Db4oFactory.OpenFile(m_strTrackingDBFileName);
            //		IObjectContainer dbTrack =  Db4oFactory.OpenFile("D:\\DevelopmentWork\\ScratchPad\\Output\\test.db");

            //Argument '1': cannot convert from 'WildcardAlias' to 'Db4objects.Db4o.Config.IAlias' (CS1503) - D:\DevelopmentWork\c#\ExportGPSInfo\MainForm.cs:89,3

//	Db4objects.Db4o.Reflect.IReflectClass[] classes =  dbTrack.Ext().KnownClasses();
//            for (int i = 0; i < classes.Length; i++)
//            {
//                Db4objects.Db4o.Reflect.IReflectClass storedClass = classes[i];
//                storedClass.GetType().ToString();
//                String name = storedClass.GetType().ToString();
//
////                String newName = null;
////                int pos = name.IndexOf(",");
////                if(pos == -1){
////                    for(int j = 0; j < ASSEMBLY_MAP.Length; j += 2){
////                        pos = name.IndexOf(ASSEMBLY_MAP[j]);
////                        if(pos == 0){
////                            newName = name + ", " + ASSEMBLY_MAP[j + 1];
////                            break;
////                        }
////                    }
////                }
////                if(newName != null){
////                    storedClass.rename(newName);
////                }
//            }
//          //  objectContainer.close();
//       // }

//Db4objects.Db4o.Config.TypeAlias alias = new Db4objects.Db4o.Config.TypeAlias( "Gps.GPSTrackInfo, PPC_Test02","Gps.GPSTrackInfo, GPSAssembly");
//Db4oFactory.Configure().AddAlias(alias);
//alias = new Db4objects.Db4o.Config.TypeAlias( "Gps.Coordinate, PPC_Test02","Gps.Coordinate, GPSAssembly");
//Db4oFactory.Configure().AddAlias(alias);
//alias = new Db4objects.Db4o.Config.TypeAlias( "Gps.GPSTrackID, PPC_Test02","Gps.GPSTrackID, GPSAssembly");
//#
//Db4oFactory.Configure().AddAlias(alias);
//		int iCount = 0;
            StreamWriter swOutputFile   = null;
            string       strCurrTrackId = "############";

            try{
                Comparison <GPSTrackInfo> trackCmp = new
                                                     Comparison <GPSTrackInfo>(delegate(GPSTrackInfo s1, GPSTrackInfo s2)
                {
                    return(s1.When.CompareTo(s2.When));
                });
                // Native Query using Comparison

                Predicate <GPSTrackInfo> trackPred = new Predicate <GPSTrackInfo>(delegate(GPSTrackInfo item)
                {
                    return(true);  //item.Exported == false;
                });

                IList <GPSTrackInfo> results = dbTrack.Query <GPSTrackInfo>(trackPred, trackCmp);

                swOutputFile = File.AppendText(m_strGPSExportFile);
//

                foreach (GPSTrackInfo item in results)
                {
                    GPSTrackInfo trackInfo = item;

                    //	m_swOutputFile.WriteLine(trackInfo.TrackId);

//		        }

/////Db4oFactory.Configure().AddAlias(
///// new Db4objects.Db4o.Config.Alias(
/////    "*,ExportGPSInfo",
/////   "*, ASPAssemblyNameJunk456CurrentSession"));
//
//			try{
//
//				IObjectSet result = dbTrack.Get(typeof(GPSTrackID));
//
//				foreach (object item in result)
//		        {
//					GPSTrackID trackID = (GPSTrackID)item;
//
//					m_swOutputFile.WriteLine(trackID.GetNextTrackID());
//
//		        }
//
//			    result = dbTrack.Get(typeof(GPSTrackInfo));

//				GPSTrackInfo trackInfo = null;
//				// should only be at most one...
//				foreach (object item in result)
//		        {
//					trackInfo = (GPSTrackInfo)item;

//					m_swOutputFile.WriteLine(trackInfo.TrackId + " " + trackInfo.When);
//					m_cdLastLoggedPosition = args.CurrentPosition;

                    if (strCurrTrackId != trackInfo.TrackId)
                    {
                        strCurrTrackId = trackInfo.TrackId;
                        writeTrackHeader(swOutputFile);
                    }


                    string strDate = trackInfo.When.ToString("dd-MMM-yy ") + trackInfo.When.ToString("T");

                    string strOutput = "T " + trackInfo.Where.GetLatitude(CoordinateFormat.DecimalDegrees) +
                                       " " + trackInfo.Where.GetLongitude(CoordinateFormat.DecimalDegrees) +
                                       " " + strDate;
                    swOutputFile.WriteLine(strOutput);

                    //iCount++;

                    //if(iCount < 514)
                    //{
                    trackInfo.Exported = true;
                    dbTrack.Set(trackInfo);
                    //}
                }

                //m_swOutputFile.WriteLine(result.Count);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, ex.Message);
            }
            finally
            {
                dbTrack.Close();
                swOutputFile.Flush();
                swOutputFile.Close();
            }
        }
예제 #4
0
        private PositionalLogEntry[] getLogEntries()
        {
            IObjectContainer dbTrack = Db4oFactory.OpenFile(m_strTrackingDBFileName);

            PositionalLogEntry[] logEntries = null;

            try{
// RT - there is no need to sort the results for the WS?
//		    Comparison<GPSTrackInfo> trackCmp = new
//		    Comparison<GPSTrackInfo>(delegate(GPSTrackInfo s1, GPSTrackInfo s2)
//		    {
//		      return s1.When.CompareTo(s2.When);
//		    });
//		    // Native Query using Comparison
//
                Predicate <GPSTrackInfo> trackPred = new Predicate <GPSTrackInfo>(delegate(GPSTrackInfo item)
                {
                    return(true);  //item.Exported == false;
                });
//
//		     IList<GPSTrackInfo>   results = dbTrack.Query<GPSTrackInfo>(trackPred, trackCmp);
                IList <GPSTrackInfo> results = dbTrack.Query <GPSTrackInfo>(trackPred);

                //iCount = results.Count;

                logEntries = new PositionalLogEntry[results.Count];         //TODO: need to know how many positions...

                int iCurrentPosition = 0;
                foreach (GPSTrackInfo item in results)
                {
                    GPSTrackInfo trackInfo = item;

                    ExportGPSInfo.Coordinate coordinate = new Coordinate();

                    coordinate.Latitude  = trackInfo.Where.GetLatitude(CoordinateFormat.DecimalDegrees);
                    coordinate.Longitude = trackInfo.Where.GetLongitude(CoordinateFormat.DecimalDegrees);
                    coordinate.Format    = CoordinateFormats.DecimalDegrees;

                    PositionalLogEntry entry = new PositionalLogEntry();

                    entry.Position = coordinate;
                    entry.Date     = trackInfo.When;
                    entry.Time     = trackInfo.When;
                    entry.TrackID  = trackInfo.TrackId;
                    logEntries[iCurrentPosition] = entry;
//					string strDate = trackInfo.When.ToString("dd-MMM-yy ") + trackInfo.When.ToString("T");

//					string strOutput = "T "+ trackInfo.Where.GetLatitude(CoordinateFormat.DecimalDegrees) +
//										  " " +trackInfo.Where.GetLongitude(CoordinateFormat.DecimalDegrees) +
//										  " " +strDate;
//					m_swOutputFile.WriteLine(strOutput);

                    //iCount++;

                    //if(iCount < 514)
                    //{
                    trackInfo.Exported = true;
                    dbTrack.Set(trackInfo);
                    //}
                    iCurrentPosition++;
                }

                //m_swOutputFile.WriteLine(result.Count);
            }
            catch (Exception ex)
            {
                //			MessageBox.Show(ex.Message, ex.Message);
                LogError("An error occurred in -> getLogEntries()...", ex);
            }
            finally
            {
                dbTrack.Close();
            }


            //PositionalLogEntry[] logEntries = new PositionalLogEntry[10]; //TODO: need to know how many positions...

            return(logEntries);
        }