/// <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> /// <param name="nameBuider"></param> /// <param name="siteName"></param> /// <returns></returns> public Matrix ExtractCovaMatrix(NetDoubleDifferPositionParamNameBuilder nameBuider, string siteName) { var total = this.ResultMatrix.CovaOfEstimatedParam; var siteXName = nameBuider.GetSiteDx(siteName); var indexOfX = this.ResultMatrix.ParamNames.IndexOf(siteXName); Matrix cova = new Matrix(new SymmetricMatrix(3)); cova[0, 0] = total[indexOfX, indexOfX]; cova[0, 1] = total[indexOfX, indexOfX + 1]; cova[0, 2] = total[indexOfX, indexOfX + 2]; cova[1, 1] = total[indexOfX + 1, indexOfX + 1]; cova[1, 2] = total[indexOfX + 1, indexOfX + 2]; cova[2, 2] = total[indexOfX + 2, indexOfX + 2]; return(cova); }