A meridian used to take longitude measurements from.
상속: Info, IPrimeMeridian
 /// <summary>
 /// Creates an instance of a Geographic Coordinate System
 /// </summary>
 /// <param name="angularUnit">Angular units</param>
 /// <param name="horizontalDatum">Horizontal datum</param>
 /// <param name="primeMeridian">Prime meridian</param>
 /// <param name="axisInfo">Axis info</param>
 /// <param name="name">Name</param>
 /// <param name="authority">Authority name</param>
 /// <param name="authorityCode">Authority-specific identification code.</param>
 /// <param name="alias">Alias</param>
 /// <param name="abbreviation">Abbreviation</param>
 /// <param name="remarks">Provider-supplied remarks</param>
 internal GeographicCoordinateSystem(AngularUnit angularUnit, HorizontalDatum horizontalDatum, PrimeMeridian primeMeridian, List <AxisInfo> axisInfo, string name, string authority, long authorityCode, string alias, string abbreviation, string remarks)
     :
     base(horizontalDatum, axisInfo, name, authority, authorityCode, alias, abbreviation, remarks)
 {
     AngularUnit   = angularUnit;
     PrimeMeridian = primeMeridian;
 }
예제 #2
0
        /// <summary>
        /// Checks whether the values of this instance is equal to the values of another instance.
        /// Only parameters used for coordinate system are used for comparison.
        /// Name, abbreviation, authority, alias and remarks are ignored in the comparison.
        /// </summary>
        /// <param name="obj"></param>
        /// <returns>True if equal</returns>
        public override bool EqualParams(object obj)
        {
            if (!(obj is PrimeMeridian))
            {
                return(false);
            }
            PrimeMeridian prime = obj as PrimeMeridian;

            return(prime.AngularUnit.EqualParams(this.AngularUnit) && prime.Longitude == this.Longitude);
        }
 internal GeocentricCoordinateSystem(HorizontalDatum datum, LinearUnit linearUnit, PrimeMeridian primeMeridian, List <AxisInfo> axisInfo,
                                     string name, string authority, long code, string alias,
                                     string remarks, string abbreviation)
     : base(name, authority, code, alias, abbreviation, remarks)
 {
     HorizontalDatum = datum;
     LinearUnit      = linearUnit;
     PrimeMeridian   = primeMeridian;
     if (axisInfo.Count != 3)
     {
         throw new ArgumentException("Axis info should contain three axes for geocentric coordinate systems");
     }
     base.AxisInfo = axisInfo;
 }
		/// <summary>
		/// 
		/// </summary>
		/// <param name="tokenizer"></param>
		/// <returns></returns>
		private static IPrimeMeridian ReadPrimeMeridian(WktStreamTokenizer tokenizer)
		{
			//PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]]
			tokenizer.ReadToken("[");
			string name = tokenizer.ReadDoubleQuotedWord();
			tokenizer.ReadToken(",");
			tokenizer.NextToken();
			double longitude = tokenizer.GetNumericValue();

			tokenizer.NextToken();
			string authority = String.Empty;
			long authorityCode = -1;
			if (tokenizer.GetStringValue() == ",")
			{
				tokenizer.ReadAuthority(ref authority, ref authorityCode);
				tokenizer.ReadToken("]");
			}
			// make an assumption about the Angular units - degrees.
			IPrimeMeridian primeMeridian = new PrimeMeridian(longitude, AngularUnit.Degrees, name, authority, authorityCode, String.Empty, String.Empty, String.Empty);

			return primeMeridian;
		}
예제 #5
0
        /*
         * /// <summary>
         * /// Creates a <see cref="ILocalDatum"/>.
         * /// </summary>
         * /// <param name="name">Name of datum</param>
         * /// <param name="datumType">Datum type</param>
         * /// <returns></returns>
         * public ILocalDatum CreateLocalDatum(string name, DatumType datumType)
         * {
         *  throw new NotImplementedException();
         * }
         */

        /*
         * /// <summary>
         * /// Creates a <see cref="IVerticalDatum"/> from an enumerated type value.
         * /// </summary>
         * /// <param name="name">Name of datum</param>
         * /// <param name="datumType">Type of datum</param>
         * /// <returns>Vertical datum</returns>
         * public IVerticalDatum CreateVerticalDatum(string name, DatumType datumType)
         * {
         *  throw new NotImplementedException();
         * }
         */

        /*
         * /// <summary>
         * /// Creates a <see cref="IVerticalCoordinateSystem"/> from a <see cref="IVerticalDatum">datum</see> and <see cref="LinearUnit">linear units</see>.
         * /// </summary>
         * /// <param name="name">Name of vertical coordinate system</param>
         * /// <param name="datum">Vertical datum</param>
         * /// <param name="verticalUnit">Unit</param>
         * /// <param name="axis">Axis info</param>
         * /// <returns>Vertical coordinate system</returns>
         * public IVerticalCoordinateSystem CreateVerticalCoordinateSystem(string name, IVerticalDatum datum, ILinearUnit verticalUnit, AxisInfo axis)
         * {
         *  throw new NotImplementedException();
         * }
         */
        /// <summary>
        /// Creates a <see cref="CreateGeocentricCoordinateSystem"/> from a <see cref="HorizontalDatum">datum</see>,
        /// <see cref="LinearUnit">linear unit</see> and <see cref="PrimeMeridian"/>.
        /// </summary>
        /// <param name="name">Name of geocentric coordinate system</param>
        /// <param name="datum">Horizontal datum</param>
        /// <param name="linearUnit">Linear unit</param>
        /// <param name="primeMeridian">Prime meridian</param>
        /// <returns>Geocentric Coordinate System</returns>
        public GeocentricCoordinateSystem CreateGeocentricCoordinateSystem(string name, HorizontalDatum datum, LinearUnit linearUnit, PrimeMeridian primeMeridian)
        {
            if (string.IsNullOrWhiteSpace(name))
            {
                throw new ArgumentException("Invalid name");
            }

            var info = new List <AxisInfo>(3);

            info.Add(new AxisInfo("X", AxisOrientationEnum.Other));
            info.Add(new AxisInfo("Y", AxisOrientationEnum.Other));
            info.Add(new AxisInfo("Z", AxisOrientationEnum.Other));
            return(new GeocentricCoordinateSystem(datum, linearUnit, primeMeridian, info, name, string.Empty, -1, string.Empty, string.Empty, string.Empty));
        }
예제 #6
0
        /// <summary>
        /// Creates a <see cref="GeographicCoordinateSystem"/>, which could be Lat/Lon or Lon/Lat.
        /// </summary>
        /// <param name="name">Name of geographical coordinate system</param>
        /// <param name="angularUnit">Angular units</param>
        /// <param name="datum">Horizontal datum</param>
        /// <param name="primeMeridian">Prime meridian</param>
        /// <param name="axis0">First axis</param>
        /// <param name="axis1">Second axis</param>
        /// <returns>Geographic coordinate system</returns>
        public GeographicCoordinateSystem CreateGeographicCoordinateSystem(string name, AngularUnit angularUnit, HorizontalDatum datum, PrimeMeridian primeMeridian, AxisInfo axis0, AxisInfo axis1)
        {
            if (string.IsNullOrWhiteSpace(name))
            {
                throw new ArgumentException("Invalid name");
            }

            var info = new List <AxisInfo>(2);

            info.Add(axis0);
            info.Add(axis1);
            return(new GeographicCoordinateSystem(angularUnit, datum, primeMeridian, info, name, string.Empty, -1, string.Empty, string.Empty, string.Empty));
        }