Monday, 26 December 2022

Along-trace profiles of the Timpa San Lorenzo fault structure (Calabria, Italy)

 
 
   
Fig. 1. 3D view of the Timpa di San Lorenzo structure (center) with the Pollino range at the West (left). View from NE, Google Earth maps.


 
One quite spectacular geological structure in Southern Italy that can be visualized in 3D terrain browsers such as Google Earth is the Timpa di San Lorenzo (TSL) carbonatic structure, outcropping at the border between Basilicata and Calabria near San Lorenzo Bellizzi (Fig. 1).  

If you play for instance with Google Earth, you would note a well exposed, planar fault surface cutting through limestones in the footwall. This fault is dissected by other faults, the main one being a NW-SE high-angle fault. North of it the TSL fault has a WNW-ESE trend, while to the South it is NNW-SSE (Fig. 2).
 
   
Fig. 2. Geological sketch representing the Timpa di San Lorenzo structure (center), subdivided into two segments by a NW-SE trending fault. The Mt. Pollino range is at the West (left).

In Alberti (2019) the two main segments were analyzed with GIS tools, namely the qgSurf plugin for QGIS, in order to derive the best-fitting planes to the various fault segments.
For the northern segment the geological plane fitting the traces has an attitude of 072°/39° (dip direction/dip angle), i.e., a medium-angle fault dipping to the ENE.
In the southern segment the best-fitting plane attitude is 082°/40°, i.e. a 10° trend rotation in a clockwise manner with respect to the northern sector.
 
In order to help visualize these inferred geological planes directly within geological profiles, I am adding in the pygsf and gst Python modules a new GIS tool that uses line traces with attitudes, intersect them with profiles and plot the intersected attitude in the profiles. This tool is still in development.
 
To analyse the geological situation for the studied zone, I used the two previous geological attitudes in order to derive, using the ‘Plane-DEM intersections’ tool of the QGIS  qgSurf plugin, their expected topographic traces. These line traces were clipped to the appropriate spatial domain and then merged together into a single line shapefile.

Using pygsf, gst and spatdata modules in development mode within Jupyter Notebook, the Timpa di San Lorenzo data were imported from the spatdata module, maps with faults (both mapped and theoretical traces) and profiles traces were created (Fig. 3).


Fig. 3. Geological plane traces approximating the Timpa di San Lorenzo structure (yellow lines), with numbered traces of parallel profiles. Profiles from 1 to 7 are of the fault northern segment, from 8 to 13 from the southern one.

The final product is represented by the geological profiles (Fig. 4), always produced within Jupyter Notebook using the three mentioned modules. The produced profiles highlights the carbonatic structures, while the pelagic sediments and meta-sediments units are not mapped.

As you can see in the profiles, the theoretical planes approximate quite well the attitude of the outcropping TSL fault slickensides (profiles 1 to 8, with the exception of profile 3, where the TSL fault is masked by other  units).

In the southern segment, the slickenside is visible mainly in profile 8 and also profile 9.
Moving soutwards, both the fault slickenside and the footwall is more and more eroded, due to the deep incision of the Torrente Raganello (profiles 10-13).

Fig. 4. Parallel profiles of the Timpa di San Lorenzo structure (yellow lines), with fault intersections (red dots), geological outcrops of limestones (PL, green) and the profile trace of the best-fitting geological planes (yellow bars). Profiles from 1 to 7 are of the fault northern segment, from 8 to 13 from the southern one. Additional outcrops are of Quaternary sediments (Qt), Albidona Formation (Al) and Saraceno Formation (Sa).

 
The Jupyter Notebook document used to create these (and more) analyses is available here.
 
To replicate the analysis you have to clone the gsf, gst and spatdata repositories, install the modules (for instance in development mode) and then run the notebook.


References
 
Alberti M. 2019. GIS analysis of geological surfaces orientations: the qgSurf plugin for QGIS. PeerJ Preprints 7:e27694v1 https://doi.org/10.7287/peerj.preprints.27694v1




Saturday, 17 December 2022

GIS evidences for low-angle segments in the Valnerina fault system (Central Apennines, Italy)

