public void Test_Constructor() { IEllipsoid ellipsoid = new Ellipsoid(20926348,-1.0,294.26068,true, new LinearUnit(1)); WGS84ConversionInfo wgsInfo = new WGS84ConversionInfo(); wgsInfo.Dx=1.0; HorizontalDatum horizontalDatum = new HorizontalDatum("name",DatumType.IHD_Geocentric,ellipsoid, wgsInfo); Assertion.AssertEquals("test 1","name",horizontalDatum.Name); Assertion.AssertEquals("test 2",DatumType.IHD_Geocentric,horizontalDatum.DatumType); Assertion.AssertEquals("test 3",ellipsoid,horizontalDatum.Ellipsoid); Assertion.AssertEquals("test 4",wgsInfo,horizontalDatum.WGS84Parameters); }
/// <summary> /// Creates a horizontal datum from a code. /// </summary> /// <param name="code">The EPSG code.</param> /// <returns>An object that implements the IHorizontalDatum interface.</returns> public IHorizontalDatum CreateHorizontalDatum(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("Could not find datum {0}.", code)); } ; string datumtype = reader["DATUM_TYPE"].ToString(); string ellipsoidCode = reader["ELLIPSOID_CODE"].ToString(); string primeMeridianCode = reader["PRIME_MERIDIAN_CODE"].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, "Horizontal Datum"); //TODO: need to populate wgsConversionInfo with the right parameters. WGS84ConversionInfo wgsConversionInfo = new WGS84ConversionInfo(); IEllipsoid ellipsoid = this.CreateEllipsoid(ellipsoidCode); IHorizontalDatum horizontalDatum = new HorizontalDatum(name, DatumType.IHD_Geocentric, ellipsoid, wgsConversionInfo, remarks, datasource, code, "", ""); return(horizontalDatum); }
public void Test_Constructor() { IEllipsoid ellipsoid = new Ellipsoid(20926348,-1.0,294.26068, true,new LinearUnit(1)); WGS84ConversionInfo wgsInfo = new WGS84ConversionInfo(); wgsInfo.Dx=1.0; HorizontalDatum horizontalDatum = new HorizontalDatum("name",DatumType.IHD_Geocentric,ellipsoid, wgsInfo); IAxisInfo[] axisInfos = new IAxisInfo[2]; axisInfos[0] = AxisInfo.Latitude; axisInfos[1] = AxisInfo.Longitude; HorizontalCoordinateSystem horzCS = new HorizontalCoordinateSystem(horizontalDatum,axisInfos,"remarks","authority","code","name","alias","abbreviation"); Assertion.AssertEquals("ctor1.","remarks",horzCS.Remarks); Assertion.AssertEquals("ctor2.","authority",horzCS.Authority); Assertion.AssertEquals("ctor3.","code",horzCS.AuthorityCode); Assertion.AssertEquals("ctor4.","name",horzCS.Name); Assertion.AssertEquals("ctor5.","alias",horzCS.Alias); Assertion.AssertEquals("ctor6.","abbreviation",horzCS.Abbreviation); Assertion.AssertEquals("test 7",horizontalDatum,horzCS.HorizontalDatum); //Assertion.AssertEquals("test 8",axisInfos[0],horzCS.GetAxis(0)); //Assertion.AssertEquals("test 9",axisInfos[1],horzCS.GetAxis(1)); }
/// <summary> /// Creates a horizontal datum from a code. /// </summary> /// <param name="code">The EPSG code.</param> /// <returns>An object that implements the IHorizontalDatum interface.</returns> public IHorizontalDatum CreateHorizontalDatum(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 ellipsoidCode = reader["ELLIPSOID_CODE"].ToString(); string primeMeridianCode = reader["PRIME_MERIDIAN_CODE"].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, "Horizontal Datum"); //TODO: need to populate wgsConversionInfo with the right parameters. WGS84ConversionInfo wgsConversionInfo = new WGS84ConversionInfo(); IEllipsoid ellipsoid = this.CreateEllipsoid( ellipsoidCode ); IHorizontalDatum horizontalDatum = new HorizontalDatum(name, DatumType.IHD_Geocentric, ellipsoid, wgsConversionInfo,remarks,datasource,code,"",""); return horizontalDatum; }
private static IHorizontalDatum ReadHorizontalDatum(XmlTextReader reader) { if (!(reader.NodeType==XmlNodeType.Element && reader.Name=="CS_HorizontalDatum")) { throw new ParseException(String.Format(System.Globalization.CultureInfo.InvariantCulture, "Expected a IHorizontalDatum but got a {0} at line {1} col {2}",reader.Name,reader.LineNumber,reader.LinePosition)); } /* <IHorizontalDatum DatumType="1001"> <IInfo AuthorityCode="6277" Authority="EPSG" Name="OSGB_1936"/> <IEllipsoid SemiMajorAxis="6377563.396" SemiMinorAxis="6356256.90923729" InverseFlattening="299.3249646" IvfDefinitive="1"> <IInfo AuthorityCode="7001" Authority="EPSG" Name="Airy 1830"/> <ILinearUnit MetersPerUnit="1"> <IInfo AuthorityCode="9001" Abbreviation="m" Authority="EPSG" Name="metre"/> </ILinearUnit> </IEllipsoid> <IWGS84ConversionInfo Dx="375" Dy="-111" Dz="431" Ex="0" Ey="0" Ez="0" Ppm="0"/> </IHorizontalDatum> */ 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); IEllipsoid ellipsoid = ReadEllipsoid( reader ); WGS84ConversionInfo wgs84info = ReadWGS84ConversionInfo( reader ); reader.Read(); HorizontalDatum horizontalDatum = new HorizontalDatum(name,datumType,ellipsoid, wgs84info,"",authority,authorityCode,"",abbreviation); return horizontalDatum; }
private static IHorizontalDatum ReadHorizontalDatum(WktStreamTokenizer tokenizer) { //DATUM["OSGB 1936",SPHEROID["Airy 1830",6377563.396,299.3249646,AUTHORITY["EPSG","7001"]]TOWGS84[0,0,0,0,0,0,0],AUTHORITY["EPSG","6277"]] tokenizer.ReadToken("["); string name=tokenizer.ReadDoubleQuotedWord(); tokenizer.ReadToken(","); tokenizer.ReadToken("SPHEROID"); IEllipsoid ellipsoid = ReadEllipsoid(tokenizer); tokenizer.ReadToken("TOWGS84"); WGS84ConversionInfo wgsInfo = ReadWGS84ConversionInfo(tokenizer); tokenizer.ReadToken(","); string authority=""; string authorityCode=""; tokenizer.ReadAuthority(ref authority, ref authorityCode); // make an assumption about the datum type. DatumType datumType = DatumType.IHD_Geocentric; IHorizontalDatum horizontalDatum = new HorizontalDatum(name,datumType,ellipsoid, wgsInfo,"",authority,authorityCode,"",""); tokenizer.ReadToken("]"); return horizontalDatum; }