Пример #1
0
        /// <summary>
        /// 构建参数平差观测方程,并进行平差计算。
        /// </summary>
        /// <param name="fileA"></param>
        /// <param name="fileB"></param>
        /// <returns></returns>
        private double[][] Adjust(SinexFile fileA, SinexFile fileB)
        {
            //检查一下是否只包含坐标,如否,则清理。
            if (!fileA.IsOnlyEstimateCoordValue)
            {
                fileA.CleanNonCoordSolutionValue();
            }
            if (!fileB.IsOnlyEstimateCoordValue)
            {
                fileB.CleanNonCoordSolutionValue();
            }

            double[][] A = SinexSubNetsUnion.GetCoeffMatrixOfParams(fileA, fileB);
            double[][] Q = SinexSubNetsUnion.GetCovaMatrixOfObs(fileA, fileB);
            double[][] obsMinusApriori = SinexSubNetsUnion.GetObsMinusApriori(fileA, fileB);
            var        pa = new ParamAdjuster();

            p = pa.Run(new AdjustObsMatrix(A, obsMinusApriori, Q));

            double[][] apriori = GetApriori(fileA, fileB);


            //MatrixUtil.SaveToText(A, @"C:\A.txt");
            //MatrixUtil.SaveToText(Q, @"C:\Q.txt");
            //MatrixUtil.SaveToText(obsMinusApriori, @"C:\l.txt");
            //MatrixUtil.SaveToText(apriori, @"C:\D.txt");

            xyzs = GetXyzs(MatrixUtil.GetPlus(p.Estimated.OneDimArray, apriori));

            geoCoords = new List <GeoCoord>();
            foreach (var item in xyzs)
            {
                geoCoords.Add(CoordTransformer.XyzToGeoCoord(item));
            }

            result = SinexMerger.EmergeBasic(fileA, fileB);
            return(apriori);
        }
Пример #2
0
 private void button_cleanNonCoord_Click(object sender, EventArgs e)
 {
     file.CleanNonCoordSolutionValue();
     ShowFile();
 }