Beispiel #1
0
 public void Test_Constructor()
 {
     ILinearUnit linearunit = new LinearUnit(1.0,"remarks","authority","authoritycode","name","alias","abbreviation");
     Assertion.AssertEquals("ctor 1. ", "abbreviation", linearunit.Abbreviation);
     Assertion.AssertEquals("ctor 2. ", "alias", linearunit.Alias);
     Assertion.AssertEquals("ctor 1. ", "authority", linearunit.Authority);
     Assertion.AssertEquals("ctor 1. ", "authoritycode", linearunit.AuthorityCode);
     Assertion.AssertEquals("ctor 1. ", "name", linearunit.Name);
     Assertion.AssertEquals("ctor 1. ", 1.0, linearunit.MetersPerUnit);
     Assertion.AssertEquals("ctor 1. ", "remarks", linearunit.Remarks);
 }
        /// <summary>
        /// Converts a linear unit to meters.
        /// </summary>
        /// <param name="linearUnit">The LinearUnit to convert.</param>
        /// <returns>The distance in meters.</returns>
        public static Meters ToMeters(LinearUnit linearUnit)
        {
            if (linearUnit == null)
            {
                throw new ArgumentNullException("linearUnit");
            }
            Meters meters = new Meters();
            double unit   = linearUnit.ToMeters();

            return(new Meters(unit));
        }
        /// <summary>
        /// Converts a linear unit to km.
        /// </summary>
        /// <param name="linearUnit">The LinearUnit to convert.</param>
        /// <returns>The distance in km.</returns>
        public static Kilometers ToKilometers(LinearUnit linearUnit)
        {
            if (linearUnit == null)
            {
                throw new ArgumentNullException("linearUnit");
            }
            Kilometers km   = new Kilometers();
            double     unit = linearUnit.ToMeters() / km.MetersPerUnit;

            return(new Kilometers(unit));
        }
        /// <summary>
        /// Converts a linear unit to miles.
        /// </summary>
        /// <param name="linearUnit">The LinearUnit to convert.</param>
        /// <returns>The distance in Miles.</returns>
        public static Miles ToMiles(LinearUnit linearUnit)
        {
            if (linearUnit == null)
            {
                throw new ArgumentNullException("linearUnit");
            }
            Miles  miles = new Miles();
            double unit  = linearUnit.ToMeters() / miles.MetersPerUnit;

            return(new Miles(unit));
        }
        /// <summary>
        /// Returns a LinearUnit object from a code.
        /// </summary>
        /// <param name="code">The EPSG code.</param>
        /// <returns>An object that implements the ILinearUnit interface.</returns>
        public ILinearUnit CreateLinearUnit(string code)
        {
            if (code == null)
            {
                throw new ArgumentNullException("code");
            }
            string sqlQuery = "SELECT UNIT_OF_MEAS_NAME, " +
                              "   UNIT_OF_MEAS_TYPE, TARGET_UOM_CODE, " +
                              "   FACTOR_B, FACTOR_C, " +
                              "	REMARKS, INFORMATION_SOURCE, DATA_SOURCE " +
                              "FROM [Unit of Measure]" +
                              "WHERE UOM_CODE={0}";

            sqlQuery = String.Format(System.Globalization.CultureInfo.InvariantCulture, sqlQuery, code);
            IDataReader reader      = Database.ExecuteQuery(_databaseConnection, sqlQuery);
            ILinearUnit linearUnit  = null;
            bool        recordFound = reader.Read();

            if (!recordFound)
            {
                throw new ArgumentOutOfRangeException(String.Format(System.Globalization.CultureInfo.InvariantCulture, "Linear unit with a code of '{0}' was not found in the database.", code));
            }


            string unitOfMeasureType = reader["UNIT_OF_MEAS_TYPE"].ToString();

            if (unitOfMeasureType.ToLower() != "length")
            {
                throw new ArgumentException(String.Format(System.Globalization.CultureInfo.InvariantCulture, "Requested unit ({0}) is not a linear unit.", unitOfMeasureType));
            }
            double metersPerUnit = (double)reader["FACTOR_B"];
            double factor        = (double)reader["FACTOR_C"];
            string remarks       = reader["REMARKS"].ToString();
            string name          = reader["UNIT_OF_MEAS_NAME"].ToString();

            linearUnit = new LinearUnit(metersPerUnit * factor, remarks, "EPSG", code, name, "", "");

            Database.CheckOneRow(reader, code, "Linear Unit");

            return(linearUnit);
        }
        public void Test_Constructor()
        {
            ICoordinateSystemFactory csFactory = new CoordinateSystemFactory();
            IAngularUnit angularUnit = new AngularUnit(1);
            ILinearUnit linearUnit = new LinearUnit(1);
            IEllipsoid ellipsoid = csFactory.CreateFlattenedSphere("test",1,2, linearUnit );
            IAxisInfo axis0 = new AxisInfo("axis0name", AxisOrientation.Up);
            IAxisInfo axis1 = new AxisInfo("axis1name", AxisOrientation.Up);
            WGS84ConversionInfo wgs = new WGS84ConversionInfo();

            IPrimeMeridian primeMeridian = csFactory.CreatePrimeMeridian("name", angularUnit,2.0);
            IHorizontalDatum horizontalDatum = csFactory.CreateHorizontalDatum("datum",DatumType.IHD_Geocentric,ellipsoid, wgs);
            IGeographicCoordinateSystem gcs = csFactory.CreateGeographicCoordinateSystem("name",angularUnit, horizontalDatum, primeMeridian, axis0, axis1);

            Assertion.AssertEquals("ctor 1","name",gcs.Name);
            Assertion.AssertEquals("ctor 2",angularUnit,gcs.AngularUnit);
            Assertion.AssertEquals("ctor 3",horizontalDatum,gcs.HorizontalDatum);
            Assertion.AssertEquals("ctor 4",primeMeridian,gcs.PrimeMeridian);
            Assertion.AssertEquals("ctor 5",axis0,gcs.GetAxis(0));
            Assertion.AssertEquals("ctor 5",axis1,gcs.GetAxis(1));
        }
