/// <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);
        }
예제 #3
0
 /// <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;
 }
예제 #4
0
 /// <summary>
 /// 默认
 /// </summary>
 public EstimatedBaseline()
 {
     this.BaseLineName       = new GnssBaseLineName();
     EstimatedVectorRmsedXYZ = new RmsedXYZ();
     StdDev       = 1;
     ClosureError = 1;
 }
예제 #5
0
 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倍中误差
 }
예제 #6
0
        /// <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;
        }
예제 #7
0
 /// <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;
 }
예제 #8
0
        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));
        }
예제 #9
0
        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);
        }
예제 #10
0
        //提取改正数
        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;
            }
        }
예제 #11
0
 /// <summary>
 /// 构造函数
 /// </summary>
 /// <param name="LineName"></param>
 /// <param name="RmsedXYZ"></param>
 public BaseLineRepeatError(GnssBaseLineName LineName, RmsedXYZ RmsedXYZ)
 {
     this.LineName = LineName;
     this.RmsedXYZ = RmsedXYZ;
 }
예제 #12
0
 /// <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)
 {
 }
예제 #13
0
 public void SetRmsedXyz(RmsedXYZ value)
 {
     Xyz = value.Value; Rms = value.Rms;
 }
예제 #14
0
 public EstimatedSite(string SiteName, RmsedXYZ RmsedXYZ, Time epoch)
 {
     this.SiteName = SiteName;
     this.RmsedXYZ = RmsedXYZ;
     this.Epoch    = epoch;
 }
예제 #15
0
 /// <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;
 }
예제 #16
0
 /// <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);
 }