public async Task <List <Feature> > GetByBoundingBox(Coordinate sourthWest, Coordinate northEast, string language) { for (int retryIndex = 0; retryIndex < 3; retryIndex++) { try { var geoSearchGenerator = new GeoSearchGenerator(_wikiSites[language]) { BoundingRectangle = GeoCoordinateRectangle.FromBoundingCoordinates(sourthWest.X, sourthWest.Y, northEast.X, northEast.Y), PaginationSize = 500 }; var results = await geoSearchGenerator.EnumItemsAsync().ToListAsync(); var features = new List <Feature>(); foreach (var geoSearchResultItem in results) { var coordinate = new CoordinateZ(geoSearchResultItem.Coordinate.Longitude, geoSearchResultItem.Coordinate.Latitude); var attributes = GetAttributes(coordinate, geoSearchResultItem.Page.Title, geoSearchResultItem.Page.Id.ToString(), language); features.Add(new Feature(new Point(coordinate), attributes)); } return(features); } catch { // this is used since this function throws an unrelated timeout error... } } _logger.LogError($"All Retries failed while trying to get data from {language}.wikipedia"); return(new List <Feature>()); }
public async Task <List <Feature> > GetByLocation(Coordinate center, string language) { for (int retryIndex = 0; retryIndex < 3; retryIndex++) { try { var geoSearchGenerator = new GeoSearchGenerator(_wikiSites[language]) { TargetCoordinate = new GeoCoordinate(center.Y, center.X), Radius = 10000, PaginationSize = 500 }; var results = await geoSearchGenerator.EnumItemsAsync().ToList(); var features = new List <Feature>(); foreach (var geoSearchResultItem in results) { var coordinate = new Coordinate(geoSearchResultItem.Coordinate.Longitude, geoSearchResultItem.Coordinate.Latitude); var attributes = GetAttributes(coordinate, geoSearchResultItem.Page.Title, geoSearchResultItem.Page.Id.ToString(), language); features.Add(new Feature(new Point(coordinate), attributes)); } return(features); } catch { // this is used since this function throws an unrelated timeout error... } } _logger.LogError($"All Retries failed while trying to get data from {language}.wikipedia"); return(new List <Feature>()); }
public async Task WpEnGeoSearchTest2() { var site = await WpEnSiteAsync; var gen = new GeoSearchGenerator(site) { BoundingRectangle = new GeoCoordinateRectangle(1.9, 47.1, 0.2, 0.2) }; var result = await gen.EnumItemsAsync().Take(20).FirstOrDefaultAsync(r => r.Page.Title == "France"); ShallowTrace(result); Assert.NotNull(result); Assert.True(result.IsPrimaryCoordinate); }
public async Task WpEnGeoSearchTest1() { var site = await WpEnSiteAsync; var gen = new GeoSearchGenerator(site) { TargetCoordinate = new GeoCoordinate(47.01, 2), Radius = 2000 }; var result = await gen.EnumItemsAsync().Take(10).FirstOrDefaultAsync(r => r.Page.Title == "France"); ShallowTrace(result); Assert.NotNull(result); Assert.InRange(result.Distance, 1110, 1113); Assert.True(result.IsPrimaryCoordinate); }