Gráfico 3D de pozo petrolero con Python y Plotly

Genera un gráfico 3D interactivo de la trayectoria de un pozo petrolero con Python y plotly.


Author

Affiliation

Rigoberto Chandomi

 

Published

Nov. 16, 2024

DOI


Plotly es una librería open Source que nos permite crear gráficos interactivos y mapas en diferentes lenguajes y herramientas, por ejemplo en Python, R o Julia.Además cuenta con algunas herramienta como Dash que nos permite hacer aplicaciones web de una manera muy sencilla.

Una de las ventajas es que está sumamente documentada y nos proporciona diversos ejemplos de los diversos tipos de gráficos que podemos generar.

En este ejemplo te explico Cómo visualizar en un gráfico 3D la trayectoria de un pozo. Para iniciar vamos a importar las librerías que vamos a usar en este caso van a ser pandas y numpy para manipular y leer el archivo donde se encuentra la información de la trayectoria del pozo.

Los datos se encuentran en un archivos separados por comas,csv, que se llama Pozo.csv, usando la función read_csv de pandas asiganmos la información del archivo a la variable data y visualizamos las primeroas cinco fila de los datos con la función head().


import pandas as pd
import numpy as np

data = pd.read_csv('Pozo.csv')
data.head()
     MD            X            Y  ...      INCL       DLS     AZIM_GN
0   0.0  589178.7500  2155844.750  ...  0.000000  0.000000    0.000000
1  15.0  589178.7508  2155844.753  ...  0.025000  0.050000   13.270000
2  30.0  589178.7530  2155844.763  ...  0.050000  0.050000   13.270000
3  45.0  589178.7484  2155844.768  ...  0.046782  0.158258  263.624772
4  60.0  589178.7287  2155844.760  ...  0.120000  0.158258  240.520000

[5 rows x 11 columns]

Podemos observar que tenemos 11 columnas en las que tenemos la profundidad desarrollada (MD), las coordenadas XYZ, la profundidad vertical (TVD) los deltas en las direcciones, al azimut, la inclinación y la severidad.

Entonces para el gráfico 3D vamos a usar lo que es la librería Plotly importándola. En este caso vamos a usar la profundidad vertical verdadera (TVD), para graficar vamos a convertir esos datos a negativos para que se pueda graficar de arriba hacia abajo como es como se concibe un pozo.


import plotly.express as px

data['TVD'] = -data['TVD']

Para generar el grafico 3D usamos la función line_3d() de la librería Plotly la cual tiene como parámetros de entrada la fuente de datos que en esta caso es la variable data, después para los parámetros XYZ, simplemente asignamos a cada parámetros los respectivos valores XYZ de la trayectoria del pozo, esto creara una curva uniendo los puntos de la posición de cada estación del survey del pozo. Para terminar añadimos un ajuste de la posición del grafico para que este centrado.


fig = px.line_3d(data, x = 'X', y = 'Y', z = 'Z')

fig.update_layout(
    margin=dict(l=0, r=0, t=0, b=0),
    height=600,
    width=800
)

En el siguiente video puedes encontrar el mismo procedimiento