/// <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"); }
/// <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; }
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; }