/// <summary>
 /// Creates a <see cref="T:Topology.CoordinateSystems.IVerticalCoordinateSystem" /> from a <see cref="T:Topology.CoordinateSystems.IVerticalDatum">datum</see> and <see cref="T:Topology.CoordinateSystems.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="T:Topology.CoordinateSystems.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 IProjectedCoordinateSystem CreateProjectedCoordinateSystem(string name, IGeographicCoordinateSystem gcs, IProjection projection, ILinearUnit linearUnit, AxisInfo axis0, AxisInfo axis1)
 {
     if (string.IsNullOrEmpty(name))
     {
         throw new ArgumentException("Invalid name");
     }
     if (gcs == null)
     {
         throw new ArgumentException("Geographic coordinate system was null");
     }
     if (projection == null)
     {
         throw new ArgumentException("Projection was null");
     }
     if (linearUnit == null)
     {
         throw new ArgumentException("Linear unit was null");
     }
     List<AxisInfo> axisInfo = new List<AxisInfo>(2);
     axisInfo.Add(axis0);
     axisInfo.Add(axis1);
     return new ProjectedCoordinateSystem(null, gcs, linearUnit, projection, axisInfo, name, string.Empty, -1L, string.Empty, string.Empty, string.Empty);
 }
 /// <summary>
 /// Creates a <see cref="T:Topology.CoordinateSystems.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 IGeographicCoordinateSystem CreateGeographicCoordinateSystem(string name, IAngularUnit angularUnit, IHorizontalDatum datum, IPrimeMeridian primeMeridian, AxisInfo axis0, AxisInfo axis1)
 {
     if (string.IsNullOrEmpty(name))
     {
         throw new ArgumentException("Invalid name");
     }
     List<AxisInfo> axisInfo = new List<AxisInfo>(2);
     axisInfo.Add(axis0);
     axisInfo.Add(axis1);
     return new GeographicCoordinateSystem(angularUnit, datum, primeMeridian, axisInfo, name, string.Empty, -1L, string.Empty, string.Empty, string.Empty);
 }
 /// <summary>
 /// Creates a <see cref="T:Topology.CoordinateSystems.IVerticalCoordinateSystem" /> from a <see cref="T:Topology.CoordinateSystems.IVerticalDatum">datum</see> and <see cref="T:Topology.CoordinateSystems.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="T:Topology.CoordinateSystems.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 IProjectedCoordinateSystem CreateProjectedCoordinateSystem(string name, IGeographicCoordinateSystem gcs, IProjection projection, ILinearUnit linearUnit, AxisInfo axis0, AxisInfo axis1)
        {
            if (string.IsNullOrEmpty(name))
            {
                throw new ArgumentException("Invalid name");
            }
            if (gcs == null)
            {
                throw new ArgumentException("Geographic coordinate system was null");
            }
            if (projection == null)
            {
                throw new ArgumentException("Projection was null");
            }
            if (linearUnit == null)
            {
                throw new ArgumentException("Linear unit was null");
            }
            List <AxisInfo> axisInfo = new List <AxisInfo>(2);

            axisInfo.Add(axis0);
            axisInfo.Add(axis1);
            return(new ProjectedCoordinateSystem(null, gcs, linearUnit, projection, axisInfo, name, string.Empty, -1L, string.Empty, string.Empty, string.Empty));
        }
        /// <summary>
        /// Creates a <see cref="T:Topology.CoordinateSystems.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 IGeographicCoordinateSystem CreateGeographicCoordinateSystem(string name, IAngularUnit angularUnit, IHorizontalDatum datum, IPrimeMeridian primeMeridian, AxisInfo axis0, AxisInfo axis1)
        {
            if (string.IsNullOrEmpty(name))
            {
                throw new ArgumentException("Invalid name");
            }
            List <AxisInfo> axisInfo = new List <AxisInfo>(2);

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