Este ejercicio tiene como objetivo calcular la longitud total de la trayectoria de un pozo hipotético (Pozo Zanahoria). La idea es conocer la filosofía de trabajo de la biblioteca Pandas de Python así como adquirir nociones básicas de graficación 2D y 3D. Cualquier aportación, ¡bienvenida!
In [1]:
%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
from mpl_toolkits.mplot3d import Axes3D
import matplotlib as mpl
In [2]:
#Lectura del archivo csv
tr=pd.read_csv('survey-syn.csv')
In [3]:
tr.describe()
Out[3]:
In [4]:
type(tr)
Out[4]:
In [5]:
################################
f1 = plt.figure(figsize = [15,10])
plt.style.use('bmh')
#Plano XZ
fig1 = f1.add_axes([0, 0, 0.2,0.7])
fig1.plot(tr.XOFFSET, tr.TVD,'r', alpha=1, lw=3)
fig1.set_title('Plano XZ', fontsize='14')
fig1.set_ylabel('Profundidad ' + '[m]', fontsize = '11' )
fig1.set_xlabel('Desplazamiento en X '+ '[m]', fontsize = '11')
fig1.set_yticks(np.linspace (min(tr.TVD),max(tr.TVD),15) )
fig1.set_xticks( np.linspace (min(tr.XOFFSET), 800, 5))
fig1.invert_yaxis()
fig1.grid(True, alpha=1)
#Plano YZ
fig2 = f1.add_axes([0.25, 0, 0.2,0.7])
fig2.plot(tr.YOFFSET, tr.TVD,'r', alpha=1, lw=3)
fig2.set_title('Plano YZ', fontsize='14')
fig2.set_xlabel('Desplazamiento en Y '+ '[m]', fontsize = '11')
fig2.set_yticks(np.linspace (min(tr.TVD),max(tr.TVD),15) )
fig2.set_xticks( np.linspace (min(tr.XOFFSET), 800, 5))
fig2.invert_yaxis()
fig2.grid(True, alpha=1)
#Plano XY
fig3 = f1.add_axes([0.50, 0.2, 0.25,0.3])
fig3.plot(tr.YOFFSET, tr.XOFFSET,'r', alpha=1, lw=3)
fig3.set_title('Plano XY', fontsize='14')
fig3.set_ylabel('Desplazamiento en Y ' + '[m]', fontsize = '11' )
fig3.set_xlabel('Desplazamiento en X '+ '[m]', fontsize = '11')
fig3.grid(True, alpha=1)
plt.show()
In [6]:
fig = plt.figure(figsize=[8, 14])
mpl.rcParams['legend.fontsize'] = 10
fig4 = fig.gca(projection='3d')
fig4.plot(tr.XOFFSET/1000,tr.YOFFSET/1000,tr.TVD/1000, 'r', lw=4)
fig4.set_title("Pozo Zanahoria \n Coordendas XY-Desplazamiento", color= "K",fontsize= 12)
fig4.invert_zaxis()
fig4.invert_xaxis()
fig4.invert_yaxis()
fig4.set_xlabel('X Desplazamiento [km]' , fontsize=11)
fig4.set_ylabel('Y desplazamiento [km]' , fontsize=11)
fig4.set_zlabel('Profundidad [km]', fontsize=11)
fig4.view_init(elev=5, azim=-125)
#plt.savefig('survey3D.png', transparent=True, dpi=600, bbox_inches="tight" )
plt.show()
In [7]:
xsup=300100
ysup=5000100
XABS = xsup + tr.XOFFSET
YABS = ysup + tr.YOFFSET
In [8]:
delta_xoffset = np.diff(tr.XOFFSET) #Diferencia del desplazamiento de X-OFFSET
delta_yoffset = np.diff(tr.YOFFSET) #Diferencia del desplazamiento de Y-OFFSET
deltaz_tvd = np.diff(tr.TVD) #Diferencia de la TVD
In [9]:
delta_xy=np.sqrt(pow(delta_xoffset, 2)+pow(delta_yoffset,2)) #Hipotenusa en el plano XY
delta_z_xy = np.sqrt(pow(delta_xy,2)+pow(deltaz_tvd,2)) #Hipotenusa en el plano Z-XY
In [10]:
MD = np.round (np.cumsum(delta_z_xy),3) #Cálculo de la suma acumulada de las diferencias en el plano Z-XY
In [11]:
tr_md = tr.iloc[ 1 : 112 , :]
In [12]:
print (len(tr_md)) ; print (len(MD))
In [13]:
tr_tot = tr_md.assign(XABS=XABS, YABS=YABS, MD=MD)
In [14]:
print(tr_tot)
In [15]:
tr_tot.to_csv('Ejercicio-MD.csv', index=False, header=True)