#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Created on September 2022 @author: Phil Vernant philippe.vernant@umontpellier.fr """ # import libraries import numpy as np import pandas as pd import matplotlib import matplotlib.pyplot as plt from pyproj import Transformer #----------------------------------------------------------------------------------------- tacheo = pd.read_csv('agdist.txt',names=['vrac'],index_col=False) # lecture du fichier tacheo = tacheo[tacheo['vrac'].str.contains('base')==False] # on elimine la ligne contenant la base tacheo = tacheo[tacheo['vrac'].str.contains('V.A.')==False] # on elimine la ligne de mise en station tacheo = tacheo[tacheo['vrac'].str.contains('Point')==True] # on garde les lignes avec les mesures tacheo = tacheo['vrac'].str.rsplit("\t", expand=True) # on réparti les valeurs en colonnes tacheo = tacheo.drop(columns=[0,2,4,6,8,9]) # on supprime les colonnes inutiles tacheo.columns = ['points', 'AH', 'AV', 'D'] # on renomme les colonnes tacheo['AH'] = tacheo['AH'].astype(float) # conversion texte en reel tacheo['AV'] = tacheo['AV'].astype(float) tacheo['D'] = tacheo['D'].astype(float) tacheo['sta'] = tacheo.points.str[0:2] # on fait une nouvelle colonne contenant juste les deux premieres lettre des points de mesure (implique que le code est uniquement une lettre sinon str[0:X] avec X=nombre de lettres) stations = tacheo.sta.unique() # on liste les stations print ('points mesurées :', stations) #conversion angles/dist en X,Y,Z tacheo['Z'] = tacheo.D * np.sin((tacheo.AV-270)*np.pi/180) tacheo['Dh'] = tacheo.D * np.cos((tacheo.AV-270)*np.pi/180) # 270 : mesure de l'angle vertical 270=horizontal tacheo['X'] = tacheo.Dh * np.sin((tacheo.AH-180)*np.pi/180) # 180 : inversion N-S dans la mise en station tacheo['Y'] = tacheo.Dh * np.cos((tacheo.AH-180)*np.pi/180) #creation d'un tableau de donnees pour les valeurs moyennes et écarts types tacheo_m = pd.DataFrame(columns=['sta','n_obs','E','N','Z','sE','sN','sZ']) tacheo_m.sta = stations for i, sta in enumerate(stations): # calcul des moyennes et écarts types print ('processing :',sta) tacheo_m.n_obs[i] = len(tacheo.X[tacheo.sta==sta]) tacheo_m.E[i] = np.mean(tacheo.X[tacheo.sta==sta]) tacheo_m.N[i] = np.mean(tacheo.Y[tacheo.sta==sta]) tacheo_m.Z[i] = np.mean(tacheo.Z[tacheo.sta==sta]) tacheo_m.sE[i] = np.std(tacheo.X[tacheo.sta==sta]) tacheo_m.sN[i] = np.std(tacheo.Y[tacheo.sta==sta]) tacheo_m.sZ[i] = np.std(tacheo.Z[tacheo.sta==sta]) print(tacheo_m)