示例#1
0
        /// <summary>
        /// Factory method to create meridians by their <see cref="NamedMeridian"/>
        /// </summary>
        /// <param name="meridan">The named meridian</param>
        /// <returns>The meridian</returns>
        public static Meridian CreateByNamedMeridian(NamedMeridian meridan)
        {
            switch (meridan)
            {
            case NamedMeridian.Greenwich:
                return(new Meridian(meridan, 0));

            case NamedMeridian.Lisbon:
                return(new Meridian(meridan, ProjectionMath.ToRadians(-9.131906111)));

            case NamedMeridian.Paris:
                return(new Meridian(meridan, ProjectionMath.ToRadians(2.337229167)));

            case NamedMeridian.Bogota:
                return(new Meridian(meridan, ProjectionMath.ToRadians(-74.08091667)));

            case NamedMeridian.Madrid:
                return(new Meridian(meridan, ProjectionMath.ToRadians(-3.687938889)));

            case NamedMeridian.Rome:
                return(new Meridian(meridan, ProjectionMath.ToRadians(12.45233333)));

            case NamedMeridian.Bern:
                return(new Meridian(meridan, ProjectionMath.ToRadians(7.439583333)));

            case NamedMeridian.Jakarta:
                return(new Meridian(meridan, ProjectionMath.ToRadians(106.8077194)));

            case NamedMeridian.Ferro:
                return(new Meridian(meridan, ProjectionMath.ToRadians(-17.66666667)));

            case NamedMeridian.Brussels:
                return(new Meridian(meridan, ProjectionMath.ToRadians(4.367975)));

            case NamedMeridian.Stockholm:
                return(new Meridian(meridan, ProjectionMath.ToRadians(18.05827778)));

            case NamedMeridian.Athens:
                return(new Meridian(meridan, ProjectionMath.ToRadians(23.7163375)));

            case NamedMeridian.Oslo:
                return(new Meridian(meridan, ProjectionMath.ToRadians(10.72291667)));
            }
            throw new ArgumentOutOfRangeException("meridan");
        }
示例#2
0
 /// <summary>
 /// Creates a new Meridian
 /// </summary>
 /// <param name="name">Name of meridian</param>
 /// <param name="longitude">Longitude of meridian in radians</param>
 private Meridian(NamedMeridian name, double longitude)
 {
     _name      = name;
     _longitude = longitude;
 }
示例#3
0
        private static void QueryNameAndCode(double longitude, out NamedMeridian name)
        {
            //in degrees
            var val = longitude / ProjectionMath.DegreesToRadians;

            if (Math.Abs(val) < Epsilon)
            {
                name = NamedMeridian.Greenwich;
                return;
            }
            if (Math.Abs(val - -9.131906111) < Epsilon)
            {
                name = NamedMeridian.Lisbon;
                return;
            }
            if (Math.Abs(val - 2.337229167) < Epsilon)
            {
                name = NamedMeridian.Paris;
                return;
            }
            if (Math.Abs(val - -74.08091667) < Epsilon)
            {
                name = NamedMeridian.Bogota;
                return;
            }
            if (Math.Abs(val - -3.687938889) < Epsilon)
            {
                name = NamedMeridian.Madrid;
                return;
            }
            if (Math.Abs(val - 12.45233333) < Epsilon)
            {
                name = NamedMeridian.Rome;
                return;
            }
            if (Math.Abs(val - 7.439583333) < Epsilon)
            {
                name = NamedMeridian.Bern;
                return;
            }
            if (Math.Abs(val - 106.8077194) < Epsilon)
            {
                name = NamedMeridian.Jakarta;
                return;
            }
            if (Math.Abs(val - -17.66666667) < Epsilon)
            {
                name = NamedMeridian.Ferro;
                return;
            }
            if (Math.Abs(val - 4.367975) < Epsilon)
            {
                name = NamedMeridian.Brussels;
                return;
            }
            if (Math.Abs(val - 18.05827778) < Epsilon)
            {
                name = NamedMeridian.Stockholm;
                return;
            }
            if (Math.Abs(val - 23.7163375) < Epsilon)
            {
                name = NamedMeridian.Athens;
                return;
            }
            if (Math.Abs(val - 10.72291667) < Epsilon)
            {
                name = NamedMeridian.Oslo;
                return;
            }

            name = NamedMeridian.Unknown;
        }