public void FillRemainingWays() { var rnd = new Random(); var orsKey = Environment.GetEnvironmentVariable("open-route-service-key"); var openRouteServiceCalculator = new GeoCalculations.RouteCalculation.OpenRouteServiceCalculator(orsKey); using (var dbSession = SessionFactory.Instance.OpenSession()) { var fromVisits = dbSession.Query <Visit>().Where(v => v.Year == 2018 && v.Id == 133) .ToArray(); var toVisits = dbSession.Query <Visit>().Where(v => v.Year == 2018 && v.Id == 108) .ToArray(); foreach (var fromVisit in fromVisits) { foreach (var toVisit in toVisits) { var(distance, duration) = openRouteServiceCalculator.CalculateWalkingDistance((fromVisit.Lat, fromVisit.Long), (toVisit.Lat, toVisit.Long)); var way = new Way { Distance = (int)Math.Ceiling(distance), Duration = (int)Math.Ceiling(duration), From = fromVisit, To = toVisit }; dbSession.Save(way); Thread.Sleep((int)(300 + rnd.NextDouble() * 100)); } } } }
public void CallDistanceMatrixFunctionality() { var orsKey = Environment.GetEnvironmentVariable("open-route-service-key"); var openRouteServiceCalculator = new GeoCalculations.RouteCalculation.OpenRouteServiceCalculator(orsKey); using (var dbSession = SessionFactory.Instance.OpenSession()) { var visits = dbSession.Query <Visit>().Where(v => v.Year == 2018).ToArray(); var coordinates = visits.Select(v => (v.Lat, v.Long)).ToArray(); var(distance, duration) = openRouteServiceCalculator.CalculateWalkingDistanceMatrix(coordinates); System.IO.File.WriteAllText("distances.txt", JsonConvert.SerializeObject(distance)); System.IO.File.WriteAllText("durations.txt", JsonConvert.SerializeObject(duration)); for (int i = 0; i < coordinates.Length; i++) { for (int j = 0; j < coordinates.Length; j++) { visits[i].ToWays.Add(new Way { Distance = (int)Math.Ceiling(distance[i, j]), Duration = (int)Math.Ceiling(duration[i, j]), From = visits[i], To = visits[j] }); } dbSession.Update(visits[i]); } } }