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; } }
//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]); } }
public void GeoNames_Children_ShouldReturnNull_WithoutUserName() { using (var geoNames = new GeoNamesClient()) { const int geoNameId = 6295630; var results = geoNames.Children(geoNameId, null); results.ShouldBeNull(); } }
public void GeoNames_Countries_ShouldReturnNull_WithoutUserName() { using (var geoNames = new GeoNamesClient()) { var results = geoNames.Countries(null); results.ShouldBeNull(); } }
public void GeoNames_Children_ShouldReturn7Results_ForGeoNameId6295630() { using (var geoNames = new GeoNamesClient()) { const int geoNameId = 6295630; var results = geoNames.Children(geoNameId, UserName); results.ShouldNotBeNull(); } }
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); }
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); } } } } }
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}." ); }
//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; } }
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; } }
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"); } }
//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); } }
//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); }
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); } }
public void GeoNames_FindNearbyPlaceName_ShouldReturnNull_WithoutUserName() { using (var geoNames = new GeoNamesClient()) { var finder = new NearbyPlaceNameFinder(); var results = geoNames.FindNearbyPlaceName(finder); results.ShouldBeNull(); } }
public void GeoNames_FindNearbyPlaceName_ShouldThrowException_WhenArgIsNull() { using (var geoNames = new GeoNamesClient()) { geoNames.FindNearbyPlaceName(null); } }
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); } }
public void GeoNames_PostalCodeCountryInfo_ShouldReturnNull_WithoutUserName() { using (var geoNames = new GeoNamesClient()) { var results = geoNames.PostalCodeCountryInfo(null); results.ShouldBeNull(); } }
public void GeoNames_Get_ShouldReturn1EarthResult_ForGeoNameId6295630() { using (var geoNames = new GeoNamesClient()) { var result = geoNames.Get(6295630, UserName); result.ShouldNotBeNull(); } }
public void GeoNames_LookupPostalCode_ShouldReturnNull_WithoutUserName() { using (var geoNames = new GeoNamesClient()) { var finder = new PostalCodeLookup(); var results = geoNames.LookupPostalCode(finder); results.ShouldBeNull(); } }
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"); } }
public void GeoNames_GeoNamesClient_ShouldBePublic() { using (var client = new GeoNamesClient()) { client.ShouldNotBeNull(); } }
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(); } }
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"); } }
public void GeoNames_GeoNamesClient_ShouldImplementClientBase_WithIInvokeGeoNamesServices() { using (var client = new GeoNamesClient()) { client.ShouldImplement(typeof(ClientBase<IInvokeGeoNamesServices>)); } }
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"); } }
public void GeoNames_LookupPostalCode_ShouldThrowException_WhenArgIsNull() { using (var geoNames = new GeoNamesClient()) { geoNames.LookupPostalCode(null); } }
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"); } }
public void GeoNames_PostalCodeCountryInfo_ShouldReturnMultipleResults() { using (var geoNames = new GeoNamesClient()) { var results = geoNames.PostalCodeCountryInfo(UserName); results.ShouldNotBeNull(); results.Count.ShouldBeInRange(2, int.MaxValue); } }
public void GeoNames_Get_ShouldReturnNull_ForGeoNameId921810() { using (var geoNames = new GeoNamesClient()) { var result = geoNames.Get(921810, UserName); result.ShouldBeNull(); } }
public void GeoNames_GeoNamesClient_ShouldImplementIConsumeGeoNames() { using (var client = new GeoNamesClient()) { client.ShouldImplement(typeof(IConsumeGeoNames)); } }
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(); }