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 ); } }
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 ); } }