Ejemplo n.º 1
0
 public static int GTIFKeyGet(GTIF gtif, geokey_t thekey, out ellipsoid_t val, int index, int count)
 {
     // ignore count
     val = 0;
     ushort[] vals;
     if (GTIFKeyGet(gtif, thekey, out vals, index, 1) == 0)
     {
         return(0);
     }
     val = (ellipsoid_t)vals[0];
     return(1);
 }
Ejemplo n.º 2
0
		//**********************************************************************
		//							GTIFGetDatumInfo()
		//
		//		Fetch the ellipsoid, and name for a datum.
		//**********************************************************************
		public static bool GTIFGetDatumInfo(geodeticdatum_t datumCode, out string name, out ellipsoid_t ellipsoid)
		{
			name=null;
			ellipsoid=(ellipsoid_t)KvUserDefined;

			// --------------------------------------------------------------------
			//		Handle a few built-in datums.
			// --------------------------------------------------------------------
			if(datumCode==geodeticdatum_t.Datum_North_American_Datum_1927)
			{
				ellipsoid=ellipsoid_t.Ellipse_Clarke_1866;
				name="North American Datum 1927";
			}
			else if(datumCode==geodeticdatum_t.Datum_North_American_Datum_1983)
			{
				ellipsoid=ellipsoid_t.Ellipse_GRS_1980;
				name="North American Datum 1983";
			}
			else if(datumCode==geodeticdatum_t.Datum_WGS84)
			{
				ellipsoid=ellipsoid_t.Ellipse_WGS_84;
				name="World Geodetic System 1984";
			}
			else if(datumCode==geodeticdatum_t.Datum_WGS72)
			{
				ellipsoid=(ellipsoid_t)7043; // WGS7
				name="World Geodetic System 1972";
			}

			if(name!=null) return true;

			string pszFilename=CSVFilename("datum.csv");

			// --------------------------------------------------------------------
			//		If we can't find datum.csv then gdal_datum.csv is an
			//		acceptable fallback. Mostly this is for GDAL.
			// --------------------------------------------------------------------
			if(!File.Exists(pszFilename))
				if(File.Exists(CSVFilename("gdal_datum.csv")))
					pszFilename=CSVFilename("gdal_datum.csv");

			// --------------------------------------------------------------------
			//		Search the database for the corresponding datum code.
			// --------------------------------------------------------------------
			ellipsoid=(ellipsoid_t)atoi(CSVGetField(pszFilename, "DATUM_CODE", ((int)datumCode).ToString(),
				CSVCompareCriteria.CC_Integer, "ELLIPSOID_CODE"));

			// --------------------------------------------------------------------
			//		Get the name
			// --------------------------------------------------------------------
			name=CSVGetField(pszFilename, "DATUM_CODE", ((int)datumCode).ToString(),
				CSVCompareCriteria.CC_Integer, "DATUM_NAME");

			return true;
		}