A long time ago, my PhD thesis was about the Valnerina line, a Cenozoic structural lineament in the Central Apennines of Italy, that runs parallel to the more important Olevano-Antrodoco line (Fig. 1), that is considered by many Authors to have played an major syn-sedimentary role during the Mesozoic pre-orogenic phase. The Valnerina line was investigated, among others, by Francesco Antonio Decandia (e.g., Decandia 1982), my thesis supervisor in Siena University. 

During the Cenozoic compression phase, both the Valnerina and the Olevano-Antrodoco lines would have been acted as oblique-dextral ramps in the Apenninic thrust-and-fold belt. This role would have derived from the reactivation of syn-sedimentary faults of the Mesozoic Umbrian basin (Decandia, 1982). 

Fig. 1. Map of the described zone. From Fig. 9 in Alberti, 2006.

I remember, in a field trip with students, that Decandia showed us a large fault slickenside between Jurassic Calcari Diasprini/Calcari a Posydonia and Cenozoic Scaglia tectonites in the Schioppo segment of the line. The slickenside was quite high angle, dipping 70° or more to the West (Fig. 2).

 

Fig. 2. Mesofaults with dextral movements in the footwall of the Schioppo fault. From Alberti, 1998.
 

In the Umbrian sector, the Valnerina line is composed of a few segments, mainly with a NNE-SSW trend. I studied two segments at the North of the Schioppo one, the Tassinare and the Grotti faults (Fig. 3). 

 

Fig. 3. Traces of Tassinare and Grotti segments of the Valnerina line. From Alberti, 2006.

Studying the slickensides and shear zones exposed along the trace of the Grotti fault, while top-to-NE movements were common, I didn't  find abundant examples of high-angle meso-faults (e.g., Fig. 4, 5).

Fig. 4. The Grotti faults (left) and observed meso-faults at structural stations (right). From Alberti, 2006.

 

Fig. 5. S-C calcareous mylonites, with calcite shear veins, in a shear zone in the Grotti area. Foto M. Alberti.

At the time, during the first half of '90, I was not aware of GIS tools and related quantitative digital techniques for studying geological surfaces. I just remember, during a stage in Basel University, the geologist Daniel Bernouilli, digitizing a structural surface at the table with the equivalent of a mouse.

Only after the PhD, while working in the Museo dell'Antartide in Siena, I began knowing and working with commercial GIS tools, i.e. ArcView and Arc/Info. Later I began using QGIS, Saga, Grass, i.e, the open source side of the GIS software.

With Python, a scripting language well integrated with QGIS, I started creating plug-ins devoted to structural analysis of geological field data. One of these plug-ins, qgSurf, includes a module, named 'DEM-plane intersection' that allows to calculate the expected intersections between a geological plane and a topography. 

When applying this module to the data of the Grotti fault, I was surprised to find that a very low angle plane (West-dipping and about 7° of dip angle) would approximate in a more than acceptable way the traces of both the Grotti fault and the southern portion of the Tassinare fault, even when considering that the Grotti fault is locally displaced by a few minor NW-SE normal faults  (Fig. 6).

Fig. 6. Map of traces (red lines) of the Grotti (NNE-SSW mean trend, central part) and Tassinare (broadly N-S trending, to the West) faults. The theoretical trace of the inferred geological plane with dip direction 269° and dip angle of 6.7° is superposed (semi-transparent thick orange line).

In Fig. 6 you may note that in the South-Eastern part a large klippe, plus a minor one to the North would be expected. There are no geological evidence of these klippen in the field (cf. Fig. 7), but it could be explained by the fact that the geological surface increases its dip to the South-East.

Fig. 7. Geological sketch of the Tassinare-Grotti zone (from Alberti, 1998).

 

To represent the inferred attitude of the plane with respect to the geological situation, I have modified the gsf and gst Python modules to allow plotting significant planes into parallel profiles, as visualized in the profiles below. 

The input data are geological outcrops, faults and a DEM of the zone. Analyses and plots were made within a Jupyter Notebook.

