These instructions will take you through the steps needed to identify the correct window radius to use in the surface fitting routines, following the techniques published in Roering et al. (2010) and Hurst et al. (2012). It is assumed that you are already comfortable with using LSDTopoTools, and have worked though the tutorial: [First Analysis]. This analysis is often a precursor to other more complex processes, and will ensure that fitted surfaces capture topographic variations at a meaningful geomorphic scale.
-
Compile the code with:
make -f PolyFitWindowSize.make
-
Run the program
PolyFitWindowSize.out
using the path (with trailing slash), the filename and the file format as arguments. -
Analyse the resulting data files using the provided python script,
Window_Size.py
.
This driver file will run the surface fitting routines at a range of window sizes up to 100 meters, to produce a series of curvature rasters for the supplied landscape. The mean, interquartile range, and standard deviation of each curvature raster is calculated and these values are written to a text file.
The resulting text file can then be loaded by the provided python script, Window_Size.py
,
which will produce plots of how the mean, interquartile range, and standard deviation
of curvature varies with the surface fitting window size.
- This code will produce
-
A
*.txt
file containing the surface statistics for each window size.
This driver only requires an input DEM, this file can be at any resolution and must be
in *.bil
, flt
or asc
. format. Guidance on converting data into these formats
can be found in the chapter covering basic [GDAL] operations. Note that as data
resolution decreases (i.e. pixel size increases) the ability to resolve individual
hillslopes reduces, and so this technique becomes less important.
The code is compiled using the provided makefile, PolyFitWindowSize.make
and the command:
$ make -f PolyFitWindowSize.make
Which will create the binary file, PolyFitWindowSize.out
to be executed.
The driver is run with three arguments:
- Path
-
The path pointing to where the input raster file is stored. This is also where the output data will be written.
- Filename
-
The filename prefix, without an underscore. If the DEM is called
Oregon_DEM.flt
the filename would beOregon_DEM
. This will be used to give the output files a distinct identifier. - Format
-
The input file format. Must be either
bil
,flt
orasc
.
The syntax on a unix machine is as follows:
$ ./PolyFitWindowSize.out <path to data file> <Filename> <file format>
And a complete example (your path and filenames may vary):
$ ./PolyFitWindowSize.out /home/s0675405/DataStore/Final_Paper_Data/NC/ NC_DEM flt
The final outputs are stored in a plain text file, <Filename>_Window_Size_Data.txt
,
which is written to the data folder supplied as an argument.
This file contains the data needed to select the correct window size. The file has the the following columns, from left to right:
- Length_scale
-
The window size used in the surface fitting routines to generate this row of data.
- Curv_mean
-
Mean curvature for the landscape.
- Curv_stddev
-
Standard deviation of curvature for the landscape.
- Curv_iqr
-
Interquartile range of curvature for the landscape.
The latest version of the python scripts which accompany this analysis driver can be found here and provide a complete framework to select a window size for surface fitting.
Once the driver has been run, and the data file, <Filename>_Window_Size_Data.txt
,
has been generated, the python script can be executed using:
$ python Window_Size.py <Path> <Data Filename>
The two input arguments are similar to the driver file’s inputs:
- Path
-
The full path to where the data file is stored, with a trailing slash. E.g.
/home/data/
. This is also where the output plot will be written. - Data Filename
-
The filename of the data file generated by the driver. E.g.
Orgeon_DEM_Window_Size_Data.txt
.
A complete example (your path and filenames will be different):
$ python Window_Size.py /home/data/ Oregon_DEM_Window_Size_Data.txt
The plot generated by the python script can be interpreted to select a valid window size for the surface fitting routine. For discussions about this technique refer to Roering et al. (2010) and Hurst et al. (2012). The plot generated should look similar to this example taken from the Gabilan Mesa test dataset, available from the ExampleTopoDatasets repository:
The plot is divided into three sections. The top plot is the change in the interquartile range of curvature with window size, the middle plot is the change in mean curvature with window size and the bottom plot is the change in the standard deviation of curvature with window size.
Roering et al. (2010) and Hurst et al. (2012) suggest that a clear scaling break can be observed in some or all of these three plots, which characterizes the transition from a length scale which captures meter-scale features such as tree throw mounds to a length scale which corresponds to individual hillslopes.
Care must be taken when using this technique as it is challenging to differentiate between measurement noise and topographic roughness (e.g. tree throw mounds) in data if the shot density of the point cloud from which the DEM is generated it too low or it has been poorly gridded. Pay close attention to the metadata provided with your topographic data. If none is provided this is probably a bad sign!
In our example, a length scale of between 4 and 8 meters would be appropriate, supported by the scaling breaks identified in the plots with the red arrows:
.