public IToponymData FindByName(string name)
        {
            DateTime time1 = DateTime.Now;
            using (var ngeoClient = new GeoNamesClient())
            {
                DateTime time2 = DateTime.Now;

                var rawData =
                    ngeoClient.Search(new SearchOptions(SearchType.Name, name) {UserName = _userName, MaxRows = 5});

                DateTime time3 = DateTime.Now;

                var result = rawData.Select(t=>new ToponymData(t)).FirstOrDefault(t => t.ToponymType==ToponymTypeEnum.City);
                DateTime time4 = DateTime.Now;

                Debug.WriteLine(String.Format("FindByName '{0}'  create {1} search {2} createObject {3}",
                    name,
                    (time2 - time1).TotalMilliseconds,
                    (time3 - time2).TotalMilliseconds,
                    (time4 - time3).TotalMilliseconds));

                if (result == null)
                {
                    throw new NotFoundToponymException();
                }

                return result;
            }

        }
Exemple #2
0
        //Este método obtiene el Lugar más cercano a las Coordenadas enviadas.
        //Como no se especifica radio retorna un solo lugar
        public GeonameNode GeoNames_FindNearbyPlaceName(string Latitud, string Longitud)
        {
            List <GeonameNode> gnodes = new List <GeonameNode>();
            CultureInfo        culture;

            culture = CultureInfo.InvariantCulture;

            using (var geoNames = new GeoNamesClient())
            {
                var finder = new NearbyPlaceNameFinder
                {
                    Latitude  = Convert.ToDouble(Latitud, culture),
                    Longitude = Convert.ToDouble(Longitud, culture),
                    UserName  = UserName,
                };
                var resultados = geoNames.FindNearbyPlaceName(finder);

                if (resultados != null)
                {
                    foreach (Toponym res in resultados)
                    {
                        gnodes.Add(parseToponymToGeonameNode(res));
                    }
                }
            }
            if (gnodes == null)
            {
                return(null);
            }
            else
            {
                return(gnodes[0]);
            }
        }
Exemple #3
0
 public void GeoNames_Children_ShouldReturnNull_WithoutUserName()
 {
     using (var geoNames = new GeoNamesClient())
     {
         const int geoNameId = 6295630;
         var results = geoNames.Children(geoNameId, null);
         results.ShouldBeNull();
     }
 }
Exemple #4
0
        public void GeoNames_Countries_ShouldReturnNull_WithoutUserName()
        {
            using (var geoNames = new GeoNamesClient())
            {
                var results = geoNames.Countries(null);

                results.ShouldBeNull();
            }
        }
Exemple #5
0
        public void GeoNames_Children_ShouldReturn7Results_ForGeoNameId6295630()
        {
            using (var geoNames = new GeoNamesClient())
            {
                const int geoNameId = 6295630;
                var results = geoNames.Children(geoNameId, UserName);

                results.ShouldNotBeNull();
            }
        }
Exemple #6
0
        public void GeoNames_Countries_ShouldReturnResults()
        {
            using (var geoNames = new GeoNamesClient())
            {
                var results = geoNames.Countries(UserName);

                results.ShouldNotBeNull();
                results.Count.ShouldBeInRange(1, 300);
            }
        }
        public ValueTo GetPlaceDetails(string placeId)
        {
            ValueTo result         = new ValueTo();
            var     geoNamesClient = new GeoNamesClient();
            var     data           = geoNamesClient.Get(int.Parse(placeId), "cristhyan17");

            result.Value = placeId;
            result.Text  = data.Name;
            geoNamesClient.Close();
            return(result);
        }
Exemple #8
0
        public static void SetGeoNameId(ProductView product, SelectedHotelsEntities db, Hotel hotel, log4net.ILog log)
        {
            var placeName = product.Country;

            if (!String.IsNullOrEmpty(product.County))
            {
                placeName = product.County;
            }
            if (!String.IsNullOrEmpty(product.City))
            {
                placeName = product.City;
            }
            var geoNames = db.GeoNames.Where(gn => gn.Name.ToLower() == placeName.ToLower())
                           .OrderByDescending(gn => gn.Population)
                           .ThenByDescending(gn => gn.ModificationDate);

            if (geoNames.Any())
            {
                var geoName = geoNames.FirstOrDefault();
                if (geoName != null)
                {
                    hotel.GeoNameId = geoName.Id;
                }
            }
            if (hotel.GeoNameId == null && hotel.Location != null && hotel.Location.Latitude.HasValue && hotel.Location.Longitude.HasValue)
            {
                using (var geoNamesClient = new GeoNamesClient())
                {
                    var finder = new NearbyPlaceNameFinder
                    {
                        Latitude  = hotel.Location.Latitude.Value,
                        Longitude = hotel.Location.Longitude.Value,
                        UserName  = Settings.Default.GeoNamesUserName
                    };
                    try
                    {
                        var results = geoNamesClient.FindNearbyPlaceName(finder);
                        if (results != null && results.Any(r => r.FeatureClassName == "P"))
                        {
                            var toponym = results.First(r => r.FeatureClassName == "P");
                            hotel.GeoNameId = toponym.GeoNameId;
                        }
                    }
                    catch (Exception ex)
                    {
                        log.Error("Error error logging", ex);
                        if (ex.InnerException != null)
                        {
                            log.Error("Error error logging", ex.InnerException);
                        }
                    }
                }
            }
        }
