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