Esempio n. 1
0
 public static int GTIFKeyGet(GTIF gtif, geokey_t thekey, out primemeridian_t val, int index, int count)
 {
     // ignore count
     val = 0;
     ushort[] vals;
     if (GTIFKeyGet(gtif, thekey, out vals, index, 1) == 0)
     {
         return(0);
     }
     val = (primemeridian_t)vals[0];
     return(1);
 }
Esempio n. 2
0
		//**********************************************************************
		//							GTIFGetPMInfo()
		//
		//		Get the offset between a given prime meridian and Greenwich
		//		in degrees.
		//**********************************************************************
		public static bool GTIFGetPMInfo(primemeridian_t PMCode, out string name, out double offset)
		{
			// --------------------------------------------------------------------
			//		Use a special short cut for Greenwich, since it is so common.
			// --------------------------------------------------------------------
			offset=0.0;
			name="Greenwich";
			if(PMCode==primemeridian_t.PM_Greenwich) return true;

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

			// --------------------------------------------------------------------
			//		Search the database for the corresponding datum code.
			// --------------------------------------------------------------------
			int UOMAngle=atoi(CSVGetField(pszFilename, "PRIME_MERIDIAN_CODE", ((int)PMCode).ToString(),
				CSVCompareCriteria.CC_Integer, "UOM_CODE"));
			if(UOMAngle<1) return false;

			// --------------------------------------------------------------------
			//		Get the PM offset.
			// --------------------------------------------------------------------
			offset=GTIFAngleStringToDD(CSVGetField(pszFilename, "PRIME_MERIDIAN_CODE", ((int)PMCode).ToString(),
				CSVCompareCriteria.CC_Integer, "GREENWICH_LONGITUDE"), (geounits_t)UOMAngle);

			// --------------------------------------------------------------------
			//		Get the name.
			// --------------------------------------------------------------------
			name=CSVGetField(pszFilename, "PRIME_MERIDIAN_CODE", ((int)PMCode).ToString(),
				CSVCompareCriteria.CC_Integer, "PRIME_MERIDIAN_NAME");

			return true;
		}
Esempio n. 3
0
		//**********************************************************************
		//							GTIFGetGCSInfo()
		//
		//		Fetch the datum, and prime meridian related to a particular GCS.
		//**********************************************************************
		public static bool GTIFGetGCSInfo(geographic_t GCSCode, out string name, out geodeticdatum_t datum,
			out primemeridian_t pm, out geounits_t UOMAngle)
		{
			name=null;
			datum=(geodeticdatum_t)KvUserDefined;

			// --------------------------------------------------------------------
			//		Handle some "well known" GCS codes directly.
			// --------------------------------------------------------------------
			pm=primemeridian_t.PM_Greenwich;
			UOMAngle=geounits_t.Angular_DMS_Hemisphere;
			if(GCSCode==geographic_t.GCS_NAD27)
			{
				datum=geodeticdatum_t.Datum_North_American_Datum_1927;
				name="NAD27";
				return true;
			}
			else if(GCSCode==geographic_t.GCS_NAD83)
			{
				datum=geodeticdatum_t.Datum_North_American_Datum_1983;
				name="NAD83";
				return true;
			}
			else if(GCSCode==geographic_t.GCS_WGS_84)
			{
				datum=geodeticdatum_t.Datum_WGS84;
				name="WGS 84";
				return true;
			}
			else if(GCSCode==geographic_t.GCS_WGS_72)
			{
				datum=geodeticdatum_t.Datum_WGS72;
				name="WGS 72";
				return true;
			}
			else if(GCSCode==(geographic_t)KvUserDefined) return false;

			// --------------------------------------------------------------------
			//		Search the database for the corresponding datum code.
			// --------------------------------------------------------------------
			string filename=CSVFilename("gcs.override.csv");
			datum=(geodeticdatum_t)atoi(CSVGetField(filename, "COORD_REF_SYS_CODE", ((int)GCSCode).ToString(),
				CSVCompareCriteria.CC_Integer, "DATUM_CODE"));

			if((int)datum<1)
			{
				filename=CSVFilename("gcs.csv");
				datum=(geodeticdatum_t)atoi(CSVGetField(filename, "COORD_REF_SYS_CODE", ((int)GCSCode).ToString(),
					CSVCompareCriteria.CC_Integer, "DATUM_CODE"));
			}

			if((int)datum<1) return false;

			pm=(primemeridian_t)KvUserDefined;
			UOMAngle=(geounits_t)KvUserDefined;
			name=null;

			// --------------------------------------------------------------------
			//		Get the PM.
			// --------------------------------------------------------------------
			pm=(primemeridian_t)atoi(CSVGetField(filename, "COORD_REF_SYS_CODE", ((int)GCSCode).ToString(),
				CSVCompareCriteria.CC_Integer, "PRIME_MERIDIAN_CODE"));
			if((int)pm<1) return false;

			// --------------------------------------------------------------------
			//		Get the angular units.
			// --------------------------------------------------------------------
			UOMAngle=(geounits_t)atoi(CSVGetField(filename, "COORD_REF_SYS_CODE", ((int)GCSCode).ToString(),
				CSVCompareCriteria.CC_Integer, "UOM_CODE"));
			if((int)UOMAngle<1) return false;

			// --------------------------------------------------------------------
			//		Get the name.
			// --------------------------------------------------------------------
			name=CSVGetField(filename, "COORD_REF_SYS_CODE", ((int)GCSCode).ToString(), CSVCompareCriteria.CC_Integer,
				"COORD_REF_SYS_NAME");

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