Geologia e Python: uno script per la creazione degli stereonet

Le proiezioni stereografiche sono uno strumento molto importante per noi geologi; infatti attraverso gli “stereonet” possiamo rappresentare le osservazioni che effettiamo in campagna ed effettuare analisi strutturali.

In questo post descriverò uno script che ho sviluppato con Python per rappresentare delle giaciture geologiche sugli stereonet.

Le giaciture geologiche

Durante un’attività di campagna ho acquisito 45 giaciture geologiche di strato con la notazione dip/dip direction.
Tuttavia a volte può succedere che durante un lavoro da eseguire con dei colleghi le nostre misure debbano essere convertite nella notazione strike/dip: in tal caso vi veniamo in soccorso noi con lo script “Measure Converter”. Per avere informazioni su questo applicativo potete contattarci tramite e-mail o attraverso la nostra pagina Facebook.

Per approfondire l’argomento sulle giaciture geologiche potete dare un’occhiata a questo post.

Lo script per gli stereonet

Come prima cosa importiamo i moduli necessari.


import pandas as pd
import numpy as np
import mplstereonet
import matplotlib.pyplot as plt

Il modulo pandas serve per leggere il file giaciture.csv, nel quale in precedenza ho inserito le giaciture. Invece i moduli numpy, mplstereonet e matplotlib servono per la creazione degli stereonet.

fig = plt.figure()
ax = fig.add_subplot(111, projection='stereonet')
ax.plane(strike, dip, 'g-', linewidth=0.7)

ax.grid()

plt.show()

### Proiezione Poli ###
fig = plt.figure()
ax = fig.add_subplot(111, projection='stereonet')
ax.pole(strike, dip, 'g^', markersize=5)
ax.grid()
plt.show()

### Diagramma di densità ###
fig = plt.figure()

ax = fig.add_subplot(111, projection='stereonet')

ax.pole(strike, dip, c='k', label='Pole of the Planes')
ax.density_contourf(strike, dip, measurement='poles', cmap='Blues')
#ax.set_title('Density coutour dei poli', y=1.10, fontsize=12)
ax.grid()

plt.show()

piani-stereonet

poli-stereonet

density-stereonet

Inoltre con il modulo mplstereonet possono essere anche eseguite analisi strutturali; ad esempio si può ricavare l’asse di una piega conoscendo le giaciture dei suoi fianchi.

Approfondimenti

Per approfondire l’argomento trattato in questo post si consigliano i seguenti testi:

Dalla geologia strutturale sappiamo che per determinare l’asse di una piega possono essere utilizzati i diagrammi β ed i diagrammi π.
Con i diagrammi β i piani vengono proiettati come grandi cerchi. In una piega cilindrica ogni superficie misurata sui fianchi contiene l’asse della piega: l’intersezione di due di queste superfici definisce una linea, detta asse β, che è parallela all’asse della piega. Se la piega è perfettamente cilindrica, i grandi cerchi rappresentanti le superfici passano tutti per β. Proiettando quindi le superfici misurate sui due fianchi della piega queste si intersecheranno in un unico punto corrispondente all’asse della piega.
Invece con i diagrammi π i piani vengono proiettati mediante i loro poli. Se la piega è cilindrica, i poli dei piani misurati cadono tutti su un grande cerchio (piano π) che rappresenta il piano ortogonale all’asse della piega (in poche parole l’asse della piega corrisponde al polo del piano che contiene tutti i poli delle superfici misurate). Il polo di questo piano, definito dall’asse π, è parallelo all’asse della piega.


######### Asse di una piega ##################

strikes=[268.0, 248.0, 240.0, 41.0, 35.0, 20.0]
dips=[16.0, 30.0, 45.0, 50.0, 35.0, 20.0]

from collections import OrderedDict

fig=plt.figure()

# Diagramma beta
 
ax = fig.add_subplot(121, projection='stereonet')
ax.plane(strikes, dips, c='k', label='Piani (Fianchi della piega)')
strike, dip = mplstereonet.fit_girdle(strikes, dips)
ax.pole(strike, dip, c='r', label='Asse beta (Intersezione dei piani)')
 
# Digramma pi
 
ax = fig.add_subplot(122, projection='stereonet')
ax.pole(strikes, dips, c='k', label='Poli (Fianchi della piega)')
ax.plane(strike, dip, c='g', label='Fitted GC')
ax.pole(strike, dip, c='r', label='Asse pi (Polo del GC)')
 
for ax, title in zip(fig.axes[1::2], ['Diagramma beta', 'Diagramma pi']):
    ax.set_title(title, y=1.10, fontsize=12)
    ax.grid()

 
plt.savefig('asse-piega.png')

L’uso di script di questo tipo è molto utile, sia per la gestione di dati presenti in file in formato csv che per la costruzione di proiezioni stereografiche senza essere vincolati all’uso di software proprietari.

Potete trovare lo script completo nella sezione Download del sito.

Inoltre, con il modulo mplstereonet si possono creare i “Rose Diagrams”: volete sapere come?Contattateci via e-mail o tramite la nostra pagina Facebook!!!

Ciao, mi chiamo Antonio Nirta e sono un geologo. Mi sono laureato all’Università di Pisa e dal 2017 svolgo la libera professione.

Attraverso i post presenti in questo blog cercherò di trasmettere la mia passione per le Scienze Geologiche e di fornire informazioni che riguardano il bellissimo settore della Geologia.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *