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);
        }
Example #3
0
        //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;
    }
Example #6
0
    //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);
    }