/// <summary> /// Hozzáad egy megállót a csoporthoz, majd megkeresi a paraméterek alapján, /// hogy milyen következő megállók lehetségesek innen. /// </summary> /// <param name="stop"></param> /// <param name="stopsTripsDict">Adott stop-ban (int id) milyen trip-ek értelmezettek (list int id). Szótár.</param> /// <param name="tripsTimesDict">Adott trip (int id) megállói (list StopTime id). Szótár.</param> /// <param name="allStops">Az összes lehetséges megálló. Ezek már konkrét Stop példányok.</param> public void AddStop(Stop stop, Dictionary<int, List<int>> stopsTripsDict, Dictionary<int, List<StopTime>> tripsTimesDict, List<Stop> allStops) { this.AddStop(stop); // Az aktuális megálló alapján lekéri a tripeket List<int> listOfTrips; if (stopsTripsDict.TryGetValue(stop.DbId, out listOfTrips)) { // Minden trip-ben megkeresi a következő megállót, ha van foreach (int tripId in listOfTrips) { List<StopTime> listOfStopTimes; if (tripsTimesDict.TryGetValue(tripId, out listOfStopTimes)) { // Ezen még csiszolni kell, mert szűk keresztmetszetet jelenthet az Exception kezelés try { // Következő megálló keresése a rendezett megálló listában var mySequence = listOfStopTimes.First(lost => lost.stopId == stop.DbId).StopSequence; var nextStopId = listOfStopTimes.First(lost => lost.StopSequence > mySequence).stopId; AddNextStop(allStops.First(s => s.DbId == nextStopId)); } catch { // dummy } } } } }
/// <summary> /// Simán hozzáad egy megállót a csoporthoz /// </summary> /// <param name="stop"></param> public void AddStop(Stop stop) { stops.Add(stop); avgLatitude = stops.Average(s => s.StopLatitude); avgLongitude = stops.Average(s => s.StopLongitude); if (this.name.Equals("")) { this.name = stop.StopName; } if (!stop.HasSimilarNameTo(this.name)) { hasDifferentNames = true; } }
public TransferEdge(int toStopId, TimeSpan time, Stop srcStop = null, Stop dstStop = null) { _toStopId = toStopId; _time = time; if ((srcStop != null) && (dstStop != null)) { var distanceInMetres = MTR.Common.Utility.measureDistance ( srcStop.StopLatitude, srcStop.StopLongitude, dstStop.StopLatitude, dstStop.StopLongitude ); _cost = 2 + (int)(distanceInMetres * 0.015); // 1 km kb 15 perc (4kmph) } else { _cost = 10; } }
/// <summary> /// Pointert hoz létre egy lehetséges továbblépési pontra. /// </summary> /// <param name="stop"></param> public void AddNextStop(Stop stop) { nextStops.Add(stop); }