public void Test_Constructor() { VerticalDatum verticalDatum = new VerticalDatum(DatumType.IHD_Geocentric,"remarks","authoritycode","authority","name","alias","abbreviation"); Assertion.AssertEquals("ctor1.","remarks",verticalDatum.Remarks); Assertion.AssertEquals("ctor2.","authority",verticalDatum.Authority); Assertion.AssertEquals("ctor3.","authoritycode",verticalDatum.AuthorityCode); Assertion.AssertEquals("ctor4.","name",verticalDatum.Name); Assertion.AssertEquals("ctor5.","alias",verticalDatum.Alias); Assertion.AssertEquals("ctor6.","abbreviation",verticalDatum.Abbreviation); Assertion.AssertEquals("ctor7.",DatumType.IHD_Geocentric,verticalDatum.DatumType); }
/// <summary> /// Create a vertical datum given a code. /// </summary> /// <param name="code">The EPSG code of the datum to create.</param> /// <returns>An object that implements the IVerticalDatum interface.</returns> public IVerticalDatum CreateVerticalDatum(string code) { if (code == null) { throw new ArgumentNullException("code"); } string sqlQuery = "SELECT DATUM_NAME, DATUM_CODE, DATUM_TYPE, ORIGIN_DESCRIPTION, " + "REALIZATION_EPOCH, ELLIPSOID_CODE, PRIME_MERIDIAN_CODE, " + "AREA_OF_USE_CODE, DATUM_SCOPE, REMARKS, DATA_SOURCE, INFORMATION_SOURCE " + "FROM Datum " + "WHERE DATUM_CODE={0}"; sqlQuery = String.Format(System.Globalization.CultureInfo.InvariantCulture, sqlQuery, code); IDataReader reader = Database.ExecuteQuery(_databaseConnection, sqlQuery); if (!reader.Read()) { throw new ArgumentException(String.Format(System.Globalization.CultureInfo.InvariantCulture, "Could not find datum {0}.", code)); } ; string datumtype = reader["DATUM_TYPE"].ToString(); string name = reader["DATUM_NAME"].ToString(); string remarks = reader["REMARKS"].ToString(); string datasource = reader["DATA_SOURCE"].ToString(); // should always be EPSG? Database.CheckOneRow(reader, code, "Vertical Datum"); if (datumtype.ToLower() != "vertical") { throw new ArgumentException(String.Format(System.Globalization.CultureInfo.InvariantCulture, "Requested datum ({0}) is not a vertical datum.", code)); } IVerticalDatum verticalDatum = new VerticalDatum(DatumType.IVD_GeoidModelDerived, remarks, code, "EPSG", name, "", ""); return(verticalDatum); }
/// <summary> /// Create a vertical datum given a code. /// </summary> /// <param name="code">The EPSG code of the datum to create.</param> /// <returns>An object that implements the IVerticalDatum interface.</returns> public IVerticalDatum CreateVerticalDatum(string code) { if (code==null) { throw new ArgumentNullException("code"); } string sqlQuery = "SELECT DATUM_NAME, DATUM_CODE, DATUM_TYPE, ORIGIN_DESCRIPTION, "+ "REALIZATION_EPOCH, ELLIPSOID_CODE, PRIME_MERIDIAN_CODE, "+ "AREA_OF_USE_CODE, DATUM_SCOPE, REMARKS, DATA_SOURCE, INFORMATION_SOURCE "+ "FROM Datum "+ "WHERE DATUM_CODE={0}"; sqlQuery = String.Format(sqlQuery,code); IDataReader reader = Database.ExecuteQuery(_databaseConnection, sqlQuery); if (!reader.Read()) { throw new ArgumentException(String.Format("Could not find datum {0}.",code)); }; string datumtype= reader["DATUM_TYPE"].ToString(); string name = reader["DATUM_NAME"].ToString(); string remarks = reader["REMARKS"].ToString(); string datasource = reader["DATA_SOURCE"].ToString();// should always be EPSG? Database.CheckOneRow(reader, code, "Vertical Datum"); if (datumtype.ToLower()!="vertical") { throw new ArgumentException(String.Format("Requested datum ({0}) is not a vertical datum.", code)); } IVerticalDatum verticalDatum = new VerticalDatum(DatumType.IVD_GeoidModelDerived, remarks, code,"EPSG",name,"",""); return verticalDatum; }
private static IVerticalDatum ReadVerticalDatum(XmlTextReader reader) { /* * <?xml version="1.0"?> <IVerticalDatum DatumType="2005"> <IInfo AuthorityCode="5101" Abbreviation="ODN" Authority="EPSG" Name="Ordnance Datum Newlyn"/> </IVerticalDatum> */ if (!(reader.NodeType==XmlNodeType.Element && reader.Name=="CS_VerticalDatum")) { throw new ParseException(String.Format(System.Globalization.CultureInfo.InvariantCulture, "Expected a IVerticalDatum but got a {0} at line {1} col {2}",reader.Name,reader.LineNumber,reader.LinePosition)); } string datumTypeString = reader.GetAttribute("DatumType"); DatumType datumType = (DatumType)Enum.Parse(typeof(DatumType),datumTypeString,true); string authority="",authorityCode="",abbreviation="",name=""; reader.Read(); ReadInfo(reader, ref authority,ref authorityCode, ref abbreviation, ref name); reader.Read(); IVerticalDatum verticalDatum = new VerticalDatum(datumType, "",authorityCode,authority,name, "",abbreviation); return verticalDatum; }
private static IVerticalDatum ReadVerticalDatum(WktStreamTokenizer tokenizer) { //VERT_DATUM["Ordnance Datum Newlyn",2005,AUTHORITY["5101","EPSG"]] tokenizer.ReadToken("["); string datumName=tokenizer.ReadDoubleQuotedWord(); tokenizer.ReadToken(","); tokenizer.NextToken(); string datumTypeNumber = tokenizer.GetStringValue(); tokenizer.ReadToken(","); string authority=""; string authorityCode=""; tokenizer.ReadAuthority(ref authority, ref authorityCode); DatumType datumType = (DatumType)Enum.Parse(typeof(DatumType),datumTypeNumber); IVerticalDatum verticalDatum = new VerticalDatum(datumType,"",authorityCode,authority,datumName,"",""); tokenizer.ReadToken("]"); return verticalDatum; }