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(); } }
public string GetLand() { var land = new LandRepository(new GeoContext()).FindAll() .FirstOrDefault(l => l.Klimatogrammen.Any(k => k.KlimatogramId == KlimatogramId)); var continent = new ContinentRepository(new GeoContext()).FindAll() .FirstOrDefault(l => l.Landen.Any(la => la.LandId == land.LandId)); return(", " + land.Naam + ", " + continent.Naam); }
public HttpResponseMessage Delete(int id, HttpRequestMessage <int> request) { if (id != 0) { var regionId = basecampRepository.GetById(id).RegionId; basecampRepository.Delete(id); LayerRepository layerRepository = new LayerRepository(ConfigurationManager.ConnectionStrings["EarthwatchersConnection"].ConnectionString); layerRepository.DeleteZone(id); LandRepository landRepository = new LandRepository(ConfigurationManager.ConnectionStrings["EarthwatchersConnection"].ConnectionString); landRepository.LoadLandBasecamp(regionId); 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); }
static void Main(string[] args) { try { var st = DateTime.Now; var fincasName = ""; var forestLawName = ""; ////PRUEBA TAMAÑOS //var topLeft = new PointD(-62.087462, -23.842284); //Long/Lat //var bottomRight = new PointD(-61.838865, -24.080809); //Long/Lat //int regionId = 5; //var topLeft = new PointD(-65.742, -21.988); //UBICACIONES DEL CUADRADO GRANDE SALTA //var bottomRight = new PointD(-62.057556, -26.558016); ////Salta - Argentina //var topLeft = new PointD(-63.655230, -22.055296); //Long/Lat //var bottomRight = new PointD(-63.098436, -22.508956); //Long/Lat //fincasName = "FincasLayer1"; //forestLawName = "OTBN"; //int regionId = 1; ////Chaco - Argentina var topLeft = new PointD(-63.553825, -23.976782); //Long/Lat var bottomRight = new PointD(-60.235678, -26.294722); //Long/Lat fincasName = "FincasLayer2"; //Nombre que debe tener el kml que contiene las fincas de ese pais forestLawName = "OTBN2"; //Nombre de la ley de bosques del pais int regionId = 2; //China - Yaan //var topLeft = new PointD(101.488403, 30.889660); //Long/Lat COMPLETO //var bottomRight = new PointD(103.621349, 28.774082); //Long/Lat COMPLETO //var topLeft = new PointD(102.552107, 30.673024); //Long/Lat //var bottomRight = new PointD(102.901923, 29.774818); //Long/Lat //fincasName = "FincasLayer3"; //Nombre que debe tener el kml que contiene las fincas de ese pais //forestLawName = "OTBN3"; //Nombre de la ley de bosques del pais //int regionId = 3; ////China - zhejian ////var topLeft = new PointD(117.998174, 31.243206); //Long/Lat COMPLETO ////var bottomRight = new PointD(121.583889, 26.797424); //Long/Lat COMPLETO //var topLeft = new PointD(119.101848, 29.848194); //Long/Lat //var bottomRight = new PointD(119.412014, 29.732894); //Long/Lat //fincasName = "FincasLayer4"; //Nombre que debe tener el kml que contiene las fincas de ese pais //forestLawName = "OTBN4"; //Nombre de la ley de bosques del pais //int regionId = 4; ////Canada //var topLeft = new PointD(-111.236353, 57.299930); //Long/Lat //var bottomRight = new PointD(-110.900724, 57.107068); //Long/Lat //fincasName = "FincasLayer5"; //Nombre que debe tener el kml que contiene las fincas de ese pais //forestLawName = "OTBN5"; //Nombre de la ley de bosques del pais //int regionId = 5; var repo = new LayerRepository(_connectionString); Console.WriteLine("Cargando Fincas en memoria..."); Layer basecampsLayer = null;// repo.GetLayerByName(fincasName); Console.WriteLine("Cargando Ley de bosques en memoria..."); Layer forestLawLayer = null;//repo.GetLayerByName(forestLawName); // if (basecampsLayer != null) { var bclist = basecampsLayer.Zones.Select(z => new ComputableZone(z)).ToList(); _basecamps = new ComputableLayer(bclist); } if (forestLawLayer != null) { var lawlist = forestLawLayer.Zones.Select(z => new ComputableZone(z)).ToList(); _forestlaw = new ComputableLayer(lawlist); } Console.WriteLine("Intersectando Lands con Fincas y ley de bosques..."); var newLands = GenerateLands(topLeft, bottomRight, 7, regionId); // write land to database... //var landRepository = new LandRepository("Data Source=dfrvf2t76i.database.windows.net;Initial Catalog=EarthwatchersRegions;Persist Security Info=True;User ID=Editor;Asynchronous Processing=True;Password=8p3k00l!!!!"); var conbase = newLands.Where(x => x.BasecampId != null); Console.WriteLine("Guardando las " + newLands.Count + " lands generadas..."); var landRepository = new LandRepository(_connectionString); landRepository.CreateLand(newLands); //Se usan aun, pero habria que mejorar el metodo que calcula la amenaza y el basecamp #region Obsoleto //Console.WriteLine("Cargando Threat levels..."); //landRepository.LoadThreatLevel(); //Console.WriteLine("Asignando BasecampId a lands..."); //landRepository.LoadLandBasecamp(); #endregion Console.WriteLine("Carga Completa"); var horaFin = DateTime.Now; Console.WriteLine("Hora Fin CreateLand: " + horaFin); Console.WriteLine("Klaar"); //Listo Holandés Console.ReadKey(); } catch (Exception ex) { Console.WriteLine(ex.Message); } }
public LandResource() { var connectionstring = System.Configuration.ConfigurationManager.ConnectionStrings["DbConnectionString"].ConnectionString; _landRepository = new LandRepository(connectionstring); }