The five parallel lines in the map (Fig. 8, white lines), from North (# 1) to South (# 5), are shown as topographic profiles in Fig. 9, with geological formations (see legend) and fault traces (red dots) added.

The very low-angle geological plane 269°/06.7° is represented in these profiles by the thick semi-transparent orange line. 

It can be seen that it approximates quite well the mapped traces of the NNE-SSW trending Grotti segment. It is therefore possible that the Grotti segment is a low-angle fault, differently from the Schioppo segment of the Valnerina line.

Fig. 8. Topographic map of the studied zone, with fault traces (red lines) and paralell profiles (white lines). Created with gst and gsf Python modules.
Fig. 9. Topographic profiles as in Fig. 8, with geological formations and fault traces (red dots). The low-angle plane is represented by the thick orange line. Created with gst and gsf Python modules.


References

Alberti, M., 1998. Ruolo cinematico e dinamico di lineamenti sisedimentari mesozoici durante la tettogenesi Appenninica - Linea della Valneria, Umbria. Unpublished Phd thesis.

Alberti, M., 2006. Spatial structures in earthquakes and faults: quantifying similarity in simulated stress fields and natural data sets. Journal of Structural Geology, 28, 998–1018.

Decandia F.A., 1982. Geologia dei Monti di Spoleto (Prov. di Perugia). Boll. Soc. Geol. It., 101, 291-315.

 

 

 

 



Sunday, 27 November 2022

GeoProfiler, porting of qProf to qgSurf

To create geological profiles, one of the available tools for QGIS is qProf. 

qProf is still maintained and features are added, mainly based on user requests and suggestions, but the main development has shifted to qgSurf, via the addition of the GeoProfiler tool, that is a porting of the functionalities of qProf to qgSurf.

 


 

GeoProfiler GUI is partially modified with respect to qProf and has a general workflow that surely has to be improved as easy of use but that should be more intuitive than that of qProf.

One of the main features of GeoProfiler is its ability to create parallel profiles, starting from a base one.

The following example illustrates the creation of parallel profiles.

We use a base profile, that corresponds to the blue dotted line in the figure below.


 

Having defined the base profile (in addition to the source DEM) we define the number and spacing of parallel profiles ('Profiles generation' command):

 

 

The tool automatically replicates the base profile 5 times, so that at the end we obtain parallel profiles as in the figure below.

  

 

The resulting profiles in plan view, with geological outcrops and fault line intersections, are obtained using the 'Plot profiles' command:

 

Important: to define and fine-tune the polygon and line intersections graphical parameters, as well to define the figure parameters, you need to find the best ones in the graphical parameters windows by trial-and-error.

Very important: defined polygon intersection will not show up in the profiles until you define their graphical parameters ('Polygon intersections' command in figure below).

 


 

Crucial: GeoProfiler has one major limitation, with respect to qProf: it does not handle source data with different CRS. So all input datasets must share the same CRS, say EPSG: 32633, to produce meaningful results.


The version of qgSuf with GeoProfiler included has been submitted to the QGIS plugin repository today (Nov. 27, 2022) and has yet to be approved. 

For the impatient or the curious, it can be downloaded and imported in QGIS as a zip file via the GitLab release (remember to unzip the downloaded file, rename the folder as "qgSurf", zip again with for instance 7Zip and install the plug-in from the new zip file)

 

Sunday, 6 February 2022

Animations of geological profiles with map traces

 

In the new 6.2 pygsf release (2022/02/06) it is possible to create figures and also animations that represent a set of parallel profiles in which each geological profile is coupled with the related map trace.


Currently, the produced maps (left in the above animation) can only represent the profile traces, apart from the topography (optionally with a shaded relief). 

The code to create the above animation is available in the Jupyter notebook:

Geologic profiles map animations - the Timpa San Lorenzo structure (Southern Italy)

 

The release is available here:

https://gitlab.com/mauroalberti/gsf/-/tags/v6.2.0



Sunday, 30 January 2022

Cross-section maps vs. profiles

 

The new pygsf release (v. 6.1.0) makes it possible to create and visualize directly in Jupyter, just using Python, topographic maps with superposed traces of parallel profiles, numbered by their ids as in the example below.

These map traces can be compared with the topographic vertical profiles displaying also geological information, for instance geological outcrops, that can be composed into an animation.

 

Next step would be to implement  the creation of animation with both the topographic vertical profile and a map with the corresponding map profile trace, so to make easier to relate each vertical profile with the related map trace.


The map traces and animation creations are detailed in this Jupyter notebook:

https://gitlab.com/mauroalberti/gsf/-/blob/master/docs/others/Geologic%20profiles%20-%20Timpa%20San%20Lorenzo.ipynb

 

The version 6.1.0 can be downloaded from:

https://gitlab.com/mauroalberti/gsf/-/tags/v6.1.0



Sunday, 16 January 2022

Creating basic geological profile animations

In the new release (v. 6.0.0) of pygsf it is possible to create animations made up of parallel geological profiles.

An example is in the following gif:

The red circles represent fault intersections, while the green thick lines (PL) are Mesozoic carbonatic outcrops and the grey ones (Qt) are Quaternary outcrops. The area is in Southern Apennines (Timpa di San Lorenzo carbonatic structure). The profiles are derived from a geological outcrop shapefile and a topographic DEM, both loaded in a Jupyter notebook using pygsf.

 

pygsf is a Python module (yet unpublished) for the processing of geological data.

The processing may be performed for instance in a Jupyter notebook.

The plan is to incorporate this module in a QGIS plugin, qgSurf, created for the processing of geological data.


For those interested, the animation derivation is detailed in this Jupyter notebook:

https://gitlab.com/mauroalberti/gsf/-/blob/master/docs/others/Geologic%20profiles%20-%20Timpa%20San%20Lorenzo.ipynb

 

The version 6.0.0 can be downloaded from:

https://gitlab.com/mauroalberti/gsf/-/tags/v6.0.0



 

Monday, 16 August 2021

Visualization and analyis of parallel topographic profiles in Jupyter

A new version (5.0.1) of pygsf adds tools for the creation and analysis of parallel profiles, for instance directly into a Jupyter notebook.

What is pygsf? It's a Python module devoted to the processing of topographic and geological data.

With the new tools, multiple profiles can be plotted, as well as their statistical properties: for instance the range of the profiles, their minimum, maximum and mean traces. The profiles can also be exported as a line shapefile, in order to visualize them in a GIS software (e.g. QGIS), or exported as an animated gif. 

The images below represent a brief tour of the methods available.

First is a simple plot of a single topographic profile.

We can create multiple parallel profiles, for instance 5 parallel profiles produced from the base profile using a user-provided normal offset:

The multiple profiles can be plotted into a single graph:

 


They can be composed into an animation (quite slow to play, I admit):

The minimum and the maximum of the profiles along the trace can be plotted in a single profile:

and also the range (maximum - minimum) calculated and plotted:

Last showed method  is the possibility to save the multiple profiles into a new line shapefile, that can be loaded for instance in QGIS to display the locations of the topographic sections created (the Mt. Alpi zone in the Lucania Southern Apennines, Italy):

 
 
 
The code repository is at:
 
A quite detailed notebook describing how to reproduce the processing shown here is available at:
(note: unfortunately the embedded gif results broken) 


 
 

Sunday, 1 October 2017

New release of qProf

qProf is a QGIS plugin for creating topographic and geological profiles.
A new version has been just released at: https://github.com/mauroalberti/qProf
This new version allows to create multiple topographic profiles, when the input profile lines are defined in a source line layer.
An example of a created profile is below.


To download the zipped plugin folder:

https://github.com/mauroalberti/qProf/releases

 Installation instructions are available at the main page:

https://github.com/mauroalberti/qProf

Sunday, 4 June 2017

It's your fault

If you want to display your georeferenced faults in stereonets using QGIS you can use also the new functionalities in the geocouche plugin.

It uses apsg by Ondrej Lexa (apsg vers. 0.4.3 is incorporated in the plugin) for plotting geological data in stereonets. It allows to plot normal and reverse faults, while pure transcurrent faults are not explicitly treated in the used apsg version.

Input fault data format can follow two alternative formats:
  1. slickenline dip trend and plunge, plus movement sense ("N" for normal faults and "R" for reverse faults)
  2. rake angle according to the Aki & Richards (1980) convention (see Fig 1).


Fig. 1. Rake angle convention as defined from Aki & Richards (1980). Originally Figure 1 in Alberti (2005).

Take note that if you provide both line trend/plunge/movement sense and rake angle, rake angle takes precedence and shadows the data provided in the trend/plunge/movement sense format.

Now an example of using the geocouche tools for faults, using fault data stored in a point layer (this same layer is provided as a shapefile in the example data folder in the gihub repository).

You define the input data with the "Input data" button.  If you choose a (point) layer as source and there is a selection in the layer, only selected points will be considered.

Fig. 2. Example data with three records selected in a point layer, plus, on the right, the geocouche plugin activated.

 In the "Layer" tab of the input windows, you define the source fields for the different data types. Remember that definining (also) rake would override any data defined in the line orientation trend/plunge/movement sense fields.

Fig. 3. Definition of input fields for record dip direction, dip angle and rake angle.

You define which type of data to plot for the "plot data" button. You could also previously have changed the default plot style via the "Plot style" button.
Here we plot faults with slickenlines. Also T-L diagrams are available.

Fig. 4. Choice of faults with slickenlines data type for stereonet plot.

Et voilà..

Fig. 5. The stereonet of the faults and slickenlines data is displayed on the right.

Clear the stereonet with "Clear stereonet". Obviously you can suporpose multiple plots into a single stereonet.
Save a figure with the tool from "Save figure" button.

To install the plugin, clone the repository or download and extract the zip file from https://github.com/mauroalberti/geocouche/releases in your local QGIS Python plugin folder (for instance: /home/mauro/.qgis2/python/plugins/geocouche) and activate the plugin in the installed section of QGIS "Manage and install plugins" command. 

For any question: alberti.m65 at gmail.com

 

References


Aki, K., Richards P.G., 1980. quantitative Seismology Theory and Methods. Vol. I, W.H. Freeman and Company, San Francisco, CA,, 557 pp.

Alberti, M., 2005. Apllication of GIS to spatial analysis of mesofault population. Computers & Geosciences, 1249-1259.





Monday, 3 April 2017

Plotting geological attitudes in stereonets using QGIS

A new plugin for QGIS, geocouche, allows to plot geological data attitudes stored in stereonets, using the plotting utilities provided by the apsg module by Ondrej Lexa. Data can be stored in geological layers or entered as text, and plotted as great circles or axis. The current release, as of April, 4th,  is vers. 1.0 and  can be downloaded from: https://github.com/mauroalberti/geocouche/releases

How it works? The following description derives from the tool help. 

With the current geocouche  release, it is possible:
  1. to calculate the angles between planes stored in a layer and a reference plane
  2. to plot data from layers or texts in stereonets
These two tools are available from the QGIS plugin interface.

Fig. 1. geocouche interface.


Geological angles

This tool allows to calculate the angles (as degrees) between a reference plane and the (eventually selected) features in a point layer (Fig. 2).

Fig. 2. Geological angles calculation interface.
It can be applied to determine the degree of misalignement between a reference (for instance, regional) measure and local geological measures.

Definition of parameters

The user has to define the two fields storing the azimuth (dip direction or RHR strike) and the dip angle of each feature, the attitude of the reference plane, and the name of the output shapefile with a new field storing the calculated angle (Fig. 3).

Fig. 3. Definition of parameters for angle calculation.

Geological stereonets

It allows to produce stereonets depicting geological plane and axis attitudes (Fig. 4). There are three steps:
  1. Choice of input data
  2. Definition of plot style
  3. Data plotting

Fig. 4. Stereonet interface.
Choice of input data
It is possible to use input data from data stored in a point layer (Layer tab, Fig. 5) or to use text input (Text tab, Fig. 6).
Input from point layer
When using a point layer (already loaded in the TOC), plane and/or axis attitudes are defined via the fields storing their values (Fig. 5). When a selection is defined, only the selected features will be considered.
Fig. 5. Input from point layer interface.

Input from text
The input can be inserted into a text window (Fig. 6), defining if data consist of:
  • planes
  • axes
  • planes and axes
Fig. 6. Input from text interface.

Another option to take care of, is,  for plane data, whether orientations are expressed using dip direction or RHR strike.
Plot style
Styles can be defined for both great circles and poles: color, width/size, line/marker style, and transparency (Fig. 7). Settings are stored in memory.
Fig. 7. Plot style interface.

Stereonet plotting
Plots can use a new or a pre-existing stereonet (provided it has not been previously closed) (Fig. 8).
Fig. 8. Stereonet plot interface.

Planes can be plotted as great circles or as plane normals, axes as poles or as normal great circles. An example of stereonet is shown in Fig. 9.
Fig. 9. Stereonet example.


Saturday, 4 February 2017

A Linux tool for calculating local best-fit plane attitudes from geological traces


The topographic traces of geological surfaces store information on the 3D attitudes of the geological surfaces. Knowing the coordinates of the intersection points between a topographic surface and a geological surface, it is therefore possible to estimate the local attitudes of a geological surface.

 

The tools

 

A short description of geoSurfDEM: it is composed of two tools, IntersectDEM and the new BestFitGeoplanes.
The former allows to calculate the intersection points between a geological surfaces (stored in the VTK format) and a DEM. The latter, that will be described in the current post, allows to estimate the local attitudes given a set of 3D points, all deriving from the intersection between a single geological surface and a topographic surface. BestFitGeoplanes is developed using C++ and Fortran. The algorithm uses Singular Value Decomposition (SVD) in order to invert the local traces into local best-fit planes. 

The input data is constituted by a set of points (their x, y and z coordinates), all related to a single, continuous geological surface. How to process them in order to derive the local attitudes? Since the source points are unconnected points (not lines), all deriving from a single, continuous surface, the 2D space is discretized into a raster, using a user-defined cell size.
Based on the points falling into a cell, we have three possible cases:
  1. no points falling into the cell;
  2. one or two points falling into the cell;
  3. three or more points in the cell.
In the first and second case, no attitude inversion via SVD is possible.
In the third case, when the points are not all collinear, a solution is provided by the SVD method. This solution is attributed to the grid cell.
The algorithm output will therefore consist in a gridded set of points for which the local attitudes have been inverted.
 
What is the difference with deriving the attitude via a spatial interpolation using for instance kriging? These interpolations implicitly assume a 2.5D surface and do not allow 3D surfaces. Geological surfaces, on the other hand, due to folding, can be 3D surfaces, i.e. with more then one point for each x-y position. Local inversion via SVD does not constrain the geological surfaces to be 2.5D,  but that may be locally modeled via a planar surface.

 

Compilation

 

This application is developed in Linux and is available at: https://github.com/mauroalberti/geoSurfDEM.
A makefile is available for compiling this tool in a Linux environment.
The compilation sequence is:
cd path/to/source/files
make
make clean

Lapack and BLAS libraries must be available. The makefile assumes that Lapack is available in usr/lib/lapack (with name lapack) and BLAS in usr/lib/libblas (name blas). Modify the makefile accordingly, to adapt to your settings. Alternatively, an example of commands to build it (always in a Linux environment and with same libraries settings) is in https://github.com/mauroalberti/geoSurfDEM/blob/master/BestFitGeoplanes/compile

 

Use

 

Having compiled the application, it is possible to run it as console application (Fig. 1). The only user interaction after launching the application is providing a parameter file name ("param.txt" in Fig. 1 example).

Fig. 1. Example of a run of the application.

 

The input parameter file is a text file that lists six pieces of information:

  1. the path of text file storing the 3D coordinates (x, y and z) of the intersection points of a single, continuous, geological surface;
  2. the number of header lines in the file referenced in point 1;
  3. the path  of the text file in which the georeferenced results will be stored;
  4. the path to the analysis report file;
  5. the path of the output grid (in ESRI ASCII grid format) that will list the number of intersection points for each grid cell;
  6. the output grid cell size;
 An example is available in https://github.com/mauroalberti/geoSurfDEM/tree/master/BestFitGeoplanes, in the param.txt file:

/home/mauro/Documents/Ricerca/Codice/Geostrutturale/geoSurfDEM/test_data/BestFitGeoplanes/inters_malpi_135_35.csv
1
/home/mauro/Documents/Ricerca/Codice/Geostrutturale/geoSurfDEM/test_data/BestFitGeoplanes/bfg_malpi_13535_100.txt
/home/mauro/Documents/Ricerca/Codice/Geostrutturale/geoSurfDEM/test_data/BestFitGeoplanes/rep_malpi_13535_100.txt
/home/mauro/Documents/Ricerca/Codice/Geostrutturale/geoSurfDEM/test_data/BestFitGeoplanes/pts_malpi_13535_100.asc
100
 


The application output is represented by the three files listed in points 3-5 of the previous list. The more important is the inverted result file (point # 3), that consists in a csv file listing a few fields (see Fig. 2):
  1. x: x coordinate of the cell grid center;
  2. y: y coordinate of the cell grid center;
  3. pt_num: number of points used for the inversion. Required minimum is 3.
  4. dip_dir: inverted dip direction for geoplane points in cell;
  5. dip_ang: inverted dip angle for geoplane points in cell;
  6. x_range: spatial range along the x-direction (E-W) for the inverted points in the considered cell;
  7. y_range: spatial range along the y-direction (N-S) for the inverted points in the considered cell;
  8. z_range: spatial range along the z-direction (vertical) for the inverted points in the considered cell;
  9. pseudo-volume: "pseudo"-volume defined by the inverted points in the cell, given by the product of the three previous ranges (i.e., x_range, y_range and z_range) - possibly removed in successive releases.
Fig. 2. Tabular view of the content of the inversion result file, as viewed by importing the file in QGIS.

 

A theoretical case study 

 

This post presents a practical assessment of the result, by using a theoretical surface for which the expected local attitudes are known (currently, as of February 2017, all example data are available at https://github.com/mauroalberti/geoSurfDEM/tree/master/test_data).
A theoretical plane has been generated using simSurf, with dip direction equal to 135° and dip angle of 35°.
This plane, saved in VTK format from within simSurf, has been used as input plane to be intersecated with a natural topographic surface, of the Mt. Alpi zone (Lucania, Southern Italy), using the IntersectDEM of geoSurfDEM.
The resulting intersection points are saved as a csv file, that can be used as input for the BestFitGeoplanes. The intersection points, to be used for the best-fit-plane local inversions, are represented in Fig. 3.


Fig. 3. Input points (yellow) representing the theoretical intersection between a geoplane oriented 135°/35° (dip dir. and dip angle) and a DEM topography (Mt. Alpi zone, Lucania, Southern Italy). Visualization using QGIS.

 

Using BestFitGeoplanes with the previously described param.txt file, we obtain a result that, for the georeferenced point part, imported in QGIS is shown in Fig. 4.


Fig. 4. The same as in Fig. 3, plus superposed the gridded points with inverted results (orange dots). Visualization with QGIS.

 
How much the inverted results conform to the theoretical input source, that as said is a plane with a dip direction of 135° and a dip angle of 35°?
A stereoplot, created with the geocouche plugin for QGIS, illustrates the degree of  concordance between the source attitude (135°/35°, blue great circle in Fig. 5) and the inverted local attitudes (semi-transparent orange great circles in Fig. 5).
The majority of inverted data conform closely to the expected result, while a few inversions show a minor deviation from the expected result.
 
Fig. 5. Stereonet representing the inferred local plane attitudes as semi-opaque orange great circles, and the source geological plane attitude (135°/35°) as blue great circle. Created with geocouche.

The deviations of the inverted results from the expected value were calculated using the "Geological angles" of geocouche and the statistics calculated with QGIS (see Fig. 6). The maximum is 9.3° and the minimum almost zero, while the median and mean deviation values are lower than 0.5°. The standard deviation is about 1.2°. So in general we can be quite confident in the generated results. More in-depth analyses of the deviations of expected-versus-inferred results could be the subject of a still to-be-written paper.

Fig. 6. Statistics for angular deviations of the calculated results from the theoretical test case.


Edits

2022-12-29: improved paragraph styling; modified input parameters description (items 5 and 6)