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); }
//********************************************************************** // 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; }
//********************************************************************** // 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; }
public static bool GTIFKeySet(GTIF gtif, geokey_t keyID, primemeridian_t val) { ushort[] val1 = new ushort[] { (ushort)val }; return(GTIFKeySet(gtif, keyID, val1)); }
public static int GTIFKeyGet(GTIF gtif, geokey_t thekey, out primemeridian_t val, int index) { return(GTIFKeyGet(gtif, thekey, out val, index, 0)); }
public static bool GTIFKeySet(GTIF gtif, geokey_t keyID, primemeridian_t val) { ushort[] val1=new ushort[] { (ushort)val }; return GTIFKeySet(gtif, keyID, val1); }
public static int GTIFKeyGet(GTIF gtif, geokey_t thekey, out primemeridian_t val, int index) { return GTIFKeyGet(gtif, thekey, out val, index, 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; }