Пример #1
0
bool MDAL::DriverGdalGrib::parseBandInfo( const MDAL::GdalDataset *cfGDALDataset,
    const metadata_hash &metadata, std::string &band_name,
    double *time, bool *is_vector, bool *is_x
                                        )
{
  MDAL_UNUSED( cfGDALDataset );

  metadata_hash::const_iterator iter;

  // NAME
  iter = metadata.find( "grib_comment" );
  if ( iter == metadata.end() ) return true; //FAILURE
  band_name = iter->second;

  if ( MDAL::equals( mRefTime, std::numeric_limits<double>::min() ) )
  {
    iter = metadata.find( "grib_ref_time" );
    if ( iter == metadata.end() ) return true; //FAILURE
    mRefTime = parseMetadataTime( iter->second );
  }

  // TIME
  iter = metadata.find( "grib_valid_time" );
  if ( iter == metadata.end() ) return true; //FAILURE
  double valid_time = parseMetadataTime( iter->second );
  *time = ( valid_time - mRefTime ) / 3600.0; // input times are always in seconds UTC, we need them back in hours

  // Parse X, Y components if present
  parseBandIsVector( band_name, is_vector, is_x );

  return false; // success
}
    bool parseBandInfo(const metadata_hash& metadata, QString& band_name, float* time) {
       metadata_hash::const_iterator iter;

       iter = metadata.find("grib_comment");
       if (iter == metadata.end()) return true; //FAILURE
       band_name = iter.value();

       if (mRefTime == std::numeric_limits<float>::min())
       {
           iter = metadata.find("grib_ref_time");
           if (iter == metadata.end()) return true; //FAILURE
           mRefTime = parseMetadataTime(iter.value());
       }

       iter = metadata.find("grib_valid_time");
       if (iter == metadata.end()) return true; //FAILURE
       float valid_time = parseMetadataTime(iter.value());
       *time = (valid_time - mRefTime) / 3600.0; // input times are always in seconds UTC, we need them back in hours

       return false; // SUCCESS
    }