public List <FeedXively> RetornarMapaLugarDatapoints(double Latitud, double Longitud, string Consulta, DateTime fechaInicio, DateTime fechaFin, string idioma = "Español", double radio = 100) { string expansion = ObtenerConfig("utilizarExpansion"); //Crea el Objeto que guarda todo el conocimiento del negocio semanticIndexManager = new SemanticIndexManager(); //Crea una copia de la lista para eliminar los sensores que no se les puede calcular distancia List <FeedXively> FeedsConPosicion = new List <FeedXively>(); //Lista de los resultados de la busqueda List <FeedXively> dtsResult = new List <FeedXively>(); //Buscar la consulta en el índice if (!string.IsNullOrEmpty(Consulta) && ObtenerConfiguracion("BusquedaBloqueada") == "No") { dtsResult = BuscarFeedsDataPoints(Consulta, fechaInicio, fechaFin, idioma); } else { return(null); } //Si encontro sensores entonces validar los que entran en el radio de acción if (dtsResult != null) { List <string> clavesBorrar = new List <string>(); foreach (FeedXively dtr in dtsResult) { if (dtr.feed.location != null && dtr.feed.location.lat != null && dtr.feed.location.lon != null) { //La funcion establece que el sensor este en el rango de N kms del lugar especificado. Si esta devuelve la distancia, sino devuelve cero double distancia = semanticIndexManager.VerificarSensorenLugar(Latitud, Longitud, Convert.ToDouble(dtr.feed.location.lat, culture), Convert.ToDouble(dtr.feed.location.lon, culture), radio); if (distancia > 0) { //ListaResultados.Add(indice, distancia); GeonameNode nodolugardistancia = new GeonameNode(); nodolugardistancia.Latitud = Latitud.ToString(); nodolugardistancia.Longitud = Longitud.ToString(); lugar ld = new lugar(); ld.nodoGeoname = nodolugardistancia; ld.distancia = distancia; //Creamos el espacio en la variable de lista de lugares relacionada al sensor dtr.lugares = new List <lugar>(); dtr.lugares.Add(ld); FeedsConPosicion.Add(dtr); } } } } //Finalmente retorna la lista con los sensores correspondientes return(FeedsConPosicion); }
public List <FeedXively> RetornarMapaLugarListaSensores(double Latitud, double Longitud, List <FeedXively> dtsResult, string idioma = "Español", double radio = 100) { //Crea el Objeto que guarda todo el conocimiento del negocio semanticIndexManager = new SemanticIndexManager(); //Crea una copia de la lista para eliminar los sensores que no se les puede calcular distancia List <FeedXively> FeedsConPosicion = new List <FeedXively>(); //Si encontro sensores entonces validar los que entran en el radio de acción if (dtsResult != null) { List <string> clavesBorrar = new List <string>(); foreach (FeedXively dtr in dtsResult) { if (dtr.feed.location != null) { //La funcion establece que el sensor este en el rango de N kms del lugar especificado. Si esta devuelve la distancia, sino devuelve cero double distancia = semanticIndexManager.VerificarSensorenLugar(Latitud, Longitud, Convert.ToDouble(dtr.feed.location.lat, culture), Convert.ToDouble(dtr.feed.location.lon, culture), radio); if (distancia > 0) { //ListaResultados.Add(indice, distancia); GeonameNode nodolugardistancia = new GeonameNode(); nodolugardistancia.Latitud = Latitud.ToString(); nodolugardistancia.Longitud = Longitud.ToString(); lugar ld = new lugar(); ld.nodoGeoname = nodolugardistancia; ld.distancia = distancia; //Creamos el espacio en la variable de lista de lugares relacionada al sensor dtr.lugares = new List <lugar>(); dtr.lugares.Add(ld); FeedsConPosicion.Add(dtr); } } } } //Finalmente retorna la lista con los sensores correspondientes return(FeedsConPosicion); }
//Permite convertir un Toponym en GeonameNode private GeonameNode parseToponymToGeonameNode(Toponym tp) { GeonameNode gnode = new GeonameNode(); gnode.ToponymName = tp.ToponymName; gnode.Nombre_lugar = tp.Name; gnode.Latitud = tp.Latitude.ToString(culture); gnode.Longitud = tp.Longitude.ToString(culture); if (tp.CountryCode != null) { gnode.Codigo_pais = tp.CountryCode.ToString(); } if (tp.CountryName != null) { gnode.Nombre_pais = tp.CountryName.ToString(); } gnode.geonameId = tp.GeoNameId.ToString(culture); gnode.fcl = tp.FeatureClassCode.ToString(); gnode.fcode = tp.FeatureCode.ToString(); return(gnode); }
///<summary> ///Esta función recibe un Biotipo (lugar). Consulta la ontología por las variables que miden el biotipo y posteriormente ///consulta el indice por cada variable con el fin de seleccionar los posibles sensores que pueden medir dicha información ///y asi poder desplegarla en un servicio de aplicación. ///</summary> ///<returns> ///Biotipo con la información medioambiental. /// </returns> /// <param name="nodoBiotipo">Es el biotipo que ha sido identificado y se desea su información</param> /// <param name="radio">Radio que define el área de acción del Biotipo</param> /// <param name="idioma">Idioma de preferencia del usuario. Por defecto busca Español</param> public Biotipo ObtenerInfoBiotipoMedioAmbiente(GeonameNode nodoBiotipo, string radio, string idioma) { //Objeto del negocio ServiciosMedioAmbientales sm = new ServiciosMedioAmbientales(); //Biotipo generado para presentarlo al usuario Biotipo bio = new Biotipo(); /****************** Obtenemos los Datos Generales del Biotipo **********************/ bio.GeonameId = nodoBiotipo.geonameId; bio.name = nodoBiotipo.Nombre_lugar; bio.CountryName = nodoBiotipo.Nombre_pais; bio.CountryCode = nodoBiotipo.Codigo_pais; bio.AreaImpacto.lat = nodoBiotipo.Latitud; bio.AreaImpacto.lon = nodoBiotipo.Longitud.ToString(); bio.AreaImpacto.Area = radio; /****************** Buscamos las variables de cada caracteristica desde la ontologia y Relacionan Sensores **********************/ //Conceptos retornados de cada concepto List<string> conceptosE = new List<string>(); //Variable relacionadas a buscar mediciones List<Variable> variablesE = new List<Variable>(); //vaiables del Edafotopo string conceptoBuscar = "Edafotopo"; conceptosE = sm.RetornarConceptos(conceptoBuscar,idioma); if(conceptosE != null) foreach(string concepto in conceptosE) { if (concepto != conceptoBuscar) { Variable variableMedir = new Variable(); variableMedir.Id = concepto; //Buscar Sensores que la pueden medir variableMedir.sensores = sm.RetornarMapaLugar(bio.AreaImpacto.lat, bio.AreaImpacto.lon, concepto, idioma, radio); variablesE.Add(variableMedir); } } bio.Edafotopo.Variables=variablesE; //vaiables del Hidrotopo //Conceptos retornados de cada concepto List<string> conceptosH = new List<string>(); //Variable relacionadas a buscar mediciones List<Variable> variablesH = new List<Variable>(); conceptoBuscar = "Hidrotopo"; conceptosH = sm.RetornarConceptos(conceptoBuscar,idioma); if (conceptosH != null) foreach(string concepto in conceptosH) { if (concepto != conceptoBuscar) { Variable variableMedir = new Variable(); variableMedir.Id = concepto; //Buscar Sensores que lapueden medir variableMedir.sensores = sm.RetornarMapaLugar(bio.AreaImpacto.lat, bio.AreaImpacto.lon, concepto, idioma, radio); variablesH.Add(variableMedir); } } bio.Hidrotopo.Variables=variablesH; //vaiables del Climátopo //Conceptos retornados de cada concepto List<string> conceptosC = new List<string>(); //Variable relacionadas a buscar mediciones List<Variable> variablesC = new List<Variable>(); conceptoBuscar = "Climátopo"; conceptosC = sm.RetornarConceptos(conceptoBuscar,idioma); if (conceptosC != null) foreach(string concepto in conceptosC) { if (concepto != conceptoBuscar) { Variable variableMedir = new Variable(); variableMedir.Id = concepto; //Buscar Sensores que lapueden medir variableMedir.sensores = sm.RetornarMapaLugar(bio.AreaImpacto.lat, bio.AreaImpacto.lon, concepto, idioma, radio); variablesC.Add(variableMedir); } } bio.Climatopo.Variables=variablesC; /****************** Los valores de referencia se los deja,mos al usuario **********************/ return bio; }
public Biotipo ObtenerInfoBiotipoContaminacion(GeonameNode nodoBiotipo, string radio, string idioma) { //Objeto del negocio ServiciosMedioAmbientales sm = new ServiciosMedioAmbientales(); //Biotipo generado para presentarlo al usuario Biotipo bio = new Biotipo(); /****************** Obtenemos los Datos Generales del Biotipo **********************/ bio.GeonameId = nodoBiotipo.geonameId; bio.name = nodoBiotipo.Nombre_lugar; bio.CountryName = nodoBiotipo.Nombre_pais; bio.CountryCode = nodoBiotipo.Codigo_pais; bio.AreaImpacto.lat = nodoBiotipo.Latitud; bio.AreaImpacto.lon = nodoBiotipo.Longitud.ToString(); bio.AreaImpacto.Area = radio; /****************** Buscamos las variables de cada caracteristica desde la ontologia y Relacionan Sensores **********************/ //Conceptos retornados de cada concepto List<string> conceptosE = new List<string>(); //Variable relacionadas a buscar mediciones List<Variable> variablesE = new List<Variable>(); //vaiables del Aire string conceptoBuscar = "Contaminación del Aire"; conceptosE = sm.RetornarConceptos(conceptoBuscar, idioma); if (conceptosE != null) foreach (string concepto in conceptosE) { if (concepto != conceptoBuscar) { Variable variableMedir = new Variable(); variableMedir.Id = concepto; //Buscar Sensores que la pueden medir variableMedir.sensores = sm.RetornarMapaLugar(bio.AreaImpacto.lat, bio.AreaImpacto.lon, concepto, idioma, radio); variablesE.Add(variableMedir); } } bio.ContaminacionAire.Variables = variablesE; //vaiables del Suelo //Conceptos retornados de cada concepto List<string> conceptosH = new List<string>(); //Variable relacionadas a buscar mediciones List<Variable> variablesH = new List<Variable>(); conceptoBuscar = "Contaminación del Suelo"; conceptosH = sm.RetornarConceptos(conceptoBuscar, idioma); if (conceptosH != null) foreach (string concepto in conceptosH) { if (concepto != conceptoBuscar) { Variable variableMedir = new Variable(); variableMedir.Id = concepto; //Buscar Sensores que lapueden medir variableMedir.sensores = sm.RetornarMapaLugar(bio.AreaImpacto.lat, bio.AreaImpacto.lon, concepto, idioma, radio); variablesH.Add(variableMedir); } } bio.ContaminacionSuelo.Variables = variablesH; //vaiables del Agua //Conceptos retornados de cada concepto List<string> conceptosC = new List<string>(); //Variable relacionadas a buscar mediciones List<Variable> variablesC = new List<Variable>(); conceptoBuscar = "Contaminación del Agua"; conceptosC = sm.RetornarConceptos(conceptoBuscar, idioma); if (conceptosC != null) foreach (string concepto in conceptosC) { if (concepto != conceptoBuscar) { Variable variableMedir = new Variable(); variableMedir.Id = concepto; //Buscar Sensores que lapueden medir variableMedir.sensores = sm.RetornarMapaLugar(bio.AreaImpacto.lat, bio.AreaImpacto.lon, concepto, idioma, radio); variablesC.Add(variableMedir); } } bio.ContaminacionAgua.Variables = variablesC; //Conceptos retornados de cada concepto List<string> conceptosS = new List<string>(); //Variable relacionadas a buscar mediciones List<Variable> variablesS = new List<Variable>(); //vaiables del Sonora conceptoBuscar = "Contaminación Sonora"; conceptosS = sm.RetornarConceptos(conceptoBuscar, idioma); if (conceptosS != null) foreach (string concepto in conceptosS) { if (concepto != conceptoBuscar) { Variable variableMedir = new Variable(); variableMedir.Id = concepto; //Buscar Sensores que la pueden medir variableMedir.sensores = sm.RetornarMapaLugar(bio.AreaImpacto.lat, bio.AreaImpacto.lon, concepto, idioma, radio); variablesS.Add(variableMedir); } } bio.ContaminacionSonora.Variables = variablesS; //vaiables del Termica //Conceptos retornados de cada concepto List<string> conceptosT = new List<string>(); //Variable relacionadas a buscar mediciones List<Variable> variablesT = new List<Variable>(); conceptoBuscar = "Contaminación Térmica"; conceptosT = sm.RetornarConceptos(conceptoBuscar, idioma); if (conceptosT != null) foreach (string concepto in conceptosT) { if (concepto != conceptoBuscar) { Variable variableMedir = new Variable(); variableMedir.Id = concepto; //Buscar Sensores que lapueden medir variableMedir.sensores = sm.RetornarMapaLugar(bio.AreaImpacto.lat, bio.AreaImpacto.lon, concepto, idioma, radio); variablesT.Add(variableMedir); } } bio.ContaminacionTermica.Variables = variablesT; //vaiables del Visual //Conceptos retornados de cada concepto List<string> conceptosV = new List<string>(); //Variable relacionadas a buscar mediciones List<Variable> variablesV = new List<Variable>(); conceptoBuscar = "Contaminación Visual"; conceptosV = sm.RetornarConceptos(conceptoBuscar, idioma); if (conceptosV != null) foreach (string concepto in conceptosV) { if (concepto != conceptoBuscar) { Variable variableMedir = new Variable(); variableMedir.Id = concepto; //Buscar Sensores que lapueden medir variableMedir.sensores = sm.RetornarMapaLugar(bio.AreaImpacto.lat, bio.AreaImpacto.lon, concepto, idioma, radio); variablesV.Add(variableMedir); } } bio.ContaminacionVisual.Variables = variablesV; /****************** Los valores de referencia se los deja,mos al usuario **********************/ return bio; }
//Busca los Biotipos que estan relacionados a los sensores retornados en la consulta private List <GeonameNode> BuscarBiotiposConsulta(List <FeedXively> dts, List <GeonameNode> geonodes) { //Definir el objeto del negocio ServiciosMedioAmbientales sm = new ServiciosMedioAmbientales(); //Variables temporales Boolean encontrado = false; string ciudadesadicionales = string.Empty; List <GeonameNode> geonodestmp = new List <GeonameNode>(); //Recorrer el dataset para la busqueda de nuevos lugares foreach (FeedXively dtr in dts) { GeonameNode gn = new GeonameNode(); //En caso de no tener Coordenadas Descartarlo if (dtr.feed.location != null) { //Leemos la localización de registro correspondiente gn.Nombre_lugar = ""; //Este lugar hay que averiguarlo con el Servicio Web enviando las coordenadas gn.Nombre_lugar_usuario = dtr.feed.location.name; gn.Latitud = dtr.feed.location.lat; gn.Longitud = dtr.feed.location.lon; geonodestmp.Add(gn); } } //Obtenemos los Biotipos (lugares) encontrados List <GeonameNode> gns = sm.ObtenerBiotiposConsulta(geonodestmp); if (gns != null) { foreach (GeonameNode gn in gns) { geonodestmp.Add(gn); } //Añadimos los nuevos lugares a la lista actual foreach (GeonameNode geonode in geonodestmp) { //Verificamos si los nuevos lugares ya fueron detectados en la consulta foreach (GeonameNode geon in geonodes) { if (geon.Nombre_lugar_Jerarquico == geonode.Nombre_lugar_Jerarquico) { encontrado = true; break; } } //Si no estaba el lugar adicionarlo, verificando nulos if (!encontrado && !string.IsNullOrEmpty(geonode.Nombre_lugar_Jerarquico)) { geonodes.Add(geonode); } encontrado = false; } return(geonodes); } return(null); }