I dati LiDAR
24 Marzo 2020Il cratere di Chicxulub
20 Aprile 2020In geologia strutturale ci sono due notazioni per rappresentazione le giaciture di una struttura geologica: strike/dip e dip e dip/direction.
In Italia la notazione più usata è la strike/dip. In ambito lavorativo molto spesso si devono usare softwares specifici per le analisi strutturali (stereonet) o per le analisi geomeccaniche: questi usano la notazione dip/dip direction che è la notazione più usata in ambito informatico nonchè negli Stati Uniti.
In questo post condivido uno script Python per convertire delle giaciture di strato dalla notazione strike/dip (right hand rule) alla notazione dip/ direction.
Preparazione dei dati
Il primo passo da fare è organizzare bene i dati. Crea un file csv, usando Excell, dove nella prima colonna inserisci le “strike” mentre nella seconda inserisci le dip.
Questo file deve essere salvato nella stessa directory nella quale salveremo il file con lo script.
Il codice Python per convertire le giaciture
#FROM STRIKE/DIP (regola mano destra) to DIP/DIP DIRECTION
import pandas as pd
db = pd.read_csv("giaciture.csv")
strike = db.iloc[:,0]
dip = db.iloc[:,1]
dip_direction=[]
def convert():
for x in strike:
if x <= 270:
dip_direction.append(x + 90)
elif x > 270:
dip_direction.append(x - 270)
new = pd.DataFrame({'DIP': dip, 'DIP DIRECTION':dip_direction}, name_index="id")
new.to_csv('measures_converted.csv')
In riga 3 si importa la libreria pandas mentre in riga 5 ho creato un dataframe (db) dal file csv (che ho chiamato giaciture.csv).
Nelle righe 8 e 9 ci sono due liste, strike e dip, che contengono i valori di direzione e pendenza delle giaciture presenti nel dataframe.
Con il comando iloc[ ] diciamo allo script in quale posizione del dataframe deve cercare i valori.
Nella riga 11 c’è una lista vuota chiamata dip_direction che verrà popolata con la funzione “convert” che troviamo dalla riga 14 alla riga 19.
Cosa fa questa funzione?
Per ogni elemento x presente nella lista strike, se x è minore o uguale a 270° aggiunge ad x 90 e lo “appende” dentro la lista dip_direction. Se invece x è maggiore di 270° toglie ad x 270 e la appende in dip_direction.
Lanciando la funzione avremo i dati di strike convertiti in dip direction.
Ma noi dobbiamo inserire le giaciture in un software specifico, come ad esempio Dips (Rockscience), magari attraverso un file csv. Come facciamo?
In riga 14 ho definito un nuovo dataframe, chiamato new (ovviamente tu puoi dargli qualsiasi altro nome!) dove nella prima colonna chiamata ‘DIP’ ho inserito i dati di pendenza presenti nella lista dip, mentre nella seconda colonna, denominata ‘DIP DIRECTION’ ho inserito i dati di dip direction che sono nella lista dip_direction.
A questo punto non resta che esportare il dataframe in un nuovo csv usando la riga di comando in riga 15.
Nell’immagine sottostante si può vedere il file risultante.
Approfondimenti su giaciture e Python
Per approfondire l’argomento trattato in questo post ti consiglio i seguenti testi