예제 #1
0
        static void Main(string[] args)
        {
            //GeraBaseGeo();
            contexto ctx = new contexto();

            Console.WriteLine("---- Lojas e tipos ----");
            var tipos = ctx.Lojas.ToList();

            foreach (var l in tipos)
            {
                Console.WriteLine(l.Nome + " - " + l.Localizacao.SpatialTypeName);
            }



            Console.WriteLine("---- Lojas próximas + distancia ---");
            var meuLocal = DbGeography.FromText("POINT (-27.5855 -48.5507)");

            var lojas = ctx.Lojas
                        .OrderBy(l => l.Localizacao.Distance(meuLocal));

            foreach (var l in ctx.Lojas)
            {
                Console.WriteLine("Lojas próximas: {0} - Distancia: {1}",
                                  l.Nome,
                                  meuLocal.Distance(l.Localizacao));
            }

            Console.WriteLine("---- Localizar loja mais próxima ---");
            var maisProxima = ctx.Lojas
                              .OrderBy(l => l.Localizacao.Distance(meuLocal))
                              .FirstOrDefault();

            Console.WriteLine("Loja mais próxima é {0}",
                              maisProxima.Nome);


            Console.WriteLine("---- Localizar loja ---");
            DbGeography alvo      = DbGeography.FromText("POINT (-27.585156 -48.549251)");
            var         buscaLoja = ctx.Lojas
                                    .SingleOrDefault(l => l.Localizacao.Intersects(alvo));

            if (buscaLoja == null)
            {
                Console.WriteLine("Loja não encontrada");
            }
            else
            {
                Console.WriteLine("Achou a loja {0}",
                                  buscaLoja.Nome);
            }


            Console.ReadLine();
        }
예제 #2
0
        private static void GeraBaseGeo()
        {
            contexto ctx = new contexto();

            ctx.Database.Initialize(true);

            // adicionar dados
            try
            {
                new List <Loja> {
                    new Loja {
                        Nome        = "Loja roupas", Telefone = "12312331",
                        Localizacao = DbGeography.FromText("POINT(-27.583748 -48.545560)")
                    },
                    new Loja {
                        Nome        = "Loja eletrônicos", Telefone = "49238443",
                        Localizacao = DbGeography.FromText("POINT(-27.584433 -48.547148)")
                    },
                    new Loja {
                        Nome        = "Loja Bikes", Telefone = "324234234",
                        Localizacao = DbGeography.FromText("POINT(-27.585156 -48.549251)")
                    },
                    new Loja {
                        Nome        = "Loja Kitesurf", Telefone = "98475474",
                        Localizacao = DbGeography.FromText("POINT(-27.585764 -48.551053)")
                    },
                    new Loja {
                        Nome        = "Restaurante", Telefone = "312345544",
                        Localizacao = DbGeography.FromText("POINT(-27.586183 -48.551869)")
                    }
                }.ForEach(l => ctx.Lojas.Add(l));
                ctx.SaveChanges();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                Console.ReadLine();
            }
        }