static void Main(string[] args) { var culture = CultureInfo.CreateSpecificCulture("en-US"); Thread.CurrentThread.CurrentCulture = culture; //var parser = new KmlParserV2(); var parser = new KmlParser(); var layer = parser.ReadKmlFile(); List<string> errors = parser.ListErrors(layer); if (!errors.Any()) { Console.WriteLine(" Ingrese el regionId (numeros)"); int regionId = Convert.ToInt32(Console.ReadLine()); layer.RegionId = regionId; Console.Write("\n Archivo leido correctamente, no contiene erorres" + "\n"); Console.WriteLine(" Importando archivos a la base de datos..."); LayerRepository la = new LayerRepository(ConfigurationManager.ConnectionStrings["Earthwatchers_DSN"].ConnectionString); la.SaveLayerFull(layer); Console.WriteLine(" Archivos importados correctamente"); Console.WriteLine(" Desea intersectar las lands con los poligonos? (( Y / N ))"); var intersects = Console.ReadLine(); if (intersects == "Y" || intersects == "y") { LandRepository landrepo = new LandRepository(ConfigurationManager.ConnectionStrings["Earthwatchers_DSN"].ConnectionString); var layerId = layer.Id; Console.WriteLine(" Intersectando Lands con zona, Hora de inicio: " + DateTime.Now); bool succeed = landrepo.IntersectLandsWithZone(regionId, layerId); if (succeed) { Console.WriteLine(" Lands Actualizadas Correctamente"); Console.WriteLine(" Hora de fin: " + DateTime.Now); } else { Console.WriteLine(" Error al actualizar las lands"); Console.WriteLine(" Hora de fin: " + DateTime.Now); } } } else { Console.WriteLine("\n Archivo leido correctamente, contiene erorres en los siguientes campos: " + "\n"); foreach (string er in errors) { Console.WriteLine(" " + er.ToString()); } Console.WriteLine("\n Solucione los problemas pendientes y vuelva a cargar el archivo"); Console.ReadLine(); } }
static void Main(string[] args) { var culture = CultureInfo.CreateSpecificCulture("en-US"); Thread.CurrentThread.CurrentCulture = culture; //var parser = new KmlParserV2(); var parser = new KmlParser(); var layer = parser.ReadKmlFile(); List<string> errors = parser.ListErrors(layer); if (!errors.Any()) { Console.Write("\n Archivo leido correctamente, no contiene erorres" + "\n"); Console.WriteLine(" Importando archivos a la base de datos..."); LayerRepository la = new LayerRepository(ConfigurationManager.ConnectionStrings["Earthwatchers_DSN"].ConnectionString); la.SaveLayerFull(layer); Console.WriteLine(" Archivos importados correctamente"); Console.WriteLine(" Presione Enter para salir"); Console.ReadLine(); } else { Console.WriteLine("\n Archivo leido correctamente, contiene erorres en los siguientes campos: " + "\n"); foreach (string er in errors) { Console.WriteLine(" " + er.ToString()); } Console.WriteLine("\n Solucione los problemas pendientes y vuelva a cargar el archivo"); Console.ReadLine(); } }
public HttpResponseMessage Delete(int id, HttpRequestMessage<int> request) { if (id != 0) { basecampRepository.Delete(id); LayerRepository layerRepository = new LayerRepository(ConfigurationManager.ConnectionStrings["EarthwatchersConnection"].ConnectionString); layerRepository.DeleteZone(id); LandRepository landRepository = new LandRepository(ConfigurationManager.ConnectionStrings["EarthwatchersConnection"].ConnectionString); landRepository.LoadLandBasecamp(); return new HttpResponseMessage { StatusCode = HttpStatusCode.OK }; } return new HttpResponseMessage { StatusCode = HttpStatusCode.NotFound }; }
public static List<string> ReadKmlFile(int id) { var errors = new List<string>(); var path = ConfigurationManager.AppSettings.Get("kml.fincas.path"); if (Directory.GetFiles(path).Count() > 1) { errors.Add("Se encontró mas de un archivo kml a procesar en la carpeta, estos archivos ya fueron eliminados. Intente nuevamente la operación"); for (var i = 0; i <= Directory.GetFiles(path).Count(); i++ ) { var filename = Directory.GetFiles(path).FirstOrDefault(); var archivePath = ConfigurationManager.AppSettings.Get("kml.fincas.archive.path"); var archiveName = new FileInfo(filename).Name.Replace(".kml", string.Format("{0}.{1}.{2}.kml", "archive", DateTime.Now.ToString("yyyyMMdd"), DateTime.Now.ToString("HHmmss"))); if (!Directory.Exists(archivePath)) Directory.CreateDirectory(archivePath); File.Move(filename, Path.Combine(archivePath, archiveName)); } } else { BasecampRepository basecampRepo = new BasecampRepository(ConfigurationManager.ConnectionStrings["EarthwatchersConnection"].ConnectionString); var fincaRegionId = (basecampRepo.GetById(id)).RegionId; var FincasLayerName = "FincasLayer" + fincaRegionId; var filename = Directory.GetFiles(path).FirstOrDefault(); XDocument xDoc = XDocument.Load(filename); XNamespace ns = "http://www.opengis.net/kml/2.2"; var doc = xDoc.Descendants(ns + "Document").ToList(); Layer layer = new Layer(); layer.Name = FincasLayerName; layer.Zones = doc.Elements(ns + "Folder").Select(ze => new Zone(ze.Element(ns + "name").Value, ze.Descendants(ns + "Placemark").Select(pm => new Polygon() { Name = pm.Element(ns + "name").Value, Locations = pm.Descendants(ns + "coordinates").First().Value.Trim() .Replace("\n", "") .Replace("\t", "") .Split(' ') .Select(x => new Location(ParseLatitude(x), ParseLongitude(x))) .ToList(), PolygonGeom = ParsePolygon(pm.Descendants(ns + "coordinates").First().Value.Trim() .Replace("\n", " ") .Replace("\t", " ") .Replace(",0 ", "|") .Replace(",", " ") .Split(new string[] { "|" }, StringSplitOptions.RemoveEmptyEntries)) }).ToList(), ze.Element(ns + "description").Value, id.ToString() //Agrega el basecampId a la zona )).ToList(); errors = KmlParserBasecamp.ListErrors(layer); if (errors.Count == 0) { //Save finca LayerRepository la = new LayerRepository(ConfigurationManager.ConnectionStrings["EarthwatchersConnection"].ConnectionString); la.SaveFincaFull(layer); LandRepository landRepo = new LandRepository(ConfigurationManager.ConnectionStrings["EarthwatchersConnection"].ConnectionString); landRepo.LoadLandBasecamp(fincaRegionId); } //Una vez finalizado mover a la carpeta Achieved var archivePath = ConfigurationManager.AppSettings.Get("kml.fincas.archive.path"); var archiveName = new FileInfo(filename).Name.Replace(".kml", string.Format("{0}.{1}.{2}.kml", "archive", DateTime.Now.ToString("yyyyMMdd"), DateTime.Now.ToString("HHmmss"))); if (!Directory.Exists(archivePath)) Directory.CreateDirectory(archivePath); File.Move(filename, Path.Combine(archivePath, archiveName)); } return errors; }