/// <summary> /// 默认的状态转移模型生成 /// </summary> /// <param name="key">参数名称</param> /// <returns></returns> public override BaseStateTransferModel Create(string key) { if ( key.Contains(ParamNames.Dx) || key.Contains(ParamNames.Dy) || key.Contains(ParamNames.Dz) ) { if (Option.PositionType == PositionType.静态定位) { return(new StaticTransferModel(Option.StdDevOfStaticTransferModel)); } else//动态定位 { return(new WhiteNoiseModel(Option.StdDevOfWhiteNoiseOfDynamicPosition));// 50, lly edit in 2018.07.14 //return new RandomWalkModel(Option.StdDevOfRandomWalkModel); } } else if ( key.Contains(ParamNames.Dvx) || key.Contains(ParamNames.Dvy) || key.Contains(ParamNames.Dvz) ) { if (Option.PositionType == PositionType.静态定位) { return(new StaticTransferModel(Option.StdDevOfStaticTransferModel)); } else//动态定位 { return(new WhiteNoiseModel(Option.StdDevOfWhiteNoiseOfDynamicPosition));//50, lly edit in 2018.07.14 //return new RandomWalkModel(Option.StdDevOfRandomWalkModel); } } else if ( key.Contains(ParamNames.RcvClkDriftDistance) ) { return(new RandomWalkModel(Option.StdDevOfSysTimeRandomWalkModel)); } else if (key.Contains(ParamNames.SatClkErrDistance)) { return(new WhiteNoiseModel(Option.StdDevOfSatClockWhiteNoiseModel)); } else if ( key.Contains(ParamNames.RcvClkErrDistance) || key.Contains(ParamNames.cDt) ) { return(new WhiteNoiseModel(Option.StdDevOfRevClockWhiteNoiseModel)); } else if ( key.Contains(ParamNames.WetTropZpd) || key.Contains(ParamNames.Trop) ) { return(new RandomWalkModel(Option.StdDevOfTropoRandomWalkModel)); } else if ( key.Contains(ParamNames.Iono) ) { return(new RandomWalkModel(Option.StdDevOfIonoRandomWalkModel)); } else if (key.Contains(ParamNames.SysTimeDistDifferOf)) { return(new RandomWalkModel(Option.StdDevOfSysTimeRandomWalkModel)); } else if ( key.Contains(ParamNames.DifferAmbiguity) || key.Contains(ParamNames.DoubleDifferAmbiguity) //双星差分模糊度,具有基准星 ) { var prn = SatelliteNumber.TryParseFirst(key);//约定:第一个是当前卫星,第二个是基准星 return(new DueSatPhaseAmbiguityMode(prn, Option.StdDevOfPhaseModel, Option.StdDevOfCycledPhaseModel)); } else if ( key.Contains(ParamNames.PhaseLengthSuffix) || key.Contains(ParamNames.PhaseALengthSuffix) || key.Contains(ParamNames.PhaseBLengthSuffix) || key.Contains(ParamNames.PhaseCLengthSuffix) ) { if (key.Count(m => m == '_') >= 2)// 2 个以上分隔符,则认为是有测站 { var strs = key.Split(new char[] { '_' }, StringSplitOptions.RemoveEmptyEntries); var siteName = strs[0]; var prn = SatelliteNumber.Parse(strs[1]); if (prn == SatelliteNumber.Default) { log.Error("卫星 名称解析错误!!" + key); throw new Exception("卫星 名称解析错误!!" + key); } return(new SiteSatPhaseAmbiguityModel(siteName, prn, Option.StdDevOfPhaseModel, Option.StdDevOfCycledPhaseModel)); } else { var prn = SatelliteNumber.Parse(key); if (prn == SatelliteNumber.Default) { log.Error("卫星 名称解析错误!!" + key); throw new Exception("卫星 名称解析错误!!" + key); } return(new SingleSatPhaseAmbiguityModel(prn, Option.StdDevOfPhaseModel, Option.StdDevOfCycledPhaseModel)); } } else if ( key.Contains(ParamNames.Dcb) ) { var prn = SatelliteNumber.Parse(key); // return new StaticTransferModel(Option.StdDevOfStaticTransferModel); return(new WhiteNoiseModel(Option.StdDevOfRevClockWhiteNoiseModel)); return(new RandomWalkModel(0.001)); return(new SingleSatPhaseAmbiguityModel(prn, 0.001, Option.StdDevOfCycledPhaseModel)); } return(base.Create(key)); }