Пример #1
0
        /// <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
                        }
                    }
                }
            }
        }
Пример #2
0
        /// <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;
            }
        }
Пример #3
0
        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;
            }
        }
Пример #4
0
 /// <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);
 }