En esta sección se describen los pasos para instalar y preparar el software necesario para realizar los análisis de GeoTube.
Para seguir los pasos de esta instalación, debes tener los siguientes archivos:
R y RStudio proporcionan el entorno en el cual se ejecuta GeoTube. Su instalación se realiza siguiendo el siguiente procedimiento.
Descargar el instalador desde la homepage de R.
Ejecutar el instalador, seleccionar el idioma de instalación, aceptar los términos y condiciones y seleccionar la carpeta de instalación. Seleccionar la configuración a instalar de acuerdo con el tipo de equipo que se esté tratando (32 o 64 bits).
Descargar el instalador desde la homepage de RStudio.
Se debe ejecutar el instalador de RStudio y se siguen los pasos ajustando la configuración deseada.
Una vez instalado, la interfaz de RStudio debe ser similar a la mostrada a continuación.
El panel izquierdo es el principal, corresponde a la consola donde se ingresan los comandos a ejecutar; el panel derecho superior muestra las variables guardadas en el entorno de trabajo actual, y el panel derecho inferior se usa para mostrar varias opciones, como archivos guardados en la carpeta directorio (la carpeta donde opera RStudio), gráficos, parquetes instalados, entre otros.
Para instalar GeoTube se deben seguir los siguientes pasos:
Descomprimir le archivo .zip de GeoTube. Mover la carpeta descomprimida a Documentos. La carpeta movida debe llamarse “GeoTube”.
Ir a RStudio y, en la ventana de Consola, escribir el siguiente comando:
install.packages("devtools")
devtools::install("GeoTube")
packageVersion("GeoTube")
## [1] '1.0.5'
Si el resultado es un error, hubo un problema con la instalación; si el resultado es una serie que indica la versión del paquete, la instalación fue exitosa.
Para actualizar GeoTube, sigue los siguientes pasos:
Descomprime el archivo de la nueva versión.
Copia la carpeta GeoTube nuevamente en
Documentos, reemplazando la anterior.
En RStudio, vuelve a correr el comando.
devtools::install("GeoTube")
packageVersion("GeoTube")
GeoTube Data Analysis es la sección de GeoTube dedicada al procesamiento de la información y la ejecución de los análisis sobre la data del gyro. En esta sección se presenta la forma de usarlo.
GeoTube permite realizar dos tipos de análisis: uno rápido y estándar, y otro en el que el usuario puede interactuar con una mayor cantidad de parámetros. En ambos casos, hay que realizar siempre unos primeros pasos antes de iniciar los cálculos.
Antes de iniciar cualquier trabajo, el primer comando que se debe
ingresar en la consola es la función library(), la cual
carga el paquete de GeoTube.
library(GeoTube)
Una vez cargado el paquete, se recomiendo ingresar el siguiente comando:
options(viewer = NULL)
Este le permite a RStudio generar las gráficas de GeoTube en el navegador de internet, permitiendo acceder a una mejor manejabilidad.
Después de ejecutar las instrucciones mencionadas se puede empezar a usar GeoTube. En caso de haber cerrado RStudio y volverlo a abrir, se deben volver a escribir los dos comandos anteriores.
El siguiente paso que se debe realizar antes de usar GeoTube, es preparar la data del Gyro. El archivo que se va a importar desde GeoTube debe ser una tabla en formato CSV (Valores Separados por Coma) con la estructura mostrada en la imagen:
Hay que tener en cuenta que el símbolo de separación decimal del sistema debe estar fijado en coma (,), no en punto (.). Para verificar que el computador tiene esta configuración como debe ser, se recomienda este tutorial si se está trabajando en Windows, y este si además se está usando Excel para procesar los datos.
Como se mencionará más adelante, GeoTube es compatible con dos sistemas de unidades: Imperial e Internacional (SI). En el sistema de unidades imperial las coordenadas del pozo deben estar en pies, y el diámetro nominal en pulgadas; en el sistema de unidades internacional, las coordenadas deben estar en metros y el diametro nominal en milímetros.
GeoTube presenta la modalidad quickAnalysis(), a través
de la cual se puede ejecutar el análisis de tortuosidad y diametros
maximos a lo largo de todo el pozo escribiendo solo un comando, con la
siguiente sintaxis:
quickAnalysis(lDev, nombreProyecto, unitsSystem, descripcionProyecto)
Toma los siguientes argumentos:
lDev: Es la longitud del dispositivo requerida para
los analisis de tortuosidad y diámetros máximos.
nombreProyecto: Es el nombre del Proyecto, el cual
se verá reflejado en el archivo que resulta del análisis.
unitsSystem: Sirve para indicar el sistema de
unidades. Se debe escribir "SI" para sistema internacional,
o Imperial para sistema imperial. Este es un
argumento opcional; significa que, si no se ingresa
ningún valor, por defecto el programa asumirá que se está trabajando en
sistema imperial.
descripcionProyectp: Una descripción opcional que se
quiera agregar sobre el proyecto. Este es un argumento
opcional; significa que, si no se ingresa ningún valor, por
defecto el programa no guardará ninguna descripción.
Se busca realizar el análisis de tortuosidad y diámetros máximos sobre la totalidad del pozo XX, para una longitud de dispositivo de 30 pies. El sistema de unidades es imperial.
quickAnalysis(lDev = 30, nombreProyecto = "XX")
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
## Loading required package: foreach
## Loading required package: iterators
## Loading required package: parallel
##
## Attaching package: 'purrr'
## The following objects are masked from 'package:foreach':
##
## accumulate, when
## The following object is masked from 'package:jsonlite':
##
## flatten
##
##
## Calculo de Diametros Maximos
## Rows: 2177 Columns: 12
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## dbl (12): Depth, Deviation, Azimuth, Z, VS, Y, X, Closure, Closure Angle, Te...
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
## Análisis de Tortuosidad
##
## Progreso: 10%
##
## Progreso: 20%
##
## Progreso: 30%
##
## Progreso: 40%
##
## Progreso: 50%
##
## Progreso: 60%
##
## Progreso: 70%
##
## Progreso: 80%
##
## Progreso: 90%
##
## Progreso: 100%
##
## Iniciando paralelizacion
##
## Repartiendo procesos en 8 nucleos del sistema
## [1] 1
Al inicio del análisis, se abre una ventana emergente, en la cual se debe seleccionar el archivo CSV con los datos de entrada.
Al final de la ejecución del algoritmo, GeoTube crea un archivo de resultados en la carpeta Documentos, con el nombre del proyecto:
Se busca realizar el análisis de tortuosidad y diámetros máximos a lo largo de todo el pozo del proyecto YY, obtenido con medidas del Sistema Internacional (coordenadas en metros, diámetros en milímetros). La longitud del dispositivo es de 50 metros.
quickAnalysis(lDev = 50, nombreProyecto = "YY", unitsSystem = "SI")
##
##
## Calculo de Diametros Maximos
## Rows: 1032 Columns: 12
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## dbl (12): Depth, Inclination, Azimuth, True Depth, VS, Y, X, Closure Distanc...
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
## Análisis de Tortuosidad
##
## Progreso: 10%
##
## Progreso: 20%
##
## Progreso: 30%
##
## Progreso: 40%
##
## Progreso: 50%
##
## Progreso: 60%
##
## Progreso: 70%
##
## Progreso: 80%
##
## Progreso: 90%
##
## Progreso: 100%
##
## Iniciando paralelizacion
##
## Repartiendo procesos en 8 nucleos del sistema
## [1] 1
Al inicio del análisis, se abre una ventana emergente, en la cual se debe seleccionar el archivo CSV con los datos de entrada.
Al final de la ejecución del algoritmo, GeoTube crea un archivo de resultados en la carpeta Documentos, con el nombre del proyecto:
En este segundo modo de uso de GeoTube Data Analysis, el usuario puede interactuar mediante comandos con cada proceso por separado. Se revisará en esta sección el uso de cada comando que ofrece GeoTube y su versatilidad.
Para importar los datos se usa la función
importarSurvey(). La función tiene la estructura
siguiente:
data = importarSurvey(unitsSystem)
El único argumento que recibe esta función es
unitsSystem. Es un argumento opcional, por
lo que si el usuario no lo especifica, se entiende por defecto que los
datos están en sistema imperial.
Cuando se llame a esta función se abre una ventana emergente en la cual el usuario selecciona el archivo CSV con los datos de entrada.
Importar la data del proyecto XX. Las medidas están en sistema imperial.
data = importarSurvey()
## Rows: 2177 Columns: 12
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## dbl (12): Depth, Deviation, Azimuth, Z, VS, Y, X, Closure, Closure Angle, Te...
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
Si la importación fue exitosa, el usuario puede escribir el comando
data y el programa debe devolver las primeras filas de los
datos importados.
data
Importar la data del proyecto YY. Las medidas están en sistema internacional.
data = importarSurvey(unitsSystem = "SI")
## Rows: 1032 Columns: 12
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## dbl (12): Depth, Inclination, Azimuth, True Depth, VS, Y, X, Closure Distanc...
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
Si la importación fue exitosa, el usuario puede escribir el comando
data y el programa debe devolver las primeras filas de los
datos importados.
data
El análisis de tortuosidad es un algoritmo que arroja, para cada tramo del pozo la división entre la longitud medida del pozo y la longitud de una linea recta que va desde el punto inicial hasta el punto final del tramo de análisis.
La función para realizar el análisis de tortuosidad es
tortuosidad(), y tiene la siguiente sintaxis:
data = tortuosidad(dataSurvey, depthRange, lDev)
Tiene tres argumentos:
dataSurvey es el argumento que recibe
data, la variable en la cual guardamos los datos que se
importaron.
depthRange es un argumento
opcional. En este se especifica, si se desea, un intervalo del
pozo en el cual se busca realizar el análisis. Si no se especifica este
argumento, el análisis se realiza a lo largo de todo el pozo.
lDev es un argumento que recibe la longitud del
dispositivo. La longitud del dispositivo define la longitud de los
tramos sobre los cuales se calcula la tortuosidad.
Se quiere realizar un análisis de tortuosidad sobre la totalidad del pozo de XX La longitud del dispositivo a ser analizada es 30 pies.
#Suponiendo que ya se importaron los datos
data = tortuosidad(dataSurvey = data, lDev = 30)
## Análisis de Tortuosidad
## Progreso: 10%
## Progreso: 20%
## Progreso: 30%
## Progreso: 40%
## Progreso: 50%
## Progreso: 60%
## Progreso: 70%
## Progreso: 80%
## Progreso: 90%
## Progreso: 100%
Para verificar los resultados, se puede escribir el comando
data para ver el estado de los datos:
data
Se puede observar que ahora hay una nueva columna llamada Tortuo, estos son los resultados del analisis.
Se quiere realizar un análisis de tortuosidad el tramo del pozo de YY ubicado entre los 700 y 1000 metros de profundidad. La longitud del dispositivo a ser analizada es 50 metros.
#Suponiendo que ya se importaron los datos
data = tortuosidad(dataSurvey = data, depthRange = c(700, 1000), lDev = 50)
## Análisis de Tortuosidad
## Progreso: 10%
## Progreso: 20%
## Progreso: 30%
## Progreso: 40%
## Progreso: 50%
## Progreso: 60%
## Progreso: 70%
## Progreso: 80%
## Progreso: 90%
## Progreso: 100%
Para verificar los resultados, se puede escribir el comando
data para ver el estado de los datos:
data
Se puede observar que ahora hay una nueva columna llamada Tortuo, estos son los resultados del analisis.
Se quiere realizar un análisis de tortuosidad sobre la totalidad del pozo YY La longitud del dispositivo a ser analizada es 50 metros.
#Suponiendo que ya se importaron los datos
data = tortuosidad(dataSurvey = data, lDev = 50)
## Análisis de Tortuosidad
## Progreso: 10%
## Progreso: 20%
## Progreso: 30%
## Progreso: 40%
## Progreso: 50%
## Progreso: 60%
## Progreso: 70%
## Progreso: 80%
## Progreso: 90%
## Progreso: 100%
Para verificar los resultados, se puede escribir el comando
data para ver el estado de los datos:
data
Se puede observar que ahora hay una nueva columna llamada Tortuo, estos son los resultados del analisis.
El análisis de diámetros máximos de GeoTube permite determinar el
diámetro más grande que un dispositivo recto de determinada longitud
puede tener para poder ubicarse en una zona del pozo sin interferir con
las restricciones geométricas de este. El análisis de diámetros máximos
se realiza mediante la función diamMaximos(), la cual tiene
la sintaxis siguiente:
data = diamMaximos(dataSurvey, lDev, depthRange, unitsSystem)
Tiene tres argumentos:
dataSurvey es el argumento que recibe
data, la variable en la cual guardamos los datos que se
importaron.
depthRange es un argumento
opcional. En este se especifica, si se desea, un intervalo del
pozo en el cual se busca realizar el análisis. Si no se especifica este
argumento, el análisis se realiza a lo largo de todo el pozo.
lDev es un argumento que recibe la longitud del
dispositivo. La longitud del dispositivo define la longitud de los
tramos sobre los cuales se calcula la tortuosidad.
unitsSystem es un argumento
opcional que recibe el sistema de unidades. “Imperial” para
sistema Imperial o “SI” para Sistema de Unidades Internacional. Por
defecto se asume sistema Imperial.
Se quiere realizar un análisis de diámetros máximos sobre la totalidad del pozo YY La longitud del dispositivo a ser analizada es 50 metros.
#Suponiendo que ya se importaron los datos
data = diamMaximos(dataSurvey = data, lDev = 50, unitsSystem = "SI")
##
##
## Calculo de Diametros Maximos
## Iniciando paralelizacion
## Repartiendo procesos en 8 nucleos del sistema
Para verificar los resultados, se puede escribir el comando
data para ver el estado de los datos:
data
Se puede observar que ahora hay una nueva columna llamada DiamMax, estos son los resultados del analisis. La Columna Tortuo aparece en la tabla si ya se hizo un análisis de tortuosidad previo al de diametros máximos.
Se quiere realizar un análisis de Diámetros Máximos sobre el tramo del pozo XX localizado entre los 300 y 1000 pies. La longitud del dispositivo a ser analizada es 30 pies.
#Suponiendo que ya se importaron los datos
data = diamMaximos(dataSurvey = data, lDev = 30, depthRange = c(300, 1000))
##
##
## Calculo de Diametros Maximos
## Iniciando paralelizacion
## Repartiendo procesos en 8 nucleos del sistema
Para verificar los resultados, se puede escribir el comando
data para ver el estado de los datos:
data
Se puede observar que ahora hay una nueva columna llamada DiamMax, estos son los resultados del analisis. La Columna Tortuo aparece en la tabla si ya se hizo un análisis de tortuosidad previo al de diametros máximos.
Se quiere realizar un análisis de Diámetros Máximos sobre la totalidad del pozo XX. La longitud del dispositivo a ser analizada es 30 pies.
#Suponiendo que ya se importaron los datos
data = diamMaximos(dataSurvey = data, lDev = 30)
##
##
## Calculo de Diametros Maximos
## Iniciando paralelizacion
## Repartiendo procesos en 8 nucleos del sistema
Para verificar los resultados, se puede escribir el comando
data para ver el estado de los datos:
data
Se puede observar que ahora hay una nueva columna llamada DiamMax, estos son los resultados del analisis. La Columna Tortuo aparece en la tabla si ya se hizo un análisis de tortuosidad previo al de diametros máximos.
La función plot3DPozo() genera un modelo 3D del Pozo. La
sintaxis de la función es la siguiente:
plot3DPozo(dataSurvey, depthRange, unitsSystem, diamFactor, relAspecto, colorVariable, legendLabel, nPuntos)
Se reciben los siguientes argumentos:
dataSurvey es el argumento que recibe
data, la variable en la cual guardamos los datos que se
importaron.
depthRange es un argumento
opcional. En este se especifica, si se desea, un intervalo del
pozo que se desea visualizar. Si no se especifica este argumento, se
realizará un renderizado de todo el pozo.
unitsSystem es un argumento
opcional que recibe el sistema de unidades. “Imperial” para
sistema Imperial o “SI” para Sistema de Unidades Internacional. Por
defecto se asume sistema Imperial.
diamFactor es un argumento opcional
que permite exagerar la sección transversal del pozo para poder tener
una mejor visualización de él. La sección transversal del pozo por
defecto no se exagerará (diamFactor = 1).
relAspecto es un argumento opcional
que establece la relación de aspecto de los ejes del sistema de
coordenadas. Por defecto, la relación de aspecto será de 1H:1H:2V
(relAspecto = c(1,1,2))
colorVariable es un argumento
opcional que establece la variable que se desea mapear en la
escala de colores del pozo. Si se desea mapear la tortuosidad
(colorVariable = "Tortuo") o los diámetros máximos
(colorVariable = "DiamMax"), éstos se debieron obtener
realizando sus respectivos análisis
legendLabel es un argumento
opcional que establece la etiqueta que se desea mostrar para
nombrar la legenda de la escala de colores.
nPuntos es un argumento opcional
que establece la cantidad de nodos que el motor gráfico debe usar para
renderizar las secciones transversales del pozo. Cuanto más grande sea
nPuntos, mejor definida la imagen pero mayor tiempo de
ejecución para el renderizado. Por defecto,
nPuntos = 26.
Se desea visualizar la geometría de todo el pozo XX, mapeando en la escala de color la tortuosidad.
#Suponiendo que ya se importaron los datos y que se realizó el análisis de tortuosidad
plot3DPozo(dataSurvey = data, colorVariable = "Tortuo", legendLabel = "Tortuosidad")
## Loading required package: ggplot2
##
## Attaching package: 'plotly'
## The following object is masked from 'package:ggplot2':
##
## last_plot
## The following object is masked from 'package:stats':
##
## filter
## The following object is masked from 'package:graphics':
##
## layout
## Visualización 3D
## Progreso: 10%
## Progreso: 20%
## Progreso: 30%
## Progreso: 40%
## Progreso: 50%
## Progreso: 60%
## Progreso: 70%
## Progreso: 80%
## Progreso: 90%
## Progreso: 100%
## Renderizando...
Para mejorar el nivel de detalle de la visualización, se puede
aumentar el diámetro usando el argumento diamFactor.
#Suponiendo que ya se importaron los datos y que se realizó el análisis de tortuosidad
plot3DPozo(dataSurvey = data, colorVariable = "Tortuo", legendLabel = "Tortuosidad", diamFactor = 50)
## Visualización 3D
## Progreso: 10%
## Progreso: 20%
## Progreso: 30%
## Progreso: 40%
## Progreso: 50%
## Progreso: 60%
## Progreso: 70%
## Progreso: 80%
## Progreso: 90%
## Progreso: 100%
## Renderizando...