void d8_flow_directions( const array2d<T> &elevations, array2d<U> &flowdirs ){ ProgressBar progress; diagnostic("Setting up the flow directions matrix..."); flowdirs.copyprops(elevations); flowdirs.init(NO_FLOW); flowdirs.no_data=d8_NO_DATA; diagnostic("succeeded.\n"); diagnostic("%%Calculating D8 flow directions...\n"); progress.start( elevations.width()*elevations.height() ); #pragma omp parallel for for(int x=0;x<elevations.width();x++){ progress.update( x*elevations.height() ); for(int y=0;y<elevations.height();y++) if(elevations(x,y)==elevations.no_data) flowdirs(x,y)=flowdirs.no_data; else flowdirs(x,y)=d8_FlowDir(elevations,x,y); } diagnostic_arg(SUCCEEDED_IN,progress.stop()); }
void d8_flow_directions( const Array2D<T> &elevations, Array2D<U> &flowdirs ){ ProgressBar progress; std::cerr<<"A D8 Flow Directions"<<std::endl; std::cerr<<"C TODO"<<std::endl; std::cerr<<"p Setting up the flow directions matrix..."<<std::endl; flowdirs.resize(elevations); flowdirs.setAll(NO_FLOW); flowdirs.setNoData(FLOWDIR_NO_DATA); std::cerr<<"p Calculating D8 flow directions..."<<std::endl; progress.start( elevations.width()*elevations.height() ); #pragma omp parallel for for(int y=0;y<elevations.height();y++){ progress.update( y*elevations.width() ); for(int x=0;x<elevations.width();x++) if(elevations(x,y)==elevations.noData()) flowdirs(x,y) = flowdirs.noData(); else flowdirs(x,y) = d8_FlowDir(elevations,x,y); } std::cerr<<"t Succeeded in = "<<progress.stop()<<" s"<<std::endl; }