public void Export() { var writerSettings = new XmlWriterSettings { Encoding = Encoding.UTF8, Indent = true, IndentChars = " " }; var writer = XmlWriter.Create(OutputStream, writerSettings); var formatter = new Formatter(); var cacheManager = new RoutePropertyCacheManager(); if (writer != null) { writer.WriteStartDocument(); writer.WriteStartElement("Route"); int segmentCount = 0; foreach (var segment in Session.Route.Segments) { writer.WriteStartElement("Segment"); var waypoints = Session.Route.GetEquallySpacedWaypoints(segment.FirstWaypoint.Time, segment.LastWaypoint.Time, Settings.SamplingInterval, Settings.ZeroTime); var lastPl = new ParameterizedLocation(segmentCount, 0); foreach (var waypoint in waypoints) { writer.WriteStartElement("Sample"); var pl = Session.Route.GetParameterizedLocationFromTime(waypoint.Time, lastPl, ParameterizedLocation.Direction.Forward); var locations = new RouteLocations(pl); foreach (var lpType in Settings.RoutePropertyTypes) { if (lpType.Selected) { RetrieveExternalPropertyDelegate dlg = new ExternalRoutePropertyRetriever(Session.Settings).RetrieveExternalProperty; var lp = Activator.CreateInstance(lpType.RoutePropertyType, Session, locations, dlg) as RouteProperty; if (lp != null) { lp.CacheManager = cacheManager; if (lp.ContainsValue) { var attributeName = GetCamelCaseString(lpType.RoutePropertyType.Name); var attributeValue = lp.ToString(formatter); writer.WriteAttributeString(attributeName, attributeValue); } } } } writer.WriteEndElement(); lastPl = pl; } writer.WriteEndElement(); segmentCount++; } writer.WriteEndElement(); writer.Close(); } }
public void Export() { var writerSettings = new XmlWriterSettings { Encoding = Encoding.UTF8, Indent = true, IndentChars = " " }; var writer = XmlWriter.Create(OutputStream, writerSettings); var formatter = new Formatter(); var cacheManager = new RoutePropertyCacheManager(); if (writer != null) { writer.WriteStartDocument(); writer.WriteStartElement("Route"); int segmentCount = 0; foreach (var segment in Session.Route.Segments) { writer.WriteStartElement("Segment"); var waypoints = Session.Route.GetEquallySpacedWaypoints(segment.FirstWaypoint.Time, segment.LastWaypoint.Time, Settings.SamplingInterval, Settings.ZeroTime); var lastPl = new ParameterizedLocation(segmentCount, 0); foreach (var waypoint in waypoints) { writer.WriteStartElement("Sample"); var pl = Session.Route.GetParameterizedLocationFromTime(waypoint.Time, lastPl, ParameterizedLocation.Direction.Forward); var locations = new RouteLocations(pl); foreach (var lpType in Settings.RoutePropertyTypes) { if (lpType.Selected) { RetrieveExternalPropertyDelegate dlg = new ExternalRoutePropertyRetriever(Session.Settings).RetrieveExternalProperty; var lp = Activator.CreateInstance(lpType.RoutePropertyType, Session, locations, dlg) as RouteProperty; if (lp != null) { lp.CacheManager = cacheManager; if (lp.ContainsValue) { var attributeName = GetCamelCaseString(lpType.RoutePropertyType.Name); var attributeValue = lp.ToString(formatter); writer.WriteAttributeString(attributeName, attributeValue); } } } } writer.WriteEndElement(); lastPl = pl; } writer.WriteEndElement(); segmentCount++; } writer.WriteEndElement(); writer.Close(); } }