/// <summary> /// Adds a transfers db. /// </summary> public static void AddTransfersDb(this TransitDb db, Profiles.Profile profile, IAttributeCollection defaultProfile, float maxTimeInSeconds) { var transfersDb = new TransfersDb(db.StopsCount); var factor = profile.Factor(defaultProfile); // add all transfers. var enumerator1 = db.GetStopsEnumerator(); while (enumerator1.MoveNext()) { var enumerator2 = db.GetStopsEnumerator(); while (enumerator2.MoveNext()) { if (enumerator1.Id < enumerator2.Id) { var distance = Coordinate.DistanceEstimateInMeter(enumerator1.Latitude, enumerator1.Longitude, enumerator2.Latitude, enumerator2.Longitude); var time = (int)System.Math.Round(distance * factor.Value, 0); if (time < maxTimeInSeconds) { transfersDb.AddTransfer(enumerator1.Id, enumerator2.Id, time); } } } } db.AddTransfersDb(profile, transfersDb); }
/// <summary> /// Deserializes from stream. /// </summary> public static TransitDb Deserialize(Stream stream) { var version = stream.ReadByte(); if (version > 2) { throw new Exception("Cannot deserialize db, version # doesn't match."); } // read agencies attributes. var agencyAttributes = AttributesIndex.Deserialize(new LimitedStream(stream), true); // read connections db. var connectionsDb = ConnectionsDb.Deserialize(stream); // read schedules db. var schedulesDb = SchedulesDb.Deserialize(stream); // read stop attributes. var stopAttributes = AttributesIndex.Deserialize(new LimitedStream(stream), true); // read stop db. var stopsDb = StopsDb.Deserialize(stream); // read transfer db's. var transferDbsCount = stream.ReadByte(); var transferDbs = new Dictionary <string, TransfersDb>(); for (var i = 0; i < transferDbsCount; i++) { var profileName = stream.ReadWithSizeString(); var transferDb = TransfersDb.Deserialize(stream); transferDbs.Add(profileName, transferDb); } // read trip attributes. var tripAttributes = AttributesIndex.Deserialize(new LimitedStream(stream), true); // write trips db. var tripsDb = TripsDb.Deserialize(stream); ShapesDb shapesDb = null; if (version != 1) { // write shapes db. shapesDb = ShapesDb.Deserialize(stream); } return(new TransitDb(agencyAttributes, connectionsDb, schedulesDb, stopAttributes, stopsDb, transferDbs, tripAttributes, tripsDb, shapesDb)); }
/// <summary> /// Adds the transfers db. /// </summary> public void AddTransfersDb(Profiles.Profile profile, TransfersDb db) { if (profile == null) { throw new ArgumentNullException("profile"); } if (db == null) { throw new ArgumentNullException("db"); } _transfersDbs[profile.Name] = db; }
/// <summary> /// Gets the transfers db. /// </summary> public TransfersDb GetTransfersDb(Profiles.Profile profile) { if (profile == null) { throw new ArgumentNullException("profile"); } TransfersDb transfersDb = null; if (_transfersDbs.TryGetValue(profile.Name, out transfersDb)) { return(transfersDb); } return(null); }