public async Task <List <Storm> > ParseStormData() { List <Storm> storms = new List <Storm>(); string stormData = await DownloadStormData(); SharpKml.Base.Parser kmlParser = new SharpKml.Base.Parser(); kmlParser.ParseString(stormData, false); if (kmlParser.Root is Kml kml) { var placemarks = new List <Placemark>(); ExtractPlacemarks(kml.Feature, placemarks); foreach (Placemark placemark in placemarks) { if (placemark.Geometry is SharpKml.Dom.Point point) { storms.Add(new Storm() { Latitude = point.Coordinate.Latitude, Longitude = point.Coordinate.Longitude, LatitudeOrigem = _serviceConfigurations.LatitudeCasa, LongitudeOrigem = _serviceConfigurations.LongitudeCasa }); } } } return(storms); }
public static List<Placemark> ParsePlacemarks(string kmlfile) { List<Placemark> placemarks = new List<Placemark>(); // Parse the KML file SharpKml.Base.Parser kmlparser = new SharpKml.Base.Parser(); kmlparser.ParseString(kmlfile, false); // It's good practice for the root element of the file to be a Kml element Kml kml = kmlparser.Root as Kml; if (kml != null) { ExtractPlacemarks(kml.Feature, placemarks); // Sort using their names placemarks.Sort((a, b) => string.Compare(a.Name, b.Name)); // Display the results foreach (var placemark in placemarks) { Debug.WriteLine("KMLHelper : found placemark " + placemark.Name); } } return placemarks; }
public static void LoadNoFly(string file) { string kml = ""; using (var sr = new StreamReader(File.OpenRead(file))) { kml = sr.ReadToEnd(); sr.Close(); } kml = kml.Replace("<Snippet/>", ""); var parser = new SharpKml.Base.Parser(); parser.ElementAdded += parser_ElementAdded; parser.ParseString(kml, false); }