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); }
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(); } }
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(); } }
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); }