Пример #1
0
        public ActionResult IsPointInPolygonWeb()
        {
            db.Configuration.ProxyCreationEnabled = false;
            int i, j, l, n;

            gpsinsideOutside gpsInOut = new gpsinsideOutside();

            List <vertice> poly         = db.vertice.ToList();
            List <gps>     point        = db.gps.ToList();
            List <gps>     pointOutside = db.gps.ToList();

            List <gpsOutside> gpsOutside = new List <gpsOutside>();
            List <gpsInside>  gpsInside  = new List <gpsInside>();

            for (l = 0; l < point.Count; l++)
            {
                for (i = 0, j = poly.Count - 1; i < poly.Count; j = i++)
                {
                    if ((((poly[i].latitud <= point[l].latitud) && (point[l].latitud < poly[j].latitud)) ||
                         ((poly[j].latitud <= point[l].latitud) && (point[l].latitud < poly[i].latitud))) &&
                        (point[l].longitud < (poly[j].longitud - poly[i].longitud) * (point[l].latitud - poly[i].latitud)
                         / (poly[j].latitud - poly[i].latitud) + poly[i].longitud))
                    {
                        var gpsIn     = new gpsInside();
                        var animal_id = point[l].animal_id;
                        var animal1   = db.animal.Include(a => a.tipo).Include(a => a.raza).SingleOrDefault(a => a.id == animal_id);

                        gpsIn.latitud     = point[l].latitud;
                        gpsIn.longitud    = point[l].longitud;
                        gpsIn.animal_Id   = animal1.id;
                        gpsIn.animal_Tipo = animal1.tipo.nombre;
                        gpsIn.animal_Raza = animal1.raza.nombre;
                        gpsIn.animal_Sexo = animal1.sexo;

                        gpsInside.Add(gpsIn);

                        pointOutside.Remove(point[l]);
                    }
                    else
                    { //c = false;
                    }
                }
            }
            for (n = 0; n < pointOutside.Count; n++)
            {
                var gpsOut    = new gpsOutside();
                var animal_id = pointOutside[n].animal_id;
                var animal2   = db.animal.Include(a => a.tipo).Include(a => a.raza).SingleOrDefault(a => a.id == animal_id);

                gpsOut.latitud     = pointOutside[n].latitud;
                gpsOut.longitud    = pointOutside[n].longitud;
                gpsOut.animal_Id   = pointOutside[n].animal_id;
                gpsOut.animal_Tipo = animal2.tipo.nombre;
                gpsOut.animal_Raza = animal2.raza.nombre;
                gpsOut.animal_Sexo = animal2.sexo;

                gpsOutside.Add(gpsOut);
            }
            gpsInOut.inside  = gpsInside;
            gpsInOut.outside = gpsOutside;


            double latA  = -40.553298;
            double longA = -73.143679;
            double latB  = -40.553673;
            double longB = -73.138422;

            var    locA     = new GeoCoordinate(latA, longA);
            var    locB     = new GeoCoordinate(latB, longB);
            double distance = locA.GetDistanceTo(locB);



            JavaScriptSerializer serializer = new JavaScriptSerializer();
            var json = serializer.Serialize(gpsInOut);

            return(Json(json, JsonRequestBehavior.AllowGet));
        }
