Extracting geological faults and orientation representation in QGIS with GeoTrace - Tutorial
/Image from earth surface are available from satellite images and unmanned aerial vehicules (UAV). Image resolution ranges from 10 meters on free available datasets as Sentinel2, less than 1 meter on commercial satellite imagery to 0.05m (or even less) from UAVs. Based on the spatial scale on your area of interest, there are several resources to find orthorectified photos from earth surface, but those photos are useless if we don´t get an specific information about them.
GIS software bring some tools for data interpretation from raster datasets as polygonization and supervised or unsupervised classification, but there is a need for advanced tools that helps us to recognize patterns, counts objects or interpret features. Scikit-image is a library for image processing in Python. This library is quite new and not even in version 1 yet, but supersedes some more popular image interpretation libraries as OpenCV for it ease to use. There is good documentation in scikit-image and its website brings interesting of tutorials: http://scikit-image.org/
QGIS 3 allows us to import any Python 3 package, so its posible to run Scikit-image algorithms in QGIS. It is a big motivation for the tutorials in our blog to provide examples of artificial intelligence interpretation of earth surface, land cover, precipitation or any raster dataset in QGIS 3. Currently there are few plugins that run Scikit-image, we found one that extracts geological features as fractures and represent fault dip, dip direction, and strike in stereonets and rose diagrams.
This tutorial shows the procedure to install GeoTrace on QGIS 3 with its dependencies, runs a geological fault trace on a modified raster, calculate fault strike azimuths as a separate attribute field and represent them as a strike rose.
GeoTrace installation
For Windows users, GeoTrace can be a little bit tricky to install since it has dependencies. A procedure is available on this link:
https://github.com/lachlangrose/GeoTrace
As an alternative procedure, and as the procedure that worked for this tutorial. Please follow this steps:
- Install Geotrace dependencies first on QGIS 3 with the Python Subprocess package. Just open the Python console in QGIS and run the following commands:
import subprocess subprocess.call(["python3","-m","pip","install","scikit-image"]) subprocess.call(["python3","-m","pip","install","mplstereonet"])
- Then restart QGIS
- Install GeoTrace plugin and it should work
Geological faults in satellite imagery?
Which is better, satellite or UAV? Local or regional faulting? Those are basic question regarding the effectiveness of available imagery to interpret geological features. Based on the experience, we see that satellite imagery with resolution less than 1 meter would have a chance to be used to interpret geological faults. That spatial resolution comes only from commercial images that have a cost; however UAVs provide more spatial resolution at a lower cost.
Fault strike calculation
GeoTrace plugin do not come with specified tools for the determination of fault strike or fault direction but it comes with options for stereonet and rose representation. If the interpreted fault is close to a straight line, the fault orientation or strike can be calculated with the Field calculator tools as a separate field. This is the expresion required to calculate fault strike in degrees °:
azimuth( start_point( $geometry), end_point( $geometry))/ pi() *180
Tutorial
Further reading
In case you might want to know more about the algorithm that runs GeoTrace we strongly recommend to read the paper:
Thiele, S. T., Grose, L., Samsu, A., Micklethwaite, S., Vollgger, S. A., and Cruden, A. R.: Rapid, semi-automatic fracture and contact mapping for point clouds, images and geophysical data, Solid Earth, 8, 1241-1253
That you can download from this link.
Input data
Download the input data for this tutorial here.