Giter Site home page Giter Site logo

inkenbrandt / ruffsurffinder Goto Github PK

View Code? Open in Web Editor NEW

This project forked from utah-geological-survey/ruffsurffinder

0.0 1.0 0.0 43.68 MB

Set of codes built by Matthew Morriss to measure surface roughness

License: GNU General Public License v3.0

Python 100.00%

ruffsurffinder's Introduction

Ruff Surf Finder

This is a series of functions written by Matthew Morriss as an intern at the Utah Geological Survey. The primary objective of this project was to measure surface roughness and determine whether:

  1. Roughness can be used to aid surficial mapping geologists in mapping landslides and
  2. Whether or not roughness can actually be leveraged to map landslides in an automated fashion.

Installation

The scripts and the executbale file associated with Ruff Surf Finder are all writte in Python. All code has been written and tested using python 3.7. The Executable RuffSurf.exe is a frozen version of the code that should run without Python installed locally on a windows machine. There is not currently a unix compatible version of this function.

The executable scripts (e.g. Snow_basin_Roughness_Maps.py) have been tested on a Windows machine, but should run without issue on Unix machines.

Ancillary packages required for successful code run:

  1. Time
  2. OS
  3. numpy
  4. matplotlib
  5. rasterio
  6. osgeo
  7. pandas
  8. numba

All code was excuted with the latest version of these packages as of 2/14/20

Description

National Science Foundation Fellow, Matthew Morriss, spent 6 months in late 2019 into early 2020 developing a set of codes to measure the surface roughness of lidar data. The premise of the project was to assess whether or not surface roughness could 1) aid a geologist in mapping landslides or 2) create audomated maps of landslides.

The code, herein, are the culmination of this project.

Scripts that measure surface roughness include:

  • STDS.py - Standard deviation of slope
  • RMSH.py - Root mean squared height
  • conv2_mexh_var.py and conv2_mexh2.py - continuous wavelet transform
  • DCE_preprocess.py and DCE_eig_par.py - Directional cosine eigen vector

For a guided coding experience, I recommend you start with:

  • Snow_basin_Roughness_Maps.py - which will guide you through all of the aforementioned functions.
  • Snow_basin_landslide_maps.py - which will guide you through the deterministic solution to mapping landslides in a semi-automated fashion.

Main DEM input file is located [here](https://github.com/utah-geological-survey/RuffSurfFinder/releases/download/v1.0.1/sb_less_steep.tif). This should link to a .tif file for the Snowbasin Ski Area landslides. This is the practice DEM for which the two guides above are written to work with.

There are also smaller dependency functions not described herein. I also developed a Discrete Fourier Transform function which, due to the slowness of performance, I ceased using and will include but have not supported since early October 2019.

** Examples ** A digital elevation model of the area around Snowbasin Ski Area. alt text

A surface roughness model of the same area alt text Inputs

All functions take .tif files exported from a GIS software. Importantly, these should be square or rectangular clipped pieces of a Digital Elevation Model. DEM must be projected in UTM.

RuffSurf.exe

The executable RuffSurf.exe is a standalone app, which runs on windows, to make a map of surface roughness across a digital elevation model. The user can use a GUI to:

  1. Select the .tif DEM file they want to create a roughness map from.
  2. Upload the file
  3. Choose the method desired to calculate surface roughness
  4. Input the desired window size
  5. Run that algorithm to output a .tif file of surface roughness across the ROI.

This executable only contains 3 methods of surface roughness:

  • Root mean squared height
  • standard deviation of slope
  • directional cosine eigen vector.

If the user is interested in experimenting with the Continuous Wavelet Transform, I suggest they examine the Snow_basin_Roughness_Maps.py script for a tutorial.

Credits

This project would not be possible without building on the work of many other talented programmers and Earth Scientists.

Code written in Matlab was supplied by: Drs. Matteo Berti and Adam Booth. This original code was ported to Python and heavily modified. Most methods were parallelized for optimized execution time, bringing 11 hours down to 15 minutes, on the test machine with 8 cores.

References

Methods developed and tested for this project are described in detail in: Berti, M., Corsini, A., and Daehne, A., 2013, Comparative analysis of surface roughness algorithms for the identification of active landslides: Geomorphology, v. 182, p. 1-18., doi: 10.1016/j.geomorph.2012.10.022.

And the references within that paper.

When the Open File Report is published with the Utah Geological Survey, I will include a link here that.

ruffsurffinder's People

Contributors

morrismc avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.