示例#1
0
        /*
         * 函館線 岩見沢方面の位置計算
         * ・札幌方面はすべて札幌駅到着データで計算可能
         * ・岩見沢方面は江別止まりを考慮し、札幌-江別と江別-岩見沢で別に計算
         * ・ただし特急列車は江別を通過するので岩見沢のデータを利用する
         */
        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);
        }
示例#2
0
        /*
         * 函館線 小樽方面の位置計算
         * ・札幌方面はすべて札幌到着データを利用。
         * ・小樽方面のうち…
         *   札幌-手稲は手稲到着データ利用
         *   ほしみ到着データ(普通列車)のうち手稲-ほしみ間にある列車は反映
         *    小樽到着データはほしみ-小樽間の列車及び、ほしみ通過の快速列車については手稲-小樽間で利用。
         */
        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);
        }
示例#3
0
        /*
         * 札沼線の位置計算
         * ・札幌到着はすべて反映。
         * ・あいの里公園、石狩当別、医療大学の札幌方面からの列車は順番に反映。
         * ・医療大-当別間の、月形方面からの列車を反映する為に当別到着のデータから月形方面のデータも反映。
         */
        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);
        }
示例#4
0
        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);
        }
示例#5
0
        /*
         * 千歳線の位置計算
         * ・札幌方面はすべて札幌到着データ利用。
         * ・札幌-千歳間は特急以外反映。
         * ・札幌-南千歳は全反映。札幌-南千歳の特急も反映。
         * ・南千歳-苫小牧も全反映。
         */
        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);
        }