Beispiel #7
0
 public void Test_Constructor2()
 {
     ILinearUnit linearunit = new LinearUnit(1.0);
     Assertion.AssertEquals("ctor 1. ", 1.0, linearunit.MetersPerUnit);
 }
		/// <summary>
		/// Returns a LinearUnit object from a code.
		/// </summary>
		/// <param name="code">The EPSG code.</param>
		/// <returns>An object that implements the ILinearUnit interface.</returns>
		public ILinearUnit CreateLinearUnit(string code)
		{
			if (code==null)
			{
				throw new ArgumentNullException("code");
			}
			string sqlQuery =   "SELECT UNIT_OF_MEAS_NAME, "+
				"   UNIT_OF_MEAS_TYPE, TARGET_UOM_CODE, "+
				"   FACTOR_B, FACTOR_C, " +
				"	REMARKS, INFORMATION_SOURCE, DATA_SOURCE "+
				"FROM [Unit of Measure]"+
				"WHERE UOM_CODE={0}";

			sqlQuery = String.Format(sqlQuery,code);
			IDataReader reader = Database.ExecuteQuery(_databaseConnection, sqlQuery);
			ILinearUnit linearUnit = null;
			bool recordFound = reader.Read();
			if (!recordFound)
			{
				throw new ArgumentOutOfRangeException(String.Format("Linear unit with a code of '{0}' was not found in the database.",code));
			}
		
			
			string unitOfMeasureType = reader["UNIT_OF_MEAS_TYPE"].ToString();
			if (unitOfMeasureType.ToLower()!="length")
			{
				throw new ArgumentException(String.Format("Requested unit ({0}) is not a linear unit.",unitOfMeasureType));
			}	
			double metersPerUnit = (double)reader["FACTOR_B"];
			double factor = (double)reader["FACTOR_C"];
			string remarks = reader["REMARKS"].ToString();
			string name = reader["UNIT_OF_MEAS_NAME"].ToString();
			linearUnit = new LinearUnit(metersPerUnit * factor ,remarks,"EPSG",code,name,"","");

			Database.CheckOneRow(reader, code, "Linear Unit");

			return linearUnit;
		}
        public static ILinearUnit ReadLinearUnit(XmlTextReader reader)
        {
            if (!(reader.NodeType==XmlNodeType.Element &&  reader.Name=="CS_LinearUnit"))
            {
                throw new ParseException(String.Format(System.Globalization.CultureInfo.InvariantCulture, "Expected a CS_LinearUnit but got a {0} at line {1} col {2}",reader.Name,reader.LineNumber,reader.LinePosition));
            }

            double metersPerUnit = XmlConvert.ToDouble(reader.GetAttribute("MetersPerUnit"));
            string authority="",authorityCode="",abbreviation="",name="";
            /*while (reader.NodeType != XmlNodeType.EndElement)
            {
                XmlNodeType nodetype = reader.NodeType;
                string nodeValue = reader.Value;
                string nodeName = reader.Name;
                reader.Read();
            }

            while (reader.NodeType != XmlNodeType.Element)
            {
                reader.Read();
            }*/
            reader.Read();
            ReadInfo(reader, ref authority,ref authorityCode, ref abbreviation, ref name);
            reader.Read();
            LinearUnit linearUnit = new LinearUnit(metersPerUnit,"",authority,authorityCode,name,"",abbreviation);
            return linearUnit;
        }
 /// <summary>
 /// Returns a IUnit given a piece of WKT.
 /// </summary>
 /// <param name="tokenizer">WktStreamTokenizer that has the WKT.</param>
 /// <returns>An object that implements the IUnit interface.</returns>
 private static IUnit ReadUnit(WktStreamTokenizer tokenizer)
 {
     //UNIT["degree",0.01745329251994433,AUTHORITY["EPSG","9102"]]
     IUnit unit=null;
     tokenizer.ReadToken("[");
     string unitName=tokenizer.ReadDoubleQuotedWord();
     tokenizer.ReadToken(",");
     tokenizer.NextToken();
     double unitsPerUnit = tokenizer.GetNumericValue();
     tokenizer.ReadToken(",");
     string authority="";
     string authorityCode="";
     tokenizer.ReadAuthority(ref authority, ref authorityCode);
     tokenizer.ReadToken("]");
     switch (unitName)
     {
             // take into account the different spellings of the word meter/metre.
         case "meter":
         case "metre":
             unit = new LinearUnit(unitsPerUnit,"",authority,authorityCode,unitName,"","");
             break;
         case "degree":
         case "radian":
             unit = new AngularUnit(unitsPerUnit,"",authority,authorityCode,unitName,"","");
             break;
         default:
             throw new NotImplementedException(String.Format(System.Globalization.CultureInfo.InvariantCulture, "{0} is not recognized a unit of measure.",unitName));
     }
     return unit;
 }
        public void TestCreateHorizontalDatum2()
        {
            ILinearUnit linearUnit = new LinearUnit(1);
            IEllipsoid ellipsoid = _csFactory.CreateFlattenedSphere("test",1,2, linearUnit );
            WGS84ConversionInfo wgs = new WGS84ConversionInfo();
            wgs.Dx=1;

            try
            {
                IHorizontalDatum horizontalDatum = _csFactory.CreateHorizontalDatum("name",DatumType.IHD_Geocentric, null, wgs);
                Assertion.Fail("Should throw a ArgumentNullException.");
            }
            catch(ArgumentNullException)
            {
            }
        }
        public void TestCreateHorizontalDatum1()
        {
            ILinearUnit linearUnit = new LinearUnit(1);
            IEllipsoid ellipsoid = _csFactory.CreateFlattenedSphere("test",1,2, linearUnit );
            WGS84ConversionInfo wgs = new WGS84ConversionInfo();
            wgs.Dx=1;

            IHorizontalDatum horizontalDatum = _csFactory.CreateHorizontalDatum("name", DatumType.IHD_Geocentric, ellipsoid, wgs);
            Assertion.AssertEquals("ctor 1","name",horizontalDatum.Name);
            Assertion.AssertEquals("ctor 2",DatumType.IHD_Geocentric,horizontalDatum.DatumType);
            Assertion.AssertEquals("ctor 3",ellipsoid,horizontalDatum.Ellipsoid);
            Assertion.AssertEquals("ctor 4",wgs,horizontalDatum.WGS84Parameters);
        }