コード例 #1
0
        /// <summary>
        /// Creates a new lambert projection.
        /// </summary>
        /// <param name="name"></param>
        /// <param name="ellipsoid"></param>
        /// <param name="standard_parallel_1"></param>
        /// <param name="standard_parallel_2"></param>
        /// <param name="latitude_origin_1"></param>
        /// <param name="longitude_origin_2"></param>
        /// <param name="x_origin"></param>
        /// <param name="y_origin"></param>
        protected LambertProjectionBase(string name,
                                        LambertEllipsoid ellipsoid,
                                        double standard_parallel_1,
                                        double standard_parallel_2,
                                        double latitude_origin_1,
                                        double longitude_origin_2,
                                        double x_origin,
                                        double y_origin)
        {
            _name      = name;
            _ellipsoid = ellipsoid;

            _standard_parallel_1 = standard_parallel_1;
            Radian temp = new Degree(_standard_parallel_1);

            _standard_parallel_1_radians = temp.Value;

            _standard_parallel_2 = standard_parallel_2;
            temp = new Degree(_standard_parallel_2);
            _standard_parallel_2_radians = temp.Value;

            _latitude_origin         = latitude_origin_1;
            temp                     = new Degree(_latitude_origin);
            _latitude_origin_radians = temp.Value;

            _longitude_origin = longitude_origin_2;
            temp = new Degree(_longitude_origin);
            _longitude_origin_radians = temp.Value;

            _x_origin = x_origin;
            _y_origin = y_origin;

            // calculate common calculation intermidiates.
            _m_1 = (System.Math.Cos(_standard_parallel_1_radians) /
                    System.Math.Sqrt((1.0 - _ellipsoid.Eccentricity * _ellipsoid.Eccentricity *
                                      System.Math.Pow(System.Math.Sin(_standard_parallel_1_radians), 2.0))));

            _m_2 = (System.Math.Cos(_standard_parallel_2_radians) /
                    System.Math.Sqrt((1 - _ellipsoid.Eccentricity * _ellipsoid.Eccentricity *
                                      System.Math.Pow(System.Math.Sin(_standard_parallel_2_radians), 2.0))));

            _t_0 = (System.Math.Tan(System.Math.PI / 4.0 - _latitude_origin_radians / 2.0) /
                    System.Math.Pow(((1 - _ellipsoid.Eccentricity * System.Math.Sin(_latitude_origin_radians)) /
                                     (1 + _ellipsoid.Eccentricity * System.Math.Sin(_latitude_origin_radians))), _ellipsoid.Eccentricity / 2.0));

            _t_1 = (System.Math.Tan(System.Math.PI / 4.0 - _standard_parallel_1_radians / 2.0) /
                    System.Math.Pow(((1 - _ellipsoid.Eccentricity * System.Math.Sin(_standard_parallel_1_radians)) /
                                     (1 + _ellipsoid.Eccentricity * System.Math.Sin(_standard_parallel_1_radians))), _ellipsoid.Eccentricity / 2.0));

            _t_2 = (System.Math.Tan(System.Math.PI / 4.0 - _standard_parallel_2_radians / 2.0) /
                    System.Math.Pow(((1 - _ellipsoid.Eccentricity * System.Math.Sin(_standard_parallel_2_radians)) /
                                     (1 + _ellipsoid.Eccentricity * System.Math.Sin(_standard_parallel_2_radians))), _ellipsoid.Eccentricity / 2.0));

            _n = ((System.Math.Log(_m_1) - System.Math.Log(_m_2))
                  / (System.Math.Log(_t_1) - System.Math.Log(_t_2)));

            _g = _m_1 / (_n * System.Math.Pow(_t_1, _n));

            _r_0 = _ellipsoid.SemiMajorAxis * _g * System.Math.Pow(System.Math.Abs(_t_0), _n);
        }
