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