Exemple #9
0
        protected virtual void HandleTimeCommand(CommandMatch cmd, IChannelMessageEventArgs msg)
        {
            string location = ((string)cmd.Arguments[0]).Trim();

            if (location.Length == 0)
            {
                location = Config.DefaultLocation;
            }

            string aliasedLocation;

            if (Config.LocationAliases.TryGetValue(location, out aliasedLocation))
            {
                location = aliasedLocation;
            }

            // obtain location
            var     client = new GeoNamesClient(Config.GeoNames);
            GeoName loc    = client.GetFirstGeoName(location).SyncWait();

            if (loc == null)
            {
                ConnectionManager.SendChannelMessage(msg.Channel, $"{msg.SenderNickname}: GeoNames cannot find that location!");
                return;
            }

            // obtain timezone
            GeoTimeZoneResult geoTimeZoneResult = client.GetTimezone(loc.Latitude, loc.Longitude).SyncWait();

            // find actual date/time using our zone data
            DateTimeZone zone = TimeZoneProvider.GetZoneOrNull(geoTimeZoneResult.TimezoneID);

            if (zone == null)
            {
                ConnectionManager.SendChannelMessage(msg.Channel, $"{msg.SenderNickname}: I don't know the timezone {geoTimeZoneResult.TimezoneID}.");
                return;
            }

            ZonedDateTime time = SystemClock.Instance.GetCurrentInstant().InZone(zone);

            bool lucky = cmd.CommandName.StartsWith("l");

            ConnectionManager.SendChannelMessage(
                msg.Channel,
                lucky
                    ? $"{msg.SenderNickname}: The time there is {time:yyyy-MM-dd HH:mm:ss}."
                    : $"{msg.SenderNickname}: The time in {loc.Name} is {time:yyyy-MM-dd HH:mm:ss}."
                );
        }
