/// <summary> /// Paralelně provede pokus o nalezení nejbližšího bodu a použití jeho výšky /// </summary> /// <param name="locations">kolekce lokací pro které chceme získat výšku</param> /// <param name="elevationResponse">referencovaná odpověď do které chceme výsledky zapsat</param> /// <param name="premiumUser">Prémiový uživatel</param> /// <param name="spheroid">Použít sféroid pro výpočet vzdálenosti (pomalejší)</param> /// <returns>Kolekce lokací pro které nebyla nalezena výška</returns> private static IEnumerable <Location> GetPointsFromDbParallel(IEnumerable <Location> locations, ref ElevationResponse elevationResponse, bool premiumUser, bool spheroid) { var locsWithoutElevation = new List <Location>(); List <ResultDistance> resultDistances; try { resultDistances = PostgreDbConnector.GetClosestPointWithinParallel(locations, WITHIN_DISTANCE, premiumUser, spheroid); } catch (Exception e) { Console.WriteLine(e.Message); logger.Error(e); throw; } foreach (Result result in elevationResponse.result) { ResultDistance closest = resultDistances.Find(rd => rd.Result.location.Equals(result.location)); if (closest.Distance <= MAX_DISTANCE && closest.Distance >= 0) { result.elevation = closest.Result.elevation; result.resolution = closest.Result.resolution != -1 ? closest.Result.resolution : closest.Distance; } else { locsWithoutElevation.Add(result.location); } } return(locsWithoutElevation); }
/// <summary> /// Provede pokus o nalezení nejbližšího bodu a použití jeho výšky /// </summary> /// <param name="locations">kolekce lokací pro které chceme získat výšku</param> /// <param name="elevationResponse">referencovaná odpověď do které chceme výsledky zapsat</param> /// <param name="premiumUser">Prémiový uživatel</param> /// <param name="spheroid">Použít sféroid pro výpočet vzdálenosti (pomalejší)</param> /// <returns>Kolekce lokací pro které nebyla nalezena výška</returns> private static IEnumerable <Location> GetPointsFromDb(IEnumerable <Location> locations, ref ElevationResponse elevationResponse, bool premiumUser, bool spheroid) { var locsWithoutElevation = new List <Location>(); foreach (Result result in elevationResponse.result) { var closest = new ResultDistance(); try { closest = PostgreDbConnector.GetClosestPointWithin(result.location, WITHIN_DISTANCE, premiumUser, spheroid); } catch (Exception e) { Console.WriteLine(e.Message); logger.Error(e); } if (closest.Distance <= MAX_DISTANCE && closest.Distance >= 0) { result.elevation = closest.Result.elevation; result.resolution = closest.Result.resolution != -1 || closest.Result.resolution != 0 ? closest.Result.resolution : closest.Distance; } else { locsWithoutElevation.Add(result.location); } } return(locsWithoutElevation); }