Ejemplo n.º 3
0
		//**********************************************************************
		//						GTIFGetEllipsoidInfo()
		//
		//		Fetch info about an ellipsoid. Axes are always returned in
		//		meters. SemiMajor computed based on inverse flattening
		//		where that is provided.
		//**********************************************************************
		public static bool GTIFGetEllipsoidInfo(ellipsoid_t ellipseCode, out string name, out double semiMajor,
			out double semiMinor)
		{
			// --------------------------------------------------------------------
			//		Try some well known ellipsoids.
			// --------------------------------------------------------------------
			name=null;
			semiMajor=0.0;
			semiMinor=0.0;

			double invFlattening=0;

			if(ellipseCode==ellipsoid_t.Ellipse_Clarke_1866)
			{
				name="Clarke 1866";
				semiMajor=6378206.4;
				semiMinor=6356583.8;
				invFlattening=0.0;
			}
			else if(ellipseCode==ellipsoid_t.Ellipse_GRS_1980)
			{
				name="GRS 1980";
				semiMajor=6378137.0;
				semiMinor=0.0;
				invFlattening=298.257222101;
			}
			else if(ellipseCode==ellipsoid_t.Ellipse_WGS_84)
			{
				name="WGS 84";
				semiMajor=6378137.0;
				semiMinor=0.0;
				invFlattening=298.257223563;
			}
			else if(ellipseCode==(ellipsoid_t)7043)
			{
				name="WGS 72";
				semiMajor=6378135.0;
				semiMinor=0.0;
				invFlattening=298.26;
			}

			if(name!=null)
			{
				if(semiMinor==0.0) semiMinor=semiMajor*(1-1.0/invFlattening);
				return true;
			}

			// --------------------------------------------------------------------
			//		Get the semi major axis.
			// --------------------------------------------------------------------
			semiMajor=GTIFAtof(CSVGetField(CSVFilename("ellipsoid.csv"), "ELLIPSOID_CODE",
				((int)ellipseCode).ToString(), CSVCompareCriteria.CC_Integer, "SEMI_MAJOR_AXIS"));

			double toMeters=1.0;

			// --------------------------------------------------------------------
			//		Get the translation factor into meters.
			// --------------------------------------------------------------------
			geounits_t UOMLength=(geounits_t)atoi(CSVGetField(CSVFilename("ellipsoid.csv"), "ELLIPSOID_CODE",
				((int)ellipseCode).ToString(), CSVCompareCriteria.CC_Integer, "UOM_CODE"));

			string dummy;
			GTIFGetUOMLengthInfo(UOMLength, out dummy, out toMeters);
			semiMajor*=toMeters;

			// --------------------------------------------------------------------
			//		Get the semi-minor. If the Semi-minor axis
			//		isn't available, compute it based on the inverse flattening.
			// --------------------------------------------------------------------
			semiMinor=GTIFAtof(CSVGetField(CSVFilename("ellipsoid.csv"), "ELLIPSOID_CODE",
				((int)ellipseCode).ToString(), CSVCompareCriteria.CC_Integer, "SEMI_MINOR_AXIS"))*toMeters;

			if(semiMinor==0.0)
			{
				invFlattening=GTIFAtof(CSVGetField(CSVFilename("ellipsoid.csv"), "ELLIPSOID_CODE",
					((int)ellipseCode).ToString(), CSVCompareCriteria.CC_Integer, "INV_FLATTENING"));
				semiMinor=semiMajor*(1-1.0/invFlattening);
			}

			// --------------------------------------------------------------------
			//		Get the name.
			// --------------------------------------------------------------------
			name=CSVGetField(CSVFilename("ellipsoid.csv"), "ELLIPSOID_CODE", ((int)ellipseCode).ToString(),
				CSVCompareCriteria.CC_Integer, "ELLIPSOID_NAME");

			return true;
		}
Ejemplo n.º 4
0
 public static bool GTIFKeySet(GTIF gtif, geokey_t keyID, ellipsoid_t val)
 {
     ushort[] val1 = new ushort[] { (ushort)val };
     return(GTIFKeySet(gtif, keyID, val1));
 }
Ejemplo n.º 5
0
 public static int GTIFKeyGet(GTIF gtif, geokey_t thekey, out ellipsoid_t val, int index)
 {
     return(GTIFKeyGet(gtif, thekey, out val, index, 0));
 }
Ejemplo n.º 6
0
		public static bool GTIFKeySet(GTIF gtif, geokey_t keyID, ellipsoid_t val)
		{
			ushort[] val1=new ushort[] { (ushort)val };
			return GTIFKeySet(gtif, keyID, val1);
		}
Ejemplo n.º 7
0
		public static int GTIFKeyGet(GTIF gtif, geokey_t thekey, out ellipsoid_t val, int index)
		{
			return GTIFKeyGet(gtif, thekey, out val, index, 0);
		}
Ejemplo n.º 8
0
		public static int GTIFKeyGet(GTIF gtif, geokey_t thekey, out ellipsoid_t val, int index, int count)
		{
			// ignore count
			val=0;
			ushort[] vals;
			if(GTIFKeyGet(gtif, thekey, out vals, index, 1)==0) return 0;
			val=(ellipsoid_t)vals[0];
			return 1;
		}