Definition of linear units.
Inheritance: Info, ILinearUnit
Example #1
0
 /// <summary>
 /// Initializes a new instance of an Ellipsoid
 /// </summary>
 /// <param name="semiMajorAxis">Semi major axis</param>
 /// <param name="semiMinorAxis">Semi minor axis</param>
 /// <param name="inverseFlattening">Inverse flattening</param>
 /// <param name="isIvfDefinitive">Inverse Flattening is definitive for this ellipsoid (Semi-minor axis will be overridden)</param>
 /// <param name="axisUnit">Axis unit</param>
 /// <param name="name">Name</param>
 /// <param name="authority">Authority name</param>
 /// <param name="code">Authority-specific identification code.</param>
 /// <param name="alias">Alias</param>
 /// <param name="abbreviation">Abbreviation</param>
 /// <param name="remarks">Provider-supplied remarks</param>
 internal Ellipsoid(
     double semiMajorAxis,
     double semiMinorAxis,
     double inverseFlattening,
     bool isIvfDefinitive,
     LinearUnit axisUnit, string name, string authority, long code, string alias,
     string abbreviation, string remarks)
     : base(name, authority, code, alias, abbreviation, remarks)
 {
     SemiMajorAxis     = semiMajorAxis;
     InverseFlattening = inverseFlattening;
     AxisUnit          = axisUnit;
     IsIvfDefinitive   = isIvfDefinitive;
     if (isIvfDefinitive && (inverseFlattening == 0 || double.IsInfinity(inverseFlattening)))
     {
         SemiMinorAxis = semiMajorAxis;
     }
     else if (isIvfDefinitive)
     {
         SemiMinorAxis = (1.0 - (1.0 / InverseFlattening)) * semiMajorAxis;
     }
     else
     {
         SemiMinorAxis = semiMinorAxis;
     }
 }
Example #2
0
 /// <summary>
 /// Initializes a new instance of a projected coordinate system
 /// </summary>
 /// <param name="datum">Horizontal datum</param>
 /// <param name="geographicCoordinateSystem">Geographic coordinate system</param>
 /// <param name="linearUnit">Linear unit</param>
 /// <param name="projection">Projection</param>
 /// <param name="axisInfo">Axis info</param>
 /// <param name="name">Name</param>
 /// <param name="authority">Authority name</param>
 /// <param name="code">Authority-specific identification code.</param>
 /// <param name="alias">Alias</param>
 /// <param name="abbreviation">Abbreviation</param>
 /// <param name="remarks">Provider-supplied remarks</param>
 internal ProjectedCoordinateSystem(HorizontalDatum datum, GeographicCoordinateSystem geographicCoordinateSystem,
                                    LinearUnit linearUnit, IProjection projection, List <AxisInfo> axisInfo,
                                    string name, string authority, long code, string alias,
                                    string remarks, string abbreviation)
     : base(datum, axisInfo, name, authority, code, alias, abbreviation, remarks)
 {
     GeographicCoordinateSystem = geographicCoordinateSystem;
     LinearUnit = linearUnit;
     Projection = projection;
 }
 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;
 }
Example #4
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));
        }
Example #5
0
        /// <summary>
        /// Creates a <see cref="ProjectedCoordinateSystem"/> using a projection object.
        /// </summary>
        /// <param name="name">Name of projected coordinate system</param>
        /// <param name="gcs">Geographic coordinate system</param>
        /// <param name="projection">Projection</param>
        /// <param name="linearUnit">Linear unit</param>
        /// <param name="axis0">Primary axis</param>
        /// <param name="axis1">Secondary axis</param>
        /// <returns>Projected coordinate system</returns>
        public ProjectedCoordinateSystem CreateProjectedCoordinateSystem(string name, GeographicCoordinateSystem gcs, IProjection projection, LinearUnit linearUnit, AxisInfo axis0, AxisInfo axis1)
        {
            if (string.IsNullOrWhiteSpace(name))
            {
                throw new ArgumentException("Invalid name", nameof(name));
            }
            if (gcs == null)
            {
                throw new ArgumentException("Geographic coordinate system was null", nameof(gcs));
            }
            if (projection == null)
            {
                throw new ArgumentException("Projection was null", nameof(projection));
            }
            if (linearUnit == null)
            {
                throw new ArgumentException("Linear unit was null");
            }

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

            info.Add(axis0);
            info.Add(axis1);
            return(new ProjectedCoordinateSystem(null, gcs, linearUnit, projection, info, name, string.Empty, -1, string.Empty, string.Empty, string.Empty));
        }
Example #6
0
        /// <summary>
        /// Creates an <see cref="Ellipsoid"/> from an major radius, and inverse flattening.
        /// </summary>
        /// <seealso cref="CreateEllipsoid"/>
        /// <param name="name">Name of ellipsoid</param>
        /// <param name="semiMajorAxis">Semi major-axis</param>
        /// <param name="inverseFlattening">Inverse flattening</param>
        /// <param name="linearUnit">Linear unit</param>
        /// <returns>Ellipsoid</returns>
        public Ellipsoid CreateFlattenedSphere(string name, double semiMajorAxis, double inverseFlattening, LinearUnit linearUnit)
        {
            if (string.IsNullOrWhiteSpace(name))
            {
                throw new ArgumentException("Invalid name");
            }

            return(new Ellipsoid(semiMajorAxis, -1, inverseFlattening, true, linearUnit, name, string.Empty, -1, string.Empty, string.Empty, string.Empty));
        }
Example #7
0
        /*
         * /// <summary>
         * /// Creates a <see cref="ILocalCoordinateSystem">local coordinate system</see>.
         * /// </summary>
         * /// <remarks>
         * ///  The dimension of the local coordinate system is determined by the size of
         * /// the axis array. All the axes will have the same units. If you want to make
         * /// a coordinate system with mixed units, then you can make a compound
         * /// coordinate system from different local coordinate systems.
         * /// </remarks>
         * /// <param name="name">Name of local coordinate system</param>
         * /// <param name="datum">Local datum</param>
         * /// <param name="unit">Units</param>
         * /// <param name="axes">Axis info</param>
         * /// <returns>Local coordinate system</returns>
         * public ILocalCoordinateSystem CreateLocalCoordinateSystem(string name, ILocalDatum datum, IUnit unit, List<AxisInfo> axes)
         * {
         *  throw new NotImplementedException();
         * }
         */
        /// <summary>
        /// Creates an <see cref="Ellipsoid"/> from radius values.
        /// </summary>
        /// <seealso cref="CreateFlattenedSphere"/>
        /// <param name="name">Name of ellipsoid</param>
        /// <param name="semiMajorAxis"></param>
        /// <param name="semiMinorAxis"></param>
        /// <param name="linearUnit"></param>
        /// <returns>Ellipsoid</returns>
        public Ellipsoid CreateEllipsoid(string name, double semiMajorAxis, double semiMinorAxis, LinearUnit linearUnit)
        {
            double ivf = 0;

            if (semiMajorAxis != semiMinorAxis)
            {
                ivf = semiMajorAxis / (semiMajorAxis - semiMinorAxis);
            }
            return(new Ellipsoid(semiMajorAxis, semiMinorAxis, ivf, false, linearUnit, name, string.Empty, -1, string.Empty, string.Empty, string.Empty));
        }