Пример #2
0
        public ActionResult getMakersss()
        {
            db.Configuration.ProxyCreationEnabled = false;
            int l, n;

            gpsinsideOutside gpsInOut = new gpsinsideOutside();

            List <vertice> polygon      = db.vertice.ToList();
            List <gps>     point        = db.gps.ToList();
            List <gps>     pointOutside = db.gps.ToList();

            List <gpsOutside> gpsOutside = new List <gpsOutside>();
            List <gpsInside>  gpsInside  = new List <gpsInside>();

            //var testPoint = point[2];

            bool result = false;
            int  j      = polygon.Count() - 1;

            for (int c = 0; c < point.Count(); c++)       //recorrido de GPS
            {
                for (int i = 0; i < polygon.Count(); i++) //recorrido por puntos del poligono
                {
                    //se comprueba si el GPS junto a sus coordenadas se encuentra dentro del poligono
                    if (polygon[i].latitud < point[c].latitud && polygon[j].latitud >= point[c].latitud || polygon[j].latitud < point[c].latitud && polygon[i].latitud >= point[c].latitud)
                    {
                        if (polygon[i].longitud + (point[c].latitud - polygon[i].latitud) / (polygon[j].latitud - polygon[i].latitud) * (polygon[j].longitud - polygon[i].longitud) < point[c].longitud)
                        {
                            result = !result;
                            var aqui = point[c];

                            var gpsIn     = new gpsInside();
                            var animal_id = point[c].animal_id;
                            var animal1   = db.animal.Include(a => a.tipo).Include(a => a.raza).SingleOrDefault(a => a.id == animal_id);

                            gpsIn.latitud     = point[c].latitud;
                            gpsIn.longitud    = point[c].longitud;
                            gpsIn.animal_Id   = animal1.id;
                            gpsIn.animal_Tipo = animal1.tipo.nombre;
                            gpsIn.animal_Raza = animal1.raza.nombre;
                            gpsIn.animal_Sexo = animal1.sexo;

                            gpsInside.Add(gpsIn);          //Agregar GPS a lista de GPS dentro del poligono

                            pointOutside.Remove(point[c]); //eliminando el GPS de la lista de GPS fuera del Poligono
                        }
                    }
                    j = i;
                }
            }
            for (n = 0; n < pointOutside.Count; n++)
            {
                var gpsOut    = new gpsOutside();
                var animal_id = pointOutside[n].animal_id;
                var animal2   = db.animal.Include(a => a.tipo).Include(a => a.raza).SingleOrDefault(a => a.id == animal_id);

                gpsOut.latitud     = pointOutside[n].latitud;
                gpsOut.longitud    = pointOutside[n].longitud;
                gpsOut.animal_Id   = pointOutside[n].animal_id;
                gpsOut.animal_Tipo = animal2.tipo.nombre;
                gpsOut.animal_Raza = animal2.raza.nombre;
                gpsOut.animal_Sexo = animal2.sexo;

                gpsOutside.Add(gpsOut);
            }
            gpsInOut.inside  = gpsInside;
            gpsInOut.outside = gpsOutside;


            JavaScriptSerializer serializer = new JavaScriptSerializer();
            var json = serializer.Serialize(gpsInOut);

            return(Json(json, JsonRequestBehavior.AllowGet));
        }
Пример #3
0
        public ActionResult getMakerss()
        {
            db.Configuration.ProxyCreationEnabled = false;
            int i, j, l, n;

            gpsinsideOutside gpsInOut = new gpsinsideOutside();

            List <vertice> poly         = db.vertice.ToList();
            List <gps>     point        = db.gps.ToList();
            List <gps>     pointOutside = db.gps.ToList();

            List <gpsOutside> gpsOutside = new List <gpsOutside>();
            List <gpsInside>  gpsInside  = new List <gpsInside>();

            for (l = 0; l < point.Count; l++)
            {
                for (i = 0, j = poly.Count - 1; i < poly.Count; j = i++)
                {
                    if ((((poly[i].latitud <= point[l].latitud) && (point[l].latitud < poly[j].latitud)) ||
                         ((poly[j].latitud <= point[l].latitud) && (point[l].latitud < poly[i].latitud))) &&
                        (point[l].longitud < (poly[j].longitud - poly[i].longitud) * (point[l].latitud - poly[i].latitud)
                         / (poly[j].latitud - poly[i].latitud) + poly[i].longitud))
                    {
                        var gpsIn     = new gpsInside();
                        var animal_id = point[l].animal_id;
                        var animal1   = db.animal.Include(a => a.tipo).Include(a => a.raza).SingleOrDefault(a => a.id == animal_id);

                        gpsIn.latitud     = point[l].latitud;
                        gpsIn.longitud    = point[l].longitud;
                        gpsIn.animal_Id   = animal1.id;
                        gpsIn.animal_Tipo = animal1.tipo.nombre;
                        gpsIn.animal_Raza = animal1.raza.nombre;
                        gpsIn.animal_Sexo = animal1.sexo;

                        gpsInside.Add(gpsIn);

                        pointOutside.Remove(point[l]);
                    }
                    else
                    { //c = false;
                    }
                }
            }
            for (n = 0; n < pointOutside.Count; n++)
            {
                var gpsOut    = new gpsOutside();
                var animal_id = pointOutside[n].animal_id;
                var animal2   = db.animal.Include(a => a.tipo).Include(a => a.raza).SingleOrDefault(a => a.id == animal_id);

                gpsOut.latitud     = pointOutside[n].latitud;
                gpsOut.longitud    = pointOutside[n].longitud;
                gpsOut.animal_Id   = pointOutside[n].animal_id;
                gpsOut.animal_Tipo = animal2.tipo.nombre;
                gpsOut.animal_Raza = animal2.raza.nombre;
                gpsOut.animal_Sexo = animal2.sexo;

                gpsOutside.Add(gpsOut);
            }
            gpsInOut.inside  = gpsInside;
            gpsInOut.outside = gpsOutside;

            JavaScriptSerializer serializer = new JavaScriptSerializer();
            var json = serializer.Serialize(gpsInOut);

            return(Json(json, JsonRequestBehavior.AllowGet));
        }