Example #1
0
 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;
 }