本文整理汇总了C++中LSDRaster::remove_positive_hilltop_curvature方法的典型用法代码示例。如果您正苦于以下问题:C++ LSDRaster::remove_positive_hilltop_curvature方法的具体用法?C++ LSDRaster::remove_positive_hilltop_curvature怎么用?C++ LSDRaster::remove_positive_hilltop_curvature使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类LSDRaster
的用法示例。
在下文中一共展示了LSDRaster::remove_positive_hilltop_curvature方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: main
//.........这里部分代码省略.........
raster_selection.push_back(0);
raster_selection.push_back(0);
int CurrentWindowSize = window_radius;
vector<LSDRaster> Surfaces = FilledDEM.calculate_polyfit_surface_metrics(CurrentWindowSize, raster_selection);
LSDRaster slope = Surfaces[1];
LSDRaster aspect = Surfaces[2];
cout << "\nGetting drainage network and basins\n" << endl;
// get a flow info object
LSDFlowInfo FlowInfo(BoundaryConditions,FilledDEM);
//get stream net from channel heads
stringstream ss_ch;
ss_ch << Path << "Pelletier/" << Prefix << "_" << Resolutions[a] << "_CH";
vector<int> sources = FlowInfo.Ingest_Channel_Heads(ss_ch.str(), "bil");
LSDJunctionNetwork ChanNetwork(sources, FlowInfo);
LSDIndexRaster StreamNetwork = ChanNetwork.StreamOrderArray_to_LSDIndexRaster();
//Extract basins based on input stream order
vector< int > basin_junctions = ChanNetwork.ExtractBasinJunctionOrder(BasinOrder, FlowInfo);
LSDIndexRaster Basin_Raster = ChanNetwork.extract_basins_from_junction_vector(basin_junctions, FlowInfo);
cout << "\nExtracting hilltops and hilltop curvature" << endl;
// extract hilltops - no critical slope filtering is performed here
LSDRaster hilltops = ChanNetwork.ExtractRidges(FlowInfo);
//get hilltop curvature using filter to remove positive curvatures
LSDRaster cht_raster = FilledDEM.get_hilltop_curvature(Surfaces[3], hilltops);
LSDRaster CHT = FilledDEM.remove_positive_hilltop_curvature(cht_raster);
cout << "Starting hilltop flow routing\n" << endl;
// these params do not need changed during normal use of the HFR algorithm
bool print_paths_switch = false;
int thinning = 1;
string trace_path = "";
bool basin_filter_switch = false;
vector<int> Target_Basin_Vector;
//run HFR
vector< Array2D<float> > HFR_Arrays = FlowInfo.HilltopFlowRouting(FilledDEM, hilltops, slope, StreamNetwork, aspect, Filename_variable, Basin_Raster, Surfaces[4], print_paths_switch, thinning, trace_path, basin_filter_switch, Target_Basin_Vector);
LSDRaster HFR_LH = hilltops.LSDRasterTemplate(HFR_Arrays[1]);
LSDRaster relief = hilltops.LSDRasterTemplate(HFR_Arrays[3]);
//Filter Relief and LH data to remove any values < 2 pixels, as in Grieve et al (2015)
LSDRaster LH1 = HFR_LH.RemoveBelow(2.0*Resolutions[a]);
LSDRaster Relief1 = relief.RemoveBelow(2.0*Resolutions[a]);
//Filter Relief and LH data to remove any values > 10000
//These are created due to using 1m channel heads on low res data, and inadvertantly
//sampling nodata values, which gives us massive relief values
LSDRaster LH = LH1.RemoveAbove(10000);
LSDRaster Relief = Relief1.RemoveAbove(10000);
//go through the lh raster and get every value into a 1D vector
vector<float> LH_vec = Flatten_Without_Nodata(LH.get_RasterData(), LH.get_NoDataValue());
vector<float> Boxplot = BoxPlot(LH_vec);
//write the values to the output file
WriteLHData << Resolutions[a] << " " << Boxplot[0] << " " << Boxplot[1] << " " << Boxplot[2] << " " << Boxplot[3] << " " << Boxplot[4] << " " << Boxplot[5] << " " << Boxplot[6] << " " << Boxplot[7];
示例2: main
int main (int nNumberofArgs,char *argv[])
{
//Test for correct input arguments
if (nNumberofArgs!=7)
{
cout << "FATAL ERROR: wrong number of inputs. The program needs the path (with trailing slash), the filename prefix, window radius, ";
cout << "basin order, a switch to use or exclude floodplains and a switch to write rasters if desired." << endl;
exit(EXIT_SUCCESS);
}
//load input arguments
string path = argv[1];
string filename = argv[2];
float window_radius = atof(argv[3]); //6
int BasinOrder = atoi(argv[4]); //2
int FloodplainSwitch = atoi(argv[5]);
int WriteRasters = atoi(argv[6]); //0 (do not write rasters) or 1 (write rasters)
//set boundary conditions
vector<string> BoundaryConditions(4, "No Flux");
//load dem
LSDRaster DEM((path+filename+"_dem"), "flt");
//Fill
float MinSlope = 0.0001;
LSDRaster FilledDEM = DEM.fill(MinSlope);
//surface fitting
vector<int> raster_selection;
raster_selection.push_back(0);
raster_selection.push_back(1); //slope
raster_selection.push_back(1); //aspect
raster_selection.push_back(1); //curvature
raster_selection.push_back(1); //plan curvature
raster_selection.push_back(0);
raster_selection.push_back(0);
raster_selection.push_back(0);
vector<LSDRaster> Surfaces = FilledDEM.calculate_polyfit_surface_metrics(window_radius, raster_selection);
LSDRaster slope = Surfaces[1];
LSDRaster aspect = Surfaces[2];
cout << "\nGetting drainage network and basins\n" << endl;
// get a flow info object
LSDFlowInfo FlowInfo(BoundaryConditions,FilledDEM);
//get stream net from channel heads
vector<int> sources = FlowInfo.Ingest_Channel_Heads((path+filename+"_dem_CH"), "flt"); //swap to csv?
LSDJunctionNetwork ChanNetwork(sources, FlowInfo);
LSDIndexRaster StreamNetwork = ChanNetwork.StreamOrderArray_to_LSDIndexRaster();
//load floodplain and merge with the channel network if required, otherwise the
//floodplain mask will only contain the channel data
LSDIndexRaster ChannelAndFloodplain;
if (FloodplainSwitch == 1){
LSDIndexRaster Floodplains((path+filename+"_FloodPlain"), "flt");
ChannelAndFloodplain = StreamNetwork.MergeChannelWithFloodplain(Floodplains);
}
else{
ChannelAndFloodplain = StreamNetwork;
}
//Extract basins based on input stream order
vector< int > basin_junctions = ChanNetwork.ExtractBasinJunctionOrder(BasinOrder, FlowInfo);
LSDIndexRaster Basin_Raster = ChanNetwork.extract_basins_from_junction_vector(basin_junctions, FlowInfo);
cout << "\nExtracting hilltops and hilltop curvature" << endl;
// extract hilltops - no critical slope filtering is performed here
LSDRaster hilltops = ChanNetwork.ExtractRidges(FlowInfo);
//get hilltop curvature using filter to remove positive curvatures
LSDRaster cht_raster = FilledDEM.get_hilltop_curvature(Surfaces[3], hilltops);
LSDRaster CHT = FilledDEM.remove_positive_hilltop_curvature(cht_raster);
//get d infinity flowdirection and flow area
Array2D<float> dinf = FilledDEM.D_inf_FlowDir();
LSDRaster dinf_rast = FilledDEM.LSDRasterTemplate(dinf);
LSDRaster DinfArea = FilledDEM.D_inf_units();
cout << "Starting hilltop flow routing\n" << endl;
//start of Hilltop flow routing
string prefix = (path+filename+"_dreich_"); //set a path to write the hillslope length data to, based on the input path and filename given by the user
// these params do not need changed during normal use of the HFR algorithm
bool print_paths_switch = false;
int thinning = 1;
string trace_path = "";
bool basin_filter_switch = false;
vector<int> Target_Basin_Vector;
//run HFR
vector< Array2D<float> > HFR_Arrays = FlowInfo.HilltopFlowRouting(FilledDEM, hilltops, slope, ChannelAndFloodplain, aspect, prefix, Basin_Raster, Surfaces[4], print_paths_switch, thinning, trace_path, basin_filter_switch, Target_Basin_Vector);
//.........这里部分代码省略.........
示例3: main
int main(int nNumberofArgs, char *argv[])
{
//Test for correct input arguments
if (nNumberofArgs!=5)
{
cout << "FATAL ERROR: wrong number of inputs. The program needs the path (with trailing slash), the filename prefix, the DEM file format, the window size in spatial units.";
exit(EXIT_FAILURE);
}
//get input args
string path = argv[1];
string Prefix = argv[2];
string DEM_Format = argv[3];
int WindowSize = atoi(argv[4]);
//surface fitting
vector<int> raster_selection;
raster_selection.push_back(0);
raster_selection.push_back(1); //slope
raster_selection.push_back(0);
raster_selection.push_back(1); //curvature
//set up a writer to write the output data
ofstream WriteData;
//create an output filename based on the dem name
stringstream ss;
ss << path << Prefix << "_ChtResData.txt";
WriteData.open(ss.str().c_str());
//write headers
WriteData << "resoulution 2pc 25pc median mean 75pc 98pc minimum maximum" << endl;
//array of resolutions to load
int Resolutions[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
// vectors to hold the stats about the fitted surface
vector<float> Curv_vec;
//set boundary conditions
vector<string> BoundaryConditions(4, "No Flux");
for (int a = 0; a < 10; ++a){
cout << "Processing DEM " << a+1 << " of " << "10" << endl;
//load the DEM
//build the string of the filename to load
stringstream ss2;
ss2 << path << Prefix << "_" << Resolutions[a] << "_DEM";
LSDRaster DEM(ss2.str(), DEM_Format);
//Fill
float MinSlope = 0.0001;
LSDRaster FilledDEM = DEM.fill(MinSlope);
int CurrentWindowSize = WindowSize;
vector<LSDRaster> Surfaces = FilledDEM.calculate_polyfit_surface_metrics(CurrentWindowSize, raster_selection);
// get a flow info object
LSDFlowInfo FlowInfo(BoundaryConditions,FilledDEM);
//get stream net from channel heads
vector<int> sources = FlowInfo.Ingest_Channel_Heads((path+Prefix+"_CH"), "csv", 2);
LSDJunctionNetwork ChanNetwork(sources, FlowInfo);
// extract hilltops
LSDRaster hilltops = ChanNetwork.ExtractRidges(FlowInfo);
LSDRaster Hilltops = ChanNetwork.ExtractHilltops(hilltops, Surfaces[1], 0.4);
//get hilltop curvature using filter to remove positive curvatures
LSDRaster cht_raster = FilledDEM.get_hilltop_curvature(Surfaces[3], Hilltops);
LSDRaster CHT = FilledDEM.remove_positive_hilltop_curvature(cht_raster);
//go through the landscape and get every curvature value into a 1D vector
Curv_vec = Flatten_Without_Nodata(CHT.get_RasterData(), CHT.get_NoDataValue());
stringstream ss3;
ss3 << path << Prefix << "_" << Resolutions[a] << "_Hist_CHT.txt";
print_histogram(Curv_vec, 0.01, ss3.str());
vector<float> Boxplot = BoxPlot(Curv_vec);
//write the values to the output file
WriteData << Resolutions[a] << " " << Boxplot[0] << " " << Boxplot[1] << " " << Boxplot[2] << " " << Boxplot[3] << " " << Boxplot[4] << " " << Boxplot[5] << " " << Boxplot[6] << " " << Boxplot[7];
WriteData << endl;
}
WriteData.close();
}