/// <summary> /// 提取基线 /// </summary> /// <param name="nameBuider"></param> /// <param name="siteName"></param> /// <returns></returns> private RmsedXYZ ExtractBaseline(NetDoubleDifferPositionParamNameBuilder nameBuider, string siteName) { var siteXyzNames = nameBuider.GetSiteDxyz(siteName); RmsedXYZ rmsedXYZ = new RmsedXYZ(); int i = 0; foreach (var siteXyzName in siteXyzNames) { var rmsVal = this.ResultMatrix.Estimated.Get(siteXyzName); if (i == 0) { rmsedXYZ.Value.X = rmsVal.Value; rmsedXYZ.Rms.X = rmsVal.Rms; } if (i == 1) { rmsedXYZ.Value.Y = rmsVal.Value; rmsedXYZ.Rms.Y = rmsVal.Rms; } if (i == 2) { rmsedXYZ.Value.Z = rmsVal.Value; rmsedXYZ.Rms.Z = rmsVal.Rms; } i++; } return(rmsedXYZ); }
/// <summary> /// 提取基线结果 /// </summary> /// <returns></returns> public BaseLineNet GetEstimatedBaselines() { if (EstimatedBaselines != null) { return(EstimatedBaselines); } var baseLineResult = new BaseLineNet(); var nameBuider = (NetDoubleDifferPositionParamNameBuilder)this.NameBuilder; var baseSiteName = this.MaterialObj.BaseSiteName; var refSite = this.MaterialObj.BaseEpochInfo; foreach (var site in this.MaterialObj) { var siteName = site.SiteName; if (String.Equals(siteName, baseSiteName, StringComparison.CurrentCultureIgnoreCase)) { continue; } RmsedXYZ rmsedXYZ = ExtractBaseline(nameBuider, siteName); var cova = ExtractCovaMatrix(nameBuider, siteName); baseLineResult.Add(new EstimatedBaseline(refSite, site, rmsedXYZ, cova, this.ResultMatrix.StdDev) { ResultType = this.ResultMatrix.ResultType, GnssSolverType = this.NameBuilder.Option.GnssSolverType }); } EstimatedBaselines = baseLineResult; return(baseLineResult); }
/// <summary> /// 复测基线较差 /// </summary> /// <param name="ClosureError"></param> /// <param name="baseLine"></param> /// <param name="GnssReveiverNominalAccuracy"></param> public QualityOfRepeatError(EstimatedBaseline baseLine, RmsedXYZ ClosureError, GnssReveiverNominalAccuracy GnssReveiverNominalAccuracy) : base(baseLine, ClosureError, GnssReveiverNominalAccuracy) { this.ClosureError = ClosureError; this.EstimatedBaseline = baseLine; this.GnssReveiverNominalAccuracy = GnssReveiverNominalAccuracy; }
/// <summary> /// 默认 /// </summary> public EstimatedBaseline() { this.BaseLineName = new GnssBaseLineName(); EstimatedVectorRmsedXYZ = new RmsedXYZ(); StdDev = 1; ClosureError = 1; }
public AdjustedBaseLine(EstimatedBaseline baseline, RmsedXYZ RefCoord, RmsedXYZ RovCoord, double NetStdDev) { this.EstimatedBaseline = baseline; this.RefCoord = RefCoord; this.RovCoord = RovCoord; this.NetStdDev = NetStdDev; this.MaxAllowedStdDev = 3.0 * this.NetStdDev;//3倍中误差 }
/// <summary> /// 最简单的构造函数,支持从文本读取 /// </summary> /// <param name="Name"></param> /// <param name="refXYyz"></param> /// <param name="rovXYyz"></param> /// <param name="epoch"></param> /// <param name="EstimatedVector"></param> /// <param name="CovaMatrix"></param> /// <param name="stdDev"></param> public EstimatedBaseline(string Name, Time epoch, XYZ refXYyz, XYZ rovXYyz, RmsedXYZ EstimatedVector, Matrix CovaMatrix, double stdDev) { this.BaseLineName = new GnssBaseLineName(Name); this.CovaMatrix = CovaMatrix; this.ApproxXyzOfRef = refXYyz; this.ApproxXyzOfRov = rovXYyz; this.EstimatedVectorRmsedXYZ = EstimatedVector; this.Epoch = epoch; this.StdDev = stdDev; this.CorrectionOfRov = new RmsedXYZ((EstimatedVector.Value - ApproxVector), EstimatedVector.Rms); this.ClosureError = 1; }
/// <summary> /// 构造函数 /// </summary> /// <param name="epoch"></param> /// <param name="RefName"></param> /// <param name="RovName"></param> /// <param name="CovaMatrix"></param> /// <param name="stdDev"></param> /// <param name="RovEstmatedXYZCorrection"></param> public EstimatedBaseline(ISiteInfo RefName, ISiteInfo RovName, Time epoch, RmsedXYZ RovEstmatedXYZCorrection, Matrix CovaMatrix, double stdDev) { this.CovaMatrix = CovaMatrix; this.SiteInfoOfRef = RefName; this.SiteInfoOfRov = RovName; this.Epoch = epoch; this.BaseLineName = new GnssBaseLineName(this.SiteInfoOfRov.SiteName, this.SiteInfoOfRef.SiteName); this.ApproxXyzOfRef = RefName.ApproxXyz; this.ApproxXyzOfRov = RovName.ApproxXyz; this.CorrectionOfRov = RovEstmatedXYZCorrection; this.EstimatedVectorRmsedXYZ = new RmsedXYZ(ApproxVector + CorrectionOfRov.Value, CorrectionOfRov.Rms); StdDev = stdDev; ClosureError = 1; }
public static EstimatedSite ParseRow(Dictionary <string, object> row) { EstimatedSite est = new EstimatedSite(); var name = row[ParamNames.Name] + ""; double x = Geo.Utils.ObjectUtil.GetNumeral(row[ParamNames.X]); double y = Geo.Utils.ObjectUtil.GetNumeral(row[ParamNames.Y]); double z = Geo.Utils.ObjectUtil.GetNumeral(row[ParamNames.Z]); var rmsedXyz = new RmsedXYZ(new XYZ(x, y, z)); if (row.ContainsKey(ParamNames.RmsX)) { double rmsX = Geo.Utils.ObjectUtil.GetNumeral(row[ParamNames.RmsX]); double rmsY = Geo.Utils.ObjectUtil.GetNumeral(row[ParamNames.RmsY]); double rmsZ = Geo.Utils.ObjectUtil.GetNumeral(row[ParamNames.RmsZ]); rmsedXyz.Rms = new XYZ(rmsX, rmsY, rmsZ); } var time = (Time)row[ParamNames.Epoch]; return(new EstimatedSite(name, rmsedXyz, time)); }
public Dictionary <String, Object> GetObjectRow(string name, RmsedXYZ corredXyz, XYZ Dxyz) { Dictionary <string, object> row = new Dictionary <string, object>(); row[ParamNames.Name] = name; row[ParamNames.X] = corredXyz.Value.X; row[ParamNames.Y] = corredXyz.Value.Y; row[ParamNames.Z] = corredXyz.Value.Z; row[ParamNames.RmsX] = corredXyz.Rms.X; row[ParamNames.RmsY] = corredXyz.Rms.Y; row[ParamNames.RmsZ] = corredXyz.Rms.Z; row[ParamNames.Dx] = Dxyz.X; row[ParamNames.Dy] = Dxyz.Y; row[ParamNames.Dz] = Dxyz.Z; var geoCood = Geo.Coordinates.CoordTransformer.XyzToGeoCoord(corredXyz.Value); row[ParamNames.Lon] = geoCood.Lon; row[ParamNames.Lat] = geoCood.Lat; row[ParamNames.Height] = geoCood.Height; return(row); }
//提取改正数 private void SetCorrection(List <string> sites, AdjustResultMatrix resultMatrix) { Correction = new Dictionary <string, RmsedXYZ>(); int i = 0; var Estimated = resultMatrix.Estimated; var stdDevOfEst = resultMatrix.StdOfEstimatedParam; foreach (var name in sites) { var estXyz = new XYZ(); var x = Estimated[i + 0]; var y = Estimated[i + 1]; var z = Estimated[i + 2]; var xyz = new XYZ(x, y, z); var rmsx = (stdDevOfEst[i + 0]); var rmsy = (stdDevOfEst[i + 1]); var rmsz = (stdDevOfEst[i + 2]); var rms = new XYZ(rmsx, rmsy, rmsz); Correction[name] = new RmsedXYZ(xyz, rms); i = i + 3; } }
/// <summary> /// 构造函数 /// </summary> /// <param name="LineName"></param> /// <param name="RmsedXYZ"></param> public BaseLineRepeatError(GnssBaseLineName LineName, RmsedXYZ RmsedXYZ) { this.LineName = LineName; this.RmsedXYZ = RmsedXYZ; }
/// <summary> /// 构造函数 /// </summary> /// <param name="refSite"></param> /// <param name="rovSite"></param> /// <param name="stdDev"></param> /// <param name="CovaMatrix"></param> /// <param name="RovEstmatedXYZCorrection"></param> public EstimatedBaseline(EpochInformation refSite, EpochInformation rovSite, RmsedXYZ RovEstmatedXYZCorrection, Matrix CovaMatrix, double stdDev) : this(refSite.SiteInfo, rovSite.SiteInfo, refSite.ReceiverTime, RovEstmatedXYZCorrection, CovaMatrix, stdDev) { }
public void SetRmsedXyz(RmsedXYZ value) { Xyz = value.Value; Rms = value.Rms; }
public EstimatedSite(string SiteName, RmsedXYZ RmsedXYZ, Time epoch) { this.SiteName = SiteName; this.RmsedXYZ = RmsedXYZ; this.Epoch = epoch; }
/// <summary> /// 初始化 /// </summary> /// <param name="baseLine"></param> /// <param name="ClosureError"></param> /// <param name="GnssReveiverNominalAccuracy"></param> public void Init(EstimatedBaseline baseLine, RmsedXYZ ClosureError, GnssReveiverNominalAccuracy GnssReveiverNominalAccuracy) { this.ClosureError = ClosureError; this.EstimatedBaseline = baseLine; this.GnssReveiverNominalAccuracy = GnssReveiverNominalAccuracy; }
/// <summary> /// 构造函数 /// </summary> /// <param name="baseLine"></param> /// <param name="ClosureError"></param> /// <param name="GnssReveiverNominalAccuracy"></param> public QualityBaseLine(EstimatedBaseline baseLine, RmsedXYZ ClosureError, GnssReveiverNominalAccuracy GnssReveiverNominalAccuracy) { Init(baseLine, ClosureError, GnssReveiverNominalAccuracy); }