/* * 函館線 岩見沢方面の位置計算 * ・札幌方面はすべて札幌駅到着データで計算可能 * ・岩見沢方面は江別止まりを考慮し、札幌-江別と江別-岩見沢で別に計算 * ・ただし特急列車は江別を通過するので岩見沢のデータを利用する */ private static async Task <(TrainPositionData, TrainPositionData)> GetIwamizawaData(JrhLine jrhLine, Dictionary <int, TrainDataFile> dataFile) { var sapporoDatas = GetPosition(dataFile[91].ArrivalTrainDatas[JrhDestType.Hakodate_Iwamizawa], jrhLine); var ebetsuDatas = GetPosition(dataFile[99].ArrivalTrainDatas[JrhDestType.Sapporo_Hakodate], jrhLine) .Where(tuple => tuple.position >= 0 && tuple.position <= 15); var iwamizawaDatas = GetPosition(dataFile[103].ArrivalTrainDatas[JrhDestType.Sapporo_Hakodate], jrhLine) .Where(tuple => (tuple.position >= 16 && tuple.position <= 24) || tuple.trainData.Name.TrainType == TrainData.TrainTypes.Ltd_Exp); var sapporoArrData = new TrainPositionData(jrhLine, sapporoDatas); var sapporoDepData = new TrainPositionData(jrhLine, ebetsuDatas, iwamizawaDatas); return(sapporoArrData, sapporoDepData); }
/* * 函館線 小樽方面の位置計算 * ・札幌方面はすべて札幌到着データを利用。 * ・小樽方面のうち… * 札幌-手稲は手稲到着データ利用 * ほしみ到着データ(普通列車)のうち手稲-ほしみ間にある列車は反映 * 小樽到着データはほしみ-小樽間の列車及び、ほしみ通過の快速列車については手稲-小樽間で利用。 */ private static async Task <(TrainPositionData, TrainPositionData)> GetOtaruData(JrhLine jrhLine, Dictionary <int, TrainDataFile> dataFile) { var sapporoData = GetPosition(dataFile[91].ArrivalTrainDatas[JrhDestType.Hakodate_Otaru], jrhLine); var teineData = GetPosition(dataFile[85].ArrivalTrainDatas[JrhDestType.Sapporo_Hakodate], jrhLine) .Where(tuple => tuple.position >= 0 && tuple.position <= 11); var hoshimiData = GetPosition(dataFile[82].ArrivalTrainDatas[JrhDestType.Sapporo_Hakodate], jrhLine) .Where(tuple => tuple.position >= 12 && tuple.position <= 17); var otaruData = GetPosition(dataFile[76].ArrivalTrainDatas[JrhDestType.Sapporo_Hakodate], jrhLine) .Where(tuple => (tuple.position >= 18 && tuple.position <= 28) || (tuple.trainData.Name.GetTypesByStation(StationReader.GetStationByName("ほしみ")) == TrainData.TrainTypes.Rapid && tuple.position >= 12 && tuple.position <= 28)); var sapporoArrData = new TrainPositionData(jrhLine, new[] { sapporoData }); var sapporoDepData = new TrainPositionData(jrhLine, new[] { teineData, hoshimiData, otaruData }); return(sapporoArrData, sapporoDepData); }
/* * 札沼線の位置計算 * ・札幌到着はすべて反映。 * ・あいの里公園、石狩当別、医療大学の札幌方面からの列車は順番に反映。 * ・医療大-当別間の、月形方面からの列車を反映する為に当別到着のデータから月形方面のデータも反映。 */ private static async Task <(TrainPositionData, TrainPositionData)> GetSassyoData(JrhLine jrhLine, Dictionary <int, TrainDataFile> dataFile) { var sapporoData = GetPosition(dataFile[91].ArrivalTrainDatas[JrhDestType.Sassyo_IshikariTobetsu], jrhLine); var koenData = GetPosition(dataFile[259].ArrivalTrainDatas[JrhDestType.Sapporo_Sassyo], jrhLine) .Where(tuple => tuple.position >= 0 && tuple.position <= 19); var tobetsuData = GetPosition(dataFile[261].ArrivalTrainDatas[JrhDestType.Sapporo_Sassyo], jrhLine) .Where(tuple => tuple.position >= 20 && tuple.position <= 23); var tobetsuTsukigataData = GetPosition(dataFile[261].ArrivalTrainDatas[JrhDestType.Sassyo_Urausu], jrhLine); var iryodaiData = GetPosition(dataFile[262].ArrivalTrainDatas[JrhDestType.Sapporo_Sassyo], jrhLine) .Where(tuple => tuple.position >= 24); var sapporoArrData = new TrainPositionData(jrhLine, sapporoData, tobetsuTsukigataData); var sapporoDepData = new TrainPositionData(jrhLine, koenData, tobetsuData, iryodaiData); return(sapporoArrData, sapporoDepData); }
private static async Task <(TrainPositionData, TrainPositionData)> GetSekisyoData(JrhLine jrhLine, Dictionary <int, TrainDataFile> dataFile) { var minamiChitoseData = GetPosition(dataFile[245].ArrivalTrainDatas[JrhDestType.Sekisyo_Oiwake_Obihiro], jrhLine); var oiwakeData = GetPosition(dataFile[220].ArrivalTrainDatas[JrhDestType.Sekisyo_MinamiChitose_Sapporo], jrhLine) .Where(tuple => tuple.trainData.Name.TrainType == TrainData.TrainTypes.Local); var shinyubariData = GetPosition(dataFile[288].ArrivalTrainDatas[JrhDestType.Sekisyo_Shiyubari], jrhLine) .Where(tuple => tuple.trainData.Name.TrainType == TrainData.TrainTypes.Local && tuple.position >= 6); var tomamuData = GetPosition(dataFile[297].ArrivalTrainDatas[JrhDestType.Sekisyo_Oiwake_Sapporo], jrhLine) .Where(tuple => tuple.trainData.Destination.StationId == 297); var shintokuData = GetPosition(dataFile[325].ArrivalTrainDatas[JrhDestType.Sekisyo_MinamiChitose_Sapporo], jrhLine); var arrData = new TrainPositionData(jrhLine, minamiChitoseData); var depData = new TrainPositionData(jrhLine, oiwakeData, shinyubariData, tomamuData, shintokuData); return(arrData, depData); }
/* * 千歳線の位置計算 * ・札幌方面はすべて札幌到着データ利用。 * ・札幌-千歳間は特急以外反映。 * ・札幌-南千歳は全反映。札幌-南千歳の特急も反映。 * ・南千歳-苫小牧も全反映。 */ private static async Task <(TrainPositionData, TrainPositionData)> GetChitoseData(JrhLine jrhLine, Dictionary <int, TrainDataFile> dataFile) { var sapporoData = GetPosition(dataFile[91].ArrivalTrainDatas[JrhDestType.Chitose_Chitose], jrhLine); var sapporoRapidData = GetPosition(dataFile[91].ArrivalTrainDatas[JrhDestType.Chitose_Rapid_AP], jrhLine); var chitoseData = GetPosition(dataFile[244].ArrivalTrainDatas[JrhDestType.Sapporo_Chitose], jrhLine) .Where(tuple => tuple.position >= 0 && tuple.position <= 23 && tuple.trainData.Name.TrainType != TrainData.TrainTypes.Ltd_Exp); var minamiChitoseData = GetPosition(dataFile[245].ArrivalTrainDatas[JrhDestType.Chitose_LocalRapid_Sapporo], jrhLine) .Where(tuple => tuple.position >= 24 && tuple.position <= 25); var minamiChitoseExpData = GetPosition(dataFile[245].ArrivalTrainDatas[JrhDestType.Chitose_LimExp_Sapporo], jrhLine); var TomakomaiData = GetPosition(dataFile[215].ArrivalTrainDatas[JrhDestType.Sapporo_Chitose], jrhLine) .Where(tuple => tuple.position >= 26 && tuple.position <= 30); var sapporoArrData = new TrainPositionData(jrhLine, sapporoData, sapporoRapidData); var sapporoDepData = new TrainPositionData(jrhLine, chitoseData, minamiChitoseData, minamiChitoseExpData, TomakomaiData); return(sapporoArrData, sapporoDepData); }