Example #1
0
void MDAL::LoaderGdal::addDatasetGroups()
{
  // Add dataset to mMesh
  for ( data_hash::const_iterator band = mBands.begin(); band != mBands.end(); band++ )
  {
    std::shared_ptr<DatasetGroup> group = std::make_shared< DatasetGroup >();
    group->uri = mFileName;
    group->setName( band->first );
    group->isOnVertices = true;

    for ( timestep_map::const_iterator time_step = band->second.begin(); time_step != band->second.end(); time_step++ )
    {
      std::vector<GDALRasterBandH> raster_bands = time_step->second;
      bool is_vector = ( raster_bands.size() > 1 );

      std::shared_ptr<MDAL::Dataset> dataset = std::make_shared< MDAL::Dataset >();
      group->isScalar = !is_vector;

      dataset->time = time_step->first;
      dataset->values.resize( meshGDALDataset()->mNPoints );
      dataset->active.resize( meshGDALDataset()->mNVolumes );
      dataset->parent = group.get();

      for ( std::vector<GDALRasterBandH>::size_type i = 0; i < raster_bands.size(); ++i )
      {
        addDataToOutput( raster_bands[i], dataset, is_vector, i == 0 );
      }
      activateFaces( dataset );

      group->datasets.push_back( dataset );
    }
    mMesh->datasetGroups.push_back( group );
  }
}
Example #2
0
void MDAL::DriverGdal::addDatasetGroups()
{
  // Add dataset to mMesh
  for ( data_hash::const_iterator band = mBands.begin(); band != mBands.end(); band++ )
  {
    if ( band->second.empty() )
      continue;

    std::shared_ptr<DatasetGroup> group = std::make_shared< DatasetGroup >(
                                            name(),
                                            mMesh.get(),
                                            mFileName,
                                            band->first
                                          );
    group->setIsOnVertices( true );
    bool is_vector = ( band->second.begin()->second.size() > 1 );
    group->setIsScalar( !is_vector );

    for ( timestep_map::const_iterator time_step = band->second.begin(); time_step != band->second.end(); time_step++ )
    {
      std::vector<GDALRasterBandH> raster_bands = time_step->second;
      std::shared_ptr<MDAL::MemoryDataset> dataset = std::make_shared< MDAL::MemoryDataset >( group.get() );

      dataset->setTime( time_step->first );
      for ( std::vector<GDALRasterBandH>::size_type i = 0; i < raster_bands.size(); ++i )
      {
        addDataToOutput( raster_bands[i], dataset, is_vector, i == 0 );
      }
      activateFaces( dataset );
      dataset->setStatistics( MDAL::calculateStatistics( dataset ) );
      group->datasets.push_back( dataset );
    }

    // TODO use GDALComputeRasterMinMax
    group->setStatistics( MDAL::calculateStatistics( group ) );
    mMesh->datasetGroups.push_back( group );
  }
}