コード例 #2
0
 protected LambertProjectionBase(string name, LambertEllipsoid ellipsoid, double standard_parallel_1, double standard_parallel_2, double latitude_origin_1, double longitude_origin_2, double x_origin, double y_origin)
 {
     this._name                        = name;
     this._ellipsoid                   = ellipsoid;
     this._standard_parallel_1         = standard_parallel_1;
     this._standard_parallel_1_radians = new Degree(this._standard_parallel_1).Value;
     this._standard_parallel_2         = standard_parallel_2;
     this._standard_parallel_2_radians = new Degree(this._standard_parallel_2).Value;
     this._latitude_origin             = latitude_origin_1;
     this._latitude_origin_radians     = new Degree(this._latitude_origin).Value;
     this._longitude_origin            = longitude_origin_2;
     this._longitude_origin_radians    = new Degree(this._longitude_origin).Value;
     this._x_origin                    = x_origin;
     this._y_origin                    = y_origin;
     this._m_1 = System.Math.Cos(this._standard_parallel_1_radians) / System.Math.Sqrt(1.0 - this._ellipsoid.Eccentricity * this._ellipsoid.Eccentricity * System.Math.Pow(System.Math.Sin(this._standard_parallel_1_radians), 2.0));
     this._m_2 = System.Math.Cos(this._standard_parallel_2_radians) / System.Math.Sqrt(1.0 - this._ellipsoid.Eccentricity * this._ellipsoid.Eccentricity * System.Math.Pow(System.Math.Sin(this._standard_parallel_2_radians), 2.0));
     this._t_0 = System.Math.Tan(System.Math.PI / 4.0 - this._latitude_origin_radians / 2.0) / System.Math.Pow((1.0 - this._ellipsoid.Eccentricity * System.Math.Sin(this._latitude_origin_radians)) / (1.0 + this._ellipsoid.Eccentricity * System.Math.Sin(this._latitude_origin_radians)), this._ellipsoid.Eccentricity / 2.0);
     this._t_1 = System.Math.Tan(System.Math.PI / 4.0 - this._standard_parallel_1_radians / 2.0) / System.Math.Pow((1.0 - this._ellipsoid.Eccentricity * System.Math.Sin(this._standard_parallel_1_radians)) / (1.0 + this._ellipsoid.Eccentricity * System.Math.Sin(this._standard_parallel_1_radians)), this._ellipsoid.Eccentricity / 2.0);
     this._t_2 = System.Math.Tan(System.Math.PI / 4.0 - this._standard_parallel_2_radians / 2.0) / System.Math.Pow((1.0 - this._ellipsoid.Eccentricity * System.Math.Sin(this._standard_parallel_2_radians)) / (1.0 + this._ellipsoid.Eccentricity * System.Math.Sin(this._standard_parallel_2_radians)), this._ellipsoid.Eccentricity / 2.0);
     this._n   = (System.Math.Log(this._m_1) - System.Math.Log(this._m_2)) / (System.Math.Log(this._t_1) - System.Math.Log(this._t_2));
     this._g   = this._m_1 / (this._n * System.Math.Pow(this._t_1, this._n));
     this._r_0 = this._ellipsoid.SemiMajorAxis * this._g * System.Math.Pow(System.Math.Abs(this._t_0), this._n);
 }
コード例 #3
0
        /// <summary>
        /// Creates a new lambert projection.
        /// </summary>
        /// <param name="name"></param>
        /// <param name="ellipsoid"></param>
        /// <param name="standard_parallel_1"></param>
        /// <param name="standard_parallel_2"></param>
        /// <param name="latitude_origin_1"></param>
        /// <param name="longitude_origin_2"></param>
        /// <param name="x_origin"></param>
        /// <param name="y_origin"></param>
        protected LambertProjectionBase(string name,
            LambertEllipsoid ellipsoid,
            double standard_parallel_1,
            double standard_parallel_2,
            double latitude_origin_1,
            double longitude_origin_2,
            double x_origin,
            double y_origin)
        {
            _name = name;
            _ellipsoid = ellipsoid;

            _standard_parallel_1 = standard_parallel_1;
            Radian temp = new Degree(_standard_parallel_1);
            _standard_parallel_1_radians = temp.Value;

            _standard_parallel_2 = standard_parallel_2;
            temp = new Degree(_standard_parallel_2);
            _standard_parallel_2_radians = temp.Value;

            _latitude_origin = latitude_origin_1;
            temp = new Degree(_latitude_origin);
            _latitude_origin_radians = temp.Value;

            _longitude_origin = longitude_origin_2;
            temp = new Degree(_longitude_origin);
            _longitude_origin_radians = temp.Value;

            _x_origin = x_origin;
            _y_origin = y_origin;

            // calculate common calculation intermidiates.
            _m_1 = (System.Math.Cos(_standard_parallel_1_radians) /
                System.Math.Sqrt((1.0 - _ellipsoid.Eccentricity * _ellipsoid.Eccentricity *
                System.Math.Pow(System.Math.Sin(_standard_parallel_1_radians), 2.0))));

            _m_2 = (System.Math.Cos(_standard_parallel_2_radians) /
                System.Math.Sqrt((1 - _ellipsoid.Eccentricity * _ellipsoid.Eccentricity *
                System.Math.Pow(System.Math.Sin(_standard_parallel_2_radians), 2.0))));

            _t_0 = (System.Math.Tan(System.Math.PI / 4.0 - _latitude_origin_radians / 2.0) /
                System.Math.Pow(((1 - _ellipsoid.Eccentricity * System.Math.Sin(_latitude_origin_radians)) /
                (1 + _ellipsoid.Eccentricity * System.Math.Sin(_latitude_origin_radians))), _ellipsoid.Eccentricity / 2.0));

            _t_1 = (System.Math.Tan(System.Math.PI / 4.0 - _standard_parallel_1_radians / 2.0) /
                System.Math.Pow(((1 - _ellipsoid.Eccentricity * System.Math.Sin(_standard_parallel_1_radians)) /
                (1 + _ellipsoid.Eccentricity * System.Math.Sin(_standard_parallel_1_radians))), _ellipsoid.Eccentricity / 2.0));

            _t_2 = (System.Math.Tan(System.Math.PI / 4.0 - _standard_parallel_2_radians / 2.0) /
                System.Math.Pow(((1 - _ellipsoid.Eccentricity * System.Math.Sin(_standard_parallel_2_radians)) /
                (1 + _ellipsoid.Eccentricity * System.Math.Sin(_standard_parallel_2_radians))), _ellipsoid.Eccentricity / 2.0));

            _n = ((System.Math.Log(_m_1) - System.Math.Log(_m_2))
                / (System.Math.Log(_t_1) - System.Math.Log(_t_2)));

            _g = _m_1 / (_n * System.Math.Pow(_t_1, _n));

            _r_0 = _ellipsoid.SemiMajorAxis * _g * System.Math.Pow(System.Math.Abs(_t_0), _n);
        }