public List <Folder> GetFolders() { Kml kml = kf.Root as Kml; if (kml != null) { return(new List <Folder>(kml.Flatten().OfType <Folder>())); } return(new List <Folder>()); }
private static IEnumerable <MapFeature> EnumerablePlacemarks(Kml kml) { int id = 1; foreach (var placemark in kml.Flatten().OfType <Placemark>()) { MapFeature mapFeature = new MapFeature(placemark, id); id++; yield return(mapFeature); } }
public KmlDocument(String data) { MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(data)); kf = KmlFile.Load(ms); Kml kml = kf.Root as Kml; Document doc = kml?.Flatten().OfType <Document>().FirstOrDefault(); if (doc != null) { _documentDescription = (doc.Description != null) ? doc.Description.Text : ""; } }
private IEnumerable <MapFeature> GetMapFeatures(Kml kml) { int id = 1; foreach (var placemark in kml.Flatten().OfType <Placemark>()) { if (HasValidElement(placemark)) { MapFeature mapFeature = new MapFeature(placemark, id, Configuration); yield return(mapFeature); } id++; } }
static void Main(string[] args) { TextReader reader = File.OpenText("C:\\Users\\Yaseenh\\Desktop\\New folder\\Fibrehoods2.kml"); KmlFile file = KmlFile.Load(reader); _kml = file.Root as Kml; var csv = new StringBuilder(); if (_kml != null) { var Headings = string.Format("{0},{1},{2}", "Name\t\t", "Longitude", "Latitude"); csv.AppendLine(Headings); //foreach (var placemark in _kml.Flatten().OfType<Placemark>()) //{ int count = 0; foreach (var polygon in _kml.Flatten().OfType <Polygon>()) { var name = ((Placemark)polygon.Parent).Name; Console.WriteLine(name + "\n"); csv.Append(name); csv.Append("\n"); count++; var coorD = polygon.OuterBoundary.LinearRing.Coordinates; foreach (var item in coorD) { var latitude = item.Latitude; var longitude = item.Longitude; var coordinates = string.Format("{0},{1},{2}", "", longitude, latitude); Console.WriteLine(coordinates); csv.AppendLine(coordinates); } File.WriteAllText("C:\\Users\\Yaseenh\\Desktop\\New folder\\KMLExtraction.csv", csv.ToString()); break; //Take out to get all coordinates } Console.WriteLine(count); } else { Console.WriteLine("File is empty"); csv.AppendLine("File is empty"); File.WriteAllText("C:\\Users\\Yaseenh\\Desktop\\New folder\\KMLExtraction.csv", csv.ToString()); } }
private string ExtractWKTFromKML(Stream stream, int points) { NetTopologySuite.Geometries.Geometry finalgeometry = null; try { stream.Seek(0, SeekOrigin.Begin); }catch (Exception) {} KmlFile file = KmlFile.Load(stream); Kml kml = file.Root as Kml; var placemarks = kml.Flatten().OfType <Placemark>(); foreach (var placemark in placemarks) { try { NetTopologySuite.Geometries.Geometry geometry = KmlGeometryToGeometry(placemark.Geometry); if (finalgeometry == null) { finalgeometry = geometry; } else { finalgeometry = finalgeometry.Union(geometry); } } catch (Exception) { //throw new Exception(string.Format("Error with placemark {0}", placemark.Name)); } } string wkt = null; if (finalgeometry != null) { finalgeometry = SimplifyGeometry(finalgeometry, points); foreach (var p in finalgeometry.Coordinates.ToArray()) { p.X = Math.Round(p.X, 2); p.Y = Math.Round(p.Y, 2); if (p is CoordinateZ) { p.Z = Math.Round(p.Z, 2); } } wkt = finalgeometry.AsText(); } return(wkt); }
public List <Coordinates> ImportFile(Stream input, bool isKmz) { var coordinates = new List <Coordinates>(); try { KmlFile file; if (isKmz) { var kmz = KmzFile.Open(input); file = kmz.GetDefaultKmlFile(); } else { file = KmlFile.Load(input); } Kml kml = file.Root as Kml; if (kml != null) { foreach (var placemark in kml.Flatten().OfType <Placemark>()) { Console.WriteLine(placemark.Name); var coords = new Coordinates(); coords.Latitude = placemark.CalculateBounds().Center.Latitude; coords.Longitude = placemark.CalculateBounds().Center.Longitude; coordinates.Add(coords); } } } catch { } return(coordinates); }
/// <summary> /// Extracts KML files /// </summary> private void ExtractKmlFilesAndBuildModel(List <Polygon1kmInfo> polygonInfos, List <NovadsPagasts> novadsPagastsMapping, List <PagastsPolygon1km> pagastsPolygon1kmMapping, List <Polygon1km> polygons1km, List <Novads> novadsList, List <Pagasts> pagastsList) { using (var reader = new StreamReader(_dataFilePath + "1km_lv.kml")) { KmlFile file = KmlFile.Load(reader); Kml kml = file.Root as Kml; if (kml != null) { foreach (var placemark in kml.Flatten().OfType <Placemark>()) { var polygonInfo = polygonInfos.FirstOrDefault(x => x.Id == placemark.Name); if (polygonInfo == null) { continue; } polygons1km.Add(new Polygon1km() { Id = placemark.Name, CoordinatesPolygon = placemark.Geometry, Info = polygonInfo, }); } } } using (var reader = new StreamReader(_dataFilePath + "pagasti_pol.kml")) { KmlFile file = KmlFile.Load(reader); Kml kml = file.Root as Kml; if (kml != null) { foreach (var placemark in kml.Flatten().OfType <Placemark>()) { // Transform from mapping structure to relational structure var polygonsInThisPagasts = pagastsPolygon1kmMapping.Where(mappingDto => mappingDto.PagastsId == int.Parse(placemark.Name)) .Select(mappingDto => polygons1km.First(polygon1km => polygon1km.Id == mappingDto.Polygon1kmId)) .ToList(); pagastsList.Add(new Pagasts() { Id = int.Parse(placemark.Name), Name = novadsPagastsMapping.First(p => p.PagastsId == int.Parse(placemark.Name)).PagastsName, CoordinatesPolygon = placemark.Geometry, Polygon1kmList = polygonsInThisPagasts, }); } } } using (var reader = new StreamReader(_dataFilePath + "novadi_pol.kml")) { KmlFile file = KmlFile.Load(reader); Kml kml = file.Root as Kml; if (kml != null) { foreach (var placemark in kml.Flatten().OfType <Placemark>()) { // Transform from mapping structure to relational structure var pagastsInThisNovads = novadsPagastsMapping.Where(mappingDto => mappingDto.NovadsId == int.Parse(placemark.Name)) .Select(mappingDto => pagastsList.FirstOrDefault(pagasts => pagasts.Id == mappingDto.PagastsId)) .Where(item => item != null) // Incomplete list of Pagasts, some that are in mapping are not in our data .ToList(); novadsList.Add(new Novads() { Id = int.Parse(placemark.Name), Name = placemark.Description.Text, CoordinatesPolygon = placemark.Geometry, PagastsList = pagastsInThisNovads, }); } } } }
private void btnReadKMLPoly_Click(object sender, EventArgs e) { if (openFileDialog1.ShowDialog() == DialogResult.OK) { /* Get kml filename */ string kml_file = openFileDialog1.FileName; if (kml_file.Contains(".kml")) { System.IO.TextReader stream = System.IO.File.OpenText(kml_file); SharpKml.Engine.KmlFile file = KmlFile.Load(stream); Kml _kml = file.Root as Kml; SharpKml.Dom.Placemark[] tempPlaceMarks = new SharpKml.Dom.Placemark[1000]; SharpKml.Dom.Placemark tmp_placemark = new SharpKml.Dom.Placemark(); CoordinateCollection coordinates = new CoordinateCollection(); Form1.Globals.poly_point_count = 0; if (_kml != null) { SharpKml.Base.Vector vector; double lat; double lon; double alt; string name = ""; foreach (var placemark in _kml.Flatten().OfType <SharpKml.Dom.Placemark>()) { name = placemark.Name; } Models.Shape shape = new Models.Shape(); shape.name = name; foreach (var linering in _kml.Flatten().OfType <LinearRing>()) { coordinates = linering.Coordinates; int num = coordinates.Count; LinkedList <PolyPoint> shape_points = new LinkedList <PolyPoint>(); for (int i = 0; i < num; i++) { PolyPoint point = new PolyPoint(); vector = coordinates.ElementAt(i); lat = vector.Latitude; lon = vector.Longitude; alt = (double)vector.Altitude; point.lat = lat; point.lon = lon; point.alt = alt; shape_points.AddLast(point); //dgvWaypoints.Rows.Add(Globals.waypoint_count, Convert.ToString(lat), Convert.ToString(lon), Convert.ToString(30)); } shape.points = shape_points; shape.visible = true; _wpg.AddShape(shape); _gmap.Add_gMapPoly(shape, true); } } } GMAPTree.Update_GMapTree(_wpg, _treeview); this.Close(); } }
private void btnSelectKMLFile_Click(object sender, EventArgs e) { if (openFileDialog1.ShowDialog() == DialogResult.OK) { /* Get kml filename */ string kml_file = openFileDialog1.FileName; if (kml_file.Contains(".kml")) { Form1.Globals.kml_filename = kml_file; rtbKMLRead.AppendText("KML File : " + kml_file + "\n"); rtbKMLRead.AppendText("\n"); /* Open KML File */ System.IO.TextReader stream = System.IO.File.OpenText(kml_file); SharpKml.Engine.KmlFile file = KmlFile.Load(stream); Kml _kml = file.Root as Kml; SharpKml.Dom.Placemark[] tempPlaceMarks = new SharpKml.Dom.Placemark[1000]; SharpKml.Dom.Placemark tmp_placemark = new SharpKml.Dom.Placemark(); CoordinateCollection coordinates = new CoordinateCollection(); Form1.Globals.kml_point_count = 0; //rtbKMLRead.AppendText("Waypoint Count : " + Convert.ToString(Globals.waypoint_count) + "\n"); int numOfPlaceMarks = 0; if (_kml != null) { foreach (var placemark in _kml.Flatten().OfType <SharpKml.Dom.Placemark>()) { string placename = placemark.Name; rtbKMLRead.AppendText("Placemark Name : " + placename + "\n"); tmp_placemark.Name = placename; numOfPlaceMarks++; } rtbKMLRead.AppendText("Number of Placemarks : " + Convert.ToString(numOfPlaceMarks) + "\n"); int num_linestring = 0; SharpKml.Base.Vector vector; double lat; double lon; double alt; foreach (var linestring in _kml.Flatten().OfType <LineString>()) { coordinates = linestring.Coordinates; int num = coordinates.Count; rtbKMLRead.AppendText("Num Coordinates : " + Convert.ToString(num) + "\n"); for (int i = 0; i < num; i++) { vector = coordinates.ElementAt(i); lat = vector.Latitude; lon = vector.Longitude; alt = (double)vector.Altitude; rtbKMLRead.AppendText("Lat/Lon : " + Convert.ToString(lat)); rtbKMLRead.AppendText(", " + Convert.ToString(lon) + "Altitude : " + Convert.ToString(alt) + "\n"); _kml_points[_kml_point_count, 0] = lat; _kml_points[_kml_point_count, 1] = lon; _kml_points[_kml_point_count, 2] = alt; _kml_point_count++; //dgvWaypoints.Rows.Add(Globals.waypoint_count, Convert.ToString(lat), Convert.ToString(lon), Convert.ToString(30)); } num_linestring++; } rtbKMLRead.AppendText("Number of Linestrings : " + Convert.ToString(num_linestring) + "\n"); BuildKMLPath(); } } else { MessageBox.Show("Wrong file type!", "GPS Grid:", MessageBoxButtons.OKCancel, MessageBoxIcon.Error); } } }
static void Main(string[] args) { AreaList wantedAreas = new AreaList(); int count = 0; TextReader reader = File.OpenText("C:\\Users\\Yaseenh\\Desktop\\New folder\\Fibrehoods2.kml"); KmlFile file = KmlFile.Load(reader); _kml = file.Root as Kml; var api = new Api("https://rest.trackmatic.co.za/api/v1", "110", "9408065009082"); api.Authenticate("yase191!"); if (_kml != null) { foreach (var polygon in _kml.Flatten().OfType <Polygon>()) { foreach (var area in wantedAreas.areas) { if (((Placemark)polygon.Parent).StyleUrl.OriginalString == "#fibrehoods_style") { var name = ((Placemark)polygon.Parent).Name; if (area == name) { if (!name.Any(c => char.IsDigit(c))) { count++; Console.WriteLine(name + "\n"); var coorD = polygon.OuterBoundary.LinearRing.Coordinates; var Coords = new List <OCoord>(); foreach (var item in coorD) { var latitude = item.Latitude; var longitude = item.Longitude; var coordinates = string.Format("{0},{1},{2}", "", longitude, latitude); Console.WriteLine(coordinates); var testcor = new OCoord(); testcor.Longitude = longitude; testcor.Latitude = latitude; testcor.Radius = 0; Coords.Add(testcor); } var z = new OZone { ClientId = "110", Name = name, Coords = Coords, Id = $"110/{Guid.NewGuid()}", Shape = EZoneShape.Polygon, Type = EOZoneType.Stay }; api.ExecuteRequest(new SaveZone(api.Context, z)); //break; } } } } } } Console.WriteLine("Total Entries :" + count); Console.ReadLine(); }