Exemple #10
0
        //Este método obtiene todos los registros de geonames dado un lugar espécifico
        public List <GeonameNode> GeoNames_SearchByNameEquals(string lugar)
        {
            List <GeonameNode> gnodes = new List <GeonameNode>();

            using (var geoNames = new GeoNamesClient())
            {
                var resultados = geoNames.Search(new SearchOptions(SearchType.NameEquals, lugar)
                {
                    UserName = UserName
                });

                foreach (Toponym res in resultados)
                {
                    gnodes.Add(parseToponymToGeonameNode(res));
                }
            }
            return(gnodes);
        }
        public List <ValueTo> GetCountries()
        {
            if (_listCountries == null || _listCountries.Count == 0)
            {
                var            geoNamesClient = new GeoNamesClient();
                var            serResult      = geoNamesClient.Countries("cristhyan17");
                List <Country> result         = new List <Country>();
                if (serResult != null)
                {
                    result = serResult.ToList();
                }
                _listCountries = (from ct in result
                                  select new ValueTo {
                    Text = ct.CountryName, Value = ct.GeoNameId.ToString()
                }).ToList();
                geoNamesClient.Close();
            }

            return(_listCountries);
        }
 private static List <ValueTo> getChildren(int parentId)
 {
     try
     {
         List <ValueTo> result         = new List <ValueTo>();
         var            geoNamesClient = new GeoNamesClient();
         var            serResult      = geoNamesClient.Children(parentId, "cristhyan17");
         if (serResult != null)
         {
             result = (from st in serResult select new ValueTo {
                 Value = st.GeoNameId.ToString(), Text = st.Name
             }).ToList();
         }
         return(result);
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
Exemple #13
0
        private static void GeoNamesTest(out double latitude, out double longitude)
        {
            using (var ngeoClient = new GeoNamesClient())
            {
                var result = ngeoClient.Search(new SearchOptions(SearchType.Name, "Курган")
                {
                    UserName = "******", MaxRows = 5
                });

                foreach (var toponym in result /*.Where(t=>t.FeatureCode=="PPLA")*/)
                {
                    Console.WriteLine(toponym.Name + " " + toponym.GeoNameId + " " + toponym.FeatureCode + " " +
                                      toponym.Population + " " + toponym.FeatureClassCode + " " + toponym.ToponymName);
                    //toponym.Latitude + toponym.Longitude
                }

                latitude  = result.First().Latitude;
                longitude = result.First().Longitude;
            }
        }
Exemple #14
0
        public void GeoNames_FindNearbyPlaceName_ShouldReturn10Results_ForLehighLatitudeAndLongitude_When10KmRadiusIsSpecified()
        {
            using (var geoNames = new GeoNamesClient())
            {
                var finder = new NearbyPlaceNameFinder
                {
                    Latitude = 40.60326613801468,
                    Longitude = -75.37771224975586,
                    UserName = UserName,
                    RadiusInKm = 10.0,
                    MaxRows = 10,
                };
                var results = geoNames.FindNearbyPlaceName(finder);

                results.ShouldNotBeNull();
                results.Count.ShouldEqual(10);
                results[0].GeoNameId.ShouldEqual(5216771);
                results[0].Name.ShouldEqual("University Heights");
            }
        }
Exemple #15
0
        //Este método obtiene el Lugar más cercano a las Coordenadas enviadas.
        //Adicionando la jerarquía de lugares geográficos
        public List <GeonameNode> GeoNames_ExtendedFindNearby(string Latitud, string Longitud)
        {
            List <GeonameNode> gnodes = new List <GeonameNode>();

            using (var geoNames = new GeoNamesClient())
            {
                var finder = new NearbyPlaceNameFinder
                {
                    Latitude  = Convert.ToDouble(Latitud, culture),
                    Longitude = Convert.ToDouble(Longitud, culture),
                    UserName  = UserName,
                };
                var resultados = geoNames.FindNearbyPlaceName(finder);
                //var resultados = geoNames.FindNearbyPlaceName(finder);

                if (resultados != null)
                {
                    foreach (Toponym res in resultados)
                    {
                        gnodes.Add(parseToponymToGeonameNode(res));
                    }
                }

                if (gnodes.Count > 0)
                {
                    gnodes = GeoNames_Hierarchy(Convert.ToInt32((gnodes[0].geonameId), culture));
                }
                else
                {
                    return(null);
                }
            }
            if (gnodes == null)
            {
                return(null);
            }
            else
            {
                return(gnodes);
            }
        }
Exemple #16
0
        //Esta función recibe un GeonameId y devuelve la lista Jerárquica de
        //lugares en los que se encuentra
        public List <GeonameNode> GeoNames_Hierarchy(int GeonameId)
        {
            List <GeonameNode> gnodes    = new List <GeonameNode>();
            string             jerarquia = string.Empty;

            using (var geoNames = new GeoNamesClient())
            {
                int geoNameId  = GeonameId;
                var resultados = geoNames.Hierarchy(geoNameId, UserName, ResultStyle.Full);

                if (resultados != null)
                {
                    foreach (Toponym res in resultados)
                    {
                        gnodes.Add(parseToponymToGeonameNode(res));
                    }
                }

                //Obtenemos la jerarquía en un solo campo
                foreach (GeonameNode gnode in gnodes)
                {
                    //Hereda al siguiente su nombre
                    if (string.IsNullOrEmpty(jerarquia))
                    {
                        jerarquia = gnode.Nombre_lugar;
                    }
                    else
                    {
                        jerarquia = jerarquia + "," + gnode.Nombre_lugar;
                    }

                    //Llena el nodo y propiedad correspondiente
                    gnode.Nombre_lugar_Jerarquico = jerarquia;
                }
            }
            return(gnodes);
        }
Exemple #17
0
        protected virtual void GetWeatherForLocation(string location, string channel, string nick, bool lookupAlias = true, bool showLocName = true)
        {
            if (lookupAlias)
            {
                string aliasedLocation;
                if (Config.LocationAliases.TryGetValue(location, out aliasedLocation))
                {
                    location = aliasedLocation;
                }
            }

            // try specials first
            var providersWeathers = new List <(IWeatherProvider Provider, string WeatherString)>();

            foreach (IWeatherProvider provider in WeatherProviders)
            {
                // returns null if unsuccessful
                string weatherDescr = provider.GetWeatherDescriptionForSpecial(location);
                providersWeathers.Add((provider, weatherDescr));
            }

            if (providersWeathers.Any(pw => pw.WeatherString != null))
            {
                // some special; skip the geocoding
                foreach (var(provider, weather) in providersWeathers)
                {
                    if (weather == null)
                    {
                        continue;
                    }

                    OutputWeather(null, channel, nick, weather, showLocName);
                }
                return;
            }

            // geocode
            var geoClient = new GeoNamesClient(Config.GeoNames);

            Match   latLonMatch = LatLonRegex.Match(location);
            decimal latitude, longitude;
            string  locName = null;

            if (latLonMatch.Success)
            {
                latitude  = ParseDecimalInv(latLonMatch.Groups["Latitude"].Value);
                longitude = ParseDecimalInv(latLonMatch.Groups["Longitude"].Value);
                if (showLocName)
                {
                    locName = geoClient.GetFirstReverseGeo(latitude, longitude).Result;
                }
            }
            else
            {
                // find the location using GeoNames (Wunderground's geocoding is really bad)
                GeoName loc = geoClient.GetFirstGeoName(location).Result;
                if (loc == null)
                {
                    ConnectionManager.SendChannelMessage(channel, $"{nick}: GeoNames cannot find that location!");
                    return;
                }
                latitude  = loc.Latitude;
                longitude = loc.Longitude;
                locName   = loc.NameAndCountryName;
            }

            foreach (var(provider, weather) in providersWeathers)
            {
                string finalWeather = weather;
                if (finalWeather == null)
                {
                    finalWeather = provider.GetWeatherDescriptionForCoordinates(latitude, longitude);
                }
                OutputWeather(locName, channel, nick, finalWeather, showLocName);
            }
        }
Exemple #18
0
 public void GeoNames_FindNearbyPlaceName_ShouldReturnNull_WithoutUserName()
 {
     using (var geoNames = new GeoNamesClient())
     {
         var finder = new NearbyPlaceNameFinder();
         var results = geoNames.FindNearbyPlaceName(finder);
         results.ShouldBeNull();
     }
 }
Exemple #19
0
 public void GeoNames_FindNearbyPlaceName_ShouldThrowException_WhenArgIsNull()
 {
     using (var geoNames = new GeoNamesClient())
     {
         geoNames.FindNearbyPlaceName(null);
     }
 }
Exemple #20
0
        public void GeoNames_SearchByName_ShouldReturnResult_ForAdriaticSea()
        {
            using (var geoNames = new GeoNamesClient())
            {
                const string name = "Adriatic Sea";
                var results = geoNames.Search(new SearchOptions(SearchType.Name, name)
                {
                    UserName = UserName
                });

                results.ShouldNotBeNull();
                results.Count.ShouldEqual(1);
            }
        }
Exemple #21
0
 public void GeoNames_PostalCodeCountryInfo_ShouldReturnNull_WithoutUserName()
 {
     using (var geoNames = new GeoNamesClient())
     {
         var results = geoNames.PostalCodeCountryInfo(null);
         results.ShouldBeNull();
     }
 }
Exemple #22
0
        public void GeoNames_Get_ShouldReturn1EarthResult_ForGeoNameId6295630()
        {
            using (var geoNames = new GeoNamesClient())
            {
                var result = geoNames.Get(6295630, UserName);

                result.ShouldNotBeNull();
            }
        }
Exemple #23
0
 public void GeoNames_LookupPostalCode_ShouldReturnNull_WithoutUserName()
 {
     using (var geoNames = new GeoNamesClient())
     {
         var finder = new PostalCodeLookup();
         var results = geoNames.LookupPostalCode(finder);
         results.ShouldBeNull();
     }
 }
Exemple #24
0
        public void GeoNames_LookupPostalCode_ShouldReturn1Result_ForOrlando()
        {
            using (var geoNames = new GeoNamesClient())
            {
                var finder = new PostalCodeLookup
                {
                    PostalCode = "32819",
                    Country = "US",
                    UserName = UserName,
                };
                var results = geoNames.LookupPostalCode(finder);

                results.ShouldNotBeNull();
                results.Count.ShouldEqual(1);
                results[0].Latitude.ShouldEqual(28.452157);
                results[0].Longitude.ShouldEqual(-81.46784);
                results[0].Name.ShouldEqual("Orlando");
            }
        }
Exemple #25
0
 public void GeoNames_GeoNamesClient_ShouldBePublic()
 {
     using (var client = new GeoNamesClient())
     {
         client.ShouldNotBeNull();
     }
 }
Exemple #26
0
        public void GeoNames_Hierarchy_ShouldReturnNull_WhenItemsIsNull()
        {
            using (var geoNames = new GeoNamesClient())
            {
                const int geoNameId = 6295630;
                var results = geoNames.Hierarchy(geoNameId, "asdf;fdks*", ResultStyle.Full);

                results.ShouldBeNull();
            }
        }
Exemple #27
0
        public void GeoNames_FindNearbyPostalCodes_ShouldReturn1Result_ForMollysLatitudeAndLongitude_WhenNoRadiusIsSpecified()
        {
            using (var geoNames = new GeoNamesClient())
            {
                var finder = new NearbyPostalCodesFinder
                {
                    Latitude = 40.611271,
                    Longitude = -75.378110,
                    UserName = UserName,
                };
                var results = geoNames.FindNearbyPostalCodes(finder);

                results.ShouldNotBeNull();
                results.Count.ShouldEqual(1);
                results[0].Value.ShouldEqual("18015");
            }
        }
Exemple #28
0
 public void GeoNames_GeoNamesClient_ShouldImplementClientBase_WithIInvokeGeoNamesServices()
 {
     using (var client = new GeoNamesClient())
     {
         client.ShouldImplement(typeof(ClientBase<IInvokeGeoNamesServices>));
     }
 }
Exemple #29
0
        public void GeoNames_TimeZone_ShouldReturnAmericaPhoenixForAbc1()
        {
            using (var geoNames = new GeoNamesClient())
            {
                var result = geoNames.TimeZone(new TimeZoneLookup() {
                    Latitude = 33.452120,
                    Longitude = -112.067052,
                    RadiusInKm = 1.0,
                    UserName = UserName,
                });

                result.ShouldNotBeNull();
                result.Id.ShouldEqual("America/Phoenix");
            }
        }
Exemple #30
0
 public void GeoNames_LookupPostalCode_ShouldThrowException_WhenArgIsNull()
 {
     using (var geoNames = new GeoNamesClient())
     {
         geoNames.LookupPostalCode(null);
     }
 }
Exemple #31
0
        public void GeoNames_TimeZone_ShouldReturnAmericaNewYorkForLehigh()
        {
            using (var geoNames = new GeoNamesClient())
            {
                var result = geoNames.TimeZone(new TimeZoneLookup() {
                    Latitude = 40.60326613801468,
                    Longitude = -75.37771224975586,
                    RadiusInKm = 1.0,
                    UserName = UserName,
                });

                result.ShouldNotBeNull();
                result.Id.ShouldEqual("America/New_York");
            }
        }
Exemple #32
0
 public void GeoNames_PostalCodeCountryInfo_ShouldReturnMultipleResults()
 {
     using (var geoNames = new GeoNamesClient())
     {
         var results = geoNames.PostalCodeCountryInfo(UserName);
         results.ShouldNotBeNull();
         results.Count.ShouldBeInRange(2, int.MaxValue);
     }
 }
Exemple #33
0
        public void GeoNames_Get_ShouldReturnNull_ForGeoNameId921810()
        {
            using (var geoNames = new GeoNamesClient())
            {
                var result = geoNames.Get(921810, UserName);

                result.ShouldBeNull();
            }
        }
Exemple #34
0
 public void GeoNames_GeoNamesClient_ShouldImplementIConsumeGeoNames()
 {
     using (var client = new GeoNamesClient())
     {
         client.ShouldImplement(typeof(IConsumeGeoNames));
     }
 }
Exemple #35
0
        public void GeoNames_Hierarchy_ShouldReturn1Result_ForGeoNameId6295630()
        {
            using (var geoNames = new GeoNamesClient())
            {
                const int geoNameId = 6295630;
                var results = geoNames.Hierarchy(geoNameId, UserName, ResultStyle.Full);

                results.ShouldNotBeNull();
                results.ItemsList.ShouldNotBeNull();
                results.ItemsList.Count.ShouldEqual(1);
                results.ItemsList[0].AlternateNames.ShouldNotBeNull();
                results.ItemsList[0].AlternateNames.Count.ShouldBeInRange(1, int.MaxValue);
            }
        }
 public GeoNamesLookup()
 {
     geoNamesClient = new NGeo.GeoNames.GeoNamesClient();
 }