Example #1
0
int PerformAlgorithm(char alg, std::string filename, std::string output_name, std::string analysis){
  Timer overall,algtimer;

  overall.start();

  Array2D<elev_t> elevations(filename,false);
  
  switch(alg){
    case '1':
      algtimer.start();
      original_priority_flood(elevations);
      algtimer.stop();

      elevations.saveGDAL(output_name,analysis);
      overall.stop();

      cout<<"t Run-time = "<<algtimer.accumulated()<<" s"<<endl;
      cout<<"t Wall-time = "<<overall.accumulated()<<" s"<<endl;
      return 0;


    case '2':
      algtimer.start();
      improved_priority_flood(elevations);
      algtimer.stop();

      elevations.saveGDAL(output_name,analysis);
      overall.stop();

      cout<<"t Run-time = "<<algtimer.accumulated()<<" s"<<endl;
      cout<<"t Wall-time = "<<overall.accumulated()<<" s"<<endl;
      return 0;


    case '3':
      algtimer.start();
      priority_flood_epsilon(elevations);
      algtimer.stop();

      elevations.saveGDAL(output_name,analysis);
      overall.stop();

      cout<<"t Run-time = "<<algtimer.accumulated()<<" s"<<endl;
      cout<<"t Wall-time = "<<overall.accumulated()<<" s"<<endl;
      return 0;


    case '4': {
      Array2D<d8_flowdir_t>  flowdirs;
      algtimer.start();
      priority_flood_flowdirs(elevations,flowdirs);
      algtimer.stop();

      flowdirs.saveGDAL(output_name,analysis);
      overall.stop();

      cout<<"t Run-time = "<<algtimer.accumulated()<<" s"<<endl;
      cout<<"t Wall-time = "<<overall.accumulated()<<" s"<<endl;
      return 0;
    }


    case '5': {
      Array2D<int32_t> pit_mask;
      algtimer.start();
      priority_flood_watersheds(elevations,pit_mask,false);
      algtimer.stop();

      pit_mask.saveGDAL(output_name,analysis);
      overall.stop();

      cout<<"t Run-time = "<<algtimer.accumulated()<<" s"<<endl;
      cout<<"t Wall-time = "<<overall.accumulated()<<" s"<<endl;
      return 0;
    }

    case '6':
      algtimer.start();
      Zhou2016(elevations);
      algtimer.stop();

      elevations.saveGDAL(output_name,analysis);
      overall.stop();

      cout<<"t Run-time = "<<algtimer.accumulated()<<" s"<<endl;
      cout<<"t Wall-time = "<<overall.accumulated()<<" s"<<endl;
      return 0;


    default:
      cerr<<"Unrecognised algorithm choice!"<<endl;
      return -1;
  }
}