private static void WriteTimelinePlacemark(XmlTextWriter xml, Reading reading) { xml.WriteStartElement("Placemark"); xml.WriteStartElement("TimeStamp"); xml.WriteElementString("when", reading.DateTime.ToString("u").Replace(' ', 'T')); xml.WriteEndElement(); // TimeStamp xml.WriteElementString("styleUrl", "#seeadler-dot-icon"); xml.WriteStartElement("Point"); xml.WriteElementString("coordinates", string.Format("{0},{1}", reading.Longitude, reading.Latitude)); xml.WriteEndElement(); // Point xml.WriteEndElement(); // Placemark }
private static void WriteCsvFile(XmlTextWriter xml, string inputFileName) { using (var input = File.OpenRead(inputFileName)) { using (var reader = new StreamReader(input)) { xml.WriteStartElement("Folder"); xml.WriteElementString("name", "Timeline data"); var lineList = new List<Reading>(); string line; reader.ReadLine(); while ((line = reader.ReadLine()) != null) { var reading = new Reading(line); if (!lineList.Any() || lineList.Last().Latitude != reading.Latitude || lineList.Last().Longitude != reading.Longitude) { lineList.Add(reading); } WriteTimelinePlacemark(xml, reading); } var sampleReading = new Reading() { Latitude = GetMiddleValue(lineList, x => x.Latitude), Longitude = GetMiddleValue(lineList, x => x.Longitude), Elevation = lineList.Select(x => x.Elevation).Max() }; WriteLookAtElement(sampleReading, xml); xml.WriteEndElement(); // Folder WriteLookAtElement(sampleReading, xml); WriteIconStyle(xml); WriteLineString(xml, lineList); } } }
private static void WriteLookAtElement(Reading reading, XmlTextWriter xml) { xml.WriteStartElement("LookAt"); xml.WriteElementString("longitude", reading.Longitude.ToString(CultureInfo.InvariantCulture)); xml.WriteElementString("latitude", reading.Latitude.ToString(CultureInfo.InvariantCulture)); xml.WriteElementString("range", "250"); xml.WriteElementString("altitude", reading.Elevation.ToString(CultureInfo.InvariantCulture)); xml.WriteElementString("tilt", "0"); xml.WriteEndElement(); // LookAt }