Main analysis object to interface with other LSD objects. More...
#include <LSDRaster.hpp>
Public Member Functions | |
LSDRaster () | |
The create function. This is default and throws an error. | |
LSDRaster (string filename, string extension) | |
Create an LSDRaster from a file. Uses a filename and file extension. More... | |
LSDRaster (int nrows, int ncols, float xmin, float ymin, float cellsize, float ndv, Array2D< float > data) | |
Create an LSDRaster from memory. More... | |
LSDRaster (int nrows, int ncols, double xmin, double ymin, double cellsize, double ndv, Array2D< double > data) | |
Create an LSDRaster from memory, with the elvation data stored as double precision floats. More... | |
LSDRaster (int nrows, int ncols, float xmin, float ymin, float cellsize, float ndv, Array2D< float > data, map< string, string > temp_GRS) | |
Create an LSDRaster from memory, includes georeferencing. More... | |
int | get_NRows () const |
int | get_NCols () const |
float | get_XMinimum () const |
float | get_YMinimum () const |
float | get_DataResolution () const |
int | get_NoDataValue () const |
Array2D< float > | get_RasterData () const |
Array2D< double > | get_RasterData_dbl () const |
Get the raw raster data, double format. More... | |
Array2D< int > | get_RasterData_int () const |
Get the raw raster data, integer format. More... | |
map< string, string > | get_GeoReferencingStrings () const |
float | get_data_element (int row, int column) |
Get the raster data at a specified location. More... | |
void | set_data_element (int row, int column, float value) |
Sets the raster data at a specified location. More... | |
LSDRaster & | operator= (const LSDRaster &LSDR) |
Assignment operator. | |
void | read_raster (string filename, string extension) |
Read a raster into memory from a file. More... | |
TNT::Array2D< double > | get_ascii_raster (string FILENAME) |
Reads a raster from an ascii file for use in LSDCatchmentModel. More... | |
void | read_ascii_raster (string FILENAME) |
void | read_ascii_raster_integers (string FILENAME) |
Reads a raster of integers and populates LSDRaster integer array member data. More... | |
void | write_raster (string filename, string extension) |
Read a raster from memory to a file. More... | |
void | write_double_raster (string filename, string extension) |
This calls raster write functions, writing from Arrays of type <double> to raster format. More... | |
void | write_double_asc_raster (string string_filename) |
Writes out a double array to an ascii. | |
void | write_double_flt_raster (string filename, string string_filename) |
Writes out a double array to a binary flt file. | |
void | write_double_bil_raster (string filename, string string_filename) |
Writes out a double array to a ENVI bil file (untested!) More... | |
bool | does_raster_have_same_dimensions (LSDRaster &Compare_raster) |
Checks to see if two rasters have the same dimensions Does NOT check georeferencing. More... | |
bool | does_raster_have_same_dimensions (LSDIndexRaster &Compare_raster) |
Checks to see if two rasters have the same dimensions Does NOT check georeferencing. More... | |
bool | does_raster_have_same_dimensions_and_georeferencing (LSDRaster &Compare_raster) |
Checks to see if two rasters have the same georeferencing. More... | |
bool | does_raster_have_same_dimensions_and_georeferencing (LSDIndexRaster &Compare_raster) |
Checks to see if two rasters have the same georeferencing. More... | |
map< string, string > | Update_GeoReferencingStrings (float NewXmin, float NewYmax) |
Method which takes a new xmin and ymax value and modifys the GeoReferencingStrings map_info line to contain these new values. More... | |
void | Update_GeoReferencingStrings () |
Method which updates the map info element of the georeferencing strings based on information within the datamembers of the raster. More... | |
void | impose_georeferencing_UTM (int zone, string NorS) |
This method imposes georefereing strings assuming the coordinate system is UTM. More... | |
int | Find_UTM_central_meridian (int UTM_zone) |
This method looks up the central meridian given a UTM zone. More... | |
void | get_UTM_information (int &UTM_zone, bool &is_North) |
this function gets the UTM_zone and a boolean that is true if the map is in the northern hemisphere More... | |
void | get_x_and_y_locations (int row, int col, double &x_loc, double &y_loc) |
this gets the x and y location of a node at row and column More... | |
void | get_x_and_y_locations (int row, int col, float &x_loc, float &y_loc) |
this gets the x and y location of a node at row and column More... | |
void | get_lat_and_long_locations (int row, int col, double &lat, double &longitude, LSDCoordinateConverterLLandUTM Converter) |
a function to get the lat and long of a node in the raster Assumes WGS84 ellipsiod More... | |
void | get_easting_and_northing_vectors (vector< float > &Eastings, vector< float > &Northings) |
This returns vectors of all the easting and northing points in the raster Used for interpolations. More... | |
vector< float > | interpolate_points_bilinear (vector< float > UTMEvec, vector< float > UTMNvec) |
This interpolates a vector of points onto the raster. Uses bilinear interpolation. More... | |
LSDRaster | fill_with_interpolated_data (vector< int > rows_of_nodes, vector< int > cols_of_nodes, vector< float > interpolated_data) |
This fills a raster with precalculated interpolated data. More... | |
float | get_value_of_point (float UTME, float UTMN) |
This gets the value at a point in UTM coordinates. More... | |
bool | check_if_point_is_in_raster (float X_coordinate, float Y_coordinate) |
this check to see if a point is within the raster More... | |
void | get_row_and_col_of_a_point (float X_coordinate, float Y_coordinate, int &row, int &col) |
Gets the row and column of a point in the raster. More... | |
vector< float > | get_XY_MinMax () |
This function returns a vector with the X adn Y minimum and max values. More... | |
vector< float > | get_RasterData_vector () |
This function returns the raster data as a vector. More... | |
vector< float > | get_RasterData_vector_No_NDVs () |
This function returns the raster data as a vector, ignoring NDVs. More... | |
void | write_RasterData_to_text_file (string filename) |
This function returns the raster data as text file. More... | |
void | rewrite_with_random_values (float range) |
rewrite all the data array values with random numbers (with a uniform distribution). More... | |
LSDRaster | create_raster_nodata () |
Create a raster in of the same number of rows and cols with nodata. More... | |
LSDRaster | RasterTrimmer () |
Calculate the minimum bounding rectangle for an LSDRaster Object and crop out all the surrounding NoDataValues to reduce the size and load times of output rasters. More... | |
LSDRaster | RasterTrimmerPadded (int padded_pixels) |
Calculate the minimum bounding rectangle for an LSDRaster Object and crop out all the surrounding NoDataValues to reduce the size and load times of output rasters. Similar to RasterTrimmer but has a pixel buffer. Useful for CRN data since sometimes the channel in the DEM does not correspond exactly with the data point. More... | |
LSDRaster | RasterTrimmerSpiral () |
Takes a raster and trims nodata from around the edges to result in a rectangular LSDRaster. More... | |
LSDRaster | clip_to_smaller_raster (LSDRaster &smaller_raster) |
This returns a clipped raster that has the same dimensions as the smaller raster. More... | |
LSDRaster | clip_to_smaller_raster (LSDIndexRaster &smaller_raster) |
This returns a clipped raster that has the same dimensions as the smaller raster. More... | |
LSDRaster | LSDRasterTemplate (Array2D< float > InputData) |
Make LSDRaster object using a 'template' raster and an Array2D of data. More... | |
void | strip_raster_padding () |
Strips the edge rows/columns of a LSDRaster on each side of the array. More... | |
LSDRaster | BufferRasterData (float window_radius) |
Buffers a raster using a circular kernel of a user-defined radius (m) More... | |
LSDRaster | calculate_relief (float kernelWidth, int kernelType) |
Calculates a relief raster. More... | |
float | mean_elevation (void) |
Calculates mean elevation of a raster. More... | |
float | max_elevation (void) |
Calculates max elevation of a raster. More... | |
float | mean_relief (float kernelsize) |
Calculates mean relief of a raster, it defaults to a circular kernal. More... | |
float | difference_rasters (LSDRaster &compare_raster) |
Calculates the mean difference between two rasters. More... | |
void | raster_multiplier (float multiplier) |
This multiplies the raster data by a multiplier Note that values are replaced. More... | |
LSDRaster | MapAlgebra_multiply (LSDRaster &M_raster) |
This multiplies two rasters, elementwise Simple elementwise multiplictation. More... | |
LSDRaster | MapAlgebra_divide (LSDRaster &M_raster) |
This divides two rasters, elementwise Simple elementwise division. More... | |
LSDRaster | MapAlgebra_add (LSDRaster &M_raster) |
This add two rasters, elementwise Simple elementwise addition. More... | |
LSDRaster | MapAlgebra_subtract (LSDRaster &M_raster) |
This subtracts two rasters, elementwise Simple elementwise subtraction. More... | |
float | WrapSample (int row, int col) |
This returns a value from the array data element but wraps around the array dimensions so that row > NRows (for example) returns a value. More... | |
void | SetWrapSample (int row, int col, float value) |
This sets a value in the data array withthe added feature that it wraps beyond NRows and NCols. More... | |
void | DSSetFeatureCorners (int featuresize, float scale) |
This sets the corners of features as the first step in the diamond square algorithm. More... | |
void | DSSampleSquare (int row, int col, int size, float value) |
This is the square sampling step of the diamond square algorithm: it takes the average of the four corners and adds a random number to set the centrepoint of a square. More... | |
void | DSSampleDiamond (int row, int col, int size, float value) |
This is the diamond sampling step of the diamond square algorithm: it takes the average of the four corners and adds a random number to set the centrepoint of a diamond. More... | |
void | DiamondSquare_SampleStep (int stepsize, float scale) |
This is the sampling function for the diamond square algorithm: it runs both a diamond and a square sampling for each step. More... | |
LSDRaster | DiamondSquare (int feature_order, float scale) |
This is the driving function for the diamond square algorithm. More... | |
LSDRaster | hillshade () |
This function generates a hillshade raster. More... | |
LSDRaster | hillshade (float altitude, float azimuth, float z_factor) |
Array2D< float > | Shadow (int theta, int phi) |
This function generates a hillshade derivative raster using the algorithm outlined in Codilean (2006). More... | |
LSDRaster | CastShadows (int Azimuth, int ZenithAngle) |
Function to determine areas of a DEM that are in shadow from a given radiation source defined by an Azimuth and Zenith following Codilean (2006). More... | |
Array2D< float > | Shadows (int Azimuth, int ZenithAngle) |
Function to determine areas of a DEM that are in shadow from a given radiation source defined by an Azimuth and Zenith following Codilean (2006). More... | |
LSDRaster | TopographicShielding (int theta_step, int phi_step) |
This function generates a topographic shielding raster using the algorithm outlined in Codilean (2006). More... | |
LSDRaster | TopographicShielding () |
vector< LSDRaster > | calculate_polyfit_surface_metrics (float window_radius, vector< int > raster_selection) |
Surface polynomial fitting and extraction of topographic metrics. More... | |
vector< LSDRaster > | calculate_polyfit_roughness_metrics (float window_radius1, float window_radius2, vector< int > raster_selection) |
Surface polynomial fitting and extraction of roughness metrics. More... | |
void | calculate_polyfit_coefficient_matrices (float window_radius, Array2D< float > &a, Array2D< float > &b, Array2D< float > &c, Array2D< float > &d, Array2D< float > &e, Array2D< float > &f) |
This function calculates 6 coefficient matrices that allow the user to then calcualte slope, curvature, aspect, a classification for finding saddles and peaks and other metrics. More... | |
LSDRaster | calculate_polyfit_elevation (Array2D< float > &f) |
This function calculates the elevation based on a polynomial fit. More... | |
LSDRaster | calculate_polyfit_slope (Array2D< float > &d, Array2D< float > &e) |
This function calculates the slope based on a polynomial fit. More... | |
LSDRaster | calculate_polyfit_aspect (Array2D< float > &d, Array2D< float > &e) |
This function calculates the aspect based on a polynomial fit. More... | |
LSDRaster | calculate_polyfit_curvature (Array2D< float > &a, Array2D< float > &b) |
This function calculates the curvature based on a polynomial fit. More... | |
LSDRaster | calculate_polyfit_planform_curvature (Array2D< float > &a, Array2D< float > &b, Array2D< float > &c, Array2D< float > &d, Array2D< float > &e) |
This function calculates the planform curvature based on a polynomial fit. More... | |
LSDRaster | calculate_polyfit_profile_curvature (Array2D< float > &a, Array2D< float > &b, Array2D< float > &c, Array2D< float > &d, Array2D< float > &e) |
This function calculates the profile curvature based on a polynomial fit. More... | |
LSDRaster | calculate_polyfit_tangential_curvature (Array2D< float > &a, Array2D< float > &b, Array2D< float > &c, Array2D< float > &d, Array2D< float > &e) |
This function calculates the tangential curvature based on a polynomial fit. More... | |
LSDIndexRaster | calculate_polyfit_classification (Array2D< float > &a, Array2D< float > &b, Array2D< float > &c, Array2D< float > &d, Array2D< float > &e) |
This function identifies approximate position of stationary points within discrete surface using a threshold slope. More... | |
LSDRaster | get_hilltop_curvature (LSDRaster &curvature, LSDRaster &Hilltops) |
Gets the hilltop curvature raster. More... | |
LSDRaster | remove_positive_hilltop_curvature (LSDRaster &hilltop_curvature) |
Removes positive hilltop curvature values. More... | |
void | remove_positive_values () |
Removes positive values from a raster. More... | |
float | get_percentage_bedrock_ridgetops (LSDRaster &roughness, LSDRaster &hilltop_curvature, float threshold) |
Gets the percentage of bedrock ridges. More... | |
LSDRaster | calculate_slope_angles () |
Calculates slope angle in radians. Needs the slope raster. More... | |
LSDRaster | calculate_water_supply_rate_for_saturation (float soil_thick, float K, LSDRaster &ContributingArea, LSDRaster &SlopeAngle) |
Calculates the water supply rate required for saturation of the hillslope soil. More... | |
LSDRaster | calculate_factor_of_safety_at_saturation (float C_r, float rho_s, float soil_thick, float tan_phi, LSDRaster &SlopeAngle) |
This calculates the factor of safety if the soil is completely saturated. More... | |
void | calculate_polyfit_directional_cosines (Array2D< float > &d, Array2D< float > &e, Array2D< float > &l, Array2D< float > &m, Array2D< float > &n) |
Algorithm that assesses surface roughness based on a polynomial fit. More... | |
void | calculate_orientation_matrix_eigenvalues (float window_radius, Array2D< float > &l, Array2D< float > &m, Array2D< float > &n, Array2D< float > &s1, Array2D< float > &s2, Array2D< float > &s3) |
Find eigenvalues for orientation matrix. More... | |
void | calculate_plane_coefficient_matrices (float window_radius, Array2D< float > &a_plane, Array2D< float > &b_plane, Array2D< float > &c_plane) |
This function is a wrapper to get the three roughness eigenvalues s1, s2 and s3. More... | |
LSDRaster | calculate_REI (Array2D< float > &a_plane, Array2D< float > &b_plane, float CriticalSlope) |
Create the REI raster. More... | |
LSDRaster | calculate_REI (float window_radius, float CriticalSlope) |
Create the REI raster (imporoved wrapper) Rock exposure index defined as areas with local slope exceeding some critical slope as defined by DiBiase et al. (2012) More... | |
void | calculate_and_print_polyfit_rasters (float window_radius, string file_prefix, vector< int > file_list) |
this function takes the polyfit functions and requires a window radius and a vector telling the function which rasters to print to file. More... | |
void | calculate_and_print_polyfit_and_roughness_rasters (float window_radius, float roughness_radius, string file_prefix, vector< int > file_list) |
This function takes the combines the polyfit functions and the roughness function in one package. More... | |
void | calculate_roughness_rasters (float window_radius, float roughness_radius, string file_prefix, vector< int > file_code) |
This function takes the combines the roughness functions in one package. More... | |
void | remove_seas () |
This function changes any elevation <= 0 to NoDataValue. More... | |
void | mask_to_nodata_below_threshold (float threshold) |
This function changes any elevation <= threshold to NoDataValue. More... | |
LSDRaster | mask_to_nodata_using_threshold (float threshold, bool belowthresholdisnodata) |
This function changes any data point either above or below threshold to NoDataValue. More... | |
LSDRaster | mask_to_nodata_using_threshold_using_other_raster (float threshold, bool belowthresholdisnodata, LSDRaster &MaskingRaster) |
This function changes any data point either above or below threshold to NoDataValue The threshold is determined by a second raster. More... | |
LSDIndexRaster | mask_to_indexraster_using_threshold (float threshold, bool belowthresholdisnodata) |
This function creats an LSDIndexRaster mask (with true == 1 and otherwise nodata) from an LSDRaster. Can mask either above or below a threshold. More... | |
LSDRaster | mask_to_nodata_with_mask_raster (LSDIndexRaster &Mask_raster, int mask_value) |
This function masks a raster to nodata based on a mask value and a mask raster. More... | |
LSDRaster | fill () |
This function fills pits/sinks in a DEM by incrementing elevations for cells with no downslope neighbour. The process is repeated adnausium until no cells require incrementing. More... | |
void | fill_iterator (Array2D< float > &fill_data, int i, int j) |
This is a recursive algorithm that is called by the fill function. More... | |
LSDRaster | fill (float &MinSlope) |
This function fills pits/sinks in a DEM by checking for pits from lowest to highest elevation, starting at the DEM boundary (raster edge or adjacent to NDVs). More... | |
LSDRaster | MDFlow (vector< string > BoundaryConditions) |
Generate a flow area raster using a multi direction algorithm. More... | |
LSDRaster | FreemanMDFlow () |
Generate a flow area raster using a multi direction algorithm. More... | |
LSDRaster | FreemanMDFlow_SingleSource (int i_source, int j_source) |
Route flow from one source pixel using FreemanMDFlow. Adapted from SWDG's code above. More... | |
LSDRaster | FMDChannelsFromChannelHeads (vector< int > &channel_heads_rows, vector< int > &channel_heads_cols, float R_threshold) |
Extracts a multi-pixel channel network, as opposed to a single thread channel, using method outlined in Pelletier, 2013, WRR; A robust, two-parameter method for the extraction of drainage networks from high-resolution digital elevation models (DEMs): Evaluation using synthetic and real-world DEMs. More... | |
LSDRaster | QuinnMDFlow () |
Generate a flow area raster using a multi direction algorithm. More... | |
LSDRaster | M2DFlow () |
Generate a flow area raster using a multi 2-direction algorithm. More... | |
LSDRaster | RidgeSample (Array2D< float > &Ridges) |
Module to sample LSDRaster values running along a ridgetop network. More... | |
LSDRaster | RidgeSmoother (int WindowRadius) |
Pass a smoothing window over a ridge LSDRaster object to calculate an average value running along the ridgetop. More... | |
LSDRaster | RidgeBuffer (int BufferRadius) |
Pass a buffer over a ridge LSDRaster object to increase sampling area. More... | |
LSDRaster | BasinAverager (LSDIndexRaster &Basins) |
Module assigns an average LSDRaster value to each basin. More... | |
float | SingleBasinAverager (LSDIndexRaster &Basin) |
Module calculates an average value to each for a given raster from within a basin. More... | |
LSDRaster | BasinArea (LSDIndexRaster Basins) |
Write the area(in spatial units) of each basin to the basin's pixels. More... | |
void | GetBasinVector (LSDIndexRaster Basins, int BasinOfInterest) |
Convert a basin, given by a basin ID, into a chain of xy coordinates for fast plotting of vector basin outlines. More... | |
vector< LSDRaster > | BasinPuncher (vector< int > basin_ids, LSDIndexRaster BasinArray) |
Punch basins out of an LSDRaster to create DEMs of a single catchment. More... | |
LSDRaster | CookieCutRaster (LSDRaster Cutter) |
Cookie cut a raster using a smaller raster. More... | |
void | CollectBasinMetrics (LSDIndexRaster &Basins, LSDRaster &Slope, LSDRaster &Elevation, LSDRaster &Aspect, LSDRaster &Area, LSDRaster &DrainageDensity, LSDRaster &Cht, LSDRaster &HillslopeLength, LSDRaster &MeanSlope, LSDRaster &Relief, LSDRaster &MeanAspect, LSDRaster &LH_drainage_density, Array2D< float > LH_Data, float CriticalSlope, string RasterFilename) |
Collect all basin average metrics into a single file. More... | |
void | raster_statistics_by_index (LSDIndexRaster &IndexRaster, vector< float > &mean_vector, vector< float > &sd_vector, vector< float > &serr_vector, vector< int > &Npts_vector) |
Takes a raster and a corresponding index raster, and calculates the mean, sd and standard error by index. Returns four vectors: mean, st.dev., st.err and Number of points for each category. More... | |
pair< float, float > | Boomerang (LSDRaster &Slope, LSDRaster &D_inf, string RasterFilename, float log_bin_width=0.1, int SplineResolution=200, float bin_threshold=0.05) |
Generate data in two text files to create a boomerang plot as in Roering et al [2007]. More... | |
LSDRaster | DrainageDensity (LSDIndexRaster &StreamNetwork, LSDIndexRaster &Basins, Array2D< int > FlowDir) |
Calculate drainage density of a set of input basins. More... | |
float | get_drainage_density_of_raster (LSDIndexRaster &StreamNetwork, Array2D< int > FlowDir) |
Calculate drainage density of a DEM. More... | |
LSDRaster | HillslopeLengthFromDrainageDensity (LSDIndexRaster &StreamNetwork, LSDIndexRaster &Basins, Array2D< int > FlowDir) |
Simple method to calculate drainage density for each basin and then convert these values into a hillslope length raster. More... | |
void | GetVectors (LSDRaster Magnitude, LSDRaster Direction, string output_file, int step) |
Method to export thinned vector field data to a text file. More... | |
LSDRaster | NonLocalMeansFilter (int WindowRadius=2, int SimilarityRadius=2, int DegreeFiltering=2, float Sigma=1.25) |
Perform Non-local means filtering on a DEM following Baude et al [2005]. More... | |
void | PadRasterSymmetric (Array2D< float > &PaddedRasterData, int &SimilarityRadius) |
Creates a buffer around an array (of size SimilarityRadius) and gives the new border mirror symmetric values of the original array reflected across the boundary. More... | |
void | MakeGaussianKernel (Array2D< float > &Kernel, float sigma, int SimilarityRadius) |
Generate gaussian weighted kernel. More... | |
LSDRaster | GaussianFilter (float sigma, int kr=0) |
Filters the raster using a square 2D Gaussian filter. The filter is applied using a moving kernel of gaussian weights with a radius of 3*sigma. More... | |
LSDRaster | PeronaMalikFilter (int timesteps, float percentile_for_lambda, float dt) |
Filters the raster using a Perona-Malik non-linear diffusion filter. More... | |
Array2D< float > | D_inf_FlowDir () |
D-infinity flow direction algorithm after Tarboton (1997). More... | |
LSDRaster | D_inf_FlowArea (Array2D< float > FlowDir_array) |
Main function for generating a D-infinity flow area raster after Tarboton (1997). More... | |
void | D_infAccum (int i, int j, Array2D< float > CountGrid, Array2D< float > Flowarea_Raster, Array2D< float > FlowDir_array) |
Recursive function to calculate accumulating area for a given pixel. More... | |
LSDRaster | D_inf () |
Wrapper Function to create a D-infinity flow area raster with one function call. More... | |
LSDRaster | D_inf_units () |
Wrapper Function to create a D-infinity flow area raster, in spatial units, with one function call. More... | |
LSDRaster | D_inf_ConvertFlowToArea () |
Wrapper Function to convert a D-infinity flow raster into spatial units. More... | |
LSDRaster | write_dinf_flowdir_to_LSDRaster (Array2D< float > dinflow) |
Function to write the D-infinity flow directions to an LSDRaster. More... | |
LSDIndexRaster | D_inf_watershed (LSDRaster D_inf_FlowDir, int PourRow, int PourCol) |
Function to generate upslope contributing area extent from the D-infinity flow directions to an LSDRaster. More... | |
LSDRaster | calculate_topographic_index (LSDRaster &AccumulationArea, LSDRaster &Slope) |
Function to calculate the topographic index, a moisture distribution indicator. More... | |
LSDIndexRaster | PointShapefileToRaster (string FileName) |
Method to turn a point shapefile into an LSDIndexRaster. More... | |
LSDIndexRaster | PolylineShapefileToRaster (string FileName) |
Method to turn a polyline shapefile into an LSDIndexRaster. More... | |
LSDRaster | Resample (float OutputResolution) |
Method to resample an LSDRaster to a lower resolution. More... | |
Array2D< int > | create_mask (float window_radius, int neighbourhood_switch) |
creates a circular mask for neighbourhood statistics More... | |
LSDRaster | neighbourhood_statistics_spatial_average (float window_radius, int neighbourhood_switch) |
gets mean value for specified circular neighbourhood More... | |
vector< LSDRaster > | neighbourhood_statistics_spatial_average_and_SD (float window_radius, int neighbourhood_switch) |
gets mean & standard deviation value specified circular neighbourhood More... | |
LSDRaster | neighbourhood_statistics_local_relief (float window_radius, int neighbourhood_switch) |
gets relief within value specified circular neighbourhood More... | |
LSDRaster | neighbourhood_statistics_fraction_condition (float window_radius, int neighbourhood_switch, int condition_switch, float test_value) |
tests neighbourhood for the fraction of values for which the specified condition is met. More... | |
LSDRaster | border_with_nodata (int border_width, int irregular_switch=0) |
Function to change border pixels to nodata. More... | |
LSDIndexRaster | find_cells_bordered_by_nodata () |
This function creates a mask that has the value of 1 for cells that are either on the edge or bordered by nodata (from their 9 neighbors) More... | |
void | check_isolated_nodata () |
This looks for isolated instances of no data. More... | |
void | rudimentary_nodata_fill () |
a very rudimentay filling routine that just fills nodata nodes with the average elevation of its neighbors More... | |
LSDRaster | alternating_direction_nodata_fill (int window_width) |
A routine that fills nodata holes. It cannot recognise nodata around the edges so the spiral trimmer should be used first The routine sweeps the raster looking for nodata and filling this nodata with an average value from surrounding nodes. The sweeping changes directions, four sweep directions in all (+ rows, - rows, + cols, -cols) and it alternates between these directions until the raster is filled. More... | |
LSDIndexRaster | create_binary_isdata_raster () |
This returns an index raster with 1 for data and 0 for nodata. More... | |
LSDRaster | alternating_direction_nodata_fill_with_trimmer (int window_width) |
A routine that fills nodata holes. It first prepares the data with the sprial trimmer so nodata around the edges is removed. The routine sweeps the raster looking for nodata and filling this nodata with an average value from surrounding nodes. The sweeping changes directions, four sweep directions in all (+ rows, - rows, + cols, -cols) and it alternates between these directions until the raster is filled. The routine is particularly useful for data with holes that is to be prepared for spectral analysis. More... | |
LSDRaster | nodata_fill_irregular_raster (int window_radius) |
Function to fill in no data holes in an irregular raster. Pixel must have all neighbours not equal to no data value within the specified window radius. Data is filled based on mean of pixels within the window radius. | |
LSDRaster | alternating_direction_nodata_fill_irregular_raster (int window_width) |
A routine that fills nodata holes. Modified by FJC to only fill holes surrounded in all directions by pixels with valid elevation values. More... | |
LSDIndexRaster | Create_Mask (string Condition, float TestValue) |
Function to create a masked LSDIndexRaster raster based on a conditional statement. More... | |
LSDRaster | ExtractByMask (LSDIndexRaster Mask) |
Function to extract an LSDRaster based on a LSDIndexRaster mask. More... | |
void | MaskRaster (LSDIndexRaster Mask) |
Function to update an LSDRaster based on a LSDIndexRaster mask. More... | |
LSDIndexRaster | IsolateChannelsLashermesCurvature (float sigma, string q_q_filename) |
method to locate channel pixels outlined by Lashermes. More... | |
LSDIndexRaster | IsolateChannelsLashermesAspect (float sigma, string q_q_filename) |
LSDIndexRaster | IsolateChannelsLashermesFull (float sigma, string q_q_filename_prefix) |
LSDIndexRaster | IsolateChannelsLashermesCurvatureArea (float sigma, float area_threshold, string q_q_filename) |
LSDIndexRaster | IsolateChannelsGeonet (float timesteps, float area_threshold, float window_radius, string q_q_filename) |
method to locate channel pixels outlined by Passalacqua et al. (2010). More... | |
LSDIndexRaster | IsolateChannelsQuantileQuantile (string q_q_filename) |
uses quantile-quantile analysis to pick departure from gaussian behaviour, then uses this as a threshold to create a binary dataset. More... | |
LSDIndexRaster | IsolateChannelsQuantileQuantileAdaptive (int half_width) |
Array2D< float > | CalculateAdaptiveCurvatureThresholdSD (int half_width) |
Function to calculate the curvature threshold used for DrEICH channel extraction which varies across the landscape. More... | |
LSDIndexRaster | CreateHilltopPatches (int minimum_patch_size) |
Method to convert an LSDRaster hilltop file into a series of contigiuous hilltop patches. More... | |
LSDIndexRaster | CreateHilltopPatchesNEW (int minimum_patch_size) |
void | FlattenToFile (string FileName) |
Simple method to flatten an LSDRaster to a text file, with a sigle value on each line. More... | |
void | FlattenToCSV (string FileName) |
Method to flatten an LSDRaster and place the non NDV values in a csv file. More... | |
void | FlattenToWGS84CSV (string FileName) |
Method to flatten an LSDRaster and place the non NDV values in a csv file. More... | |
LSDRaster | RemoveBelow (float Value) |
Simple method to remove any values below a user supplied value from an LSDRaster. More... | |
LSDRaster | RemoveAbove (float Value) |
Simple method to remove any values above a user supplied value from an LSDRaster. More... | |
LSDRaster | apply_mask (LSDIndexRaster &mask) |
apply a mask to a raster dataset, converts pixels to nodata where mas=k=1 More... | |
LSDIndexRaster | ConvertToBinary (int Value, int ndv) |
Method to convert all values in an LSDRaster to a single value. More... | |
LSDRaster | MergeRasters (LSDRaster &RasterToAdd) |
Method to merge data from two LSDRasters WITH SAME EXTENT together. /// The data from the raster specified as an argument will be added (will overwrite the original raster if there is a conflict). More... | |
void | OverwriteRaster (LSDRaster &RasterToAdd) |
Method to merge data from two LSDRasters WITH SAME EXTENT together. /// The data from the raster specified as an argument will be added (will overwrite the original raster if there is a conflict). Overloaded function to rewrite original raster rather than creating a new one. More... | |
LSDIndexRaster | get_potential_floodplain_patches (LSDRaster &Relief, LSDRaster &Slope, float relief_threshold, float slope_threshold) |
Function to get potential floodplain patches using a slope and relief threshold. More... | |
float | get_threshold_for_floodplain (float bin_width, float peak_threshold, int peak_distance) |
Function to get threshold from a raster using a histogram of Probability-Density values. The function identifies the peaks in the PDF, and sets the threshold to the peak with the lowest value. This can be used to set the floodplain threshold. More... | |
float | get_threshold_for_floodplain_QQ (string q_q_filename, float threshold_condition, int lower_percentile, int upper_percentile) |
Function to get threshold from a raster using qq plots. More... | |
string | ChannelLengthByOrder (LSDIndexRaster &StreamNetwork, Array2D< int > FlowDir) |
Get the lengths in spatial units of each part of the channel network, divided by strahler order. More... | |
LSDRaster | PoupulateRasterGaussian (float minimum, float mean) |
Populate a raster with random noise drawn from a gaussian distribution of given mean and minimum values. More... | |
LSDRaster | PoupulateRasterSingleValue (float value) |
Populate a raster with a single value. More... | |
void | HilltopsToCSV (LSDRaster &CHT, LSDRaster &CHT_gradient, LSDRaster &gradient, int UTMZone, bool isNorth, int eId, string filename) |
Write CHT and hilltop gradient data to a *.csv file, coded by UTM coordinates as well as lat/long. More... | |
vector< vector< float > > | Sample_Along_Ridge (LSDRaster &Raster1, LSDRaster &Raster2, LSDRaster &Raster3, int a, int b, int threshold) |
Sample the values of 3 input rasters that intersect with the point a,b within the area defined by threshold. More... | |
LSDRaster | convert_from_feet_to_metres () |
function to convert feet to metres using US international feet, where 1 foot = 0.3048006096012192 metres. More... | |
LSDRaster | convert_from_centimetres_to_metres () |
function to convert elevations from centimetres to metres More... | |
Protected Attributes | |
int | NRows |
Number of rows. | |
int | NCols |
Number of columns. | |
float | XMinimum |
Minimum X coordinate. | |
float | YMinimum |
Minimum Y coordinate. | |
float | DataResolution |
Data resolution. | |
int | NoDataValue |
No data value. | |
map< string, string > | GeoReferencingStrings |
A map of strings for holding georeferencing information. | |
Array2D< float > | RasterData |
Raster data. | |
Array2D< double > | RasterData_dbl |
These are used primarily by LSDCatchmentModel. | |
Array2D< int > | RasterData_int |
Friends | |
class | LSDFlowInfo |
Object to perform flow routing. | |
Main analysis object to interface with other LSD objects.
|
inline |
|
inline |
Create an LSDRaster from memory.
nrows | An integer of the number of rows. |
ncols | An integer of the number of columns. |
xmin | A float of the minimum X coordinate. |
ymin | A float of the minimum Y coordinate. |
cellsize | A float of the cellsize. |
ndv | An integer of the no data value. |
data | An Array2D of floats in the shape nrows*ncols, containing the data to be written. |
|
inline |
Create an LSDRaster from memory, with the elvation data stored as double precision floats.
Created to maintain compatibility with LSDCatchmentModel
|
inline |
Create an LSDRaster from memory, includes georeferencing.
nrows | An integer of the number of rows. |
ncols | An integer of the number of columns. |
xmin | A float of the minimum X coordinate. |
ymin | A float of the minimum Y coordinate. |
cellsize | A float of the cellsize. |
ndv | An integer of the no data value. |
data | An Array2D of floats in the shape nrows*ncols, |
temp_GRS | a map of strings containing georeferencing information. Used mainly with ENVI format files containing the data to be written. |
LSDRaster LSDRaster::alternating_direction_nodata_fill | ( | int | window_width | ) |
A routine that fills nodata holes. It cannot recognise nodata around the edges so the spiral trimmer should be used first The routine sweeps the raster looking for nodata and filling this nodata with an average value from surrounding nodes. The sweeping changes directions, four sweep directions in all (+ rows, - rows, + cols, -cols) and it alternates between these directions until the raster is filled.
window_size | the number of pixles around the centre pixel to take the spatial average |
LSDRaster LSDRaster::alternating_direction_nodata_fill_irregular_raster | ( | int | window_width | ) |
A routine that fills nodata holes. Modified by FJC to only fill holes surrounded in all directions by pixels with valid elevation values.
The routine sweeps the raster looking for nodata and filling this nodata with an average value from surrounding nodes. The sweeping changes directions, four sweep directions in all (+ rows, - rows, + cols, -cols)
window_size | the number of pixles around the centre pixel to take the spatial average |
LSDRaster LSDRaster::alternating_direction_nodata_fill_with_trimmer | ( | int | window_width | ) |
A routine that fills nodata holes. It first prepares the data with the sprial trimmer so nodata around the edges is removed. The routine sweeps the raster looking for nodata and filling this nodata with an average value from surrounding nodes. The sweeping changes directions, four sweep directions in all (+ rows, - rows, + cols, -cols) and it alternates between these directions until the raster is filled. The routine is particularly useful for data with holes that is to be prepared for spectral analysis.
window_size | the number of pixles around the centre pixel to take the spatial average |
LSDRaster LSDRaster::apply_mask | ( | LSDIndexRaster & | mask | ) |
apply a mask to a raster dataset, converts pixels to nodata where mas=k=1
LSDRaster LSDRaster::BasinArea | ( | LSDIndexRaster | Basins | ) |
Write the area(in spatial units) of each basin to the basin's pixels.
Big optimisation following the Drainage density's design pattern. Works by flattening the raster into a 1D vector, sorting it and summing each run of Basin IDs. Gives a fast count of the number of pixels per basin, which is multiplied by the cellsize to get an area in spatial units.
Basins | LSDIndexRaster of drainage basins to measure. |
LSDRaster LSDRaster::BasinAverager | ( | LSDIndexRaster & | Basins | ) |
Module assigns an average LSDRaster value to each basin.
Works by searching for every hilltop value that falls within a basin, summing these values and writing the final average to every cell identified as the basin in question.
Very inefficent at present. Module loops through every cell in LSDRaster (2 * number of basins) + 1 times. Beware!
Basins | LSDIndexRaster of Drainage basins, generated using ChannelNetwork::ExtractBasinsOrder. Bug fixed in assignment of basin IDs - SWDG 2/9/13. |
vector< LSDRaster > LSDRaster::BasinPuncher | ( | vector< int > | basin_ids, |
LSDIndexRaster | BasinArray | ||
) |
Punch basins out of an LSDRaster to create DEMs of a single catchment.
Writes files in the user supplied format (flt or asc) and returns a vector of LSDRasters so they can be loaded into other functions. Updated 24/9/13 to return a vector of LSDRasters - SWDG.
basin_ids | Vector of basins to punch out. |
BasinArray | Basin outlines used to punch out the LSDRasters. |
pair< float, float > LSDRaster::Boomerang | ( | LSDRaster & | Slope, |
LSDRaster & | D_inf, | ||
string | RasterFilename, | ||
float | log_bin_width = 0.1 , |
||
int | SplineResolution = 200 , |
||
float | bin_threshold = 0.05 |
||
) |
Generate data in two text files to create a boomerang plot as in Roering et al [2007].
Should now do all it needs to do: if it gets any more complex I'll look at refactoring it into a few methods. The latest addition is to take a bin_threshold to allow different sizes of bins to be removed from the final analysis - SWDG 11/11/13.
Slope | LSDRaster of slope. |
D_inf | D-infinity Flowarea LSDRaster. |
RasterFilename | Filename used to give unique name to output data. |
log_bin_width | Width (in log space) of the bins, with respect to D_inf. |
SplineResolution | Number of values between each point for the spline curve. |
bin_threshold | Threshold fraction of values needed to keep a bin. |
LSDRaster LSDRaster::border_with_nodata | ( | int | border_width, |
int | irregular_switch = 0 |
||
) |
Function to change border pixels to nodata.
int | border_width |
int | irregular_switch (0 (default) -> only creates border pixels around raster edge; 1 -> creates border around edges and nodata values e.g. for irregularly shaped datasets) |
LSDRaster LSDRaster::BufferRasterData | ( | float | window_radius | ) |
Buffers a raster using a circular kernel of a user-defined radius (m)
window_radius | radius in metres |
void LSDRaster::calculate_and_print_polyfit_and_roughness_rasters | ( | float | window_radius, |
float | roughness_radius, | ||
string | file_prefix, | ||
vector< int > | file_list | ||
) |
This function takes the combines the polyfit functions and the roughness function in one package.
The function is data efficient since one does not need to recalculate the polyfit coefficeint matrices. Itakes the window radius of the polyfit and the window of the roughness calculation the file codes in the vector are:
0 slope
1 aspect
2 curvature
3 planform curvature
4 profile curvature
6 tangential curvature
7 classification
8 roughness s1
9 roughness s2
10 roughness s3
window_radius | Radius of the mask. |
roughness_radius | Radius of the roughness window. |
file_prefix | Output filename string. |
file_list | Vector of files to be created. |
void LSDRaster::calculate_and_print_polyfit_rasters | ( | float | window_radius, |
string | file_prefix, | ||
vector< int > | file_list | ||
) |
this function takes the polyfit functions and requires a window radius and a vector telling the function which rasters to print to file.
The function is data efficient since one does not need to recalculate the polyfit coefficeint matrices. It also takes a string which is the prename of the data files the file codes in the vector are:
0 slope
1 aspect
2 curvature
3 planform curvature
4 profile curvature
6 tangential curvature
7 classification
window_radius | Radius of the mask. |
file_prefix | Output filename string. |
file_list | Vector of files to be created. |
LSDRaster LSDRaster::calculate_factor_of_safety_at_saturation | ( | float | C_r, |
float | rho_s, | ||
float | soil_thick, | ||
float | tan_phi, | ||
LSDRaster & | SlopeAngle | ||
) |
This calculates the factor of safety if the soil is completely saturated.
Factor of safety <1 == unstable
C_r | root cohesion in N/m^2 |
rho_s | soil density in kg/m^3 |
soil_thick | soil thickness in m |
tan_phi | the friction angle of the soil |
SlopeAngle | the angle of the slope (you need to use the function calculate_slope_angles) to get this |
void LSDRaster::calculate_orientation_matrix_eigenvalues | ( | float | window_radius, |
Array2D< float > & | l, | ||
Array2D< float > & | m, | ||
Array2D< float > & | n, | ||
Array2D< float > & | s1, | ||
Array2D< float > & | s2, | ||
Array2D< float > & | s3 | ||
) |
Find eigenvalues for orientation matrix.
window_radius | |
l | coefficeint l. |
m | coefficeint m. |
n | coefficeint n. |
s1 | coefficeint s1. |
s2 | coefficeint s2. |
s3 | coefficeint s3. |
void LSDRaster::calculate_plane_coefficient_matrices | ( | float | window_radius, |
Array2D< float > & | a_plane, | ||
Array2D< float > & | b_plane, | ||
Array2D< float > & | c_plane | ||
) |
This function is a wrapper to get the three roughness eigenvalues s1, s2 and s3.
window_radius | |
a_plane | |
b_plane | |
c_plane |
LSDRaster LSDRaster::calculate_polyfit_aspect | ( | Array2D< float > & | d, |
Array2D< float > & | e | ||
) |
This function calculates the aspect based on a polynomial fit.
the window is determined by the calculate_polyfit_coefficient_matrices this function also calculates the a,b,c,d,e and f coefficient matrices.
d | coefficeint d. |
e | coefficeint e. |
LSDIndexRaster LSDRaster::calculate_polyfit_classification | ( | Array2D< float > & | a, |
Array2D< float > & | b, | ||
Array2D< float > & | c, | ||
Array2D< float > & | d, | ||
Array2D< float > & | e | ||
) |
This function identifies approximate position of stationary points within discrete surface using a threshold slope.
The nature of the stationary point is then determined to discriminate peaks, depressions and saddles.
0 = Non-stationary
1 = Peak
2 = Depression
3 = Saddle
a | coefficeint a. |
b | coefficeint b. |
c | coefficeint c. |
d | coefficeint d. |
e | coefficeint e. |
void LSDRaster::calculate_polyfit_coefficient_matrices | ( | float | window_radius, |
Array2D< float > & | a, | ||
Array2D< float > & | b, | ||
Array2D< float > & | c, | ||
Array2D< float > & | d, | ||
Array2D< float > & | e, | ||
Array2D< float > & | f | ||
) |
This function calculates 6 coefficient matrices that allow the user to then calcualte slope, curvature, aspect, a classification for finding saddles and peaks and other metrics.
The coefficient matrices are overwritten during the running of this member function.
Have N simultaneous linear equations, and N unknowns. => b = Ax, where x is a 1xN array containing the coefficients we need for surface fitting. A is constructed using different combinations of x and y, thus we only need to compute this once, since the window size does not change. For 2nd order surface fitting, there are 6 coefficients, therefore A is a 6x6 matrix. Updated 15/07/2013 to use a circular mask for surface fitting - DTM. Updated 24/07/2013 to check window_radius size and correct values below data resolution - SWDG.
window_radius | Radius of the mask in spatial units. |
a | coefficeint a. |
b | coefficeint b. |
c | coefficeint c. |
d | coefficeint d. |
e | coefficeint e. |
f | coefficeint f. |
LSDRaster LSDRaster::calculate_polyfit_curvature | ( | Array2D< float > & | a, |
Array2D< float > & | b | ||
) |
This function calculates the curvature based on a polynomial fit.
the window is determined by the calculate_polyfit_coefficient_matrices this function also calculates the a,b,c,d,e and f coefficient matrices.
a | coefficeint a. |
b | coefficeint b. |
void LSDRaster::calculate_polyfit_directional_cosines | ( | Array2D< float > & | d, |
Array2D< float > & | e, | ||
Array2D< float > & | l, | ||
Array2D< float > & | m, | ||
Array2D< float > & | n | ||
) |
Algorithm that assesses surface roughness based on a polynomial fit.
Runs a moving window across the DEM and assesses the variability of surface normals within that window. Specifically the components of the normals are combined into an orientation matrix, which is then solved to find the eigenvalues s1, s2, s3 (Woodcock, 1977).
d | coefficeint d. |
e | coefficeint e. |
l | coefficeint l. |
m | coefficeint m. |
n | coefficeint n. |
LSDRaster LSDRaster::calculate_polyfit_elevation | ( | Array2D< float > & | f | ) |
This function calculates the elevation based on a polynomial fit.
the window is determined by the calculate_polyfit_coefficient_matrices this function also calculates the a,b,c,d,e and f coefficient matrices.
f | coefficeint f. |
LSDRaster LSDRaster::calculate_polyfit_planform_curvature | ( | Array2D< float > & | a, |
Array2D< float > & | b, | ||
Array2D< float > & | c, | ||
Array2D< float > & | d, | ||
Array2D< float > & | e | ||
) |
This function calculates the planform curvature based on a polynomial fit.
the window is determined by the calculate_polyfit_coefficient_matrices this function also calculates the a,b,c,d,e and f coefficient matrices.
a | coefficeint a. |
b | coefficeint b. |
c | coefficeint c. |
d | coefficeint d. |
e | coefficeint e. |
LSDRaster LSDRaster::calculate_polyfit_profile_curvature | ( | Array2D< float > & | a, |
Array2D< float > & | b, | ||
Array2D< float > & | c, | ||
Array2D< float > & | d, | ||
Array2D< float > & | e | ||
) |
This function calculates the profile curvature based on a polynomial fit.
the window is determined by the calculate_polyfit_coefficient_matrices this function also calculates the a,b,c,d,e and f coefficient matrices.
a | coefficeint a. |
b | coefficeint b. |
c | coefficeint c. |
d | coefficeint d. |
e | coefficeint e. |
vector< LSDRaster > LSDRaster::calculate_polyfit_roughness_metrics | ( | float | window_radius1, |
float | window_radius2, | ||
vector< int > | raster_selection | ||
) |
Surface polynomial fitting and extraction of roughness metrics.
A six term polynomial surface is fitted to all the points that lie within circular neighbourhood that is defined by the designated window radius. This surface is used to determine the orientation of the surface normal vector at each cell. The algorithm then searches through the grid again, using a second search window to look for the local variability in normal vector orientation. The user also inputs a binary raster, which tells the program which rasters it wants to create (label as "1" to produce them, "0" to ignore them. This has 3 elements, as listed below: 0 -> s1 -> describes clustering of normals around the major axis 1 -> s2 -> describes clustering of normals around semi major axis 2 -> s3 -> describes clustering around minor axis The program returns a vector of LSDRasters. For options marked "0" in binary input raster, the returned LSDRaster houses a blank raster, as this metric has not been calculated. The desired LSDRaster can be retrieved from the output vector by using the same cell reference shown in the list above i.e. it is the same as the reference in the input binary vector.
window_radius1 | -> the radius of the circular window over which to fit the surface |
window_radius2 | -> the radius of the circular window over which to look for local variability of surface normal orientation |
raster_selection | -> a binary raster, with 3 elements, which identifies which metrics you want to calculate. |
LSDRaster LSDRaster::calculate_polyfit_slope | ( | Array2D< float > & | d, |
Array2D< float > & | e | ||
) |
This function calculates the slope based on a polynomial fit.
the window is determined by the calculate_polyfit_coefficient_matrices this function also calculates the a,b,c,d,e and f coefficient matrices.
d | coefficeint d. |
e | coefficeint e. |
vector< LSDRaster > LSDRaster::calculate_polyfit_surface_metrics | ( | float | window_radius, |
vector< int > | raster_selection | ||
) |
Surface polynomial fitting and extraction of topographic metrics.
A six term polynomial surface is fitted to all the points that lie within circular neighbourhood that is defined by the designated window radius. The user also inputs a binary raster, which tells the program which rasters it wants to create (label as "1" to produce them, "0" to ignore them. This has 8 elements, as listed below: 0 -> Elevation (smoothed by surface fitting) 1 -> Slope 2 -> Aspect 3 -> Curvature 4 -> Planform Curvature 5 -> Profile Curvature 6 -> Tangential Curvature 7 -> Stationary point classification (1=peak, 2=depression, 3=saddle) The program returns a vector of LSDRasters. For options marked "false" in boolean input raster, the returned LSDRaster houses a blank raster, as this metric has not been calculated. The desired LSDRaster can be retrieved from the output vector by using the cell reference shown in the list above i.e. it is the same as the reference in the input boolean vector.
window_radius | -> the radius of the circular window over which to fit the surface |
raster_selection | -> a binary raster, with 8 elements, which identifies which metrics you want to calculate. |
LSDRaster LSDRaster::calculate_polyfit_tangential_curvature | ( | Array2D< float > & | a, |
Array2D< float > & | b, | ||
Array2D< float > & | c, | ||
Array2D< float > & | d, | ||
Array2D< float > & | e | ||
) |
This function calculates the tangential curvature based on a polynomial fit.
the window is determined by the calculate_polyfit_coefficient_matrices this function also calculates the a,b,c,d,e and f coefficient matrices.
a | coefficeint a. |
b | coefficeint b. |
c | coefficeint c. |
d | coefficeint d. |
e | coefficeint e. |
LSDRaster LSDRaster::calculate_REI | ( | Array2D< float > & | a_plane, |
Array2D< float > & | b_plane, | ||
float | CriticalSlope | ||
) |
Create the REI raster.
a_plane | |
b_plane | |
CriticalSlope |
LSDRaster LSDRaster::calculate_REI | ( | float | window_radius, |
float | CriticalSlope | ||
) |
Create the REI raster (imporoved wrapper) Rock exposure index defined as areas with local slope exceeding some critical slope as defined by DiBiase et al. (2012)
window | radius |
CriticalSlope |
LSDRaster LSDRaster::calculate_relief | ( | float | kernelWidth, |
int | kernelType | ||
) |
Calculates a relief raster.
The | width in metres of the kernal you wnat to use for resolution |
if | this ==1 then you use a circular kernal. Otherwise kernal is square |
void LSDRaster::calculate_roughness_rasters | ( | float | window_radius, |
float | roughness_radius, | ||
string | file_prefix, | ||
vector< int > | file_code | ||
) |
This function takes the combines the roughness functions in one package.
The function is data efficient since one does not need to recalculate the polyfit coefficeint matrices. I takes the window radius of the polyfit and the window of the roughness calculation the file codes in the vector are:
0 roughness s1
1 roughness s2
2 roughness s3
window_radius | Radius of the mask. |
roughness_radius | Radius of the roughness window. |
file_prefix | Output filename string. |
file_code | Vector of files to be created. |
LSDRaster LSDRaster::calculate_slope_angles | ( | ) |
Calculates slope angle in radians. Needs the slope raster.
LSDRaster LSDRaster::calculate_topographic_index | ( | LSDRaster & | AccumulationArea, |
LSDRaster & | Slope | ||
) |
Function to calculate the topographic index, a moisture distribution indicator.
Calculates the topographic index, defined as ln(A/S) (Kirkby, 1975), where A is the accumulation area and S is the slope. This is an indicator of the distribution of moisture within the topography.
LSDRaster LSDRaster::calculate_water_supply_rate_for_saturation | ( | float | soil_thick, |
float | K, | ||
LSDRaster & | ContributingArea, | ||
LSDRaster & | SlopeAngle | ||
) |
Calculates the water supply rate required for saturation of the hillslope soil.
Water supply rate is the precipitation rate minus recharge and ET
soil_thick | soil thickness in m |
K | hydraulic conductivity in m/ (some time unit) |
ConstributingArea | the contributing area raster, should be in m^2 |
SlopeAngle | the angle of the slope (you need to use the function calculate_slope_angles) to get this |
Array2D< float > LSDRaster::CalculateAdaptiveCurvatureThresholdSD | ( | int | half_width | ) |
Function to calculate the curvature threshold used for DrEICH channel extraction which varies across the landscape.
half_width | radius over which to calculate the curvature threshold |
LSDRaster LSDRaster::CastShadows | ( | int | Azimuth, |
int | ZenithAngle | ||
) |
Function to determine areas of a DEM that are in shadow from a given radiation source defined by an Azimuth and Zenith following Codilean (2006).
Performs a coordinate transformation, rotating the x,y,z coordinates about the Azimuth and Zenith such that the coordinates are aligned with the Azimuth and Zenith. Shaded cells are then found by tracking in the direction of the radiation source and looking for transformed z values greater than that at the cell of interest which would therefore cast a shadow.
Azimuth | of the illumination source in degrees. |
ZenithAngle | of the illumination source in degrees |
string LSDRaster::ChannelLengthByOrder | ( | LSDIndexRaster & | StreamNetwork, |
Array2D< int > | FlowDir | ||
) |
Get the lengths in spatial units of each part of the channel network, divided by strahler order.
StreamNetwork | Raster of the stream network coded by strahler order. |
FlowDir | Array of flowdirections from FlowInfo (Not D-inf). |
bool LSDRaster::check_if_point_is_in_raster | ( | float | X_coordinate, |
float | Y_coordinate | ||
) |
this check to see if a point is within the raster
X_coordinate | the x location of the point |
Y_coordinate | the y location of the point |
void LSDRaster::check_isolated_nodata | ( | ) |
This looks for isolated instances of no data.
Does nothing else but print their location to the screen.
This returns a clipped raster that has the same dimensions as the smaller raster.
smaller_raster | the raster to which the bigger raster should be clipped |
LSDRaster LSDRaster::clip_to_smaller_raster | ( | LSDIndexRaster & | smaller_raster | ) |
This returns a clipped raster that has the same dimensions as the smaller raster.
smaller_raster | the raster to which the bigger raster should be clipped |
void LSDRaster::CollectBasinMetrics | ( | LSDIndexRaster & | Basins, |
LSDRaster & | Slope, | ||
LSDRaster & | Elevation, | ||
LSDRaster & | Aspect, | ||
LSDRaster & | Area, | ||
LSDRaster & | DrainageDensity, | ||
LSDRaster & | Cht, | ||
LSDRaster & | HillslopeLength, | ||
LSDRaster & | MeanSlope, | ||
LSDRaster & | Relief, | ||
LSDRaster & | MeanAspect, | ||
LSDRaster & | LH_drainage_density, | ||
Array2D< float > | LH_Data, | ||
float | CriticalSlope, | ||
string | RasterFilename | ||
) |
Collect all basin average metrics into a single file.
File is written with the format:
"basin_id slope elevation aspect area drainage_density hilltop_curvature
hillslope_length mean_slope hilltop_relief hilltop_aspect E* R* LH_bins LH_splines LH_density"
Basins | LSDIndexRaster of drainage basins to sample. |
Slope | |
Elevation | |
Aspect | |
Area | |
DrainageDensity | |
Cht | |
HillslopeLength | |
MeanSlope | |
Relief | |
MeanAspect | |
LH_drainage_density | Hillslope length for each basin calculated as in Tucker et al 2001 - Added 6/11/13 SWDG. |
LH_Data | Array of LH data generated from the Boomerang plotting function and compiled using the BasinMetrics Driver - Added 1/11/13 SWDG. |
CriticalSlope | Threshold value for E* and R* values. |
RasterFilename | Filename of the input raster data. |
LSDRaster LSDRaster::convert_from_centimetres_to_metres | ( | ) |
function to convert elevations from centimetres to metres
LSDRaster LSDRaster::convert_from_feet_to_metres | ( | ) |
function to convert feet to metres using US international feet, where 1 foot = 0.3048006096012192 metres.
LSDIndexRaster LSDRaster::ConvertToBinary | ( | int | Value, |
int | ndv | ||
) |
Method to convert all values in an LSDRaster to a single value.
Value,an | integer value that will be assigned to every non NDV cell in the raster. |
ndv | an integer no data value. |
LSDIndexRaster LSDRaster::create_binary_isdata_raster | ( | ) |
This returns an index raster with 1 for data and 0 for nodata.
Array2D< int > LSDRaster::create_mask | ( | float | window_radius, |
int | neighbourhood_switch | ||
) |
creates a circular mask for neighbourhood statistics
The second argument (neighbourhood_switch) specifies the neighbourhood type: 0 Square neighbourhood 1 Circular window
window | radius of mask |
int | neighbourhood_switch -> see above |
LSDIndexRaster LSDRaster::Create_Mask | ( | string | Condition, |
float | TestValue | ||
) |
Function to create a masked LSDIndexRaster raster based on a conditional statement.
string | Condition ("<", ">", "==", "!=") |
float | TestValue The value that the condition is tested against |
LSDRaster LSDRaster::create_raster_nodata | ( | ) |
Create a raster in of the same number of rows and cols with nodata.
LSDIndexRaster LSDRaster::CreateHilltopPatches | ( | int | minimum_patch_size | ) |
Method to convert an LSDRaster hilltop file into a series of contigiuous hilltop patches.
Connects all contiguous patches of hilltop via a unique ID, allowing hilltop patches to be generated in a manner similar to the methodology employed by Hurst et al. (2012) and (2013) to spatially average data for E*R* calculations. Currently has no method to limit the maximum size of segments.
minimum_patch_size | Integer of the minimum number of pixels required for a patch to be created |
LSDRaster LSDRaster::D_inf | ( | ) |
Wrapper Function to create a D-infinity flow area raster with one function call.
LSDRaster LSDRaster::D_inf_ConvertFlowToArea | ( | ) |
Wrapper Function to convert a D-infinity flow raster into spatial units.
LSDRaster LSDRaster::D_inf_FlowArea | ( | Array2D< float > | FlowDir_array | ) |
Main function for generating a D-infinity flow area raster after Tarboton (1997).
Calls the recurisve D_infAccum function to get flow area for each pixel. Returns flow area in pixels.
Code is ported and optimised from a Java implementation of the algorithm supplied under the GNU GPL licence through WhiteBox GAT: http://www.uoguelph.ca/~hydrogeo/Whitebox/ and provides identical results to the whitebox tool.
FlowDir_array | Array of Flowdirections generated by D_inf_FlowDir(). |
Array2D< float > LSDRaster::D_inf_FlowDir | ( | ) |
D-infinity flow direction algorithm after Tarboton (1997).
Algorithm takes a filled DEM and for each cell calculates the steepest descent based on 8 triangular facets. Flow direction is assigned as an angle from 0-360 degrees with -1 used to flag unresolved areas such as pits.
Code is ported and optimised from a Java implementation of the algorithm supplied under the GNU GPL licence through WhiteBox GAT: http://www.uoguelph.ca/~hydrogeo/Whitebox/ and provides identical results to the whitebox tool.
LSDRaster LSDRaster::D_inf_units | ( | ) |
Wrapper Function to create a D-infinity flow area raster, in spatial units, with one function call.
LSDIndexRaster LSDRaster::D_inf_watershed | ( | LSDRaster | D_inf_FlowDir, |
int | PourRow, | ||
int | PourCol | ||
) |
Function to generate upslope contributing area extent from the D-infinity flow directions to an LSDRaster.
dinflow | LSDRaster of Flowdirections generated by D_inf_FlowDir(). |
i | and j indices of pour point node |
void LSDRaster::D_infAccum | ( | int | i, |
int | j, | ||
Array2D< float > | CountGrid, | ||
Array2D< float > | Flowarea_Raster, | ||
Array2D< float > | FlowDir_array | ||
) |
Recursive function to calculate accumulating area for a given pixel.
Called by the driver for every cell which has no contributing cells - eg the highest points on the landscape. Avoids the need to flatten and sort the DEM as required in the original Tarboton (1997) implementation. For more detail on the recursive algorithm following channels see Mark (1998) "Network Models in Geomorphology".
Code is ported and optimised from a Java implementation of the algorithm supplied under the GNU GPL licence through WhiteBox GAT: http://www.uoguelph.ca/~hydrogeo/Whitebox/ and provides identical results to the whitebox tool.
i | Row index of the target cell. |
j | Column index of the target cell. |
CountGrid | Array showing the number of cells flowing into each cell. |
Flowarea_Raster | Array of the flow areas which is populated using this function. |
FlowDir_array | Array of Flowdirections generated by D_inf_FlowDir(). |
LSDRaster LSDRaster::DiamondSquare | ( | int | feature_order, |
float | scale | ||
) |
This is the driving function for the diamond square algorithm.
The driving function takes the current raster and then pads it in each direction to have rows and columns that are the nearest powers of 2. The xllocation and yllocation data values are preserved. The function returns a pseudo fractal landscape generated with the diamond square algorithm Believe it or not this algorithm is absed on code poseted by Notch, the creator of Minecraft, who then had it modified by Charles Randall https://www.bluh.org/code-the-diamond-square-algorithm/
feature | order is an interger n where the feature size consists of 2^n nodes. If the feature order is set bigger than the dimensions of the parent raster then this will default to the order of the parent raster. |
Scale | is a floating point number that sets the maximum relief of the resultant raster. |
void LSDRaster::DiamondSquare_SampleStep | ( | int | stepsize, |
float | scale | ||
) |
This is the sampling function for the diamond square algorithm: it runs both a diamond and a square sampling for each step.
The | stepsize, which is the size of the diamonds and the squares. |
The | scale which sets the maxmum relief within a particular square or diamond and is scaled by the stepsize (that is smaller squares have smaller scales). |
float LSDRaster::difference_rasters | ( | LSDRaster & | compare_raster | ) |
Calculates the mean difference between two rasters.
checks raster dimensions but not georeferencing since it is used to compare asc format model results
bool LSDRaster::does_raster_have_same_dimensions | ( | LSDRaster & | Compare_raster | ) |
Checks to see if two rasters have the same dimensions Does NOT check georeferencing.
Compare_raster | the raster to compare |
bool LSDRaster::does_raster_have_same_dimensions | ( | LSDIndexRaster & | Compare_raster | ) |
Checks to see if two rasters have the same dimensions Does NOT check georeferencing.
Compare_raster | the raster to compare |
bool LSDRaster::does_raster_have_same_dimensions_and_georeferencing | ( | LSDRaster & | Compare_raster | ) |
Checks to see if two rasters have the same georeferencing.
Compare_raster | the raster to compare |
bool LSDRaster::does_raster_have_same_dimensions_and_georeferencing | ( | LSDIndexRaster & | Compare_raster | ) |
Checks to see if two rasters have the same georeferencing.
Compare_raster | the raster to compare |
LSDRaster LSDRaster::DrainageDensity | ( | LSDIndexRaster & | StreamNetwork, |
LSDIndexRaster & | Basins, | ||
Array2D< int > | FlowDir | ||
) |
Calculate drainage density of a set of input basins.
Calculated as flow length/basin area and written to every cell of the identified basin. Completely rewritten to optimise performance. Now only traverses the DEM 3 times regardless of the number of input basins, previously traversed the DEM (2*No of Basins + 2) times.
Works by creating a pair of vectors of basin IDs and stream length for each pixel which are then sorted by basin ID and summed in order to calculate DD in a single pass over the DEM.
StreamNetwork | LSDIndexRaster of the stream network. |
Basins | LSDIndexRaster of the basins to be analysed. |
FlowDir | Array2D of flowdirections generated by FlowInfo.get_FlowDirection(). |
void LSDRaster::DSSampleDiamond | ( | int | row, |
int | col, | ||
int | size, | ||
float | value | ||
) |
This is the diamond sampling step of the diamond square algorithm: it takes the average of the four corners and adds a random number to set the centrepoint of a diamond.
The | row of the centrepoint. |
The | column of the centrepoint. |
The | size of this diamond (in pixels, must be divisible by 2). |
The | random value added to the average of teh four corners. |
void LSDRaster::DSSampleSquare | ( | int | row, |
int | col, | ||
int | size, | ||
float | value | ||
) |
This is the square sampling step of the diamond square algorithm: it takes the average of the four corners and adds a random number to set the centrepoint of a square.
The | row of the centrepoint. |
The | column of the centrepoint. |
The | size of this square (in pixels, must be divisible by 2). |
The | random value added to the average of the four corners. |
void LSDRaster::DSSetFeatureCorners | ( | int | featuresize, |
float | scale | ||
) |
This sets the corners of features as the first step in the diamond square algorithm.
The | first parameter is the feature size. This needs to be a power of 2, but this is set by the parent DiamondSquare function (that is, this function should not be called independantly. |
The | scale is effectivly the maximum relief of the surface to be produced by the algorithm. |
LSDRaster LSDRaster::ExtractByMask | ( | LSDIndexRaster | Mask | ) |
Function to extract an LSDRaster based on a LSDIndexRaster mask.
LSDIndexRaster | TheMask |
LSDRaster LSDRaster::fill | ( | ) |
This function fills pits/sinks in a DEM by incrementing elevations for cells with no downslope neighbour. The process is repeated adnausium until no cells require incrementing.
Inputs required are a DEM file in ascii raster format as created by ARCMap and a file name to create a filled DEM grid.
This code was built ontop of code made available by Jon D. Pelletier as part of his book:
Pelletier,J.D.,'Quantitative Modelling of Landscapes' Cambridge University Press
v1.3 reduced fill increment to 1mm to avoid 'overfilling'
Martin Hurst, October 2011
v1.2 modified to read *.flt files
Martin Hurst, November 2010
v1.1 function incorporated to allow the tool to fill adjacent pixels immediately after filling a given pixel, should speed things up.
Martin Hurst, October 2010
v1.0 is slow as it requires many iterations through the dem
Martin Hurst, June 2010
LSDRaster LSDRaster::fill | ( | float & | MinSlope | ) |
This function fills pits/sinks in a DEM by checking for pits from lowest to highest elevation, starting at the DEM boundary (raster edge or adjacent to NDVs).
Utilises a priority queue to progressively populate the stack and pop out the the lowest value before checking that the neighbouring cells that are yet to be visited must be higher in a hydrologically correct DEM. This method is substantially faster on datasets with pits consisting of multiple cells since each cell only needs to be visited once.
Method taken from Wang and Liu (2006), Int. J. of GIS. 20(2), 193-213
MinSlope | The minimum slope between two Nodes once filled. If set to zero will create flats. |
void LSDRaster::fill_iterator | ( | Array2D< float > & | fill_data, |
int | i, | ||
int | j | ||
) |
This is a recursive algorithm that is called by the fill function.
fill_data | |
i | |
j |
LSDRaster LSDRaster::fill_with_interpolated_data | ( | vector< int > | rows_of_nodes, |
vector< int > | cols_of_nodes, | ||
vector< float > | interpolated_data | ||
) |
This fills a raster with precalculated interpolated data.
rows_of_nodes | the rows of the interpolated points |
cols_of_nodes | the colss of the interpolated points |
interpolated | data the actual data that has been interpolated |
LSDIndexRaster LSDRaster::find_cells_bordered_by_nodata | ( | ) |
This function creates a mask that has the value of 1 for cells that are either on the edge or bordered by nodata (from their 9 neighbors)
int LSDRaster::Find_UTM_central_meridian | ( | int | UTM_zone | ) |
This method looks up the central meridian given a UTM zone.
UTM_zone | the UTM zone |
void LSDRaster::FlattenToCSV | ( | string | FileName | ) |
Method to flatten an LSDRaster and place the non NDV values in a csv file.
Each value is placed on its own line, so that it can be read more quickly in python etc. It includes the x and y locations so it can be read by GIS software
FileName_prefix | The prefix of the file to write, if no path is included it will write to the current directory. The csv extension is added automatically. |
void LSDRaster::FlattenToFile | ( | string | FileName | ) |
Simple method to flatten an LSDRaster to a text file, with a sigle value on each line.
FileName | The name of the file to write, if no path is included it will write to the current directory. |
void LSDRaster::FlattenToWGS84CSV | ( | string | FileName | ) |
Method to flatten an LSDRaster and place the non NDV values in a csv file.
Each value is placed on its own line, so that it can be read more quickly in python etc. It includes the lat long coordinates in CSV
FileName_prefix | The prefix of the file to write, if no path is included it will write to the current directory. The csv extension is added automatically. |
LSDRaster LSDRaster::FMDChannelsFromChannelHeads | ( | vector< int > & | channel_heads_rows, |
vector< int > & | channel_heads_cols, | ||
float | R_threshold | ||
) |
Extracts a multi-pixel channel network, as opposed to a single thread channel, using method outlined in Pelletier, 2013, WRR; A robust, two-parameter method for the extraction of drainage networks from high-resolution digital elevation models (DEMs): Evaluation using synthetic and real-world DEMs.
First runs Freeman MD flow routing algorithm from previously identified source. Then removes all pixels from the channel network if the ratio of discharge to upstream channel heads is below a user-specified threshold
vector<int> | channel_heads_rows - a vector of source node row indices |
vector<int> | channel_heads_cols - a vector of source node column indices |
float | R_threshold - the threshold ratio of discharge:upstream channel heads; Pelletier (2013) reccomends a value of 0.1 |
LSDRaster LSDRaster::FreemanMDFlow | ( | ) |
Generate a flow area raster using a multi direction algorithm.
Computes the proportion of all downslope flows for each cell in the input DEM, and weights them using the equation from Freeman et al 1991 and routes the flow accordingly.
Paper link: http://www.sciencedirect.com/science/article/pii/009830049190048I
Cardinal Weighting = (elevation_drop/total_elevation_drop)^1.1
Diagonal Weighting = ((elevation_drop/total_elevation_drop)*(1/root(2)))^1.1
Can NOT handle DEMs containing flats or pits - must be filled using the new LSDRaster fill. Function built around original c++ code by Martin Hurst.
LSDRaster LSDRaster::FreemanMDFlow_SingleSource | ( | int | i_source, |
int | j_source | ||
) |
Route flow from one source pixel using FreemanMDFlow. Adapted from SWDG's code above.
i_source | -> the row index of the source pixel |
j_source | -> the column index of the source pixel |
LSDRaster LSDRaster::GaussianFilter | ( | float | sigma, |
int | kr = 0 |
||
) |
Filters the raster using a square 2D Gaussian filter. The filter is applied using a moving kernel of gaussian weights with a radius of 3*sigma.
Equivalent lenghtscale of smoothing (from Lashermes et al., 2007) original data -> 4*sigma 1st derivative -> 2*pi*sigma 2nd derivative -> sqrt(2)*pi*sigma
sigma | |
kr | (an optional integer halfwidth for the smoothing window. If not supplied then the window is set to cover at least three*sigma) |
TNT::Array2D<double> LSDRaster::get_ascii_raster | ( | string | FILENAME | ) |
Reads a raster from an ascii file for use in LSDCatchmentModel.
|
inline |
Get the raster data at a specified location.
row | An integer, the X coordinate of the target cell. |
column | An integer, the Y coordinate of the target cell. |
|
inline |
float LSDRaster::get_drainage_density_of_raster | ( | LSDIndexRaster & | StreamNetwork, |
Array2D< int > | FlowDir | ||
) |
Calculate drainage density of a DEM.
Calculated as flow length/raster area
StreamNetwork | LSDIndexRaster of the stream network. |
FlowDir | Array2D of flowdirections generated by FlowInfo.get_FlowDirection(). |
void LSDRaster::get_easting_and_northing_vectors | ( | vector< float > & | Eastings, |
vector< float > & | Northings | ||
) |
This returns vectors of all the easting and northing points in the raster Used for interpolations.
Eastings | a vector of easting coordinates. Will be replaced by method. |
Northings | a vector of northing coordinates. Will be replaced by method. |
|
inline |
void LSDRaster::get_lat_and_long_locations | ( | int | row, |
int | col, | ||
double & | lat, | ||
double & | longitude, | ||
LSDCoordinateConverterLLandUTM | Converter | ||
) |
a function to get the lat and long of a node in the raster Assumes WGS84 ellipsiod
row | the row of the node |
col | the col of the node |
lat | the latitude of the node (in decimal degrees, replaced by function) Note: this is a double, because a float does not have sufficient precision relative to a UTM location (which is in metres) |
long | the longitude of the node (in decimal degrees, replaced by function) Note: this is a double, because a float does not have sufficient precision relative to a UTM location (which is in metres) |
Converter | a converter object (from LSDShapeTools) |
|
inline |
|
inline |
|
inline |
float LSDRaster::get_percentage_bedrock_ridgetops | ( | LSDRaster & | roughness, |
LSDRaster & | hilltop_curvature, | ||
float | threshold | ||
) |
Gets the percentage of bedrock ridges.
Uses the hilltop curvature raster and the roughness raster. If the roughness value is greater than the threshold (set to 0.015) then the pixel is designated bedrock.
roughness | roughness input raster |
hilltop_curvature | hilltop curvature input raster |
threshold | threshold value to be designated bedrock |
LSDIndexRaster LSDRaster::get_potential_floodplain_patches | ( | LSDRaster & | Relief, |
LSDRaster & | Slope, | ||
float | relief_threshold, | ||
float | slope_threshold | ||
) |
Function to get potential floodplain patches using a slope and relief threshold.
Relief | raster with relief values |
Slope | raster with slope values |
relief_threshold | threshold value for relief (floodplain must be lower than this) |
slope_threshold | threshold value for slope (floodplain must be lower than this) |
|
inline |
|
inline |
Get the raw raster data, double format.
|
inline |
Get the raw raster data, integer format.
vector< float > LSDRaster::get_RasterData_vector | ( | ) |
This function returns the raster data as a vector.
vector< float > LSDRaster::get_RasterData_vector_No_NDVs | ( | ) |
This function returns the raster data as a vector, ignoring NDVs.
void LSDRaster::get_row_and_col_of_a_point | ( | float | X_coordinate, |
float | Y_coordinate, | ||
int & | row, | ||
int & | col | ||
) |
Gets the row and column of a point in the raster.
X_coordinate | the x location of the point |
Y_coordinate | the y location of the point |
row | the row of the point, replaced upon running the routine |
col | the col of the point, replaced upon running the routine |
float LSDRaster::get_threshold_for_floodplain | ( | float | bin_width, |
float | peak_threshold, | ||
int | peak_distance | ||
) |
Function to get threshold from a raster using a histogram of Probability-Density values. The function identifies the peaks in the PDF, and sets the threshold to the peak with the lowest value. This can be used to set the floodplain threshold.
bin_width | Bin width for histogram |
peak_threshold | Threshold probability-density value above which peaks will be selected |
peak_distance | Threshold distance between identified peaks (will remove smaller peaks close to the largest ones) |
float LSDRaster::get_threshold_for_floodplain_QQ | ( | string | q_q_filename, |
float | threshold_condition, | ||
int | lower_percentile, | ||
int | upper_percentile | ||
) |
Function to get threshold from a raster using qq plots.
q_q_filename | Filename for the txt file with the data to visualise the qq plot |
void LSDRaster::get_UTM_information | ( | int & | UTM_zone, |
bool & | is_North | ||
) |
this function gets the UTM_zone and a boolean that is true if the map is in the northern hemisphere
UTM_zone | the UTM zone. Replaced in function. |
is_North | a boolean that is true if the DEM is in the northern hemisphere. replaced in function |
float LSDRaster::get_value_of_point | ( | float | UTME, |
float | UTMN | ||
) |
This gets the value at a point in UTM coordinates.
UTME | the easting coordinate |
UTMN | the northing coordinate |
void LSDRaster::get_x_and_y_locations | ( | int | row, |
int | col, | ||
double & | x_loc, | ||
double & | y_loc | ||
) |
this gets the x and y location of a node at row and column
row | the row of the node |
col | the column of the node |
x_loc | the x location (Northing) of the node |
y_loc | the y location (Easting) of the node |
void LSDRaster::get_x_and_y_locations | ( | int | row, |
int | col, | ||
float & | x_loc, | ||
float & | y_loc | ||
) |
this gets the x and y location of a node at row and column
row | the row of the node |
col | the column of the node |
x_loc | the x location (Northing) of the node |
y_loc | the y location (Easting) of the node |
|
inline |
vector< float > LSDRaster::get_XY_MinMax | ( | ) |
This function returns a vector with the X adn Y minimum and max values.
|
inline |
void LSDRaster::GetBasinVector | ( | LSDIndexRaster | Basins, |
int | BasinOfInterest | ||
) |
Convert a basin, given by a basin ID, into a chain of xy coordinates for fast plotting of vector basin outlines.
Produces a generalised polygon and will not cope well with complex geometries.
Needs to be updated to write data into an esri ascii format so the files can be loaded into arc. Currently writes to a text file called chain.txt.
Basins | IndexRaster of basins |
BasinOfInterest | integer of the basin ID to be converted. |
void LSDRaster::GetVectors | ( | LSDRaster | Magnitude, |
LSDRaster | Direction, | ||
string | output_file, | ||
int | step | ||
) |
Method to export thinned vector field data to a text file.
The file is written with the format "i j Magnitude Direction".
Magnitude | LSDRaster of the vector's magnitude. |
Direction | LSDRaster of the vector's direction. |
output_file | Filename for the output text file. |
step | Integer value used to thin the data, 1 preserves all the data, 2 keeps every second point and so on. |
LSDRaster LSDRaster::hillshade | ( | ) |
This function generates a hillshade raster.
It uses the the algorithm outlined in Burrough and McDonnell Principles of GIS (1990) and in the ArcMap web help http://edndoc.esri.com/arcobjects/9.2/net/shared/geoprocessing/ spatial_analyst_tools/how_hillshade_works.htm
Default values are altitude = 45, azimuth = 315, z_factor = 1
altitude | (float) of the illumination source in degrees. |
azimuth | (float) of the illumination source in degrees |
z_factor | (float) Scaling factor between vertical and horizontal. |
LSDRaster LSDRaster::HillslopeLengthFromDrainageDensity | ( | LSDIndexRaster & | StreamNetwork, |
LSDIndexRaster & | Basins, | ||
Array2D< int > | FlowDir | ||
) |
Simple method to calculate drainage density for each basin and then convert these values into a hillslope length raster.
The LH value is calculated using LH = 1/2*DD [Tucker et al 2001].
StreamNetwork | LSDIndexRaster of the stream network. |
Basins | LSDIndexRaster of the basins to be analysed. |
FlowDir | Array2D of flowdirections generated by FlowInfo.get_FlowDirection(). |
void LSDRaster::HilltopsToCSV | ( | LSDRaster & | CHT, |
LSDRaster & | CHT_gradient, | ||
LSDRaster & | gradient, | ||
int | UTMZone, | ||
bool | isNorth, | ||
int | eId, | ||
string | filename | ||
) |
Write CHT and hilltop gradient data to a *.csv file, coded by UTM coordinates as well as lat/long.
Pass in a CHT raster, CHT raster that has been filtered by gradient, a slope raster, a filename and some spatial reference information used to generate Lat Long values.
The code outputs a csv to the filename specified with the header structure:
"_ID,Easting,Northing,Lat,Long,CHT,gradient_flag,gradient"
Where the gradient_flag is a binary switch where 0 == above threshold and 1 == below threshold.
CHT | LSDRaster of the hilltop curvature. |
CHT_gradient | LSDRaster of the hilltop curvature, filtered by a gradient threshold. |
gradient | LSDRaster of the topographic gradient. |
UTMZone | The UTM zone the data falls in. |
isNorth | Boolean set to true if the data are in the northern hemisphere and false if not. |
eId | The ellipsoid ID, see LSDCoordinateConverterLLandUTM for details, WGS84 is 22. |
filename | A string containing a path and filename to write the data to. |
void LSDRaster::impose_georeferencing_UTM | ( | int | zone, |
string | NorS | ||
) |
This method imposes georefereing strings assuming the coordinate system is UTM.
zone | the UTM zone |
NorS | a string containing characters that start either N (for north) or S for south. The letter is not case sensitive |
vector< float > LSDRaster::interpolate_points_bilinear | ( | vector< float > | UTMEvec, |
vector< float > | UTMNvec | ||
) |
This interpolates a vector of points onto the raster. Uses bilinear interpolation.
UTMEvec | Easting coordinates of points to be interpolatiod. |
UTMNvec | Northing coordinates of points to be interpolatiod. |
LSDIndexRaster LSDRaster::IsolateChannelsGeonet | ( | float | timesteps, |
float | area_threshold, | ||
float | window_radius, | ||
string | q_q_filename | ||
) |
method to locate channel pixels outlined by Passalacqua et al. (2010).
Isolate channelised portions of the landscape using the method proposed by Passalacqua et al. (2010) A geometric framework for channel network extraction from lidar: Nonlinear diffusion and geodesic paths, J. Geophys. Res., 115(F1), F01002, doi:10.1029/2009JF001254.
number | of timesteps for non-linear filtering steps - suggest 20 in complex terrain |
a | catchment area threshold for pruning |
a | window radius for surface fitting from which curvature calculation is performed |
LSDIndexRaster LSDRaster::IsolateChannelsLashermesCurvature | ( | float | sigma, |
string | q_q_filename | ||
) |
method to locate channel pixels outlined by Lashermes.
picks departure from gaussian behaviour, then uses this as a threshold to create a binary dataset. Lashermes, B., E. Foufoula-Georgiou, and W. E. Dietrich (2007), Channel network extraction from high resolution topography using wavelets, Geophys. Res. Lett., 34, L23S04, doi:10.1029/2007GL031140.
string | q_q_file A text file containing data to produce a q_q_plot. |
LSDIndexRaster LSDRaster::IsolateChannelsQuantileQuantile | ( | string | q_q_filename | ) |
uses quantile-quantile analysis to pick departure from gaussian behaviour, then uses this as a threshold to create a binary dataset.
string | q_q_file A text file containing data to produce a q_q_plot. |
LSDRaster LSDRaster::LSDRasterTemplate | ( | Array2D< float > | InputData | ) |
LSDRaster LSDRaster::M2DFlow | ( | ) |
Generate a flow area raster using a multi 2-direction algorithm.
Computes the proportion of all downslope flows for each cell in the input DEM. Finds the cell of the steepest descent and then checks the two neighbouring cells slopes. If either is also downslope proportion flow between the steepest cell and the steepest neighbour. If neither neighbour is downslope 100% of flow follows the steepest path.
Can NOT handle DEMs containing flats or pits - must be filled using the new LSDRaster fill. Function built around original c++ code by Martin Hurst.
void LSDRaster::MakeGaussianKernel | ( | Array2D< float > & | Kernel, |
float | sigma, | ||
int | SimilarityRadius | ||
) |
Generate gaussian weighted kernel.
kernel array must be predeclared of size SimilarityRadius and consist of zeros: Array2D<float> Kernel(SimilarityRadius,SimilarityRadius,0.0);
Kernel generated using: G(x,y) = (1/2*pi*sigma^2) exp ((-x^2+y^2)/(2*sigma^2))
Kernel | |
sigma | |
SimilarityRadius | similarity window radius. |
This add two rasters, elementwise Simple elementwise addition.
M_raster | The raster by which to add the current raster |
This divides two rasters, elementwise Simple elementwise division.
M_raster | The raster by which to divide the current raster |
This multiplies two rasters, elementwise Simple elementwise multiplictation.
M_raster | The raster by which to multiply the current raster |
This subtracts two rasters, elementwise Simple elementwise subtraction.
M_raster | The raster by which to subtract the current raster |
LSDIndexRaster LSDRaster::mask_to_indexraster_using_threshold | ( | float | threshold, |
bool | belowthresholdisnodata | ||
) |
This function creats an LSDIndexRaster mask (with true == 1 and otherwise nodata) from an LSDRaster. Can mask either above or below a threshold.
threshold | The threshold value |
belowthresholdisnodata | a boolean that if true means anything below the threshold turns to nodata |
void LSDRaster::mask_to_nodata_below_threshold | ( | float | threshold | ) |
This function changes any elevation <= threshold to NoDataValue.
threshold | The thresold, silly |
LSDRaster LSDRaster::mask_to_nodata_using_threshold | ( | float | threshold, |
bool | belowthresholdisnodata | ||
) |
This function changes any data point either above or below threshold to NoDataValue.
threshold | The threshold value |
belowthresholdisnodata | a boolean that if true means anything below the threshold turns to nodata |
LSDRaster LSDRaster::mask_to_nodata_using_threshold_using_other_raster | ( | float | threshold, |
bool | belowthresholdisnodata, | ||
LSDRaster & | MaskingRaster | ||
) |
This function changes any data point either above or below threshold to NoDataValue The threshold is determined by a second raster.
threshold | The threshold value |
belowthresholdisnodata | a boolean that if true means anything below the threshold turns to nodata |
MaskingRaster | an LSDRaster that is used to define the mask |
LSDRaster LSDRaster::mask_to_nodata_with_mask_raster | ( | LSDIndexRaster & | Mask_raster, |
int | mask_value | ||
) |
This function masks a raster to nodata based on a mask value and a mask raster.
Mask_raster | the LSDIndexRaster that contains the mask |
mask_value | the value on the mask that triggers a nodata |
void LSDRaster::MaskRaster | ( | LSDIndexRaster | Mask | ) |
Function to update an LSDRaster based on a LSDIndexRaster mask.
LSDIndexRaster | TheMask |
float LSDRaster::max_elevation | ( | void | ) |
Calculates max elevation of a raster.
LSDRaster LSDRaster::MDFlow | ( | vector< string > | BoundaryConditions | ) |
Generate a flow area raster using a multi direction algorithm.
Computes the proportion of all downslope flows for each cell in the input DEM and routes the flow accordingly. Consequently the dem is sorted and indexed using LSDStatsTools. Can handle DEMs containing flats, but pits must be filled using the new LSDRaster fill.
Currently only works with periodic boundaries. Function built around original c++ code by Martin Hurst.
BoundaryConditions | Vector as in LSDFlowInfo object. |
float LSDRaster::mean_elevation | ( | void | ) |
Calculates mean elevation of a raster.
float LSDRaster::mean_relief | ( | float | kernelsize | ) |
Calculates mean relief of a raster, it defaults to a circular kernal.
Method to merge data from two LSDRasters WITH SAME EXTENT together. /// The data from the raster specified as an argument will be added (will overwrite the original raster if there is a conflict).
RasterToAdd | second raster to add to original raster |
LSDRaster LSDRaster::neighbourhood_statistics_fraction_condition | ( | float | window_radius, |
int | neighbourhood_switch, | ||
int | condition_switch, | ||
float | test_value | ||
) |
tests neighbourhood for the fraction of values for which the specified condition is met.
The second argument (neighbourhood_switch) specifies the neighbourhood type: 0 Square neighbourhood 1 Circular window
the third argument (condition_switch) specifies the condition using an integer as follows: 0 == 1 != 2 > 3 >= 4 < 5 <=
float | window_radius -> radius of neighbourhood |
int | neighbourhood_switch -> see above |
int | condition_switch -> see above |
float | test_value -> the value to test against in the conditional statement |
LSDRaster LSDRaster::neighbourhood_statistics_local_relief | ( | float | window_radius, |
int | neighbourhood_switch | ||
) |
gets relief within value specified circular neighbourhood
The second argument (neighbourhood_switch) specifies the neighbourhood type: 0 Square neighbourhood 1 Circular window
float | window_radius -> radius of neighbourhood |
int | neighbourhood_switch -> see above |
LSDRaster LSDRaster::neighbourhood_statistics_spatial_average | ( | float | window_radius, |
int | neighbourhood_switch | ||
) |
gets mean value for specified circular neighbourhood
The second argument (neighbourhood_switch) specifies the neighbourhood type: 0 Square neighbourhood 1 Circular window
float | window_radius -> radius of neighbourhood |
int | neighbourhood_switch -> see above |
vector< LSDRaster > LSDRaster::neighbourhood_statistics_spatial_average_and_SD | ( | float | window_radius, |
int | neighbourhood_switch | ||
) |
gets mean & standard deviation value specified circular neighbourhood
The second argument (neighbourhood_switch) specifies the neighbourhood type: 0 Square neighbourhood 1 Circular window
float | window_radius -> radius of neighbourhood |
int | neighbourhood_switch -> see above |
LSDRaster LSDRaster::NonLocalMeansFilter | ( | int | WindowRadius = 2 , |
int | SimilarityRadius = 2 , |
||
int | DegreeFiltering = 2 , |
||
float | Sigma = 1.25 |
||
) |
Perform Non-local means filtering on a DEM following Baude et al [2005].
Smoothes non-gaussian noise. Martin Hurst, February, 2012 Modified by David Milodowski, May 2012- generates grid of recording filtered noise
WindowRadius has to be <= SimilarityRadius ?
Adapted from a matlab script by: Author: Jose Vicente Manjon Herrera & Antoni Buades Date: 09-03-2006
Implementation of the Non local filter proposed for A. Buades, B. Coll and J.M. Morel in "A non-local algorithm for image denoising"
**Added soft threshold optimal correction - David Milodowski, 05/2012
WindowRadius | search window radius (defualt=2). |
SimilarityRadius | similarity window radius (defualt=2). |
DegreeFiltering | degree of filtering (defualt=2). |
Sigma | (default=1.25). |
void LSDRaster::OverwriteRaster | ( | LSDRaster & | RasterToAdd | ) |
Method to merge data from two LSDRasters WITH SAME EXTENT together. /// The data from the raster specified as an argument will be added (will overwrite the original raster if there is a conflict). Overloaded function to rewrite original raster rather than creating a new one.
RasterToAdd | second raster to add to original raster |
void LSDRaster::PadRasterSymmetric | ( | Array2D< float > & | PaddedRasterData, |
int & | SimilarityRadius | ||
) |
Creates a buffer around an array (of size SimilarityRadius) and gives the new border mirror symmetric values of the original array reflected across the boundary.
SimilarityRadius should be the size of the window if filtering. New array has size nrows + 2*SimilarityRadius by ncols + 2*SimilarityRadius.
PaddedRasterData | Padded LSDRaster. |
SimilarityRadius | similarity window radius. |
LSDRaster LSDRaster::PeronaMalikFilter | ( | int | timesteps, |
float | percentile_for_lambda, | ||
float | dt | ||
) |
Filters the raster using a Perona-Malik non-linear diffusion filter.
This follows the algorithm descibed in Passalacqua et al. (2010), A geometric framework for channel network extraction from lidar: Nonlinear diffusion and geodesic paths, J. Geophys. Res., 115(F1), F01002, doi:10.1029/2009JF001254. See also Catte et al. (1992), Image Selective Smoothing and Edge Detection by Nonlinear Diffusion, SIAM J. Numer. Anal., 29(1), 182-193, doi:10.1137/0729012.
timesteps | the number of diffusion timesteps. Suggest ~50 for 1m LiDAR |
lambda | percentile (selects the gradient percentile that is used to define lambda. Suggest 90th percentile) |
dt | The timestep for each round of diffusion. Suggest that this is 0.1 to avoid stability issues (same as Passalacqua et al. 2010) |
LSDIndexRaster LSDRaster::PointShapefileToRaster | ( | string | FileName | ) |
Method to turn a point shapefile into an LSDIndexRaster.
Can be used to turn a shapefile of channel heads into a sources raster. Does not do any bounds checking or shapefile type checking.
FileName | The path and filename of the shapefile to be loaded, must include the file extension. |
LSDIndexRaster LSDRaster::PolylineShapefileToRaster | ( | string | FileName | ) |
Method to turn a polyline shapefile into an LSDIndexRaster.
Can be used to turn a shapefile of a river network into a raster. Does not do any bounds checking or shapefile type checking.
Works by calculating points along each line spaced by less than the data resolution. This has the effect of flaggin every raster cell along a polyline.
FileName | The path and filename of the shapefile to be loaded, must include the file extension. |
LSDRaster LSDRaster::PoupulateRasterGaussian | ( | float | minimum, |
float | mean | ||
) |
Populate a raster with random noise drawn from a gaussian distribution of given mean and minimum values.
minimum | Minimum value of the distribution to draw values from. |
mean | Mean value of the distribution to draw values from. |
Populate a raster with random noise drawn from a gaussian distribution of given mean and minimum values. SWDG 9/6/16
LSDRaster LSDRaster::PoupulateRasterSingleValue | ( | float | value | ) |
Populate a raster with a single value.
value | Value to populate all non nodata cells with. |
Populate a raster with a given value. SWDG 9/6/16
LSDRaster LSDRaster::QuinnMDFlow | ( | ) |
Generate a flow area raster using a multi direction algorithm.
Computes the proportion of all downslope flows for each cell in the input DEM, and weights them using the equation from Quinn et al 1991 and routes the flow accordingly.
Paper link: http://onlinelibrary.wiley.com/doi/10.1002/hyp.3360050106/abstract
Cardinal Weighting = (elevation_drop/total_elevation_drop)*DataResolution/2
Diagonal Weighting = ((elevation_drop/total_elevation_drop)*(1/root(2)))* DataResolution*0.354
Can NOT handle DEMs containing flats or pits - must be filled using the new LSDRaster fill. Function built around original c++ code by Martin Hurst.
void LSDRaster::raster_multiplier | ( | float | multiplier | ) |
This multiplies the raster data by a multiplier Note that values are replaced.
void LSDRaster::raster_statistics_by_index | ( | LSDIndexRaster & | IndexRaster, |
vector< float > & | mean_vector, | ||
vector< float > & | sd_vector, | ||
vector< float > & | serr_vector, | ||
vector< int > & | Npts_vector | ||
) |
Takes a raster and a corresponding index raster, and calculates the mean, sd and standard error by index. Returns four vectors: mean, st.dev., st.err and Number of points for each category.
input | index raster |
output | vector with mean values |
output | vector with standard deviation values |
output | vector with standard error values |
output | vector with number of points |
LSDRaster LSDRaster::RasterTrimmer | ( | ) |
Calculate the minimum bounding rectangle for an LSDRaster Object and crop out all the surrounding NoDataValues to reduce the size and load times of output rasters.
Ideal for use with chi analysis tools which output basin and chi m value rasters which can be predominantly no data. As an example, a 253 Mb file can be reduced to ~5 Mb with no loss or resampling of data.
Modded 6/11/14 to cope with bil files and to catch cases where some or all of the edges cannot be trimmed - SWDG
LSDRaster LSDRaster::RasterTrimmerPadded | ( | int | padded_pixels | ) |
Calculate the minimum bounding rectangle for an LSDRaster Object and crop out all the surrounding NoDataValues to reduce the size and load times of output rasters. Similar to RasterTrimmer but has a pixel buffer. Useful for CRN data since sometimes the channel in the DEM does not correspond exactly with the data point.
Ideal for use with chi analysis tools which output basin and chi m value rasters which can be predominantly no data. As an example, a 253 Mb file can be reduced to ~5 Mb with no loss or resampling of data.
padded_pixels | the number of pixels to pad the DEM with |
LSDRaster LSDRaster::RasterTrimmerSpiral | ( | ) |
void LSDRaster::read_ascii_raster_integers | ( | string | FILENAME | ) |
Reads a raster of integers and populates LSDRaster integer array member data.
void LSDRaster::read_raster | ( | string | filename, |
string | extension | ||
) |
Read a raster into memory from a file.
The supported formats are .asc and .flt which are both exported and imported by arcmap.
The filename is the string of characters before the '.' in the extension and the extension is the characters after the '.'.
If the full filename is my_dem.01.asc then: filename = "my_dem.01" and extension = "asc".
For float files both a data file and a header are read the header file must have the same filename, before extention, of the raster data, and the extension must be .hdr.
Removes positive hilltop curvature values.
Modifies the hilltop curvature raster to remove pixels with positive curvature caused by noise
hilltop_curvature | hilltop curvature input raster |
void LSDRaster::remove_positive_values | ( | ) |
Removes positive values from a raster.
Modifies araster to remove pixels with positive values
void LSDRaster::remove_seas | ( | ) |
This function changes any elevation <= 0 to NoDataValue.
LSDRaster LSDRaster::RemoveAbove | ( | float | Value | ) |
Simple method to remove any values above a user supplied value from an LSDRaster.
Value | float of the threshold above which values will be removed. |
LSDRaster LSDRaster::RemoveBelow | ( | float | Value | ) |
Simple method to remove any values below a user supplied value from an LSDRaster.
Value | float of the threshold below which values will be removed. |
LSDRaster LSDRaster::Resample | ( | float | OutputResolution | ) |
void LSDRaster::rewrite_with_random_values | ( | float | range | ) |
rewrite all the data array values with random numbers (with a uniform distribution).
range | is the range of values. |
LSDRaster LSDRaster::RidgeBuffer | ( | int | BufferRadius | ) |
Pass a buffer over a ridge LSDRaster object to increase sampling area.
Buffers equally in all directions, so use with care to avoid sampling areas away from the axis of the original ridge line.
BufferRadius | optional integer buffer radius between 1 and 6. |
LSDRaster LSDRaster::RidgeSample | ( | Array2D< float > & | Ridges | ) |
Module to sample LSDRaster values running along a ridgetop network.
Ridge network is generated from LSDJunctionNetwork::ExtractRidges.
Ridges | 2D Array of ridge lines. |
LSDRaster LSDRaster::RidgeSmoother | ( | int | WindowRadius | ) |
Pass a smoothing window over a ridge LSDRaster object to calculate an average value running along the ridgetop.
WindowRadius | optional integer smoothing radius between 1 and 6. |
void LSDRaster::rudimentary_nodata_fill | ( | ) |
a very rudimentay filling routine that just fills nodata nodes with the average elevation of its neighbors
vector< vector< float > > LSDRaster::Sample_Along_Ridge | ( | LSDRaster & | Raster1, |
LSDRaster & | Raster2, | ||
LSDRaster & | Raster3, | ||
int | a, | ||
int | b, | ||
int | threshold | ||
) |
Sample the values of 3 input rasters that intersect with the point a,b within the area defined by threshold.
Raster1 | First LSDRaster to sample. |
Raster2 | Second LSDRaster to sample. |
Raster3 | Third LSDRaster to sample. |
a | Integer row index of point to sample. |
b | Integer col index of point to sample. |
threshold | The number of cells of hilltop to sample. |
|
inline |
Sets the raster data at a specified location.
row | An integer, the X coordinate of the target cell. |
column | An integer, the Y coordinate of the target cell. |
value | The value of the updated raster element |
void LSDRaster::SetWrapSample | ( | int | row, |
int | col, | ||
float | value | ||
) |
This sets a value in the data array withthe added feature that it wraps beyond NRows and NCols.
The | row of data to be reset. |
The | column of the data to be reset. |
The | value of the data to be reset. |
Array2D< float > LSDRaster::Shadow | ( | int | theta, |
int | phi | ||
) |
This function generates a hillshade derivative raster using the algorithm outlined in Codilean (2006).
It identifies areas in shadow as 1 and all other values as 0. Is interfaced through LSDRaster::TopoShield and should not be called directly, to generate a hillshade use LSDRaster::hillshade instead.
theta | The zenith angle of the illumination source in degrees. |
phi | The azimuth angle of the illumination source in degrees. |
Array2D< float > LSDRaster::Shadows | ( | int | Azimuth, |
int | ZenithAngle | ||
) |
Function to determine areas of a DEM that are in shadow from a given radiation source defined by an Azimuth and Zenith following Codilean (2006).
Performs a coordinate transformation, rotating the x,y,z coordinates about the Azimuth and Zenith such that the coordinates are aligned with the Azimuth and Zenith. Shaded cells are then found by tracking in the direction of the radiation source and looking for transformed z values greater than that at the cell of interest which would therefore cast a shadow.
Azimuth | of the illumination source in degrees. |
ZenithAngle | of the illumination source in degrees |
float LSDRaster::SingleBasinAverager | ( | LSDIndexRaster & | Basin | ) |
Module calculates an average value to each for a given raster from within a basin.
Basins | LSDIndexRaster of a Drainage basin |
void LSDRaster::strip_raster_padding | ( | ) |
Strips the edge rows/columns of a LSDRaster on each side of the array.
This removes 1 pixel/grid cell from each side of an LSDRaster Note that it modifies the original raster and reassigns the RasterData_dbl data member to the new 'trimmed' raster. It then reduces the NCols and NRows values by 2, but does not modify the ll-corner values. It was primarily written for a special case in LSDCatchmentModel but will work with any LSDRaster.
LSDRaster LSDRaster::TopographicShielding | ( | int | theta_step, |
int | phi_step | ||
) |
This function generates a topographic shielding raster using the algorithm outlined in Codilean (2006).
Creating a raster of values between 0 and 1 of shadowed cells which can be used as a scaling factor in Cosmo analysis.
Goes further than the original algorithm allowing a theoretical theta, phi pair of 1,1 to be supplied and although this will increase the computation time significantly, it is much faster than the original Avenue and VBScript implementations (This is probably no longer true now that we incorporate drop shadows (MDH, Feb 2015)).
Takes 2 ints, representing the theta, phi paring required. Codilean (2006) used 5,5 as the standard values, but in reality values of 10,15 are often preferred to save processing time.
theta_step | Spacing of sampled theta values. |
phi_step | Spacing of sampled phi values. |
map< string, string > LSDRaster::Update_GeoReferencingStrings | ( | float | NewXmin, |
float | NewYmax | ||
) |
Method which takes a new xmin and ymax value and modifys the GeoReferencingStrings map_info line to contain these new values.
Intended for use in the rastertrimmer methods and is called from within these methods. Modifying georeferencing information by hand is messy and should be avoided if at all possible.
NewXmin | floating point value of the new minimum x value in the raster. |
NewYmax | floating point value of the new maximum y value in the raster. |
void LSDRaster::Update_GeoReferencingStrings | ( | ) |
Method which updates the map info element of the georeferencing strings based on information within the datamembers of the raster.
Intended for use when changing raster dimesions
float LSDRaster::WrapSample | ( | int | row, |
int | col | ||
) |
This returns a value from the array data element but wraps around the array dimensions so that row > NRows (for example) returns a value.
The | row of the data point you want. Column of desired data point. |
LSDRaster LSDRaster::write_dinf_flowdir_to_LSDRaster | ( | Array2D< float > | dinflow | ) |
Function to write the D-infinity flow directions to an LSDRaster.
dinflow | Array of Flowdirections generated by D_inf_FlowDir(). |
void LSDRaster::write_double_bil_raster | ( | string | filename, |
string | string_filename | ||
) |
Writes out a double array to a ENVI bil file (untested!)
void LSDRaster::write_double_raster | ( | string | filename, |
string | extension | ||
) |
This calls raster write functions, writing from Arrays of type <double> to raster format.
Sorry for duplicating a load of code, but I couldn't think of a good way to overload the function without passing the raster data array or breaking someone elses code.
filename | a string of the filename without the extension. |
extension | a string of the extension without the leading dot |
void LSDRaster::write_raster | ( | string | filename, |
string | extension | ||
) |
Read a raster from memory to a file.
The supported formats are .asc and .flt which are both exported and imported by arcmap.
The filename is the string of characters before the '.' in the extension and the extension is the characters after the '.'.
If the full filename is my_dem.01.asc then: filename = "my_dem.01" and extension = "asc".
For float files both a data file and a header are written the header file must have the same filename, before extention, of the raster data, and the extension must be .hdr.
filename | a string of the filename without the extension. |
extension | a string of the extension without the leading dot |
void LSDRaster::write_RasterData_to_text_file | ( | string | filename | ) |
This function returns the raster data as text file.