Exemplo n.º 1
0
        /// <summary>
        /// 计算 测站-卫星 方向的距离。
        /// </summary>
        /// <param name="neuCorrection">测站改正 NEU</param>
        /// <param name="receiverXyz">测站坐标</param>
        /// <param name="satXyz">卫星坐标</param>
        /// <returns></returns>
        public static double GetDirectionLength(NEU neuCorrection, XYZ receiverXyz, XYZ satXyz)
        {
            XYZ      ray      = (satXyz - receiverXyz);
            GeoCoord geoCoord = CoordTransformer.XyzToGeoCoord(receiverXyz);

            //此处修改为 NEU 坐标系。Rotate vector ray to UEN reference frame
            NEU rayNeu        = CoordTransformer.XyzToNeu(ray, geoCoord, AngleUnit.Degree);
            NEU directionUnit = rayNeu.UnitNeuVector();//方向向量

            //计算沿着射线方向的改正数。Compute corrections = displacement vectors components along ray direction.
            double rangeCorretion = neuCorrection.Dot(directionUnit);

            return(rangeCorretion);
        }
Exemplo n.º 2
0
        /// <summary>
        /// 站心坐标系到地心坐标系
        /// </summary>
        /// <param name="sat"> 站心坐标系,如卫星,天线</param>
        /// <param name="siteCoord">坐标原点在地心坐标系中的坐标</param>
        /// <returns></returns>
        public static XYZ NeuToXyz(NEU sat, GeoCoord siteCoord)
        {
            XYZ siteXyz = CoordTransformer.GeoCoordToXyz(siteCoord);

            return(EnuToXyz(sat.ENU, siteXyz));
        }
Exemplo n.º 3
0
        /// <summary>
        ///  计算卫星的站心极坐标,全程 度 为单位,此比XYZ更精确,推荐。!!2017.10.12
        /// </summary>
        /// <param name="satXyz">卫星的地心空间直角坐标</param>
        /// <param name="stationGeoCoord">测站的地心大地坐标或球坐标,不同坐标对应不同的高度角</param>
        /// <returns></returns>
        public static Polar XyzToPolar(XYZ satXyz, GeoCoord stationGeoCoord)
        {
            var staXyz = CoordTransformer.GeoCoordToXyz(stationGeoCoord);

            return(XyzToPolar(satXyz, staXyz, stationGeoCoord.Lon, stationGeoCoord.Lat, AngleUnit.Degree));
        }