Exemple #1
0
/***********************************************************
 * meta_create:
 * Constructs a new meta_parameters record from CEOS, ARDOP
 * inputs, etc-- whatever it can find.*/
meta_parameters *meta_create(const char *fName)
{
	meta_parameters *meta = raw_init();
	//int success=FALSE;
	char **junk=NULL;
	int junk2;

	if (require_ceos_metadata(fName,&junk,&junk2) != NO_CEOS_METADATA) {
		ceos_init(fName, meta, REPORT_LEVEL_STATUS);
		//success=TRUE;
		FREE(junk[0]);
		FREE(junk[1]);
		FREE(junk);
	}
	if (extExists(fName,".in")) {
		ardop_init(fName,meta);
		//success=TRUE;
	}
	//if (success) meta_new2old(meta);
	return meta;
}
Exemple #2
0
/***************************************************************
 * meta_read:
 * Reads a meta file and returns a meta structure filled with
 * both old backward compatability and new fields filled in.
 * Note that the appropriate extension is appended to the given
 * base name automagically if needed.  */
meta_parameters *meta_read(const char *inName)
{
  char              *meta_name      = appendExt(inName,".meta");
  char              *ddr_name       = appendExt(inName,".ddr");
  meta_parameters   *meta           = raw_init(); /* Allocate and initialize basic structs */
  char **junk=NULL;
  int junk2, ii;

  /* Read file with appropriate reader for version.  */
  if ( !fileExists(meta_name) && fileExists(ddr_name)) {

    meta_read_only_ddr(meta, ddr_name);
/*    printf("WARNING: * Unable to locate '%s';\n"
           "         * Using only '%s' for meta data;\n"
           "         * Errors due to lack of meta data are very likely.\n",
     meta_name, ddr_name);*/
  }
  else if ( fileExists(meta_name) ) {
    if ( !meta_is_new_style(meta_name) ) {
      meta_read_old(meta, meta_name);
    }
    else {
      parse_metadata(meta, meta_name);
    }
  }
  // Generate metadata if CEOS files could be detected
  else if (require_ceos_metadata(inName,&junk,&junk2) != NO_CEOS_METADATA) {
    ceos_init(inName, meta, REPORT_LEVEL_STATUS);
  }

  /* Remember the name and location of the meta struct */
  //add_meta_ddr_struct(inName, meta, NULL);
  
  // Add latlon block if data has a data has lat/lon bands
  // Currently only SMAP data has that kind of arrangement
  int lat_band = 
    get_band_num(meta->general->bands, meta->general->band_count, "LAT");
  int lon_band =
    get_band_num(meta->general->bands, meta->general->band_count, "LON");
  if (strcmp_case(meta->general->sensor, "SMAP") == 0 && 
      lat_band > 0 && lon_band > 0) {
    char *data_name = appendExt(inName, ".img");
    if (fileExists(data_name)) {
      meta->latlon = meta_latlon_init(meta->general->line_count, 
				      meta->general->sample_count);
      FILE *fp = FOPEN(data_name, "rb");
      get_band_float_lines(fp, meta, lat_band, 0, meta->general->line_count,
			   meta->latlon->lat);
      get_band_float_lines(fp, meta, lon_band, 0, meta->general->line_count,
			   meta->latlon->lon);
      FCLOSE(fp);
    }
    FREE(data_name);
  }

  FREE(ddr_name);
  FREE(meta_name);
  free_ceos_names(NULL, junk);

  return meta;
}